Compare commits

...

227 Commits

Author SHA1 Message Date
Simon L
cf148b6381 fix caddy warning
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-20 18:58:36 +02:00
Simon L
a117c684dd increase to 5.2.1
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-20 18:42:27 +02:00
Simon L
d5937d3990 Merge pull request #2569 from nextcloud/enh/noid/caddy-fix-syntax
caddy - a bugfix and some improvements
2023-05-20 18:41:24 +02:00
Simon L
a620640fa7 fix detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-20 18:41:12 +02:00
Simon L
c84091cc0c adjust things as discussed
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-20 18:36:43 +02:00
Simon L
0c945c9516 caddy - use correct syntax for trusted_proxies
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 20:58:06 +02:00
Simon L
ac7bf05f54 create important dirs beforehand
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 16:29:45 +02:00
Simon L
1dedc5f282 fix caddy config
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 16:06:22 +02:00
Simon L
08ff51c482 Merge pull request #2565 from nextcloud/enh/noid/fix-getallbackupvolumes
fix getAllBackupVolumes
2023-05-19 16:06:04 +02:00
Simon L
14a77ea88d fix getAllBackupVolumes
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 15:45:23 +02:00
Simon L
9388ec5798 increase to 5.2.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 14:18:02 +02:00
Simon L
1b878a4a8d adjust typo
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 14:15:49 +02:00
Simon L
1ceb963fae Merge pull request #2457 from nextcloud/enh/noid/add-caddy-imports
allow to add imports to the caddy file
2023-05-19 14:11:59 +02:00
Simon L
48e70e2b00 allow to add imports to the caddy file
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 14:07:22 +02:00
Simon L
4adb748970 Merge pull request #2490 from nextcloud/apache-dockerfile
optimze apache dockerfile
2023-05-19 13:39:01 +02:00
Simon L
10cfce7bdd Merge pull request #2455 from nextcloud/enh/noid/allow-to-include-in-backup-restore
allow to include volumes in backup and restore
2023-05-19 13:38:42 +02:00
Simon L
6cbab733be Merge pull request #2496 from nextcloud/mastercontainer-dockerfile
optimze mastercontainer Dockerfile
2023-05-19 13:33:04 +02:00
Simon L
9f19026885 allow to include volumes in backup and restore
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-19 13:28:17 +02:00
Simon L
1513d69a8d ipv6 - add note regarding problems with ipv6 and docker
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-16 17:49:39 +02:00
Simon L
364be594a2 fix missing character
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-16 16:28:01 +02:00
Simon L
4f30044d54 Merge pull request #2556 from nextcloud/aio-dependency-update
Dependency updates
2023-05-16 14:36:34 +02:00
szaimen
9f1b0e361d dependency updates
Signed-off-by: GitHub <noreply@github.com>
2023-05-16 12:25:19 +00:00
Simon L
fc352b84be Merge pull request #2550 from nextcloud/aio-dependency-update
Dependency updates
2023-05-15 10:15:23 +02:00
szaimen
c780f28c51 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2023-05-14 12:02:13 +00:00
Zoey
f917f12932 move mastercontainer.conf to the end
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-12 18:00:33 +02:00
Zoey
3b4d741c8e put scripts into /
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-12 17:58:47 +02:00
Zoey
a0cf31ad1b put scripts into /
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-12 17:57:02 +02:00
Simon L
8c11f78940 Merge pull request #2548 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.2.6-fpm-alpine3.17
Bump php from 8.2.5-fpm-alpine3.17 to 8.2.6-fpm-alpine3.17 in /Containers/mastercontainer
2023-05-12 15:35:28 +02:00
Simon L
012d9a9392 Merge pull request #2547 from nextcloud/dependabot/docker/Containers/postgresql/postgres-15.3-alpine
Bump postgres from 15.2-alpine to 15.3-alpine in /Containers/postgresql
2023-05-12 15:34:56 +02:00
dependabot[bot]
9584ef5346 Bump php in /Containers/mastercontainer
Bumps php from 8.2.5-fpm-alpine3.17 to 8.2.6-fpm-alpine3.17.

---
updated-dependencies:
- dependency-name: php
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-12 12:58:53 +00:00
dependabot[bot]
502f32f207 Bump postgres from 15.2-alpine to 15.3-alpine in /Containers/postgresql
Bumps postgres from 15.2-alpine to 15.3-alpine.

---
updated-dependencies:
- dependency-name: postgres
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-12 12:58:50 +00:00
Simon L
cf9220c6b7 Merge pull request #2541 from steffenmalisi/feature/imaginary-port
Makes imaginary port configurable
2023-05-12 13:49:58 +02:00
steffenmalisi
7df7ee738c Prevents globbing and word splitting
Signed-off-by: steffenmalisi <steffenmalisi@users.noreply.github.com>
2023-05-12 12:50:59 +02:00
steffenmalisi
d95058ae21 Makes imaginary port configurable
Signed-off-by: steffenmalisi <steffenmalisi@users.noreply.github.com>
2023-05-12 12:50:59 +02:00
Simon L
3973943acd fix imaginary update workflow
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-12 12:50:10 +02:00
Simon L
692fd7e487 Merge pull request #2545 from sotnikov-link/patch-1
sudo docker volume prune --filter all=1
2023-05-11 23:33:49 +02:00
Valeriy Sotnikov
6ad9e9eda6 sudo docker volume prune --filter all=1
Signed-off-by: Valeriy Sotnikov <sotnikov.link@mail.ru>
2023-05-11 23:51:21 +03:00
Simon L
f2e4d8284c Merge pull request #2498 from nextcloud/postgres-dockerfile
optimize postgres Dockerfile
2023-05-11 14:22:29 +02:00
Zoey
b9709aa400 change script paths
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-11 14:17:54 +02:00
Zoey
d100bf985e move VOLUME and delete shadow
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-11 14:13:56 +02:00
Simon L
fafc456065 Merge pull request #2542 from nextcloud/aio-helm-update
Helm Chart updates
2023-05-11 11:48:37 +02:00
szaimen
bbeb7e2db2 Helm Chart updates
Signed-off-by: GitHub <noreply@github.com>
2023-05-11 09:48:01 +00:00
Simon L
285407e176 fix detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-11 11:47:36 +02:00
Simon L
f15b890b28 Merge pull request #2539 from nextcloud/enh/noid/fix-helm-chart-update
try to fix the helm-chart-update workflow
2023-05-11 11:44:59 +02:00
Simon L
2f2398c704 try to fix the helm-chart-update workflow
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-11 11:38:40 +02:00
Simon L
189728f765 Merge pull request #2520 from nextcloud/enh/noid/borg-enhancements
backup script - a few enhancements and safeguards
2023-05-11 10:08:32 +02:00
Simon L
c25587bcc3 Merge pull request #2519 from nextcloud/mastercontainer-root-check
add root user check for mastercontainer
2023-05-11 10:06:12 +02:00
Simon L
fa93f207eb Merge pull request #2536 from nextcloud/enh/noid/update-mastercontainer
update mastercontainer to php 8.2
2023-05-11 10:04:48 +02:00
Simon L
d5b5a1eae6 Merge pull request #2518 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.14.3.1
Bump collabora/code from 22.05.13.1.1 to 22.05.14.3.1 in /Containers/collabora
2023-05-11 10:03:38 +02:00
Simon L
53f7fa70a0 Merge pull request #2528 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-23.0.6-cli
Bump docker from 23.0.5-cli to 23.0.6-cli in /Containers/mastercontainer
2023-05-11 10:03:05 +02:00
Simon L
fceeb4be10 Merge pull request #2535 from nextcloud/enh/1992/add-coturn-version
add r0 to coturn version
2023-05-11 10:02:41 +02:00
dependabot[bot]
c6f49ee45c Bump docker from 23.0.5-cli to 23.0.6-cli in /Containers/mastercontainer
Bumps docker from 23.0.5-cli to 23.0.6-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-11 08:00:56 +00:00
Simon L
8aa4c8a13e Merge pull request #2484 from nextcloud/aio-yaml-update
Yaml updates
2023-05-11 09:59:38 +02:00
Simon L
cd0b4cf1cc add a video on traefik configuration
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-10 23:22:14 +02:00
Simon L
72909bde64 update mastercontainer to php 8.2
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-10 20:44:07 +02:00
Simon L
1f6ab346a3 add r0 to coturn version
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-10 20:30:26 +02:00
Simon L
1f7f675454 add a section on Synology what to do if the socket could not be found
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-10 14:33:03 +02:00
szaimen
bd4afa7cff Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2023-05-10 12:03:09 +00:00
Simon L
d1e781617c add detail to talk_port docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-09 16:21:42 +02:00
Zoey
40c3a24b8b Update Containers/mastercontainer/start.sh
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-09 11:17:39 +02:00
Simon L
9035f47611 backup script - a few enhancements and safeguards
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-09 00:54:15 +02:00
Zoey
a9960c8d6a add root user check for mastercontainer
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-08 22:59:47 +02:00
dependabot[bot]
616159c1b8 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.13.1.1 to 22.05.14.3.1.

---
updated-dependencies:
- dependency-name: collabora/code
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 12:59:44 +00:00
Simon L
45ec758e54 Merge pull request #2514 from iraklis10/patch-1
Update local-instance.md
2023-05-08 11:17:56 +02:00
iraklis10
6a300d03a6 Update local-instance.md
minor typo

Signed-off-by: iraklis10 <1414477+iraklis10@users.noreply.github.com>
2023-05-07 19:35:02 +01:00
Simon L
ef93976ba5 Merge pull request #2512 from nextcloud/automated/noid/psalm-baseline-update-1683259719
[Automated] Update psalm-baseline.xml
2023-05-05 08:03:36 +02:00
nextcloud-command
49e9c74a77 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2023-05-05 04:08:39 +00:00
Simon L
9ba7962320 Merge pull request #2340 from JL102/main
Proxy instructions for NodeJS/express
2023-05-04 18:30:42 +02:00
Simon L
b08b59b39b fix initial options not showing up
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-04 15:38:11 +02:00
Simon L
8750bd343c mastercontainer needs to be connected before starting any other container
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-04 14:52:09 +02:00
Simon L
93cec3ca5b available check of .1 is sometimes apparently not enough when ipv6 is enabled
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-04 12:43:55 +02:00
Simon L
1a54b583c5 increase to 5.1.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-04 12:05:04 +02:00
Simon L
e30b0f878b adjust the docs a bit
Signed-off-by: Simon L <szaimen@e.mail.de>
Signed-off-by: JL102 <jordanlees@mailbox.org>
2023-05-03 21:26:44 -04:00
JL102
dcf83fafcc Proxy instructions for NodeJS/express
Signed-off-by: JL102 <jordanlees@mailbox.org>
2023-05-03 21:26:44 -04:00
Simon L
5667b989b9 improve detail
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-04 01:15:38 +02:00
Simon L
d87ae9d51b adjust wording a bit
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-04 00:44:37 +02:00
Zoey
a63ff97f43 improve ipv6 docs (#2504) 2023-05-04 00:38:28 +02:00
Simon L
944e09237c docker-compose - add an explanation why some settings are not to be changed
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 23:21:09 +02:00
Simon L
e0b0066f8a add a hint regarding docker run command
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 23:07:59 +02:00
Simon L
a69f6a3d39 add ipv6-advice as warning
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 18:45:06 +02:00
Simon L
a8bd3e8b97 Merge pull request #2483 from nextcloud/enh/noid/add-network-docker-compose
add internal network config to docker-compose file as well
2023-05-03 18:39:22 +02:00
Simon L
beffb879dc apply suggestions to manual-install network as well
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 18:38:42 +02:00
Simon L
a5d03e495e add suggestion
Signed-off-by: Simon L <szaimen@e.mail.de>

Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 18:38:08 +02:00
Simon L
17701ce256 apply suggestion
Signed-off-by: Simon L <szaimen@e.mail.de>

Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 18:34:17 +02:00
Simon L
dad3477a9f apply suggestion
Signed-off-by: Simon L <szaimen@e.mail.de>

Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 18:34:05 +02:00
Simon L
0d942935d8 Merge pull request #2470 from nextcloud/enh/noid/revert-disabling-fts
revert disabling FTS if on Nc26
2023-05-03 18:31:47 +02:00
Simon L
cffcf86fc9 Merge pull request #2481 from nextcloud/enh/noid/document-internal-ipv6-support
document how to enable ipv6 for the internal network
2023-05-03 18:27:47 +02:00
Simon L
6b15a2838a Add suggestion
Signed-off-by: Simon L <szaimen@e.mail.de>

Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 18:12:42 +02:00
Simon L
897f05ee0f add suggestion
Signed-off-by: Simon L <szaimen@e.mail.de>

Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 18:12:32 +02:00
Simon L
0fdcba047d manual-install - add an entry to the readme regarding ipv6
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 18:07:19 +02:00
Simon L
355381df1d Merge pull request #2485 from nextcloud/enh/noid/talk-lt-cred-mech
talk - remove lt-cred-mech as that is not recommended anymore
2023-05-03 18:02:47 +02:00
Simon L
e3cacb7811 Merge pull request #2489 from nextcloud/enh/noid/improve-template
twig templates - check for was_start_button_clicked instead of empty …
2023-05-03 18:02:29 +02:00
Simon L
ee3bc7b609 Merge pull request #2488 from nextcloud/enh/noid/speed-up-initial-login
try to speed up the initial login
2023-05-03 17:56:49 +02:00
Simon L
396fb671fe Merge pull request #2495 from nextcloud/elastic-dockerfile
optimze elastic Dockerfile
2023-05-03 17:55:42 +02:00
Zoey
73286c558c do not use ARG (2/2)
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:50:33 +02:00
Zoey
669555289c do not use ARG (1/2)
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:50:23 +02:00
Simon L
ff624fbfad Merge pull request #2502 from nextcloud/enh/noid/add-second-init-step
add a second init step for postgres
2023-05-03 17:47:25 +02:00
Simon L
93748f9644 add a second init step for postgres
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 17:46:46 +02:00
Simon L
bddca890c5 Merge pull request #2491 from nextcloud/borg-dockerfile
optimize borg dockerfile
2023-05-03 17:43:08 +02:00
Simon L
06d802fd43 apply suggestion
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 17:42:04 +02:00
Simon L
9e92f2b5fd Merge pull request #2501 from nextcloud/watchtower-dockerfile
optimze watchtower Dockerfile
2023-05-03 17:35:40 +02:00
Simon L
bc7d2a1337 use suggestion
Co-authored-by: Zoey <zoey@z0ey.de>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 17:35:14 +02:00
Simon L
5f126583d3 Merge pull request #2500 from nextcloud/talk-dockerfile
optimize talk Dockerfile
2023-05-03 17:33:35 +02:00
Simon L
7c11a8a278 Update Containers/talk/Dockerfile
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 17:32:56 +02:00
Simon L
412da74702 Merge pull request #2499 from nextcloud/redis-dockerfile
optimize redis Dockerfile
2023-05-03 17:32:24 +02:00
Simon L
3e1ae33e95 Update Containers/redis/Dockerfile
Signed-off-by: Simon L. <szaimen@e.mail.de>
2023-05-03 17:31:43 +02:00
Simon L
9b8a547f71 Merge pull request #2494 from nextcloud/domaincheck-dockerfile
optimze domaincheck Dockerfile
2023-05-03 17:29:47 +02:00
Simon L
12d351aa19 apply suggestion
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 17:27:55 +02:00
Simon L
741d99d401 Merge pull request #2492 from nextcloud/clamav-dockerfile
optimize clamav Dockerfile
2023-05-03 17:26:32 +02:00
Zoey
fb45fa4073 add suggestion
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:11:18 +02:00
Zoey
55bc84d3f2 add set -ex
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:10:47 +02:00
Zoey
a4e894092c add suggestion
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:10:38 +02:00
Zoey
3fc1487cd9 update version in of source file
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:03:04 +02:00
Zoey
c9e406f76c add set -ex and remove tmp conf
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:02:43 +02:00
Zoey
234590f8ee add set -ex
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 17:02:07 +02:00
Zoey
85ac995907 undo version overwritte
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:57:57 +02:00
Zoey
079b86d840 optimze watchtower Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:38:40 +02:00
Zoey
132444cbb9 optimize talk Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:37:22 +02:00
Zoey
e4648ab03e optimize redis Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:36:29 +02:00
Zoey
1841733879 optimize postres Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:34:27 +02:00
Zoey
8bbdbd6fa7 optimze mastercontainer Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:31:32 +02:00
Zoey
f82818cbc6 optimze elastic Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:30:48 +02:00
Zoey
ca9b0cccf3 optimze domaincheck Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:29:25 +02:00
Zoey
fbc4b9cabb optimize clamav Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:27:52 +02:00
Zoey
c056879df4 optimize borg dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:26:55 +02:00
Zoey
4a50fcf5a6 optimze apache dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:25:03 +02:00
Simon L
0e09bb0d12 try to speed up the initial login
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 15:48:16 +02:00
Simon L
09e299181a twig templates - check for was_start_button_clicked instead of empty domain
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 15:32:45 +02:00
Simon L
844382d220 Merge pull request #2487 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-7.17.10
Bump elasticsearch from 7.17.9 to 7.17.10 in /Containers/fulltextsearch
2023-05-03 15:01:33 +02:00
Simon L
3c3c8fd8d5 Merge pull request #2486 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.20.4-alpine3.17
Bump golang from 1.20.3-alpine3.17 to 1.20.4-alpine3.17 in /Containers/imaginary
2023-05-03 15:01:16 +02:00
dependabot[bot]
3b28885ee2 Bump elasticsearch from 7.17.9 to 7.17.10 in /Containers/fulltextsearch
Bumps elasticsearch from 7.17.9 to 7.17.10.

---
updated-dependencies:
- dependency-name: elasticsearch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-03 13:00:36 +00:00
dependabot[bot]
b9ac7851b2 Bump golang in /Containers/imaginary
Bumps golang from 1.20.3-alpine3.17 to 1.20.4-alpine3.17.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-03 13:00:30 +00:00
Simon L
b2fa058f33 talk - remove lt-cred-mech as that is not recommended anymore
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 14:55:52 +02:00
Simon L
04f84bb9b1 add inspired by
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 13:52:33 +02:00
Simon L
14fd25c837 Merge pull request #2482 from nextcloud/enh/noid/remove-non-default-network-options
nextcloud-aio network - remove non-default options
2023-05-03 13:41:19 +02:00
Simon L
3ff0b2e987 add internal network config to docker-compose file as well
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 13:35:27 +02:00
Simon L
418e7898b7 nextcloud-aio network - remove non-default options
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 13:07:22 +02:00
Simon L
490e9571d1 document how to enable ipv6 for the internal network
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 13:05:27 +02:00
Simon L
b194450875 Merge pull request #2476 from nextcloud/enh/noid/manual-install-ipv6
manual-install - enable ipv6 by default
2023-05-03 13:03:51 +02:00
Simon L
1982e069b7 Merge pull request #2477 from nextcloud/enh/noid/create-data-folder
helm-chart - create the data folder manually in order to apply the co…
2023-05-03 13:01:49 +02:00
Simon L
26e3b14854 helm-chart - create the data folder manually in order to apply the correct permissions
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 13:01:37 +02:00
Simon L
347618f6a8 manual-install - enable ipv6 by default
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-03 12:07:21 +02:00
Simon L
ad8d6ab659 Merge pull request #2473 from nextcloud/automated/noid/psalm-baseline-update-1683086912
[Automated] Update psalm-baseline.xml
2023-05-03 07:59:15 +02:00
nextcloud-command
681f4ac73e Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2023-05-03 04:08:32 +00:00
Simon L
9f4b712f02 revert disabling FTS if on Nc26
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-02 20:35:28 +02:00
Simon L
9a27686ede Merge pull request #2459 from nextcloud/szaimen-patch-1
run composer during install as non-root user
2023-05-02 20:34:16 +02:00
Simon L
c5b26ffb4f Merge pull request #2467 from nextcloud/enh/noid/put-db-into-subpath
put the database into a subpath
2023-05-02 20:31:26 +02:00
Simon L
c6492ef05c put the database into a subpath
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-02 20:30:32 +02:00
Simon L
bf5b7f0f56 Merge pull request #2465 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.1.0-1
Bump clamav/clamav from 1.0.1-2 to 1.1.0-1 in /Containers/clamav
2023-05-02 15:06:40 +02:00
Simon L
c153253c7f Merge pull request #2464 from nextcloud/aio-yaml-update
Yaml updates
2023-05-02 15:05:10 +02:00
dependabot[bot]
126db40a72 Bump clamav/clamav from 1.0.1-2 to 1.1.0-1 in /Containers/clamav
Bumps clamav/clamav from 1.0.1-2 to 1.1.0-1.

---
updated-dependencies:
- dependency-name: clamav/clamav
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 13:01:31 +00:00
Simon L
d58bb56dfa add another known issue regarding cloudflare
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-02 14:44:07 +02:00
szaimen
e362ea8665 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2023-05-02 12:04:41 +00:00
Simon L
0dc630b5a9 run composer during install as non-root user
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-02 11:28:56 +02:00
Simon L
bc03d030c9 Merge pull request #2453 from wky0211/main
Fix typo in HTML template: changed "duckduckdns.org" to "duckdns.org"
2023-05-01 19:23:26 +02:00
Simon L
1304734d3e Merge pull request #2456 from nextcloud/enh/noid/update-schema
updaate regex for some values in containers schema
2023-05-01 19:10:23 +02:00
Simon L
8356e1aba1 updaate regex for some values in containers schema
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 19:06:13 +02:00
wky0211
900d470174 fix(typo): "duckduckdns.org" -> "duckdns.org"
Signed-off-by: wky0211 <46506352+wky0211@users.noreply.github.com>
2023-05-02 00:19:23 +08:00
Simon L
3d780a5a4d try to fix json validator workflow
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 16:58:44 +02:00
Simon L
e6d9099114 Merge pull request #2329 from esmith443/patch-1
RP docs - add Citrix ADC VPX / Citrix Netscaler
2023-05-01 16:55:59 +02:00
Simon L
cad77f8287 reorder alphabetically
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 16:49:16 +02:00
esmith443
4ef65b24ae Update reverse-proxy.md
Updated Commit to link to guide

Signed-off-by: esmith443 <119460913+esmith443@users.noreply.github.com>
2023-05-01 10:47:14 -04:00
esmith443
348d6acde7 Update reverse-proxy.md
Added guide for Citrix ADC VPX / Citrix Netscaler reverse proxy.
This is my first pull so I am sorry if I made any mistakes.
Love AIO thanks :)

Signed-off-by: esmith443 <119460913+esmith443@users.noreply.github.com>
2023-05-01 16:32:16 +02:00
Simon L
68e346047d Merge pull request #2446 from nextcloud/enh/noid/collabora-cert
collabora - make startup faster by not generating ssl cert
2023-05-01 15:22:39 +02:00
Simon L
77dee8caec Merge pull request #2432 from nextcloud/enh/noid/apparmor-unconfined
add apparmor_unconinfed to containers definition
2023-05-01 14:46:55 +02:00
Simon L
f861c66ade Merge pull request #2431 from nextcloud/enh/noid/decrease-size-mastercontainer
mastercontainer - delete things except the needed php dir
2023-05-01 14:39:22 +02:00
Simon L
046496c5fc Merge pull request #2429 from nextcloud/enh/1581/schema-regex
add patterns to containers-schema
2023-05-01 14:38:00 +02:00
Simon L
72d55cdbbf Merge pull request #2416 from nextcloud/enh/noid/adjust-button-focus
adjust the button color on focus
2023-05-01 14:37:24 +02:00
Simon L
9728a84e75 fix typo in forms.sh
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 14:35:57 +02:00
Simon L
27faed79d2 Merge pull request #2427 from nextcloud/enh/noid/krita
Krita should be enabled by default
2023-05-01 14:19:25 +02:00
Simon L
78419fa0a1 Merge pull request #2419 from nextcloud/szaimen-patch-1
add a hint where to look at in rp doc
2023-05-01 14:19:11 +02:00
Simon L
f540d54e2a Merge pull request #2451 from nextcloud/aio-helm-update
Helm Chart updates
2023-05-01 14:16:05 +02:00
szaimen
e78ef7a31a Helm Chart updates
Signed-off-by: GitHub <noreply@github.com>
2023-05-01 12:07:37 +00:00
Simon L
e44ef2d126 add a hint where to look at in rp doc
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 11:57:42 +02:00
Simon L
b2f5deebd2 Krita should be enabled by default
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 11:52:49 +02:00
Simon L
ccb97e9540 Merge pull request #2426 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-23.0.5-cli
Bump docker from 23.0.4-cli to 23.0.5-cli in /Containers/mastercontainer
2023-05-01 11:52:02 +02:00
Simon L
861d717480 collabora - make startup faster by not generating ssl cert
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 11:17:36 +02:00
Simon L
792f4daf6d update php lint name
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 10:25:11 +02:00
Simon L
b349135dfb Merge pull request #2442 from nextcloud/enh/noid/twig-lint
add twig-lint
2023-05-01 10:19:13 +02:00
Simon L
eaf26a2ec3 add twig-lint
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-01 04:44:54 +02:00
Simon L
eeeeb2f37b add apparmor_unconinfed to containers definition
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-27 19:24:14 +02:00
Simon L
cc2c8998ba mastercontainer - delete things except the needed php dir
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-27 18:57:35 +02:00
Simon L
18f6aff016 add patterns to containers-schema
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-27 18:47:25 +02:00
Simon L
1118ba6764 add a passage about waiting for container to be bult before testing
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-27 15:19:22 +02:00
dependabot[bot]
070242cda8 Bump docker from 23.0.4-cli to 23.0.5-cli in /Containers/mastercontainer
Bumps docker from 23.0.4-cli to 23.0.5-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-27 13:17:33 +00:00
Simon L
608fea6460 adjust workflows to add to review label automatically
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-27 15:16:58 +02:00
Simon L
7cb12f7893 make it even more verbose that the default command is not to be used behind a reverse proxy
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-27 10:35:01 +02:00
Simon L
454870ad49 Merge pull request #2422 from thijsvanderwoude/main
Fix minor typo
2023-04-26 08:55:56 +02:00
Thijs van der Woude
617c882015 Fix minor typo
Signed-off-by: Thijs van der Woude <31108288+thijsvanderwoude@users.noreply.github.com>
2023-04-26 01:28:12 +02:00
Simon L
306f1f45ec put mode into quotes
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 11:32:31 +02:00
Simon L
c590fb9592 change order of explanation
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 11:22:46 +02:00
Simon L
af91a01c04 Merge pull request #2418 from nextcloud/enh/noid/backup-include
put duplicated path examples into a dedicated include
2023-04-25 11:18:24 +02:00
Simon L
92616b6f9b Merge pull request #2417 from nextcloud/enh/noid/fix-stale-lock-removal
set BORG_HOST_ID to a fixed value in order to improve stale lock removal
2023-04-25 11:18:01 +02:00
Simon L
860f194d81 fix links
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 11:17:30 +02:00
Simon L
d8719e810c refactor aio-config section with visibility of links again.
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 11:13:36 +02:00
Simon L
1c6f2b80b7 add a dot to the end of sentence
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 11:13:05 +02:00
Simon L
0a48feb124 adjust wording a bit
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 11:08:41 +02:00
Simon L
97be96cde5 put duplicated path examples into a dedicated include
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 10:59:45 +02:00
Simon L
0779609bed set BORG_HOST_ID to a fixed value in order to fix stale lock removal
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-25 09:11:10 +02:00
Simon L
3bff5f2851 adjust the button color on focus
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 23:24:20 +02:00
Simon L
1d1d462bc0 fix spacing of aio-config
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 16:06:08 +02:00
Simon L
6debc29685 adjust a few breaks
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 16:01:04 +02:00
Simon L
8171d2c036 Merge pull request #2413 from nextcloud/enh/noid/details-tag-aio-password
put the aio password change into a details tag
2023-04-24 15:40:46 +02:00
Simon L
3cce13f2b8 put the aio password change into a details tag
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 15:40:28 +02:00
Simon L
c76e0aa1c1 fix some typos
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 15:36:41 +02:00
Simon L
14f5884e60 fix a link in the aio-config section
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 15:27:49 +02:00
Simon L
48746c24de adjust a few things in the aio-config section
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 15:24:50 +02:00
Simon L
c24709e2df fix details regarding backup description
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 15:15:53 +02:00
Simon L
359d43d3dd fix OO build
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 15:04:09 +02:00
Simon L
e95e2fdf9c increase to 5.0.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 14:49:19 +02:00
Simon L
628756da2b Merge pull request #2406 from nextcloud/enh/2402/aio-config
mention AIO config and docs in the AIO interface
2023-04-24 14:48:37 +02:00
Simon L
555ce650fd switch order of two elements
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 14:48:14 +02:00
Simon L
ea788daccc Merge pull request #2389 from nextcloud/enh/noid/domain-input
add additional notes to the first domain input
2023-04-24 14:46:12 +02:00
Simon L
a3cf552cf9 fix typo
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 13:31:03 +02:00
Simon L
5efcff80fe add a note on aio's operation mode
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 13:26:41 +02:00
Simon L
d908244ef0 fix typo
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 13:09:10 +02:00
Simon L
b77427b3cf improve dns record hint
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 13:08:36 +02:00
Simon L
acd0d82e29 substitute this documentation by correct names
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-24 13:04:32 +02:00
Simon L
378c884442 mention AIO config and docs in the AIO interface
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:59:58 +02:00
Simon L
de2503ad51 Merge pull request #2397 from nextcloud/enh/noid/add-print-red
add print_red in order to make the exact mistake more discoverable
2023-04-22 11:53:35 +02:00
Simon L
4e13dc5fca Merge pull request #2391 from nextcloud/enh/noid/helm-chart
add further docs on the helm-chart
2023-04-22 11:48:47 +02:00
Simon L
ff58ee08e7 add print_red in order to make the exact mistake more discoverable
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:44:06 +02:00
Simon L
38c95d14d2 make descriptions more explicit
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 18:44:04 +02:00
Simon L
4f7ee99782 add hint regarding RPs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 18:28:58 +02:00
Simon L
1b46c172f0 Mark you need to know what you are doing as bold
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 11:31:10 +02:00
Simon L
e8ce8d9dbf add further docs on the helm-chart
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 23:53:02 +02:00
Simon L
a98e8c02d0 add additional notes to the first domain input
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 22:47:52 +02:00
68 changed files with 816 additions and 434 deletions

View File

@@ -23,7 +23,7 @@ jobs:
- name: Modify the Dockerfile
run: |
set -x
sed -i 's|FROM php:7.4-alpine|FROM php:8.1-alpine|' "psalm-github-actions/Dockerfile"
sed -i 's|FROM php:7.4-alpine|FROM php:8.2-alpine|' "psalm-github-actions/Dockerfile"
cat << APCU >> "psalm-github-actions/Dockerfile"
RUN mkdir -p /usr/src/php/ext/apcu && \
curl -fsSL https://pecl.php.net/get/apcu | tar xvz -C "/usr/src/php/ext/apcu" --strip 1 && \

View File

@@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: 8.1
php-version: 8.2
extensions: apcu
- name: Run dependency update script
run: |
@@ -50,6 +50,6 @@ jobs:
signoff: true
title: Dependency updates
body: Automated dependency updates since dependabot does not support grouped updates
labels: dependencies, enhancement
labels: dependencies, 3. to review
milestone: next
branch: aio-dependency-update

View File

@@ -19,7 +19,7 @@ jobs:
| cut -f1 \
| tail -1
)"
sed -i "s|go install github.com/h2non/imaginary.*|go install github.com/h2non/imaginary@$imaginary_version|" ./Containers/imaginary/Dockerfile
sed -i "s|go install github.com/h2non/imaginary.*;|go install github.com/h2non/imaginary@$imaginary_version;|" ./Containers/imaginary/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
@@ -28,6 +28,6 @@ jobs:
signoff: true
title: Imaginary update
body: Automated Imaginary container update
labels: dependencies, enhancement
labels: dependencies, 3. to review
milestone: next
branch: imaginary-container-update

View File

@@ -15,6 +15,6 @@ jobs:
uses: actions/checkout@v3
- name: Validate Json
run: |
sudo apt install python3-pip --no-install-recommends
sudo apt-get install python3-pip --no-install-recommends
sudo pip3 install json-spec
json validate --schema-file=php/containers-schema.json --document-file=php/containers.json

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
name: PHP Lint
on:
pull_request:
@@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.1"]
php-versions: ["8.2"]
name: php-lint

View File

@@ -72,6 +72,6 @@ jobs:
signoff: true
title: Nextcloud update
body: Automated Nextcloud container update
labels: dependencies, enhancement
labels: dependencies, 3. to review
milestone: next
branch: nextcloud-container-update

View File

@@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up php8.1
- name: Set up php8.2
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
php-version: 8.2
extensions: apcu
coverage: none

View File

@@ -12,10 +12,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up php8.1
- name: Set up php8.2
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
php-version: 8.2
extensions: apcu
coverage: none

View File

@@ -12,10 +12,10 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Set up php8.1
- name: Set up php8.2
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
php-version: 8.2
extensions: apcu
coverage: none
@@ -42,7 +42,8 @@ jobs:
# Make sure we can open multiple PRs
branch-suffix: timestamp
title: '[Automated] Update psalm-baseline.xml'
milestone: next
body: |
Auto-generated update psalm-baseline.xml with fixed psalm warnings
labels: |
3. to review
3. to review, dependencies

55
.github/workflows/twig-lint.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: Twig Lint
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: lint-twig-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
twig-lint:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.2"]
name: twig-lint
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
- name: twig lint
run: |
cd php
composer require sserbin/twig-linter:@dev --no-progress --dev
composer install
chmod +x ./vendor/bin/twig-linter
./vendor/bin/twig-linter lint ./templates
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: twig-lint
if: always()
name: twig-lint-summary
steps:
- name: Summary status
run: if ${{ needs.twig-lint.result != 'success' && needs.twig-lint.result != 'skipped' }}; then exit 1; fi

View File

@@ -27,7 +27,7 @@ jobs:
signoff: true
title: Helm Chart updates
body: Automated Helm Chart updates for the yaml files. It can be merged if it looks good at any time which will automatically trigger a new release of the helm chart.
labels: dependencies
labels: dependencies, 3. to review
milestone: next
branch: aio-helm-update
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -22,7 +22,7 @@ jobs:
signoff: true
title: Yaml updates
body: Automated yaml updates for the docker-compose files. Should only be merged shortly before the next latest release.
labels: dependencies
labels: dependencies, 3. to review
milestone: next
branch: aio-yaml-update
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -5,6 +5,10 @@
root /mnt/data/caddy
}
servers {
# trusted_proxies placeholder
}
log {
level ERROR
}
@@ -12,37 +16,21 @@
{$PROTOCOL}://{$NC_DOMAIN}:{$APACHE_PORT} {
# Collabora
route /browser/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
route /hosting/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
route /cool/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
# Notify Push
route /push/* {
uri strip_prefix /push
reverse_proxy {$NEXTCLOUD_HOST}:7867 {
# trusted_proxies placeholder
}
}
# Talk
route /standalone-signaling/* {
uri strip_prefix /standalone-signaling
reverse_proxy {$TALK_HOST}:8081 {
# trusted_proxies placeholder
}
}
# Collabora
route /browser/* {
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
route /hosting/* {
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
route /cool/* {
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
reverse_proxy {$NEXTCLOUD_HOST}:7867
}
# Onlyoffice
@@ -51,19 +39,24 @@
reverse_proxy {$ONLYOFFICE_HOST}:80 {
header_up X-Forwarded-Host {http.request.host}/onlyoffice
header_up X-Forwarded-Proto https
# trusted_proxies placeholder
}
}
# Talk
route /standalone-signaling/* {
uri strip_prefix /standalone-signaling
reverse_proxy {$TALK_HOST}:8081
}
# Others
import /mnt/data/caddy-imports/*
# Nextcloud
route {
rewrite /.well-known/carddav /remote.php/dav
rewrite /.well-known/caldav /remote.php/dav
header Strict-Transport-Security max-age=31536000;
reverse_proxy localhost:8000 {
# See https://github.com/nextcloud/all-in-one/issues/828
# trusted_proxies placeholder
}
reverse_proxy localhost:8000
}
# TLS options

View File

@@ -3,83 +3,72 @@ FROM caddy:2.6.4-alpine as caddy
FROM httpd:2.4.57-alpine3.17
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
COPY --chown=33:33 Caddyfile /Caddyfile
COPY --chmod=664 nextcloud.conf /usr/local/apache2/conf/nextcloud.conf
COPY --chmod=664 supervisord.conf /supervisord.conf
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
VOLUME /mnt/data
RUN set -ex; \
apk add --no-cache shadow; \
groupmod -g 333 xfs; \
usermod -u 333 -g 333 xfs; \
groupmod -g 33 www-data; \
usermod -u 33 -g 33 www-data; \
apk del --no-cache shadow
RUN mkdir -p /mnt/data; \
chown www-data:www-data /mnt/data;
VOLUME /mnt/data
RUN set -ex; \
apk del --no-cache shadow; \
\
mkdir -p /mnt/data; \
chown -R www-data:www-data /mnt/data; \
\
apk add --no-cache \
bash \
supervisor \
wget \
tzdata \
ca-certificates \
openssl \
netcat-openbsd
COPY --from=caddy /usr/bin/caddy /usr/bin/
RUN chmod +x /usr/bin/caddy
RUN sed -i \
-e '/^Listen /d' \
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
conf/httpd.conf; \
echo "Include conf/nextcloud.conf" | tee -a conf/httpd.conf; \
echo "ServerName localhost" | tee -a conf/httpd.conf
COPY nextcloud.conf conf
RUN set -ex; \
rm -rf conf/original conf/original && \
rm -rf /var/www/html/* && \
mkdir /var/www && \
chown -R www-data:www-data /var/www;
RUN mkdir /var/log/supervisord; \
netcat-openbsd; \
\
sed -i \
-e '/^Listen /d' \
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
/usr/local/apache2/conf/httpd.conf; \
echo "Include conf/nextcloud.conf" | tee -a /usr/local/apache2/conf/httpd.conf; \
echo "ServerName localhost" | tee -a /usr/local/apache2/conf/httpd.conf; \
\
rm -rf /usr/local/apache2/conf/original /var/www; \
mkdir -p /var/www; \
chown -R www-data:www-data /var/www; \
\
mkdir /var/log/supervisord; \
mkdir /var/run/supervisord; \
chown www-data:www-data /var/run/supervisord; \
chown www-data:www-data /var/log/supervisord;
COPY Caddyfile /
COPY start.sh /usr/bin/
COPY healthcheck.sh /usr/bin/
COPY supervisord.conf /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /usr/bin/healthcheck.sh; \
chmod +r /supervisord.conf; \
chown www-data:www-data /Caddyfile; \
chown www-data:www-data /var/log/supervisord; \
\
chown -R www-data:www-data /usr/local/apache2; \
chmod +r -R /usr/local/apache2
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
chmod +r -R /usr/local/apache2; \
\
echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data
ENTRYPOINT ["start.sh"]
ENTRYPOINT ["/start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD healthcheck.sh
HEALTHCHECK CMD /healthcheck.sh
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -39,9 +39,9 @@ echo "$CADDYFILE" > /Caddyfile
# Change the trusted_proxies in case of reverse proxies
if [ "$APACHE_PORT" != '443' ]; then
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies private_ranges|' /Caddyfile)"
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies static private_ranges|' /Caddyfile)"
else
CADDYFILE="$(sed 's|trusted_proxies private_ranges|# trusted_proxies placeholder|' /Caddyfile)"
CADDYFILE="$(sed 's|trusted_proxies.*private_ranges|# trusted_proxies placeholder|' /Caddyfile)"
fi
echo "$CADDYFILE" > /Caddyfile
@@ -51,6 +51,15 @@ caddy fmt --overwrite /Caddyfile
# Add caddy path
mkdir -p /mnt/data/caddy/
# Add caddy import path
mkdir -p /mnt/data/caddy-imports
# Remove falsely added Nextcloud conf
rm -f /mnt/data/caddy-imports/nextcloud
# Makre sure that the caddy-imports dir is not empty
echo "# empty file so that caddy does not print a warning" > /mnt/data/caddy-imports/empty
# Fix apache startup
rm -f /usr/local/apache2/logs/httpd.pid

View File

@@ -13,11 +13,8 @@ RUN set -ex; \
VOLUME /root
COPY start.sh /usr/bin/
COPY backupscript.sh /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /backupscript.sh
COPY --chmod=770 *.sh /
ENTRYPOINT ["/start.sh"]
USER root
ENTRYPOINT ["start.sh"]
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -24,6 +24,14 @@ for directory in "${VOLUME_DIRS[@]}"; do
exit 1
fi
done
# Test if default volumes are there
DEFAULT_VOLUMES=(nextcloud_aio_apache nextcloud_aio_nextcloud nextcloud_aio_database nextcloud_aio_database_dump nextcloud_aio_elasticsearch nextcloud_aio_nextcloud_data nextcloud_aio_mastercontainer)
for volume in "${DEFAULT_VOLUMES[@]}"; do
if ! mountpoint -q "/nextcloud_aio_volumes/$volume"; then
echo "$volume is missing which is not intended."
exit 1
fi
done
# Check if target is mountpoint
if ! mountpoint -q /mnt/borgbackup; then
@@ -86,8 +94,9 @@ if [ "$BORG_MODE" = backup ]; then
if ! [ -f "$BORG_BACKUP_DIRECTORY/config" ]; then
# Don't initialize if already initialized
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
echo "Cannot initialize a new repository as that was already done at least one time."
echo "If you still want to do so, you may delete the 'borg.config' file that is stored in the mastercontainer volume manually, which will allow you to initialize a new borg repository in the chosen directory:"
echo "No borg config file was found in the targeted directory."
echo "This might happen if the targeted directory is located on an external drive and the drive not connected anymore. You should check this."
echo "If you instead want to initialize a new backup repository, you may delete the 'borg.config' file that is stored in the mastercontainer volume manually, which will allow you to initialize a new borg repository in the chosen directory:"
echo "sudo docker exec nextcloud-aio-mastercontainer rm /mnt/docker-aio-config/data/borg.config"
exit 1
fi
@@ -132,6 +141,13 @@ if [ "$BORG_MODE" = backup ]; then
# Exclude the nextcloud log and audit log for GDPR reasons
BORG_EXCLUDE=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/nextcloud.log*" --exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/audit.log")
# Make sure that there is always a borg.config file before creating a new backup
if ! [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
echo "Did not find borg.config file in the mastercontainer volume."
echo "Cannot create a backup as this is wrong."
exit 1
fi
# Create the backup
echo "Starting the backup..."
get_start_time

View File

@@ -1,7 +1,10 @@
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/0.105/alpine/Dockerfile
FROM clamav/clamav:1.0.1-2
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.1/alpine/Dockerfile
FROM clamav/clamav:1.1.0-1
RUN apk add --no-cache tzdata
COPY clamav.conf /tmp/
RUN cat /tmp/clamav.conf >> /etc/clamav/clamd.conf
COPY clamav.conf /tmp/clamav.conf
RUN set -ex; \
apk add --no-cache tzdata; \
cat /tmp/clamav.conf | tee -a /etc/clamav/clamd.conf; \
rm /tmp/clamav.conf
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,5 +1,5 @@
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
FROM collabora/code:22.05.13.1.1
FROM collabora/code:22.05.14.3.1
USER root

View File

@@ -1,18 +1,16 @@
FROM alpine:3.17.3
RUN apk add --no-cache lighttpd bash netcat-openbsd
RUN set -ex; \
apk add --no-cache bash lighttpd netcat-openbsd; \
adduser -S www-data -G www-data; \
rm -rf /etc/lighttpd/lighttpd.conf; \
chmod +r -R /etc/lighttpd; \
mkdir -p /var/www/domaincheck; \
chown www-data:www-data -R /var/www
COPY --chown=www-data:www-data lighttpd.conf /etc/lighttpd/lighttpd.conf
RUN adduser -S www-data -G www-data
RUN rm -rf /etc/lighttpd/lighttpd.conf
COPY lighttpd.conf /etc/lighttpd/lighttpd.conf
RUN chmod +r -R /etc/lighttpd && \
chown www-data:www-data -R /var/www && \
chown www-data:www-data /etc/lighttpd/lighttpd.conf
COPY start.sh /
RUN chmod +x /start.sh
COPY --chmod=775 start.sh /start.sh
USER www-data
RUN mkdir -p /var/www/domaincheck/
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD nc -z localhost $APACHE_PORT || exit 1

View File

@@ -1,15 +1,15 @@
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
FROM elasticsearch:7.17.9
RUN elasticsearch-plugin install --batch ingest-attachment
FROM elasticsearch:7.17.10
RUN set -ex; \
\
export DEBIAN_FRONTEND=noninteractive; \
apt-get update; \
apt-get install -y --no-install-recommends \
tzdata \
; \
rm -rf /var/lib/apt/lists/*
rm -rf /var/lib/apt/lists/*; \
elasticsearch-plugin install --batch ingest-attachment
HEALTHCHECK CMD nc -z localhost 9200 || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,4 +1,4 @@
FROM golang:1.20.3-alpine3.17 as go
FROM golang:1.20.4-alpine3.17 as go
RUN set -ex; \
apk add --no-cache \
vips-dev \
@@ -7,7 +7,7 @@ RUN set -ex; \
vips-jxl \
vips-poppler \
build-base; \
go install github.com/h2non/imaginary@b632dae8cc321452c3f85bcae79c580b1ae1ed84
go install github.com/h2non/imaginary@b632dae8cc321452c3f85bcae79c580b1ae1ed84;
FROM alpine:3.17.3
RUN set -ex; \
@@ -23,11 +23,13 @@ RUN set -ex; \
COPY --from=go /go/bin/imaginary /usr/local/bin/imaginary
ENV PORT 9000
USER nobody
# https://github.com/h2non/imaginary#memory-issues
ENV MALLOC_ARENA_MAX=2
ENTRYPOINT ["imaginary", "-p", "9000", "-return-size", "-max-allowed-resolution", "222.2"]
ENTRYPOINT ["imaginary", "-return-size", "-max-allowed-resolution", "222.2"]
HEALTHCHECK CMD nc -z localhost 9000 || exit 1
HEALTHCHECK CMD nc -z localhost "$PORT" || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,28 +1,28 @@
# Docker CLI is a requirement
FROM docker:23.0.4-cli as docker
FROM docker:23.0.6-cli as docker
# Caddy is a requirement
FROM caddy:2.6.4-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.1/alpine3.17/fpm/Dockerfile
FROM php:8.1.18-fpm-alpine3.17
# From https://github.com/docker-library/php/blob/master/8.2/alpine3.17/fpm/Dockerfile
FROM php:8.2.6-fpm-alpine3.17
EXPOSE 80
EXPOSE 8080
EXPOSE 8443
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
COPY --from=docker /usr/local/bin/docker /usr/local/bin/docker
WORKDIR /var/www/docker-aio
RUN set -ex; \
apk add --no-cache shadow; \
groupmod -g 333 xfs; \
usermod -u 333 -g 333 xfs; \
groupmod -g 33 www-data; \
usermod -u 33 -g 33 www-data
EXPOSE 80
EXPOSE 8080
EXPOSE 8443
RUN mkdir -p /var/www/docker-aio;
WORKDIR /var/www/docker-aio
RUN set -ex; \
usermod -u 33 -g 33 www-data; \
\
apk add --no-cache \
util-linux-misc \
ca-certificates \
@@ -36,16 +36,14 @@ RUN set -ex; \
sudo \
netcat-openbsd \
curl \
grep
RUN set -ex; \
grep; \
\
apk add --no-cache --virtual .build-deps \
autoconf \
build-base; \
pecl install APCu-5.1.22; \
docker-php-ext-enable apcu; \
rm -r /tmp/pear; \
\
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
@@ -57,38 +55,30 @@ RUN set -ex; \
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm = dynamic/pm = ondemand/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_children =.*/pm.max_children = 80/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf
COPY --from=caddy /usr/bin/caddy /usr/bin/
RUN chmod +x /usr/bin/caddy
COPY --from=docker /usr/local/bin/docker /usr/local/bin/
RUN chmod +x /usr/local/bin/docker
RUN set -e && \
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf; \
\
apk add --no-cache git; \
wget https://getcomposer.org/installer -O - | php -- --install-dir=/usr/local/bin --filename=composer; \
chmod +x /usr/local/bin/composer; \
cd /var/www/docker-aio; \
git clone https://github.com/nextcloud-releases/all-in-one.git --depth 1 .; \
find ./ -not -path ./php -maxdepth 1 -mindepth 1 -delete; \
chown www-data:www-data -R /var/www/docker-aio; \
cd php; \
composer install --no-dev; \
composer clearcache; \
sudo -u www-data composer install --no-dev; \
sudo -u www-data composer clear-cache; \
cd ..; \
rm -f /usr/local/bin/composer; \
chmod 770 -R ./; \
chown www-data:www-data -R /var/www; \
rm -r ./php/data; \
rm -r ./php/session; \
apk del --no-cache git
RUN mkdir -p /etc/apache2/certs && \
cd /etc/apache2/certs && \
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=DE/ST=BE/L=Local/O=Dev/CN=nextcloud.local" -keyout ./ssl.key -out ./ssl.crt;
COPY mastercontainer.conf /etc/apache2/sites-available/
RUN sed -i \
chmod -R 770 /var/www/docker-aio; \
chown -R www-data:www-data /var/www; \
rm -r php/data; \
rm -r php/session; \
\
mkdir -p /etc/apache2/certs; \
cd /etc/apache2/certs; \
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=DE/ST=BE/L=Local/O=Dev/CN=nextcloud.local" -keyout /etc/apache2/certs/ssl.key -out /etc/apache2/certs/ssl.crt; \
\
sed -i \
-e '/^Listen /d' \
-e 's/User apache/User www-data/g' \
-e 's/Group apache/Group www-data/g' \
@@ -107,35 +97,23 @@ RUN sed -i \
echo "ServerName localhost" | tee -a /etc/apache2/httpd.conf; \
echo "LoadModule ssl_module modules/mod_ssl.so" | tee -a /etc/apache2/httpd.conf; \
echo "LoadModule socache_shmcb_module modules/mod_socache_shmcb.so" | tee -a /etc/apache2/httpd.conf; \
echo "Include /etc/apache2/sites-available/mastercontainer.conf" | tee -a /etc/apache2/httpd.conf
RUN set -ex; \
echo "Include /etc/apache2/sites-available/mastercontainer.conf" | tee -a /etc/apache2/httpd.conf; \
\
rm -f /etc/apache2/conf.d/default.conf \
/etc/apache2/conf.d/userdir.conf \
/etc/apache2/conf.d/info.conf
RUN mkdir /var/log/supervisord; \
/etc/apache2/conf.d/info.conf; \
\
mkdir /var/log/supervisord; \
mkdir /var/run/supervisord;
COPY Caddyfile /
COPY start.sh /usr/bin/
COPY backup-time-file-watcher.sh /
COPY session-deduplicator.sh /
COPY cron.sh /
COPY daily-backup.sh /
COPY supervisord.conf /
COPY healthcheck.sh /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /cron.sh; \
chmod +x /session-deduplicator.sh; \
chmod +x /backup-time-file-watcher.sh; \
chmod +x /daily-backup.sh; \
chmod a+r /Caddyfile; \
chmod +x /healthcheck.sh
COPY --chmod=775 *.sh /
COPY --chmod=664 Caddyfile /Caddyfile
COPY --chmod=664 supervisord.conf /supervisord.conf
COPY mastercontainer.conf /etc/apache2/sites-available/mastercontainer.conf
USER root
ENTRYPOINT ["start.sh"]
ENTRYPOINT ["/start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD /healthcheck.sh

View File

@@ -6,6 +6,12 @@ print_green() {
printf "%b%s%b\n" "\e[0;92m" "$TEXT" "\e[0m"
}
# Function to show text in red
print_red() {
local TEXT="$1"
printf "%b%s%b\n" "\e[0;31m" "$TEXT" "\e[0m"
}
# Function to check if number was provided
check_if_number() {
case "${1}" in
@@ -14,13 +20,19 @@ case "${1}" in
esac
}
# Check if running as root user
if [ "$EUID" != "0" ]; then
print_red "Container does not run as root user. This is not supported."
exit 1
fi
# Check if socket is available and readable
if ! [ -a "/var/run/docker.sock" ]; then
echo "Docker socket is not available. Cannot continue."
print_red "Docker socket is not available. Cannot continue."
echo "If you did this by purpose because you don't want the container to have access to the docker socket, see https://github.com/nextcloud/all-in-one/tree/main/manual-install."
exit 1
elif ! mountpoint -q "/mnt/docker-aio-config"; then
echo "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
print_red "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
exit 1
elif ! sudo -u www-data test -r /var/run/docker.sock; then
echo "Trying to fix docker.sock permissions internally..."
@@ -41,14 +53,14 @@ elif ! sudo -u www-data test -r /var/run/docker.sock; then
usermod -aG docker www-data
fi
if ! sudo -u www-data test -r /var/run/docker.sock; then
echo "Docker socket is not readable by the www-data user. Cannot continue."
print_red "Docker socket is not readable by the www-data user. Cannot continue."
exit 1
fi
fi
# Check if api version is supported
if ! sudo -u www-data docker info &>/dev/null; then
echo "Cannot connect to the docker socket. Cannot proceed."
print_red "Cannot connect to the docker socket. Cannot proceed."
exit 1
fi
API_VERSION_FILE="$(find ./ -name DockerActionManager.php | head -1)"
@@ -58,7 +70,7 @@ API_VERSION_NUMB="$(echo "$API_VERSION" | sed 's/\.//')"
LOCAL_API_VERSION_NUMB="$(sudo -u www-data docker version | grep -i "api version" | grep -oP '[0-9]+.[0-9]+' | head -1 | sed 's/\.//')"
if [ -n "$LOCAL_API_VERSION_NUMB" ] && [ -n "$API_VERSION_NUMB" ]; then
if ! [ "$LOCAL_API_VERSION_NUMB" -ge "$API_VERSION_NUMB" ]; then
echo "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
print_red "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
exit 1
fi
else
@@ -79,16 +91,16 @@ fi
# Check if startup command was executed correctly
if ! sudo -u www-data docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-mastercontainer$"; then
echo "It seems like you did not give the mastercontainer the correct name? (The 'nextcloud-aio-mastercontainer' container was not found.)
print_red "It seems like you did not give the mastercontainer the correct name? (The 'nextcloud-aio-mastercontainer' container was not found.)
Using a different name is not supported since mastercontainer updates will not work in that case!
If you are on docker swarm and try to run AIO, see https://github.com/nextcloud/all-in-one#can-i-run-this-with-docker-swarm"
exit 1
elif ! sudo -u www-data docker volume ls --format "{{.Name}}" | grep -q "^nextcloud_aio_mastercontainer$"; then
echo "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
print_red "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
Using a different name is not supported since the built-in backup solution will not work in that case!"
exit 1
elif ! sudo -u www-data docker inspect nextcloud-aio-mastercontainer | grep -q "nextcloud_aio_mastercontainer"; then
echo "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
print_red "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
This is not supported since the built-in backup solution will not work in that case!"
exit 1
fi
@@ -98,7 +110,7 @@ if [ -n "$NEXTCLOUD_DATADIR" ]; then
if [ "$NEXTCLOUD_DATADIR" = "nextcloud_aio_nextcloud_datadir" ]; then
sleep 1
elif ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/" || [ "$NEXTCLOUD_DATADIR" = "/" ]; then
echo "You've set NEXTCLOUD_DATADIR but not to an allowed value.
print_red "You've set NEXTCLOUD_DATADIR but not to an allowed value.
The string must start with '/' and must not be equal to '/'. Also allowed is 'nextcloud_aio_nextcloud_datadir'.
It is set to '$NEXTCLOUD_DATADIR'."
exit 1
@@ -106,24 +118,24 @@ It is set to '$NEXTCLOUD_DATADIR'."
fi
if [ -n "$NEXTCLOUD_MOUNT" ]; then
if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/" || [ "$NEXTCLOUD_MOUNT" = "/" ]; then
echo "You've set NEXCLOUD_MOUNT but not to an allowed value.
print_red "You've set NEXCLOUD_MOUNT but not to an allowed value.
The string must start with '/' and must not be equal to '/'.
It is set to '$NEXTCLOUD_MOUNT'."
exit 1
elif [ "$NEXTCLOUD_MOUNT" = "/mnt/ncdata" ] || echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/ncdata/"; then
echo "'/mnt/ncdata' and '/mnt/ncdata/' are not allowed as values for NEXTCLOUD_MOUNT."
print_red "'/mnt/ncdata' and '/mnt/ncdata/' are not allowed as values for NEXTCLOUD_MOUNT."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_DATADIR" ] && [ -n "$NEXTCLOUD_MOUNT" ]; then
if [ "$NEXTCLOUD_DATADIR" = "$NEXTCLOUD_MOUNT" ]; then
echo "NEXTCLOUD_DATADIR and NEXTCLOUD_MOUNT are not allowed to be equal."
print_red "NEXTCLOUD_DATADIR and NEXTCLOUD_MOUNT are not allowed to be equal."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_UPLOAD_LIMIT" ]; then
if ! echo "$NEXTCLOUD_UPLOAD_LIMIT" | grep -q '^[0-9]\+G$'; then
echo "You've set NEXTCLOUD_UPLOAD_LIMIT but not to an allowed value.
print_red "You've set NEXTCLOUD_UPLOAD_LIMIT but not to an allowed value.
The string must start with a number and end with 'G'.
It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
exit 1
@@ -131,7 +143,7 @@ It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
fi
if [ -n "$NEXTCLOUD_MAX_TIME" ]; then
if ! echo "$NEXTCLOUD_MAX_TIME" | grep -q '^[0-9]\+$'; then
echo "You've set NEXTCLOUD_MAX_TIME but not to an allowed value.
print_red "You've set NEXTCLOUD_MAX_TIME but not to an allowed value.
The string must be a number. E.g. '3600'.
It is set to '$NEXTCLOUD_MAX_TIME'."
exit 1
@@ -139,7 +151,7 @@ It is set to '$NEXTCLOUD_MAX_TIME'."
fi
if [ -n "$NEXTCLOUD_MEMORY_LIMIT" ]; then
if ! echo "$NEXTCLOUD_MEMORY_LIMIT" | grep -q '^[0-9]\+M$'; then
echo "You've set NEXTCLOUD_MEMORY_LIMIT but not to an allowed value.
print_red "You've set NEXTCLOUD_MEMORY_LIMIT but not to an allowed value.
The string must start with a number and end with 'M'.
It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
exit 1
@@ -147,40 +159,40 @@ It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
fi
if [ -n "$APACHE_PORT" ]; then
if ! check_if_number "$APACHE_PORT"; then
echo "You provided an Apache port but did not only use numbers.
print_red "You provided an Apache port but did not only use numbers.
It is set to '$APACHE_PORT'."
exit 1
elif ! [ "$APACHE_PORT" -le 65535 ] || ! [ "$APACHE_PORT" -ge 1 ]; then
echo "The provided Apache port is invalid. It must be between 1 and 65535"
print_red "The provided Apache port is invalid. It must be between 1 and 65535"
exit 1
fi
fi
if [ -n "$APACHE_IP_BINDING" ]; then
if ! echo "$APACHE_IP_BINDING" | grep -q '^[0-9.]\+$'; then
echo "You provided an ip-address for the apache container's ip-binding but it was not a valid ip-address.
print_red "You provided an ip-address for the apache container's ip-binding but it was not a valid ip-address.
It is set to '$APACHE_IP_BINDING'."
exit 1
fi
fi
if [ -n "$TALK_PORT" ]; then
if ! check_if_number "$TALK_PORT"; then
echo "You provided an Talk port but did not only use numbers.
print_red "You provided an Talk port but did not only use numbers.
It is set to '$TALK_PORT'."
exit 1
elif ! [ "$TALK_PORT" -le 65535 ] || ! [ "$TALK_PORT" -ge 1 ]; then
echo "The provided Talk port is invalid. It must be between 1 and 65535"
print_red "The provided Talk port is invalid. It must be between 1 and 65535"
exit 1
fi
fi
if [ -n "$APACHE_PORT" ] && [ -n "$TALK_PORT" ]; then
if [ "$APACHE_PORT" = "$TALK_PORT" ]; then
echo "APACHE_PORT and TALK_PORT are not allowed to be equal."
print_red "APACHE_PORT and TALK_PORT are not allowed to be equal."
exit 1
fi
fi
if [ -n "$WATCHTOWER_DOCKER_SOCKET_PATH" ]; then
if ! echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "/$"; then
echo "You've set WATCHTOWER_DOCKER_SOCKET_PATH but not to an allowed value.
print_red "You've set WATCHTOWER_DOCKER_SOCKET_PATH but not to an allowed value.
The string must start with '/' and must not end with '/'.
It is set to '$WATCHTOWER_DOCKER_SOCKET_PATH'."
exit 1
@@ -188,7 +200,7 @@ It is set to '$WATCHTOWER_DOCKER_SOCKET_PATH'."
fi
if [ -n "$NEXTCLOUD_TRUSTED_CACERTS_DIR" ]; then
if ! echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "^/" || echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "/$"; then
echo "You've set NEXTCLOUD_TRUSTED_CACERTS_DIR but not to an allowed value.
print_red "You've set NEXTCLOUD_TRUSTED_CACERTS_DIR but not to an allowed value.
It should be an absolute path to a directory that starts with '/' but not end with '/'.
It is set to '$NEXTCLOUD_TRUSTED_CACERTS_DIR '."
exit 1
@@ -196,7 +208,7 @@ It is set to '$NEXTCLOUD_TRUSTED_CACERTS_DIR '."
fi
if [ -n "$NEXTCLOUD_STARTUP_APPS" ]; then
if ! echo "$NEXTCLOUD_STARTUP_APPS" | grep -q "^[a-z0-9 _-]\+$"; then
echo "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
print_red "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, 0-9, spaces, hyphens and '_'.
It is set to '$NEXTCLOUD_STARTUP_APPS'."
exit 1
@@ -204,7 +216,7 @@ It is set to '$NEXTCLOUD_STARTUP_APPS'."
fi
if [ -n "$NEXTCLOUD_ADDITIONAL_APKS" ]; then
if ! echo "$NEXTCLOUD_ADDITIONAL_APKS" | grep -q "^[a-z0-9 ._-]\+$"; then
echo "You've set NEXTCLOUD_ADDITIONAL_APKS but not to an allowed value.
print_red "You've set NEXTCLOUD_ADDITIONAL_APKS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
It is set to '$NEXTCLOUD_ADDITIONAL_APKS'."
exit 1
@@ -212,7 +224,7 @@ It is set to '$NEXTCLOUD_ADDITIONAL_APKS'."
fi
if [ -n "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" ]; then
if ! echo "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" | grep -q "^[a-z0-9 ._-]\+$"; then
echo "You've set NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS but not to an allowed value.
print_red "You've set NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
It is set to '$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS'."
exit 1
@@ -223,7 +235,7 @@ fi
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565
curl https://nextcloud.com &>/dev/null
if [ "$?" = 6 ]; then
echo "Could not resolve the host nextcloud.com."
print_red "Could not resolve the host nextcloud.com."
echo "Most likely the DNS resolving does not work."
echo "You should be able to fix this by following https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html"
echo "Apart from that, there has been this: https://github.com/nextcloud/all-in-one/discussions/2065"

View File

@@ -305,6 +305,7 @@ DATADIR_PERMISSION_CONF
php /var/www/html/occ config:system:set enabledPreviewProviders 4 --value="OC\\Preview\\TXT"
php /var/www/html/occ config:system:set enabledPreviewProviders 5 --value="OC\\Preview\\OpenDocument"
php /var/www/html/occ config:system:set enabledPreviewProviders 6 --value="OC\\Preview\\Movie"
php /var/www/html/occ config:system:set enabledPreviewProviders 7 --value="OC\\Preview\\Krita"
php /var/www/html/occ config:system:set enable_previews --value=true --type=boolean
# Apply other settings
@@ -630,12 +631,6 @@ if version_greater "$installed_version" "24.0.0.0"; then
fi
fi
# Migration to ES8 is pending, thus disabling FTS for now.
if [ "$INSTALL_LATEST_MAJOR" = yes ] || version_greater "$installed_version" "26.0.0.0"; then
export FULLTEXTSEARCH_ENABLED=no
echo "Fulltextsearch is not compatible with Nextcloud 26 and is getting disabled."
fi
# Fulltextsearch
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
while ! nc -z "$FULLTEXTSEARCH_HOST" 9200; do

View File

@@ -1,5 +1,5 @@
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
FROM onlyoffice/documentserver:7.3.3.49
FROM onlyoffice/documentserver:7.3.3.50
HEALTHCHECK CMD nc -z localhost 80 || exit 1
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,39 +1,35 @@
# From https://github.com/docker-library/postgres/blob/master/15/alpine/Dockerfile
FROM postgres:15.2-alpine
FROM postgres:15.3-alpine
RUN apk add --no-cache bash openssl shadow grep mawk
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
COPY --chmod=775 init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh
# We need to use the same gid and uid as on old installations
RUN set -ex; \
apk add --no-cache bash openssl shadow grep mawk; \
\
# We need to use the same gid and uid as on old installations
deluser postgres; \
groupmod -g 9999 ping; \
addgroup -g 999 -S postgres; \
adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres
adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres; \
apk del --no-cache shadow; \
\
# Fix default permissions
RUN set -ex; \
chown -R postgres:postgres /var/lib/postgresql; \
chown -R postgres:postgres /var/run/postgresql; \
chown -R postgres:postgres "$PGDATA"
COPY start.sh /usr/bin/
COPY healthcheck.sh /usr/bin/
COPY init-user-db.sh /docker-entrypoint-initdb.d/
RUN set -ex; \
chmod +x /usr/bin/start.sh; \
chmod +xr /docker-entrypoint-initdb.d/init-user-db.sh; \
chmod +x /usr/bin/healthcheck.sh
RUN mkdir /mnt/data; \
chown postgres:postgres /mnt/data;
chown -R postgres:postgres "$PGDATA"; \
\
mkdir /mnt/data; \
chown postgres:postgres /mnt/data; \
\
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd
VOLUME /mnt/data
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER postgres
ENTRYPOINT ["start.sh"]
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD healthcheck.sh
HEALTHCHECK CMD /healthcheck.sh
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -1,13 +1,13 @@
# From https://github.com/docker-library/redis/blob/master/7.0/alpine/Dockerfile
FROM redis:7.0.11-alpine
RUN apk add --no-cache openssl bash
COPY start.sh /usr/bin/
RUN chmod +x /usr/bin/start.sh
COPY --chmod=775 start.sh /usr/bin/start.sh
RUN set -ex; \
apk add --no-cache openssl bash; \
\
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
echo "root:$(openssl rand -base64 12)" | chpasswd
USER redis
ENTRYPOINT ["start.sh"]

View File

@@ -1,11 +1,14 @@
FROM nats:2.9.16-scratch as nats
FROM strukturag/nextcloud-spreed-signaling:1.1.2 as signaling
FROM coturn/coturn:4.6.2-alpine
FROM coturn/coturn:4.6.2-r0-alpine
USER root
COPY --from=nats /nats-server /usr/local/bin/nats-server
COPY --from=signaling /usr/bin/nextcloud-spreed-signaling /usr/local/bin/nextcloud-spreed-signaling
COPY --chmod=775 start.sh /usr/bin/start.sh
COPY --chmod=664 supervisord.conf /supervisord.conf
RUN set -ex; \
apk add --no-cache \
ca-certificates \
@@ -30,15 +33,11 @@ RUN set -ex; \
util-linux \
build-base \
lua5.3-dev \
luarocks5.3;
luarocks5.3; \
\
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
COPY --chmod=775 start.sh /usr/bin/start.sh
COPY --chmod=664 supervisord.conf /supervisord.conf
RUN set -ex; \
echo "root:$(openssl rand -base64 12)" | chpasswd; \
\
touch \
/etc/nats.conf \
/etc/signaling.conf \

View File

@@ -20,7 +20,6 @@ set +x
cat << TURN_CONF > "/etc/turnserver.conf"
listening-port=$TALK_PORT
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=$TURN_SECRET
realm=$NC_DOMAIN

View File

@@ -4,11 +4,9 @@ FROM containrrr/watchtower:1.5.3 as watchtower
FROM alpine:3.17.3
RUN apk add --no-cache bash
COPY --from=watchtower /watchtower /
COPY --from=watchtower /watchtower /watchtower
COPY start.sh /
RUN chmod +x /start.sh
COPY --chmod=775 start.sh /start.sh
USER root
ENTRYPOINT ["/start.sh"]
LABEL com.centurylinklabs.watchtower.monitor-only="true"

View File

@@ -22,6 +22,8 @@ Simply use https://github.com/nextcloud/all-in-one/issues/180 as template.
Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/repo-sync.yml and run the workflow that will first sync the repo and then build new container that automatically get published to `develop` and `develop-arm64`.
## How to test things correctly?
Before testing, make sure that at least the amd64 containers are built successfully by checking the last workflow here: https://github.com/nextcloud-releases/all-in-one/actions/workflows/build_images.yml.
There is a testing-VM available for the maintainer of AIO that allows for some final testing before releasing new version. See [this](https://cloud.nextcloud.com/apps/collectives/Nextcloud%20Handbook/Technical/AIO%20testing%20VM?fileId=6350152) for details.
## How to promote builds from develop to beta

View File

@@ -2,15 +2,15 @@ version: "3.8"
volumes:
nextcloud_aio_mastercontainer:
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work
services:
nextcloud:
image: nextcloud/all-in-one:latest
restart: always
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
ports:
- 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
@@ -33,6 +33,8 @@ services:
# - NEXTCLOUD_ENABLE_DRI_DEVICE=true # This allows to enable the /dev/dri device in the Nextcloud container which is needed for hardware-transcoding. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
# - WATCHTOWER_DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
# networks: # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
# - nextcloud-aio # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
@@ -47,3 +49,16 @@ services:
# - ./data:/data
# - ./sites:/srv
# network_mode: "host"
# # Optional: If you need ipv6, follow step 1 and 2 of https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md first and then uncomment the below config in order to activate ipv6 for the internal nextcloud-aio network.
# # Please make sure to uncomment also the networking lines of the mastercontainer above in order to actually create the network with docker-compose
# # Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
# networks:
# nextcloud-aio:
# name: nextcloud-aio # This line is not allowed to be changed as otherwise the created network will not be used by the other containers of AIO
# driver: bridge
# enable_ipv6: true
# ipam:
# driver: default
# config:
# - subnet: fd12:3456:789a:2::/64 # IPv6 subnet to use

View File

@@ -1,14 +1,16 @@
# IPv6-Support for Docker
Before you can use IPv6 in Docker containers or swarm services, you need to enable IPv6 support in the Docker daemon. Afterward, you can choose to use either IPv4 or IPv6 (or both) with any container, service, or network.
Before enabling IPv6-Support for Docker, please note that there are still some unresolved problems in regards to IPv6-Support in Docker. See https://github.com/nextcloud/all-in-one/discussions/2557 for more details on this.
Now that this was mentioned, see the instructions below on how to enable IPv6 for Docker.
## Docker on Linux and Docker-rootless
1. Edit `/etc/docker/daemon.json` (or `~/.config/docker/daemon.json` in case of docker-rootless), set the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `2001:db8:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well.
1. Edit `/etc/docker/daemon.json` (or `~/.config/docker/daemon.json` in case of docker-rootless), set the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well. If you are using mailcow and enabled IPv6 with the update.sh, you can keep their daemon.json, it will work too.
```json
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64",
"fixed-cidr-v6": "fd12:3456:789a:1::/64",
"experimental": true,
"ip6tables": true
}
@@ -21,20 +23,22 @@ Before you can use IPv6 in Docker containers or swarm services, you need to enab
```console
sudo systemctl restart docker
```
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `sudo docker network inspect nextcloud-aio | grep EnableIPv6`. On a new instance, this command should return that it did not find a network with this name. Then you can run `sudo docker network create --subnet="fd12:3456:789a:2::/64" --driver bridge --ipv6 nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/2045 in order to recreate the network and enable ipv6 for it.
## Docker Desktop (Windows and macOS)
On Windows and macOS which use Docker Desktop, you need to go into the settings, and select `Docker Engine`. There you should see the currently used daemon.json file.
1. You need to now adjust this json file by setting the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `2001:db8:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well.
1. You need to now adjust this json file by setting the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well.
```
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64",
"fixed-cidr-v6": "fd12:3456:789a:1::/64",
"experimental": true,
"ip6tables": true
```
2. Add these values to the json and make sure to keep the other currently values and that you don't see `Unexpected token in JSON at position ...` before attempting to restart by clicking on `Apply & restart`.
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `docker network inspect nextcloud-aio`. On a new instance, this command should return that it did not find a network with this name. Then you can run `docker network create --subnet="fd12:3456:789a:2::/64" --driver bridge --ipv6 nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/2045 in order to recreate the network and enable ipv6 for it.
---

View File

@@ -6,7 +6,7 @@ The recommended way is the following:
1. Set up your domain correctly to point to your home network
1. Set up a reverse proxy by following the [reverse proxy documentation](./reverse-proxy.md) but only open port 80 (which is needed for the ACME challenge to work - however no real traffic will use this port).
1. Set up a local DNS-server like a pi-hole and configure it to be your local DNS-server for the whole network. Then in the Pi-hole interface, add a custom DNS-record for your domain and overwrite the A-record (and possibly the AAAA-record, too) to point to the private ip-address of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
1. Enter the the ip-address of your local dns-server in the deamon.json file for docker so that you are sure that all docker containers use the correct local dns-server.
1. Enter the ip-address of your local dns-server in the deamon.json file for docker so that you are sure that all docker containers use the correct local dns-server.
1. Now, entering the domain in the AIO-interface should work as expected and should allow you to continue with the setup
## 2. Use the ACME DNS-challenge

View File

@@ -131,6 +131,7 @@ services:
- dictionaries=${COLLABORA_DICTIONARIES}
- TZ=${TIMEZONE}
- server_name=${NC_DOMAIN}
- DONT_GEN_SSL_CERT=1
volumes:
- nextcloud_aio_collabora_fonts:/opt/cool/systemplate/tmpfonts:rw
restart: unless-stopped
@@ -236,5 +237,13 @@ volumes:
nextcloud_aio_nextcloud_data:
name: nextcloud_aio_nextcloud_data
# Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
networks:
nextcloud-aio:
name: nextcloud-aio
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: ${IPV6_NETWORK}

View File

@@ -37,7 +37,7 @@ Since the AIO containers may change in the future, it is highly recommended to s
1. If your previous copy of `sample.conf` is named `my.conf`, run `mv my.conf .env` in order to rename the file to `.env`.
1. Run `sudo docker-compose down` to stop all running containers
1. Back up all important files and folders
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml latest.yml` for comparing.
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml latest.yml` for comparing. ⚠️ **Please note**: Starting with AIO v5.1.0, ipv6 networking will be enabled by default, so make sure to either enable it first by following steps 1 and 2 of https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md and then proceed with the steps below or disable ipv6 networking by editing the docker-compose file and removing ipv6 from the network.
1. Also have a look at the `sample.conf` if any variable was added or renamed and add that to your conf file as well. Here may help the diff command as well.
1. After the file update was successful, simply run `sudo docker-compose pull` to pull the new images.
1. At the end run `sudo docker-compose up` in order to start and update the containers with the new configuration.

View File

@@ -31,3 +31,4 @@ TALK_PORT=3478 # This allows to adjust the port that the talk container
TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.
TURN_SECRET= # TODO! This needs to be a unique and good password!
UPDATE_NEXTCLOUD_APPS="no" # When setting to "yes" (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.
IPV6_NETWORK=fd12:3456:789a:2::/64 # IPv6 subnet to use

View File

@@ -15,6 +15,7 @@ OUTPUT="$(cat /tmp/containers.json)"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].internal_port)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].secrets)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].devices)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].backup_volumes)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-watchtower"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-domaincheck"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-borgbackup"))')"
@@ -85,6 +86,7 @@ sed -i 's|NEXTCLOUD_ADDITIONAL_APKS=|NEXTCLOUD_ADDITIONAL_APKS=imagemagick
sed -i 's|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.|' sample.conf
sed -i 's|INSTALL_LATEST_MAJOR=|INSTALL_LATEST_MAJOR=no # Setting this to yes will install the latest Major Nextcloud version upon the first installation|' sample.conf
sed -i 's|=$|= # TODO! This needs to be a unique and good password!|' sample.conf
echo 'IPV6_NETWORK=fd12:3456:789a:2::/64 # IPv6 subnet to use' >> sample.conf
cat sample.conf
@@ -128,8 +130,16 @@ done
cat << NETWORK >> containers.yml
# Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
networks:
nextcloud-aio:
name: nextcloud-aio
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: \${IPV6_NETWORK}
NETWORK
cat containers.yml > latest.yml

View File

@@ -1,6 +1,6 @@
name: nextcloud-aio-helm-chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
version: 4.9.0
version: 5.1.0
apiVersion: v2
keywords:
- latest

View File

@@ -1,6 +1,19 @@
# You can also install the AIO containers on Kubernetes using this Helm Chart
# Nextcloud AIO Helm-chart
This is currently beta and not ready yet.
You can run the containers that are build for AIO with Kubernetes using this Helm chart. This comes with a few downsides, that are discussed below.
### Advantages
- You can run it without a container having access to the docker socket
- You can run the containers with Kubernetes
### Disadvantages
- You lose the AIO interface
- You lose update notifications and automatic updates
- You lose all AIO backup and restore features
- **You need to know what you are doing**
- For updating, you need to strictly follow the at the bottom described update routine
- You need to monitor yourself if the volumes have enough free space and increase them if they don't by adjusting their size in values.yaml
- Probably more
## How to use this?
@@ -12,3 +25,13 @@ Then run:
helm repo add nextcloud-aio https://nextcloud.github.io/all-in-one/
helm install my-release nextcloud-aio/nextcloud-aio-helm-chart -f values.yaml
```
And after a while, everything should be set up.
## How to update?
Since the values of this helm chart may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade it.
1. Stop all running pods
1. Back up all volumes that got created by the Helm chart and the values.yaml file
1. Run `helm repo update nextcloud-aio` in order to get the updated yaml files from the repository
1. Now download the updated values.yaml file from https://raw.githubusercontent.com/nextcloud/all-in-one/main/nextcloud-aio-helm-chart/values.yaml and compare that with the one that you currently have locally. Look for variables that changed or got added. You can use the diff command to compare them.
1. After the file update was successful, simply run `helm install my-release nextcloud-aio/nextcloud-aio-helm-chart -f values.yaml` to update to the new version.

View File

@@ -54,7 +54,7 @@ spec:
value: nextcloud-aio-talk
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-apache:20230422_090326-latest
image: nextcloud/aio-apache:20230511_075831-latest
name: nextcloud-aio-apache
ports:
- containerPort: {{ .Values.APACHE_PORT }}

View File

@@ -38,7 +38,7 @@ spec:
value: "90"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-clamav:20230422_090326-latest
image: nextcloud/aio-clamav:20230511_075831-latest
name: nextcloud-aio-clamav
ports:
- containerPort: 3310

View File

@@ -34,6 +34,8 @@ spec:
mountPath: /nextcloud-aio-collabora-fonts
containers:
- env:
- name: DONT_GEN_SSL_CERT
value: "1"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- name: aliasgroup1
@@ -44,7 +46,7 @@ spec:
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true {{ .Values.COLLABORA_SECCOMP_POLICY }} --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
image: nextcloud/aio-collabora:20230422_090326-latest
image: nextcloud/aio-collabora:20230511_075831-latest
name: nextcloud-aio-collabora
ports:
- containerPort: 9980

View File

@@ -22,11 +22,25 @@ spec:
io.kompose.service: nextcloud-aio-database
spec:
initContainers:
- name: init-subpath
image: alpine
command:
- mkdir
- "-p"
- /nextcloud-aio-database/data
- /nextcloud-aio-database
- /nextcloud-aio-database-dump
volumeMounts:
- name: nextcloud-aio-database-dump
mountPath: /nextcloud-aio-database-dump
- name: nextcloud-aio-database
mountPath: /nextcloud-aio-database
- name: init-volumes
image: alpine
command:
- chown
- 999:999
- "-R"
- /nextcloud-aio-database
- /nextcloud-aio-database-dump
volumeMounts:
@@ -46,12 +60,13 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-postgresql:20230422_090326-latest
image: nextcloud/aio-postgresql:20230511_075831-latest
name: nextcloud-aio-database
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
subPath: data
name: nextcloud-aio-database
- mountPath: /mnt/data
name: nextcloud-aio-database-dump

View File

@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: discovery.type
value: single-node
image: nextcloud/aio-fulltextsearch:20230422_090326-latest
image: nextcloud/aio-fulltextsearch:20230511_075831-latest
name: nextcloud-aio-fulltextsearch
ports:
- containerPort: 9200

View File

@@ -26,7 +26,7 @@ spec:
- env:
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-imaginary:20230422_090326-latest
image: nextcloud/aio-imaginary:20230511_075831-latest
name: nextcloud-aio-imaginary
ports:
- containerPort: 9000

View File

@@ -114,7 +114,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: UPDATE_NEXTCLOUD_APPS
value: "{{ .Values.UPDATE_NEXTCLOUD_APPS }}"
image: nextcloud/aio-nextcloud:20230422_090326-latest
image: nextcloud/aio-nextcloud:20230511_075831-latest
name: nextcloud-aio-nextcloud
ports:
- containerPort: 9000

View File

@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-onlyoffice:20230422_090326-latest
image: nextcloud/aio-onlyoffice:20230511_075831-latest
name: nextcloud-aio-onlyoffice
ports:
- containerPort: 80

View File

@@ -37,7 +37,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-redis:20230422_090326-latest
image: nextcloud/aio-redis:20230511_075831-latest
name: nextcloud-aio-redis
ports:
- containerPort: 6379

View File

@@ -34,7 +34,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk:20230422_090326-latest
image: nextcloud/aio-talk:20230511_075831-latest
name: nextcloud-aio-talk
ports:
- containerPort: {{ .Values.TALK_PORT }}

View File

@@ -32,6 +32,7 @@ sed -i "s|\${TALK_PORT}:\${TALK_PORT}/|$TALK_PORT:$TALK_PORT/|g" latest.yml
sed -i "s|- \${APACHE_PORT}|- $APACHE_PORT|" latest.yml
sed -i "s|- \${TALK_PORT}|- $TALK_PORT|" latest.yml
sed -i "s|\${NEXTCLOUD_DATADIR}|$NEXTCLOUD_DATADIR|" latest.yml
sed -i "/name: nextcloud-aio/,$ d" latest.yml
sed -i "/NEXTCLOUD_DATADIR/d" latest.yml
sed -i "/\${NEXTCLOUD_MOUNT}/d" latest.yml
sed -i "/^volumes:/a\ \ nextcloud_aio_nextcloud_trusted_cacerts:\n \ \ \ \ name: nextcloud_aio_nextcloud_trusted_cacerts" latest.yml
@@ -56,11 +57,19 @@ cat << EOL > /tmp/initcontainers
EOL
cat << EOL > /tmp/initcontainers.database
initContainers:
- name: init-subpath
image: alpine
command:
- mkdir
- "-p"
- /nextcloud-aio-database/data
volumeMountsInitContainer:
- name: init-volumes
image: alpine
command:
- chown
- 999:999
- "-R"
volumeMountsInitContainer:
EOL
# shellcheck disable=SC1083
@@ -80,6 +89,11 @@ for variable in "${DEPLOYMENTS[@]}"; do
if [ "$volumeName" != "nextcloud-aio-nextcloud-data" ]; then
sed -i "/^.*volumeMountsInitContainer:/i\ \ \ \ \ \ \ \ \ \ \ \ - /$volumeName" "$variable"
sed -i "/volumeMountsInitContainer:/a\ \ \ \ \ \ \ \ \ \ \ \ - name: $volumeName\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ mountPath: /$volumeName" "$variable"
# Workaround for the database volume
if [ "$volumeName" = nextcloud-aio-database ]; then
sed -i "/mountPath: \/var\/lib\/postgresql\/data/a\ \ \ \ \ \ \ \ \ \ \ \ \ \ subPath: data" "$variable"
fi
fi
done
sed -i "s|volumeMountsInitContainer|volumeMounts|" "$variable"
@@ -174,6 +188,7 @@ sed -i 's|= |: |' /tmp/sample.conf
sed -i '/^NEXTCLOUD_DATADIR/d' /tmp/sample.conf
sed -i '/^APACHE_IP_BINDING/d' /tmp/sample.conf
sed -i '/^NEXTCLOUD_MOUNT/d' /tmp/sample.conf
sed -i '/^IPV6_NETWORK/d' /tmp/sample.conf
sed -i '/_ENABLED.*/s/ yes / "yes" /' /tmp/sample.conf
sed -i '/_ENABLED.*/s/ no / "no" /' /tmp/sample.conf
sed -i 's|^NEXTCLOUD_TRUSTED_CACERTS_DIR: .*|NEXTCLOUD_TRUSTED_CACERTS_DIR: # Setting this to any value allows to automatically import root certificates into the Nextcloud container|' /tmp/sample.conf

View File

@@ -5,7 +5,7 @@
}
},
"require": {
"php": "8.1.*",
"php": "8.2.*",
"ext-json": "*",
"ext-sodium": "*",
"ext-curl": "*",
@@ -22,6 +22,6 @@
"psalm": "psalm --threads=1",
"psalm:update-baseline": "psalm --threads=1 --update-baseline",
"lint": "find . -name \\*.php -not -path './vendor/*' -exec php -l {} \\;",
"php-deprecation-detector": "find . -name \\*.php -not -path './vendor/*' -exec phpdd scan {} -n -t 8.1 \\;"
"php-deprecation-detector": "find . -name \\*.php -not -path './vendor/*' -exec phpdd scan {} -n -t 8.2 \\;"
}
}

38
php/composer.lock generated
View File

@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "ca8e9b0dbbbd88c096dd8f2bda37a315",
"content-hash": "b0074cfbf6b5cde6d6d2207286ad2e85",
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.5.1",
"version": "7.6.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9"
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b964ca597e86b752cd994f27293e9fa6b6a95ed9",
"reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"shasum": ""
},
"require": {
@@ -48,9 +48,6 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "7.5-dev"
}
},
"autoload": {
@@ -116,7 +113,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.5.1"
"source": "https://github.com/guzzle/guzzle/tree/7.6.1"
},
"funding": [
{
@@ -132,7 +129,7 @@
"type": "tidelift"
}
],
"time": "2023-04-17T16:30:08+00:00"
"time": "2023-05-15T20:43:01+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -1642,16 +1639,16 @@
},
{
"name": "twig/twig",
"version": "v3.5.1",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "a6e0510cc793912b451fd40ab983a1d28f611c15"
"reference": "106c170d08e8415d78be2d16c3d057d0d108262b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15",
"reference": "a6e0510cc793912b451fd40ab983a1d28f611c15",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/106c170d08e8415d78be2d16c3d057d0d108262b",
"reference": "106c170d08e8415d78be2d16c3d057d0d108262b",
"shasum": ""
},
"require": {
@@ -1660,15 +1657,10 @@
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"psr/container": "^1.0",
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.5-dev"
}
},
"autoload": {
"psr-4": {
"Twig\\": "src/"
@@ -1702,7 +1694,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.5.1"
"source": "https://github.com/twigphp/Twig/tree/v3.6.0"
},
"funding": [
{
@@ -1714,7 +1706,7 @@
"type": "tidelift"
}
],
"time": "2023-02-08T07:49:20+00:00"
"time": "2023-05-03T19:06:57+00:00"
}
],
"packages-dev": [],
@@ -1724,7 +1716,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "8.1.*",
"php": "8.2.*",
"ext-json": "*",
"ext-sodium": "*",
"ext-curl": "*",

View File

@@ -13,40 +13,49 @@
"required": ["image", "container_name"],
"properties": {
"image": {
"type": "string"
"type": "string",
"minLength": 1
},
"expose": {
"type": "array",
"items": {
"type": "string"
"type": "string",
"pattern": "^([0-9]{1,5})$"
}
},
"cap_add": {
"type": "array",
"items": {
"type": "string"
"type": "string",
"pattern": "^[A-Z_]+$"
}
},
"depends_on": {
"type": "array",
"items": {
"type": "string"
"type": "string",
"pattern": "^nextcloud-aio-[a-z-]+$"
}
},
"display_name": {
"type": "string"
"type": "string",
"pattern": "^[A-Za-z ]+$"
},
"environment": {
"type": "array",
"items": {
"type": "string"
"type": "string",
"pattern": "^.*=.*$",
"minlength": 1
}
},
"container_name": {
"type": "string"
"type": "string",
"pattern": "^nextcloud-aio-[a-z-]+$"
},
"internal_port": {
"type": "string"
"type": "string",
"pattern": "^(([0-9]{1,5})|host|(%[A-Z_]+%))$"
},
"stop_grace_period": {
"type": "integer"
@@ -59,19 +68,23 @@
"minProperties": 3,
"properties": {
"ip_binding": {
"type": "string"
"type": "string",
"pattern": "^(%[A-Z_]+%)?$"
},
"port_number": {
"type": "string"
"type": "string",
"pattern": "^(%[A-Z_]+%)$"
},
"protocol": {
"type": "string"
"type": "string",
"pattern": "^(tcp|udp)$"
}
}
}
},
"restart": {
"type": "string"
"type": "string",
"pattern": "^unless-stopped$"
},
"shm_size": {
"type": "integer"
@@ -79,13 +92,25 @@
"secrets": {
"type": "array",
"items": {
"type": "string"
"type": "string",
"pattern": "^[A-Z_]+$"
}
},
"devices": {
"type": "array",
"items": {
"type": "string"
"type": "string",
"pattern": "^/dev/[a-z]+$"
}
},
"apparmor_unconfined": {
"type": "boolean"
},
"backup_volumes": {
"type": "array",
"items": {
"type": "string",
"pattern": "^nextcloud_aio_[a-z_]+$"
}
},
"volumes": {
@@ -96,10 +121,12 @@
"minProperties": 3,
"properties": {
"destination": {
"type": "string"
"type": "string",
"pattern": "^((/[a-z_/.-]+)|(%[A-Z_]+%))$"
},
"source": {
"type": "string"
"type": "string",
"pattern": "^((nextcloud_aio_[a-z_]+)|(%[A-Z_]+%))$"
},
"writeable": {
"type": "boolean"

View File

@@ -41,7 +41,11 @@
"writeable": true
}
],
"restart": "unless-stopped"
"restart": "unless-stopped",
"backup_volumes": [
"nextcloud_aio_nextcloud",
"nextcloud_aio_apache"
]
},
{
"container_name": "nextcloud-aio-database",
@@ -75,7 +79,11 @@
],
"stop_grace_period": 1800,
"restart": "unless-stopped",
"shm_size": 268435456
"shm_size": 268435456,
"backup_volumes": [
"nextcloud_aio_database",
"nextcloud_aio_database_dump"
]
},
{
"container_name": "nextcloud-aio-nextcloud",
@@ -167,6 +175,9 @@
"restart": "unless-stopped",
"devices": [
"/dev/dri"
],
"backup_volumes": [
"nextcloud_aio_nextcloud"
]
},
{
@@ -207,7 +218,8 @@
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%",
"server_name=%NC_DOMAIN%"
"server_name=%NC_DOMAIN%",
"DONT_GEN_SSL_CERT=1"
],
"volumes": [
{
@@ -260,7 +272,8 @@
"SELECTED_RESTORE_TIME=%SELECTED_RESTORE_TIME%",
"BACKUP_RESTORE_PASSWORD=%BACKUP_RESTORE_PASSWORD%",
"ADDITIONAL_DIRECTORIES_BACKUP=%ADDITIONAL_DIRECTORIES_BACKUP%",
"BORGBACKUP_HOST_LOCATION=%BORGBACKUP_HOST_LOCATION%"
"BORGBACKUP_HOST_LOCATION=%BORGBACKUP_HOST_LOCATION%",
"BORG_HOST_ID=nextcloud-aio-borgbackup"
],
"volumes": [
{
@@ -268,31 +281,11 @@
"destination": "/root",
"writeable": true
},
{
"source": "nextcloud_aio_nextcloud",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud",
"writeable": true
},
{
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
"writeable": true
},
{
"source": "nextcloud_aio_database",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database",
"writeable": true
},
{
"source": "nextcloud_aio_database_dump",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database_dump",
"writeable": true
},
{
"source": "nextcloud_aio_apache",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_apache",
"writeable": true
},
{
"source": "nextcloud_aio_mastercontainer",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer",
@@ -322,7 +315,8 @@
],
"cap_add": [
"SYS_ADMIN"
]
],
"apparmor_unconfined": true
},
{
"container_name": "nextcloud-aio-watchtower",

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="5.9.0@8b9ad1eb9e8b7d3101f949291da2b9f7767cd163"/>
<files psalm-version="5.11.0@c9b192ab8400fdaf04b2b13d110575adc879aa90"/>

View File

@@ -31,7 +31,7 @@
}
}
function disableSpinnerSpinner() {
function enableSpinner() {
document.getElementById('overlay').classList.add('loading');
}
@@ -51,7 +51,7 @@
xhr.addEventListener('error', () => disableSpinner());
xhr.open(form.method, form.getAttribute("action"));
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
disableSpinnerSpinner();
enableSpinner();
xhr.send(new URLSearchParams(new FormData(form)));
event.preventDefault();
}

View File

@@ -70,15 +70,18 @@ $app->post('/api/configuration', \AIO\Controller\ConfigurationController::class
// Views
$app->get('/containers', function (Request $request, Response $response, array $args) use ($container) {
$view = Twig::fromRequest($request);
$view->addExtension(new \AIO\Twig\ClassExtension());
/** @var \AIO\Data\ConfigurationManager $configurationManager */
$configurationManager = $container->get(\AIO\Data\ConfigurationManager::class);
/** @var \AIO\Docker\DockerActionManager $dockerActionManger */
$dockerActionManger = $container->get(\AIO\Docker\DockerActionManager::class);
$dockerActionManger->ConnectMasterContainerToNetwork();
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
$dockerActionManger->ConnectMasterContainerToNetwork();
$dockerController->StartDomaincheckContainer();
$view->addExtension(new \AIO\Twig\ClassExtension());
return $view->render($response, 'containers.twig', [
'domain' => $configurationManager->GetDomain(),
'apache_port' => $configurationManager->GetApachePort(),
'borg_backup_host_location' => $configurationManager->GetBorgBackupHostLocation(),
'nextcloud_password' => $configurationManager->GetAndGenerateSecret('NEXTCLOUD_PASSWORD'),
'containers' => (new \AIO\ContainerDefinitionFetcher($container->get(\AIO\Data\ConfigurationManager::class), $container))->FetchDefinition(),
@@ -111,6 +114,12 @@ $app->get('/containers', function (Request $request, Response $response, array $
'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled(),
'is_fulltextsearch_enabled' => $configurationManager->isFulltextsearchEnabled(),
'additional_backup_directories' => $configurationManager->GetAdditionalBackupDirectoriesString(),
'nextcloud_datadir' => $configurationManager->GetNextcloudDatadirMount(),
'nextcloud_mount' => $configurationManager->GetNextcloudMount(),
'nextcloud_upload_limit' => $configurationManager->GetNextcloudUploadLimit(),
'nextcloud_max_time' => $configurationManager->GetNextcloudMaxTime(),
'nextcloud_memory_limit' => $configurationManager->GetNextcloudMemoryLimit(),
'is_dri_device_enabled' => $configurationManager->isDriDeviceEnabled(),
]);
})->setName('profile');
$app->get('/login', function (Request $request, Response $response, array $args) use ($container) {
@@ -144,6 +153,7 @@ $app->get('/setup', function (Request $request, Response $response, array $args)
// Auth Redirector
$app->get('/', function (\Psr\Http\Message\RequestInterface $request, Response $response, array $args) use ($container) {
/** @var \AIO\Auth\AuthManager $authManager */
$authManager = $container->get(\AIO\Auth\AuthManager::class);
/** @var \AIO\Data\Setup $setup */

View File

@@ -23,6 +23,11 @@ a {
outline: none;
}
.button:focus {
color:black;
border: 2px solid black;
}
#logout {
margin-top: 7px;
}

View File

@@ -26,6 +26,9 @@ class Container {
/** @var string[] */
private array $capAdd;
private int $shmSize;
private bool $apparmorUnconfined;
/** @var string[] */
private array $backupVolumes;
private DockerActionManager $dockerActionManager;
public function __construct(
@@ -43,6 +46,8 @@ class Container {
array $devices,
array $capAdd,
int $shmSize,
bool $apparmorUnconfined,
array $backupVolumes,
DockerActionManager $dockerActionManager
) {
$this->identifier = $identifier;
@@ -59,6 +64,8 @@ class Container {
$this->devices = $devices;
$this->capAdd = $capAdd;
$this->shmSize = $shmSize;
$this->apparmorUnconfined = $apparmorUnconfined;
$this->backupVolumes = $backupVolumes;
$this->dockerActionManager = $dockerActionManager;
}
@@ -82,6 +89,10 @@ class Container {
return $this->shmSize;
}
public function isApparmorUnconfined() : bool {
return $this->apparmorUnconfined;
}
public function GetMaxShutdownTime() : int {
return $this->maxShutdownTime;
}
@@ -98,6 +109,10 @@ class Container {
return $this->capAdd;
}
public function GetBackupVolumes() : array {
return $this->backupVolumes;
}
public function GetPorts() : ContainerPorts {
return $this->ports;
}

View File

@@ -223,6 +223,16 @@ class ContainerDefinitionFetcher
$shmSize = $entry['shm_size'];
}
$apparmorUnconfined = false;
if (isset($entry['apparmor_unconfined'])) {
$apparmorUnconfined = $entry['apparmor_unconfined'];
}
$backupVolumes = [];
if (isset($entry['backup_volumes'])) {
$backupVolumes = $entry['backup_volumes'];
}
$containers[] = new Container(
$entry['container_name'],
$displayName,
@@ -238,6 +248,8 @@ class ContainerDefinitionFetcher
$devices,
$capAdd,
$shmSize,
$apparmorUnconfined,
$backupVolumes,
$this->container->get(DockerActionManager::class)
);
}

View File

@@ -132,7 +132,7 @@ class DockerActionManager
}
if ($internalPort !== "" && $internalPort !== 'host') {
$connection = @fsockopen($containerName, (int)$internalPort, $errno, $errstr, 0.1);
$connection = @fsockopen($containerName, (int)$internalPort, $errno, $errstr, 0.2);
if ($connection) {
fclose($connection);
return new RunningState();
@@ -421,12 +421,19 @@ class DockerActionManager
$requestBody['HostConfig']['CapAdd'] = $capAdds;
}
if ($container->isApparmorUnconfined()) {
$requestBody['HostConfig']['SecurityOpt'] = ["apparmor:unconfined"];
}
// Special things for the backup container which should not be exposed in the containers.json
if ($container->GetIdentifier() === 'nextcloud-aio-borgbackup') {
$requestBody['HostConfig']['SecurityOpt'] = ["apparmor:unconfined"];
// Additional backup directories
$mounts = [];
foreach ($this->getAllBackupVolumes() as $additionalBackupVolumes) {
if ($additionalBackupVolumes !== '') {
$mounts[] = ["Type" => "volume", "Source" => $additionalBackupVolumes, "Target" => "/nextcloud_aio_volumes/" . $additionalBackupVolumes, "ReadOnly" => false];
}
}
foreach ($this->configurationManager->GetAdditionalBackupDirectoriesArray() as $additionalBackupDirectories) {
if ($additionalBackupDirectories !== '') {
if (!str_starts_with($additionalBackupDirectories, '/')) {
@@ -488,6 +495,10 @@ class DockerActionManager
}
public function isAnyUpdateAvailable() : bool {
// return early if instance is not installed
if (!$this->configurationManager->wasStartButtonClicked()) {
return false;
}
$id = 'nextcloud-aio-apache';
if ($this->isContainerUpdateAvailable($id) !== "") {
@@ -497,6 +508,31 @@ class DockerActionManager
}
}
private function getBackupVolumes(string $id) : array
{
$container = $this->containerDefinitionFetcher->GetContainerById($id);
$backupVolumes = $container->GetBackupVolumes();
foreach ($container->GetDependsOn() as $dependency) {
$backupVolumes[] = $this->getBackupVolumes($dependency);
}
return $backupVolumes;
}
private function getAllBackupVolumes() : array {
$id = 'nextcloud-aio-apache';
$backupVolumesArray = $this->getBackupVolumes($id);
// Flatten array
$backupVolumesArrayFlat = iterator_to_array(
new \RecursiveIteratorIterator(
new \RecursiveArrayIterator($backupVolumesArray)
),
$use_keys = false
);
return array_unique($backupVolumesArrayFlat);
}
private function GetRepoDigestsOfContainer(string $containerName) : ?array {
try {
$containerUrl = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));
@@ -677,10 +713,6 @@ class DockerActionManager
'CheckDuplicate' => true,
'Driver' => 'bridge',
'Internal' => false,
'Options' => [
'com.docker.network.bridge.enable_icc' => 'true',
'com.docker.network.bridge.enable_ip_masquerade' => 'true'
]
]
]
);

View File

@@ -16,7 +16,7 @@
</header>
<div class="content">
<h1>Nextcloud AIO v4.9.0</h1>
<h1>Nextcloud AIO v5.2.1</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>
@@ -80,8 +80,15 @@
{% else %}
{% if borg_backup_host_location == '' and borg_restore_password == '' %}
Nextcloud AIO stands for Nextcloud All-in-One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.<br><br>
You can either create a new AIO instance or restore a former AIO instance from backup. See the two sections below.<br><br>
{{ include('includes/aio-config.twig') }}
<h2>New AIO instance</h2>
Please type in the domain that will be used for Nextcloud if you want to create a new instance:<br><br />
{% if apache_port == '443' %}
AIO is currently in "normal mode" which means that it handles the TLS proxying itself. This also means that it cannot be installed behind a web server or reverse proxy (like Apache, Nginx and else). If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx and else), see the <b><a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md">reverse proxy documentation</a></b>. Advice: have a detailed look at the changed docker run command for AIO.<br><br>
{% else %}
AIO is currently in "reverse proxy mode" which means that it can be installed behind a web server or reverse proxy (like Apache Nginx and else) and does not do the TLS proxying itself.<br><br>
{% endif %}
Please type in the domain into the input field below that will be used for Nextcloud in order to create a new AIO instance.<br><br />
{% if skip_domain_validation == true %}
<b>Please note:</b> The domain validation is disabled so any domain will be accepted here! So make sure that you do not make a typo here as you will not be able to change it afterwards!<br><br>
{% endif %}
@@ -92,9 +99,18 @@
<input class="button" type="submit" value="Submit" />
</form>
{% if skip_domain_validation == false %}
Make sure that this server is reachable on Port 443 and you've correctly set up the DNS config for the domain that you enter. <br><br>
If you have a dynamic IP-address, you can use e.g. <a href="https://ddclient.net/">DDclient</a> with a compatible domain provider for DNS updates. <br /><br/>
<b>Hint:</b> If the domain validation fails but you are completely sure that you've configured everything correctly, you may skip the domain validation by following <a href="https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation">this documentation</a>.<br><br>
Make sure that this server is reachable on port 443 (port 443/tcp is open/forwarded in your firewall/router) and that you've correctly set up the DNS config for the domain that you enter (set the A record to your public ipv4-address and if you need ipv6, set the AAAA record to your public ipv6-address. A CNAME record if of course also possible). You should see hints on what went wrong if your domain does not get accepted in the top right corner.<br><br>
<details>
<summary>Click here for further hints</summary><br />
If you should not have a domain yet, you can get one for free e.g. from duckdns.org and others.<br><br>
If you have a dynamic public IP-address, you can use e.g. <a href="https://ddclient.net/">DDclient</a> with a compatible domain provider for DNS updates.<br /><br/>
If you only want to install AIO locally without exposing it to the public internet or if you cannot do so, feel free to follow <a href="https://github.com/nextcloud/all-in-one/blob/main/local-instance.md">this documentation</a>.<br><br>
If you should be using Cloudflare Proxy for your domain, make sure to disable the Proxy feature temporarily as it might block the domain validation attempts.<br /><br/>
{% if apache_port != '443' %}
If you run into issues getting your domain accepted, see <a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#6-how-to-debug-things">these steps</a> for how to debug things. <br /><br/>
{% endif %}
<b>Hint:</b> If the domain validation fails but you are completely sure that you've configured everything correctly, you may skip the domain validation by following <a href="https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation">this documentation</a>.<br />
</details><br />
{% endif %}
<h2>Restore former AIO instance from backup</h2>
@@ -117,8 +133,8 @@
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Check and repair backup integrity" onclick="return confirm('Check and repair backup integrity? Are you sure that you want to check and repair the backup integrity? This should only be done after reading the mentioned documentation.')"/><br/>
</form>
</details><br /><br />
</form><br />
</details><br />
{% endif %}
{% elseif backup_exit_code == 0 %}
<span class="status success"></span> Last {{ borg_backup_mode }} successful! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
@@ -159,12 +175,7 @@
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
The folder path that you enter must start with <b>/</b> and must <b>not</b> end with <b>/</b>.<br><br>
An example for Linux is <b>/mnt/backup</b>.<br>
On Synology it could be <b>/volume1/docker/nextcloud/backup</b>.<br>
For macOS it may be <b>/var/backup</b>.<br>
On Windows it might be <b>/run/desktop/mnt/host/c/backup</b>. (This path is equivalent to 'C:\backup' on your Windows host so you need to translate the path accordingly. Hint: the path that you enter needs to start with '/run/desktop/mnt/host/'. Append to that the exact location on your windows host, e.g. 'c/backup' which is equivalent to 'C:\backup'.)<br>
Another option is to enter a specific volume name here: <b>nextcloud_aio_backupdir</b>. This volume needs to be created beforehand manually by you in order to be able to use it.<br><br>
{{ include('includes/backup-dirs.twig') }}
⚠️ Please note that the backup archive must be located in a subfolder of the folder that you enter here and the subfolder which contains the archive must be named 'borg'. Otherwise will the backup container not find the backup archive!<br><br>
{% endif %}
{% else %}
@@ -178,7 +189,7 @@
{% endif %}
{% endif %}
{% if domain != "" and was_start_button_clicked == true %}
{% if was_start_button_clicked == true %}
{% if current_channel starts with 'latest' or current_channel starts with 'beta' or current_channel starts with 'develop' %}
You are running the <a href="https://github.com/nextcloud/all-in-one#how-to-switch-the-channel"><b>{{ current_channel }}</b></a> channel. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer">Logs</a>)<br><br>
{% else %}
@@ -202,13 +213,13 @@
Initial Nextcloud password:
{% if borg_backup_host_location != '' %}
{# nextcloud_password needs to be duplicated due to a bug in Firefox. See https://github.com/nextcloud/all-in-one/issues/638. #}
<b>{{ nextcloud_password }}</b></details><br /><br />
<b>{{ nextcloud_password }}</b><br /></details><br />
{% else %}
<b>{{ nextcloud_password }}</b><br><br>
{% endif %}
<a href="https://{{ domain }}" class="button" target="_blank" rel="noopener">Open your Nextcloud ↗</a><br/><br>
{% if borg_backup_host_location != '' %}
If your Nextcloud does not open when clicking the button above, see <b><a href="https://github.com/nextcloud/all-in-one/discussions/2105">this documentation<a/></b><br><br>
{% if borg_backup_host_location == '' %}
If your Nextcloud does not open when clicking the button above, see <b><a href="https://github.com/nextcloud/all-in-one/discussions/2105">this documentation</a></b><br><br>
{% endif %}
{% else %}
{% if isAnyRestarting == false %}
@@ -226,6 +237,10 @@
{% endif %}
{% endif %}
{% if isApacheStarting == false and is_backup_container_running == false %}
{{ include('includes/aio-config.twig') }}
{% endif %}
{% if was_start_button_clicked == true %}
<h2>Containers</h2>
<ul>
@@ -339,12 +354,7 @@
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
The folder path that you enter must start with <b>/</b> and must <b>not</b> end with <b>/</b>.<br><br>
An example for Linux is <b>/mnt/backup</b>.<br>
On Synology it could be <b>/volume1/docker/nextcloud/backup</b>.<br>
For macOS it may be <b>/var/backup</b>.<br>
On Windows it might be <b>/run/desktop/mnt/host/c/backup</b>. (This path is equivalent to 'C:\backup' on your Windows host so you need to translate the path accordingly. Hint: the path that you enter needs to start with '/run/desktop/mnt/host/'. Append to that the exact location on your windows host, e.g. 'c/backup' which is equivalent to 'C:\backup'.)<br>
Another option is to enter a specific volume name here: <b>nextcloud_aio_backupdir</b>. This volume needs to be created beforehand manually by you in order to be able to use it.<br><br>
{{ include('includes/backup-dirs.twig') }}
{% endif %}
{% endif %}
@@ -364,8 +374,8 @@
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Check and repair backup integrity" onclick="return confirm('Check and repair backup integrity? Are you sure that you want to check and repair the backup integrity? This should only be done after reading the mentioned documentation.')"/><br/>
</form>
</details><br /><br />
</form><br />
</details><br />
{% endif %}
{% if has_backup_run_once == false %}
You may change the backup path again since the initial backup was not successful. After submitting the new value, you need to click on 'Create Backup' for testing the new value.<br /><br />
@@ -394,12 +404,12 @@
This is your encryption password for backups: <b>{{ borgbackup_password }}</b><br /><br/>
Please save it at a safe place since you won't be able to restore from backup if you lose this password! <br /><br/>
Backed up will get all important data of your Nextcloud AIO instance like the database, your files and configuration files of the mastercontainer and else. <br /><br/>
The backup itself uses a tool that is called <a href="https://github.com/borgbackup/borg#what-is-borgbackup"><b>BorgBackup</b><a/> which is a well-known server backup tool that efficiently backs up your files and encrypts them on the fly. <br /><br/>
The backup itself uses a tool that is called <a href="https://github.com/borgbackup/borg#what-is-borgbackup"><b>BorgBackup</b></a> which is a well-known server backup tool that efficiently backs up your files and encrypts them on the fly. <br /><br/>
Backups get created in the following directory on the host: <b>{{ borg_backup_host_location }}/borg</b> <br /><br/>
Be aware that this solution does not back up files and folders that are mounted into Nextcloud using the external storage app - but you can add further Docker volumes and host paths that you want to back up after the initial backup is done.<br><br>
Regarding backup retention, see <b><a href="https://github.com/nextcloud/all-in-one/discussions/1675">this documentation</a></b><br><br>
Regarding backup retention, see <b><a href="https://github.com/nextcloud/all-in-one/discussions/1675">this</a></b>.<br><br>
Daily backups can get enabled after the initial backup is done. Enabling this also allows to enable an option that allows to update all containers, Nextcloud and its apps automatically.<br><br>
For further documentation and options on this backup solution refer to <b><a href="https://github.com/nextcloud/all-in-one#backup-solution">this documentation<a/></b> and below.
For further documentation and options on this backup solution refer to <b><a href="https://github.com/nextcloud/all-in-one#backup-solution">this section</a></b> and below.<br>
{% if isApacheStarting != true %}
<h3>Backup creation</h3>
@@ -473,9 +483,9 @@
{% endif %}
{% endif %}
{% if has_backup_run_once == false %}
<br /><br />
<br />
{% else %}
</details><br /><br />
</details><br />
{% endif %}
{% endif %}
{% endif %}
@@ -484,15 +494,18 @@
{% if is_backup_container_running == false %}
{% if isApacheStarting == false %}
<h2>AIO password change</h2>
You can change your AIO password below:<br><br />
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" autocomplete="current-password" name="current-master-password" placeholder="Your current AIO password"/>
<input type="text" autocomplete="new-password" name="new-master-password" placeholder="Your new AIO password"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
The new password needs to be at least 24 characters long. Allowed characters are the <a href="https://en.wikipedia.org/wiki/Latin_alphabet#/media/File:Abecedarium.png"><b>latin characters</b></a> <b>a-z</b>, <b>A-Z</b>, <b>0-9</b> and <b>spaces</b>.<br><br>
<details>
<summary>Click here to change your AIO password</summary><br />
You can change your AIO password below:<br><br />
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" autocomplete="current-password" name="current-master-password" placeholder="Your current AIO password"/>
<input type="text" autocomplete="new-password" name="new-master-password" placeholder="Your new AIO password"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
The new password needs to be at least 24 characters long. Allowed characters are the <a href="https://en.wikipedia.org/wiki/Latin_alphabet#/media/File:Abecedarium.png"><b>latin characters</b></a> <b>a-z</b>, <b>A-Z</b>, <b>0-9</b> and <b>spaces</b>.<br>
</details><br>
{% endif %}
{% endif %}
{% endif %}
@@ -527,9 +540,9 @@
<input type="checkbox" id="imaginary" name="imaginary"><label for="imaginary">Imaginary (for previews of heic, heif, illustrator, pdf, svg, tiff and webp)</label><br>
{% endif %}
{% if is_talk_enabled == true %}
<input type="checkbox" id="talk" name="talk" checked="checked"><label for="talk">Nextcloud Talk (needs ports {{ talk_port }}/TCP and {{ talk_port }}/UDP open in your firewall/router)</label><br><br>
<input type="checkbox" id="talk" name="talk" checked="checked"><label for="talk">Nextcloud Talk (needs ports {{ talk_port }}/TCP and {{ talk_port }}/UDP open/forwarded in your firewall/router)</label><br><br>
{% else %}
<input type="checkbox" id="talk" name="talk"><label for="talk">Nextcloud Talk (needs ports {{ talk_port }}/TCP and {{ talk_port }}/UDP open in your firewall/router)</label><br><br>
<input type="checkbox" id="talk" name="talk"><label for="talk">Nextcloud Talk (needs ports {{ talk_port }}/TCP and {{ talk_port }}/UDP open/forwarded in your firewall/router)</label><br><br>
{% endif %}
{% if is_onlyoffice_enabled == true %}
<input type="checkbox" id="onlyoffice" name="onlyoffice" checked="checked"><label for="onlyoffice">OnlyOffice</label><br>

View File

@@ -0,0 +1,36 @@
<details>
<summary>Click here to view the current AIO config and documentation links</summary><br />
{% if was_start_button_clicked == true %}
Nextclouds config.php file is stored in the nextcloud_aio_nextcloud Docker volume and can by edited by following the <a href="https://github.com/nextcloud/all-in-one#how-to-edit-nextclouds-configphp-file-with-a-texteditor">config.php documentation</a>.<br><br>
You can run Nextcloud's usual occ commands by following the <a href="https://github.com/nextcloud/all-in-one#how-to-run-occ-commands">occ documentation</a></b>.<br><br>
{% endif %}
{% if nextcloud_datadir starts with '/' %}
Nextcloud's datadir is getting stored in the {{ nextcloud_datadir }} directory.
{% else %}
Nextcloud's datadir is getting stored in the {{ nextcloud_datadir }} Docker volume.
{% endif %}
See the <a href="https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir">NEXTCLOUD_DATADIR documentation</a> on how to change this.<br><br>
{% if nextcloud_mount == '' %}
The Nextcloud container is confied and local external storage in Nextcloud is disabled.
{% else %}
The Nextcloud container is getting gets access to the {{ nextcloud_mount }} directory and local external storage in Nextcloud is enabled.
{% endif %}
See the <a href="https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host">NEXTCLOUD_MOUNT documentation</a> on how to change this.<br><br>
Nextcloud has an upload limit of {{ nextcloud_upload_limit }} configured (for public link uploads. Bigger uploads are always possible when users are logged in). See the <a href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud">NEXTCLOUD_UPLOAD_LIMIT documentation</a> on how to change this.<br><br>
For Nextcloud, a memory limit of {{ nextcloud_memory_limit }} per PHP process is configured. See the <a href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud">NEXTCLOUD_MEMORY_LIMIT documentation</a> on how to change this.<br><br>
Nextcloud has a timeout of {{ nextcloud_max_time }} seconds configured (important for big file uploads). See the <a href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud">NEXTCLOUD_MAX_TIME documentation</a> on how to change this.<br><br>
{% if is_dri_device_enabled == true %}
The /dev/dri device which is needed for hardware transcoding is getting attached to the Nextcloud container.
{% else %}
The /dev/dri device which is needed for hardware transcoding is not attached to the Nextcloud container.
{% endif %}
See the <a href="https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud">NEXTCLOUD_ENABLE_DRI_DEVICE documentation</a> on how to change this.<br><br>
For further documentation on AIO, refer to <b><a href="https://github.com/nextcloud/all-in-one#nextcloud-all-in-one">this page</a></b>. You can use the browser search [CTRL]+[F] to search through the documentation. Additional documentation can be found <b><a href="https://github.com/nextcloud/all-in-one/discussions/categories/wiki">here</a></b>.<br>
</details><br />

View File

@@ -0,0 +1,6 @@
The folder path that you enter must start with <b>/</b> and must <b>not</b> end with <b>/</b>.<br><br>
An example for Linux is <b>/mnt/backup</b>.<br><br>
On Synology it could be <b>/volume1/docker/nextcloud/backup</b>.<br><br>
For macOS it may be <b>/var/backup</b>.<br><br>
On Windows it might be <b>/run/desktop/mnt/host/c/backup</b>. (This path is equivalent to 'C:\backup' on your Windows host so you need to translate the path accordingly. Hint: the path that you enter needs to start with '/run/desktop/mnt/host/'. Append to that the exact location on your windows host, e.g. 'c/backup' which is equivalent to 'C:\backup'.)<br><br>
Another option is to enter a specific volume name here: <b>nextcloud_aio_backupdir</b>. This volume needs to be created beforehand manually by you in order to be able to use it.<br><br>

View File

@@ -80,7 +80,7 @@ The following instructions are meant for installations without a web server or r
curl -fsSL https://get.docker.com | sudo sh
```
1. If you need ipv6 support, you should enable it by following https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md.
2. Run the command below in order to start the container:
2. Run the command below in order to start the container on Linux and without a web server or reverse proxy (like Apache, Nginx and else) already in place:
```
# For Linux and without a web server or reverse proxy (like Apache, Nginx and else) already in place:
sudo docker run \
@@ -170,6 +170,8 @@ Also, you may be interested in adjusting Nextcloud's Datadir to store the files
### How to run AIO on Synology DSM
On Synology, there are two things different in comparison to Linux: instead of using `--volume /var/run/docker.sock:/var/run/docker.sock:ro`, you need to use `--volume /volume1/docker/docker.sock:/var/run/docker.sock:ro` to run it. You also need to add `--env WATCHTOWER_DOCKER_SOCKET_PATH="/volume1/docker/docker.sock"`to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`). Apart from that it should work and behave the same like on Linux. Obviously the Synology Docker GUI will not work with that so you will need to either use SSH or create a user-defined script task in the task scheduler as the user 'root' in order to run the command.
⚠️ **Please note**: it is possible that the docker socket on your Synology is located in `/var/run/docker.sock` like the default on Linux. Then you can just use the Linux command without having to change anything - you will notice this when you try to start the container and it says that the bind mount failed. E.g. `docker: Error response from daemon: Bind mount failed: '/volume1/docker/docker.sock' does not exists.`
Also, you may be interested in adjusting Nextcloud's Datadir to store the files on the host system. See [this documentation](https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir) on how to do it.
You'll also need to adjust Synology's firewall, see below:
@@ -195,6 +197,7 @@ The easiest way to run it with Portainer on Linux is to use Portainer's stacks f
- Cloudflare only supports uploading files up to 100 MB in the free plan, if you try to upload bigger files you will get an error (413 - Payload Too Large) if no chunking is used (e.g. for public uploads in the web, or if chunks are configured to be bigger than 100 MB in the clients or the web). If you need to upload bigger files, you need to disable the proxy option in your DNS settings, or you must use another proxy than Cloudflare tunnels. Both options will disable Cloudflare DDoS protection.
- Cloudflare only allows a max timeout of 100s for requests which is not configurable. This means that any server-side processing e.g. for assembling chunks for big files during upload that take longer than 100s will simply not work. See https://github.com/nextcloud/server/issues/19223. If you need to upload big files reliably, you need to disable the proxy option in your DNS settings, or you must use another proxy than Cloudflare tunnels. Both options will disable Cloudflare DDoS protection.
- It is known that the in AIO included collabora (Nextcloud Office) does not work out of the box behind Cloudflare. To make it work, you need to add all [Cloudflare IP-ranges](https://www.cloudflare.com/ips/) to the wopi-allowlist in `https://yourdomain.com/settings/admin/richdocuments`
- Cloudflare Proxy might block the Turnserver for Nextcloud Talk from working correctly. You might want to disable Cloudflare Proxy thus. See https://github.com/nextcloud/all-in-one/discussions/2463#discussioncomment-5779981
- The built-in High performance backend for Nextcloud Talk will potentially not work out-of-the-box since it needs a separate port (by default 3478 or as chosen) available on the same domain. If you still want to use the feature, you will need to adjust and test your settings in `https://yourdomain.com/settings/admin/talk`.
- If you get an error in Nextcloud's admin overview that the HSTS header is not set correctly, you might need to enable it in Cloudflare manually.
- If you are using AIO's built-in Reverse Proxy and don't use your own, then may the certificate issuing possibly not work out-of-the-box because Cloudflare might block the attempt. In that case you need to disable the Proxy feature at least temporarily in order to make it work. See https://github.com/nextcloud/all-in-one/discussions/1101.
@@ -284,7 +287,7 @@ If your Nextcloud is running and you are logged in as admin in your Nextcloud, y
**⚠️ Please note:** Editing the configuration.json manually and making a mistake may break your instance so please create a backup first!
If you set up a new AIO instance, you need to enter a domain. Currently there is no way to change this domain afterwards from the AIO interface. So in order to change it, you need to edit the configuration.json manually using `sudo docker run -it --rm --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config:rw alpine sh -c "apk add --no-cache nano && nano /mnt/docker-aio-config/data/configuration.json"`, subsitute each occurrence of your old domain with your new domain and save and write out the file. Afterwards restart your containers from the AIO interface and everything should work as expected if the new domain is correctly configured.<br>
If you are running AIO behind a reverse proxy, you need to obviously also change the domain in your reverse proxy config.
If you are running AIO behind a web server or reverse proxy (like Apache, Nginx and else), you need to obviously also change the domain in your reverse proxy config.
### How to properly reset the instance?
If something goes unexpected routes during the initial installation, you might want to reset the AIO installation to be able to start from scratch.
@@ -300,7 +303,7 @@ Here is how to reset the AIO instance properly:
1. Now remove all these stopped containers with `sudo docker container prune`
1. Delete the docker network with `sudo docker network rm nextcloud-aio`
1. Check which volumes are dangling with `sudo docker volume ls --filter "dangling=true"`
1. Now remove all these dangling volumes: `sudo docker volume prune docker --filter all=1` (on Windows you might need to remove some volumes afterwards manually with `docker volume rm nextcloud_aio_backupdir`, `docker volume rm nextcloud_aio_nextcloud_datadir`).
1. Now remove all these dangling volumes: `sudo docker volume prune --filter all=1` (on Windows you might need to remove some volumes afterwards manually with `docker volume rm nextcloud_aio_backupdir`, `docker volume rm nextcloud_aio_nextcloud_datadir`).
1. If you've configured `NEXTCLOUD_DATADIR` to a path on your host instead of the default volume, you need to clean that up as well. (E.g. by simply deleting the directory).
1. Make sure that no volumes are remaining with `sudo docker volume ls --format {{.Name}}`. If no `nextcloud-aio` volumes are listed, you can proceed with the steps below. If there should be some, you will need to stop them with `sudo docker volume rm <volume_name>` until no one is listed anymore.
1. Optional: You can remove all docker images with `sudo docker image prune -a`.
@@ -568,7 +571,7 @@ Be aware though that these locations will not be covered by the built-in backup
**Please note:** If you can't see the type "local storage" in the external storage admin options, a restart of the containers from the AIO interface may be required.
### How to adjust the Talk port?
By default will the talk container use port `3478/UDP` and `3478/TCP` for connections. You can adjust the port by adding e.g. `--env TALK_PORT=3478` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and adjusting the port to your desired value.
By default will the talk container use port `3478/UDP` and `3478/TCP` for connections. You can adjust the port by adding e.g. `--env TALK_PORT=3478` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and adjusting the port to your desired value. Best is to use a port over 1024, so e.g. 3479 to not run into this: https://github.com/nextcloud/all-in-one/discussions/2517
### How to adjust the upload limit for Nextcloud?
By default are public uploads to Nextcloud limited to a max of 10G (logged in users can upload much bigger files using the webinterface or the mobile/desktop clients since chunking is used in that case). You can adjust the upload limit by providing `--env NEXTCLOUD_UPLOAD_LIMIT=10G` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. It must start with a number and end with `G` e.g. `10G`.
@@ -585,6 +588,9 @@ If you get an error during the domain validation which states that your ip-addre
### Can I run this with Docker swarm?
Yes. For that to work, you need to use and follow the [manual-install documentation](./manual-install/).
### Can I run this with Kubernetes?
Yes. For that to work, you need to use and follow the [helm-chart documentation](./nextcloud-aio-helm-chart/).
### How to run this with Docker rootless?
You can run AIO also with docker rootless. How to do this is documented here: [docker-rootless.md](https://github.com/nextcloud/all-in-one/blob/main/docker-rootless.md)

View File

@@ -28,7 +28,7 @@ In order to run Nextcloud behind a web server or reverse proxy (like Apache, Ngi
Add this as a new Apache site config:
(The config below assumse that you are using certbot to get your certificates. You need to create them first in order to make it work.)
(The config below assumes that you are using certbot to get your certificates. You need to create them first in order to make it work.)
```
<VirtualHost *:80>
@@ -132,6 +132,16 @@ You can get AIO running using the ACME DNS-challenge. Here is how to do it.
</details>
### Citrix ADC VPX / Citrix Netscaler
<details>
<summary>click here to expand</summary>
For a reverse proxy example guide for Citrix ADC VPX / Citrix Netscaler, see this guide by @esmith443: https://github.com/nextcloud/all-in-one/discussions/2452
</details>
### Cloudflare Tunnel
<details>
@@ -352,6 +362,94 @@ Of course you need to modify `<your-nc-domain>` to the domain on which you want
</details>
### Node.js with Express
<details>
<summary>click here to expand</summary>
**Disclaimer:** It might be possible that the config below is not working 100% correctly, yet. Improvements to it are very welcome!
For Node.js, we will use the npm package `http-proxy`. WebSockets must be handled separately.
This example only uses `http`, but if your Express server already uses a `https` server, then follow the same instructions for `https`.
```js
const HttpProxy = require('http-proxy');
const express = require('express');
const http = require('http');
const app = express();
const proxy = HttpProxy.createProxyServer({
target: 'http://localhost:11000',
// Timeout can be changed to your liking.
timeout: 1000 * 60 * 3,
proxyTimeout: 1000 * 60 * 3,
// Not 100% certain whether autoRewrite is necessary, but enabling it SEEMS to make it behave more stably.
autoRewrite: true,
// Do not enable followRedirects.
followRedirects: false,
});
// Handle errors with proxy.web and proxy.ws
function onProxyError(err, req, res, target) {
// Handle errors however you like. Here's an example:
if (err.code === 'ECONNREFUSED') {
return res.status(503).send('Nextcloud server is currently not running. It may be down for temporary maintenance.');
}
// other errors
else {
console.error(err);
return res.status(500).send(String(err));
}
}
app.use((req, res) => {
proxy.web(req, res, {}, onProxyError);
});
const httpServer = http.createServer(app);
httpServer.listen('80');
// Listen for an upgrade to a WebSocket connection.
httpServer.on('upgrade', (req, socket, head) => {
proxy.ws(req, socket, head, {}, onProxyError);
});
```
If you are using the Express package `vhost` for your app, you can use `proxy.web` inside the vhosted express function (see the following code snippet), but `proxy.ws` still needs to be done "globally" on your http server. Nextcloud should automatically ignore websocket requests for other domains.
```js
const HttpProxy = require('http-proxy');
const express = require('express');
const http = require('http');
const myNextcloudApp = express();
const myOtherApp = express();
const vhost = express();
// Definitions for proxy and onProxyError unchanged. (see above)
myNextcloudApp.use((req, res) => {
proxy.web(req, res, {}, onProxyError);
});
vhost.use(vhostFunc('<your-nextcloud-domain>', myNextcloudApp));
const httpServer = http.createServer(app);
httpServer.listen('80');
// Listen for an upgrade to a WebSocket connection.
httpServer.on('upgrade', (req, socket, head) => {
proxy.ws(req, socket, head, {}, onProxyError);
});
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port 11000 to match the chosen `APACHE_PORT`.
**Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network. ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
</details>
### Synology Reverse Proxy
<details>
@@ -451,7 +549,7 @@ Of course you need to modify `<your-nextcloud-domain>` in the `nextcloud.yml` to
**Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` option (or `network_mode: host` for docker-compose) when starting the reverse proxy container in order to connect the reverse proxy container to the host network. ***If that is not an option or not possible for you (like e.g. on Windows or if the reverse proxy is running on a different host), you can alternatively instead of `localhost` use the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)***
**Hint:** Possibly the following link is useful to understand how AIO configures things: https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml
**Hint**: see https://www.youtube.com/watch?v=VLPSRrLMDmA for a video on configuring Traefik.
</details>
@@ -548,7 +646,7 @@ Afterwards should the AIO interface be accessible via `https://ip.address.of.the
## 6. How to debug things?
If something does not work, follow the steps below:
1. Make sure to exactly follow the whole reverse proxy documentation step-for-step from top to bottom!
1. Make sure that you used the docker run command that is described in this reverse proxy documentation.
1. Make sure that you used the docker run command that is described in this reverse proxy documentation. Hint: make sure that you have set the APACHE_PORT during the docker run command!
1. Make sure to set the `APACHE_IP_BINDING` variable correctly. If in doubt, set it to `--env APACHE_IP_BINDING=0.0.0.0`
1. Make sure that all ports match the chosen `APACHE_PORT`.
1. Make sure that the reverse proxy is running on the host OS or if running in a container, connected to the host network. If that is not possible (e.g. on Windows or if the reverse proxy is running on a different host), substitute `localhost` or `127.0.0.1` in the default configurations by the private ip-address of the host that is running the docker daemon. If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'`. If the command returns a public ip-address, use `ip a | grep "scope global" | grep docker0 | awk '{print $2}' | sed 's|/.*||'` instead (the commands only work on Linux)