Compare commits

...

301 Commits

Author SHA1 Message Date
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
dae2da8494 Merge pull request #2408 from nextcloud/aio-helm-update
Helm Chart updates
2023-04-22 11:45:53 +02:00
szaimen
bdf45c7204 Helm Chart updates
Signed-off-by: GitHub <noreply@github.com>
2023-04-22 09:45:08 +00: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
07dc39c832 Merge pull request #2396 from nextcloud/enh/noid/improve-accepted-domains-feedback
add further domain validation feedback
2023-04-22 11:41:25 +02:00
Simon L
fe631e8a88 Merge pull request #2390 from nextcloud/enh/noid/manual-install-hint
add a hint to manual install when people did not grant access to the …
2023-04-22 11:40:31 +02:00
Simon L
ed92f9c138 Merge pull request #2385 from nextcloud/enh/noid/add-backup-retention-note
add a note on backup retention to the AIO interface
2023-04-22 11:39:43 +02:00
Simon L
7d288268bc Merge pull request #2388 from nextcloud/enh/noid/rename-spellling
rename `All In One` to `All-in-One`
2023-04-22 11:35:52 +02:00
Simon L
32d9cee2be Merge pull request #2383 from nextcloud/enh/noid/add-link-to-docs
add a note on what to do if Nexcloud does not open
2023-04-22 11:34:58 +02:00
Simon L
2ba096a1ab add daily backup hint also to AIO interface
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:34:34 +02:00
Simon L
08746f4aff Merge pull request #2384 from nextcloud/enh/noid/add-performance-docs
add a link to the performance documentation to the aio interface
2023-04-22 11:30:41 +02:00
Simon L
05db035919 add further line break after link
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:28:21 +02:00
Simon L
4ffed7e23c move the advice to the correct line
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:26:17 +02:00
Simon L
de9397ad54 Merge pull request #2376 from nextcloud/enh/noid/borg-advices
borg - add advices how to proceed if things get wrong
2023-04-22 11:25:00 +02:00
Simon L
74b4f1d395 Merge pull request #2357 from nextcloud/enh/noid/rename-docker-socket-path
rename `DOCKER_SOCKET_PATH` to `WATCHTOWER_DOCKER_SOCKET_PATH`
2023-04-22 11:24:00 +02:00
Simon L
37b5e12a6f rename DOCKER_SOCKET_PATH to WATCHTOWER_DOCKER_SOCKET_PATH
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:21:47 +02:00
Simon L
2260ccc876 Merge pull request #2358 from nextcloud/enh/noid/rename-disable-backup-section
rename `DISABLE_BACKUP_SECTION` to `AIO_DISABLE_BACKUP_SECTION`
2023-04-22 11:20:32 +02:00
Simon L
5a9e45ee6d rename DISABLE_BACKUP_SECTION to AIO_DISABLE_BACKUP_SECTION
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 11:15:51 +02:00
Simon L
f111363459 Merge pull request #2401 from nextcloud/nextcloud-container-update
Nextcloud update
2023-04-22 11:13:50 +02:00
Simon L
241041512f Merge pull request #2382 from nextcloud/dependabot/docker/Containers/redis/redis-7.0.11-alpine
Bump redis from 7.0.10-alpine to 7.0.11-alpine in /Containers/redis
2023-04-22 11:13:23 +02:00
Simon L
b20eec34e3 Merge pull request #2381 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-23.0.4-cli
Bump docker from 23.0.3-cli to 23.0.4-cli in /Containers/mastercontainer
2023-04-22 11:13:10 +02:00
Simon L
3e0aa8a52d Merge pull request #2380 from nextcloud/dependabot/docker/Containers/talk/nats-2.9.16-scratch
Bump nats from 2.9.15-scratch to 2.9.16-scratch in /Containers/talk
2023-04-22 11:12:54 +02:00
Simon L
9f207810b8 Merge pull request #2377 from nextcloud/aio-dependency-update
Dependency updates
2023-04-22 11:12:37 +02:00
dependabot[bot]
4e6288b934 Bump docker from 23.0.3-cli to 23.0.4-cli in /Containers/mastercontainer
Bumps docker from 23.0.3-cli to 23.0.4-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-22 09:11:51 +00:00
Simon L
31627f9270 Merge pull request #2369 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.1.18-fpm-alpine3.17
Bump php from 8.1.17-fpm-alpine3.17 to 8.1.18-fpm-alpine3.17 in /Containers/mastercontainer
2023-04-22 11:11:34 +02:00
Simon L
2af2e3a3cd Merge pull request #2368 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.13.1.1
Bump collabora/code from 22.05.12.4.1 to 22.05.13.1.1 in /Containers/collabora
2023-04-22 11:11:10 +02:00
Simon L
6c4f7c22d3 Merge pull request #2355 from nextcloud/imaginary-container-update
Imaginary update
2023-04-22 11:09:27 +02:00
Simon L
05b5e41894 document where the chosen dir will be mounted
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 00:29:54 +02:00
Simon L
83c77d86e7 link to backup docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-22 00:26:13 +02:00
szaimen
f46c72b359 nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2023-04-20 12:49:12 +00:00
szaimen
00f166675a imaginary-update automated change
Signed-off-by: GitHub <noreply@github.com>
2023-04-20 12:41:24 +00:00
szaimen
f12885b09b dependency updates
Signed-off-by: GitHub <noreply@github.com>
2023-04-20 12:06:37 +00:00
Simon L
1863078937 add missing peaces
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-20 00:11:50 +02:00
Simon L
e02be7234d Merge pull request #2400 from nextcloud/enh/noid/make-docu-verbose
make documentation more verbose how to apply environmental variabls t…
2023-04-19 23:44:33 +02:00
Simon L
cf10c495d1 make documentation more verbose how to apply environmental variabls to the container
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 23:42:38 +02:00
Simon L
90082704f6 adjust warning about /dev/dri device failure
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 20:54:10 +02:00
Simon L
838084f073 add further domain validation feedback
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 18:46:30 +02:00
Simon L
7373bb5960 talk about open/forwarded ports
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 18:44:43 +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
aee32ed357 fix typo
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 12:01:14 +02:00
Simon L
6a4281fc12 add a sidenote for when the 10GB upload limit are a problem
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 11:45:43 +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
b9bd1ecdc3 mark you need to know what you are doing as bold
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 11:30:18 +02:00
Simon L
c8783f79d6 adjust two things
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 01:17:27 +02:00
Simon L
45a33d4b5b adjust word
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 01:11:21 +02:00
Simon L
b94bb6569e add further backup details
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 00:57:08 +02:00
Simon L
be5b5deb7a additional bonus - apply patches
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 00:45:22 +02:00
Simon L
5550d30065 add three more included features
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 00:33:51 +02:00
Simon L
6b487302a8 Merge pull request #2393 from nextcloud/enh/noid/ipv6-docker-desktop
add ipv6 docs for Docker Desktop
2023-04-19 00:28:46 +02:00
Simon L
939c50726f add ipv6 docs for Docker Desktop
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-19 00:17:11 +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
d37d21e151 Merge pull request #2392 from nextcloud/enh/2366/helm-chart
adut apache_max_size for helm-chart to be a string
2023-04-18 23:46:41 +02:00
Simon L
25b04bccdf adut apache_max_size for helm-chart to be a string
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 23:44:07 +02:00
Simon L
b3cc1644bb improve readability of And more
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 23:10:59 +02:00
Simon L
76841af339 add a link to the manual install directly from the docker socket description
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 23:08:34 +02:00
Simon L
1af8112308 add a hint to manual install when people did not grant access to the docker socket by purpose
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 23:07:04 +02:00
Simon L
57d9534133 add LDAP notice to much more section
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 22:56:24 +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
Simon L
cb5bee70b0 Merge pull request #2387 from nextcloud/enh/noid/add-further-details
add a details tag to note down more included features
2023-04-18 22:27:56 +02:00
Simon L
66430a945d adjust the wording of cloudflare tunnel
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 22:26:22 +02:00
Simon L
324ed4dc63 add some screenshots
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 20:14:49 +02:00
Simon L
e0857cc954 add a details tag to note down more included features
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 20:14:49 +02:00
Simon L
87cb3cd819 rename All In One to All-in-One
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 19:07:59 +02:00
Simon L
52f4d4b41e add a note on backup retention to the AIO interface
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 15:51:17 +02:00
Simon L
566619ecac add a link to the performance documentation to the aio interface
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 15:41:43 +02:00
Simon L
b8379c81d7 add a note on what to do if Nexcloud does not open
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 15:38:27 +02:00
dependabot[bot]
38392e0dcf Bump redis from 7.0.10-alpine to 7.0.11-alpine in /Containers/redis
Bumps redis from 7.0.10-alpine to 7.0.11-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 12:59:40 +00:00
dependabot[bot]
c5fc60d1fa Bump nats from 2.9.15-scratch to 2.9.16-scratch in /Containers/talk
Bumps nats from 2.9.15-scratch to 2.9.16-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 12:59:29 +00:00
Simon L
87f97a5270 adjust formatting again
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 13:47:45 +02:00
Simon L
68af3916cb adjust command
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 13:41:20 +02:00
Simon L
6331a94758 rp docs - highlight what to do if host networking is not possible
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 13:25:09 +02:00
Simon L
3e2a64e6d4 borg - add advices how to proceed if things get wrong
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-18 13:22:10 +02:00
dependabot[bot]
cd4131a82d Bump php in /Containers/mastercontainer
Bumps php from 8.1.17-fpm-alpine3.17 to 8.1.18-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-04-17 13:01:52 +00:00
dependabot[bot]
d1d66845a3 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.12.4.1 to 22.05.13.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 13:01:11 +00:00
Simon L
8de8274a31 add three additional notes on debuggin things
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 22:02:56 +02:00
Simon L
ef82f1aaf9 Merge pull request #2362 from nextcloud/enh/noid/change-e-to-env
change `-e` to long syntax `--env`
2023-04-16 21:48:02 +02:00
Simon L
4b1ed4e227 change -e to long syntax --env
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 21:32:50 +02:00
Simon L
30883d0d61 add link how to configure things from scratch
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 21:30:18 +02:00
Simon L
f22117545f RP docs - adjust some additional details
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 21:25:23 +02:00
Simon L
512c134e11 a reload is likely not enough
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 21:15:51 +02:00
Simon L
3a438ff329 Merge pull request #2360 from nextcloud/enh/noid/adjust-rp-docs
adjust RP docs
2023-04-16 19:51:23 +02:00
Simon L
5c3e719e87 Merge pull request #2361 from nextcloud/enh/2319/adjust-npm-docs
adjust NPM docs
2023-04-16 19:46:50 +02:00
Simon L
cc3dc75917 adjust NPM docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 19:21:39 +02:00
Simon L
2ebfebf24a adjust RP docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 19:14:46 +02:00
Simon L
b566cd179e Merge pull request #2359 from nextcloud/enh/noid/add-ipv6-docs
add custom ipv6 docs
2023-04-16 18:58:09 +02:00
Simon L
2a44208f56 add custom ipv6 docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-04-16 18:35:04 +02:00
82 changed files with 1081 additions and 568 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,59 +16,11 @@
{$PROTOCOL}://{$NC_DOMAIN}:{$APACHE_PORT} {
# Notify Push
route /push/* {
uri strip_prefix /push
reverse_proxy {$NEXTCLOUD_HOST}:7867 {
# trusted_proxies placeholder
}
}
# Bundled
import /caddy-imports/*
# 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
}
}
# Onlyoffice
route /onlyoffice/* {
uri strip_prefix /onlyoffice
reverse_proxy {$ONLYOFFICE_HOST}:80 {
header_up X-Forwarded-Host {http.request.host}/onlyoffice
header_up X-Forwarded-Proto https
# trusted_proxies placeholder
}
}
# 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
}
}
# Others
import /mnt/data/caddy-imports/*
# TLS options
tls {

View File

@@ -3,83 +3,74 @@ 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 nextcloud /nextcloud
COPY --chmod=664 caddy-imports/* /caddy-imports/
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

@@ -0,0 +1,10 @@
# Collabora
route /browser/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
route /hosting/* {
reverse_proxy {$COLLABORA_HOST}:9980
}
route /cool/* {
reverse_proxy {$COLLABORA_HOST}:9980
}

View File

@@ -0,0 +1,5 @@
# Notify Push
route /push/* {
uri strip_prefix /push
reverse_proxy {$NEXTCLOUD_HOST}:7867
}

View File

@@ -0,0 +1,8 @@
# Onlyoffice
route /onlyoffice/* {
uri strip_prefix /onlyoffice
reverse_proxy {$ONLYOFFICE_HOST}:80 {
header_up X-Forwarded-Host {http.request.host}/onlyoffice
header_up X-Forwarded-Proto https
}
}

View File

@@ -0,0 +1,5 @@
# Talk
route /standalone-signaling/* {
uri strip_prefix /standalone-signaling
reverse_proxy {$TALK_HOST}:8081
}

View File

@@ -0,0 +1,7 @@
# 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
}

View File

@@ -45,12 +45,18 @@ else
fi
echo "$CADDYFILE" > /Caddyfile
# Overwrite nextcloud conf
cat /nextcloud > /mnt/data/caddy-imports/nextcloud
# Fix the Caddyfile format
caddy fmt --overwrite /Caddyfile
# Add caddy path
mkdir -p /mnt/data/caddy/
# Add caddy import path
mkdir -p /mnt/data/caddy-imports
# 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
@@ -139,6 +155,7 @@ if [ "$BORG_MODE" = backup ]; then
echo "Deleting the failed backup archive..."
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio"
echo "Backup failed!"
echo "You might want to check the backup integrity via the AIO interface."
if [ "$NEW_REPOSITORY" = 1 ]; then
echo "Deleting borg.config file so that you can choose a different location for the backup."
rm "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config"
@@ -362,6 +379,7 @@ if [ "$BORG_MODE" = check ]; then
# Perform the check
if ! borg check -v --verify-data "$BORG_BACKUP_DIRECTORY"; then
echo "Some errors were found while checking the backup integrity!"
echo "Check the AIO interface for advices on how to proceed now!"
exit 1
fi

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.12.4.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.3-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.17-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,12 +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..."
@@ -40,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)"
@@ -57,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
@@ -78,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
@@ -97,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
@@ -105,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
@@ -130,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
@@ -138,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
@@ -146,48 +159,48 @@ 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 "$DOCKER_SOCKET_PATH" ]; then
if ! echo "$DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$DOCKER_SOCKET_PATH" | grep -q "/$"; then
echo "You've set DOCKER_SOCKET_PATH but not to an allowed value.
if [ -n "$WATCHTOWER_DOCKER_SOCKET_PATH" ]; then
if ! echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "/$"; then
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 '$DOCKER_SOCKET_PATH'."
It is set to '$WATCHTOWER_DOCKER_SOCKET_PATH'."
exit 1
fi
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
@@ -195,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
@@ -203,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
@@ -211,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
@@ -222,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"
@@ -273,7 +286,7 @@ if [ -f ./ssl.crt ] && [ -f ./ssl.key ]; then
cp "$GENERATED_CERTS/ssl.key" ./
fi
print_green "Initial startup of Nextcloud All In One complete!
print_green "Initial startup of Nextcloud All-in-One complete!
You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!
E.g. https://internal.ip.of.this.server:8080

View File

@@ -108,7 +108,7 @@ RUN { \
VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 25.0.5
ENV NEXTCLOUD_VERSION 25.0.6
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \

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.10-alpine
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.15-scratch as nats
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

@@ -2,9 +2,9 @@
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<id>nextcloud-aio</id>
<name>Nextcloud All In One</name>
<name>Nextcloud All-in-One</name>
<summary>Provides a login link for admins.</summary>
<description>Add a link to the admin settings that gives access to the Nextcloud All In One admin interface</description>
<description>Add a link to the admin settings that gives access to the Nextcloud All-in-One admin interface</description>
<version>0.3.0</version>
<licence>agpl</licence>
<author>Azul</author>

View File

@@ -10,7 +10,7 @@ declare(strict_types=1);
*/
/** @var array $_ */ ?>
<div id="allinone" class="section">
<h2><?php p($l->t('Nextcloud All In One'));?></h2>
<h2><?php p($l->t('Nextcloud All-in-One'));?></h2>
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank" rel="noopener">Open Nextcloud AIO Interface ↗</a><br><br>
<p><a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface">Click here for more infos on this feature (e.g. also on how to change the link in the button)</a></p>
</div>

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,26 +2,25 @@ 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
- /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 'DOCKER_SOCKET_PATH'!
- 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
- 8080:8080
- 8443:8443 # 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
# environment: # Is needed when using any of the options below
# - AIO_DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface.
# - APACHE_PORT=11000 # Is needed 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
# - APACHE_IP_BINDING=127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# - COLLABORA_SECCOMP_DISABLED=false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
# - 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'
# - DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface.
# - NEXTCLOUD_DATADIR=/mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
# - NEXTCLOUD_MOUNT=/mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
# - NEXTCLOUD_UPLOAD_LIMIT=10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
@@ -33,6 +32,9 @@ services:
# - 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. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
# - 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

45
docker-ipv6-support.md Normal file
View File

@@ -0,0 +1,45 @@
# IPv6-Support for Docker
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 `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": "fd12:3456:789a:1::/64",
"experimental": true,
"ip6tables": true
}
```
Save the file.
2. Reload the Docker configuration file.
```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 `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well.
```
"ipv6": true,
"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.
---
**Note**: This is a copy of the original docker docs at https://docs.docker.com/config/daemon/ipv6/ which apparently are not correct. However experimental is set to true which the ip6tables feature needs. Thus it will not get included into the official docs. However it is needed to make it work in our testing.

View File

@@ -4,11 +4,11 @@ You can run AIO with docker rootless by following the steps below.
0. If docker is already installed, you should consider disabling it first: (`sudo systemctl disable --now docker.service docker.socket`)
1. Install docker rootless by following the official documentation: https://docs.docker.com/engine/security/rootless/#install. The easiest way is installing it **Without packages** (`curl -fsSL https://get.docker.com/rootless | sh`). Further limitations, distribution specific hints, etc. are discussed on the same site. Also do not forget to enable the systemd service, which may not be enabled always by default. See https://docs.docker.com/engine/security/rootless/#usage. (`systemctl --user enable docker`)
1. If you need ipv6 support, you should enable it by following https://docs.docker.com/config/daemon/ipv6/. The daemon.json file is most likely stored in `~/.config/docker/daemon.json`.
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.
1. Do not forget to set the mentioned environmental variables and in best case add them to your `~/.bashrc` file as shown!
1. Also do not forget to run `loginctl enable-linger USERNAME` (and substitute USERNAME with the correct one) in order to make sure that user services are automatically started after every reboot.
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`)
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `-e DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `--env WATCHTOWER_DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
1. Now everything should work like without docker rootless. You can consider using docker-compose for this or running it behind a reverse proxy. Basically the only thing that needs to be adjusted always in the startup command or docker-compose file (after installing docker rootles) are things that are mentioned in point 3.
**Please note:** All files outside the containers get created, written to and accessed as the user that is running the docker daemon or a subuid of it. So for the built-in backup to work you need to allow this user to write to the target directory. E.g. with `sudo chown -R USERNAME:GROUPNAME /mnt/backup`. The same applies when changing Nextcloud's datadir. E.g. `sudo chown -R USERNAME:GROUPNAME /mnt/ncdata`. When you want to use the NEXTCLOUD_MOUNT option for local external storage, you need to adjust the permissions of the chosen folders to be accessible/writeable by the userid `100032:100032` (if running `grep ^$(whoami): /etc/subuid` as the user that is running the docker daemon returns 100000 as first value).

View File

@@ -5,8 +5,8 @@ It is possible due to several reasons that you do not want or cannot open Nextcl
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 local 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. 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 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

@@ -11,7 +11,7 @@ You can run the containers that are build for AIO with docker-compose. This come
- 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, especially when modifying the docker-compose file
- **You need to know what you are doing, especially when modifying the docker-compose file**
- For updating, you need to strictly follow the at the bottom described update routine
- Probably more
@@ -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

@@ -8,12 +8,12 @@ Below is described more in detail how the the second way works.
## Run multiple AIO instances on the same server with docker rootless
1. Create as many linux users as you need first. The easiest way is to use `sudo adduser` and follow the setup for that. Make sure to create a strong unique password for each of them and write it down!
1. Log in as each of the users e.g. by opening a new SSH connection and install docker rootless for each of them by following step 0-4 of the [docker rootless documentation](./docker-rootless.md).
1. Then install AIO in reverse proxy mode by using the command that is descriebed in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
1. Then install AIO in reverse proxy mode by using the command that is descriebed in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `WATCHTOWER_DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
**⚠️ Please note:** If you want to adjust the `NEXTCLOUD_DATADIR`, make sure to apply the correct permissions to the chosen path as documented at the bottom of the [docker rootless documentation](./docker-rootless.md). Also for the built-in backup to work, the target path needs to have the correct permissions as documented there, too.
1. Now install your webserver of choice on the host system. It is recommended to use caddy for this as it is by far the easiest solution. You can do so by following https://caddyserver.com/docs/install#debian-ubuntu-raspbian or below. (It needs to be installed directly on the host or on a different server in the same network).
1. Next create your Caddyfile with multiple entries and domains for the different instances like described in step 1 of the [reverse proxy documentation](./reverse-proxy.md). Obviously each domain needs to point correctly to the chosen `APACHE_PORT` that you've configured before. Then start Caddy which should automatically get the needed certificates for you if your domains are configured correctly and ports 80 and 443 are forwarded to your server.
1. Now open each of the AIO interfaces by opening `https://ip.address.of.this.server:8080` or e.g. `https://ip.address.of.this.server:8081` or as chosen during step 3 of this documentation.
1. Finally type in the domain that you've configured for each of the instances during step 5 of this documentation and you are done.
1. Please also do not forget to open each chosen `TALK_PORT` UPD and TCP in your firewall/router as otherwise Talk will not work correctly!
1. Please also do not forget to open/forward each chosen `TALK_PORT` UPD and TCP in your firewall/router as otherwise Talk will not work correctly!
Now everything should be set up correctly and you should have created multiple working instances of AIO on the same server!

View File

@@ -1,6 +1,6 @@
name: nextcloud-aio-helm-chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
version: 4.8.1
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:20230414_123705-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:20230414_123705-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:20230414_123705-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:20230414_123705-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:20230414_123705-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:20230414_123705-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:20230414_123705-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:20230414_123705-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:20230414_123705-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:20230414_123705-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,9 +188,11 @@ 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
sed -i 's|10737418240|"10737418240"|' /tmp/sample.conf
# shellcheck disable=SC2129
echo 'STORAGE_CLASS: # By setting this, you can adjust the storage class for your volumes' >> /tmp/sample.conf
for variable in "${VOLUME_VARIABLE[@]}"; do

View File

@@ -1,6 +1,6 @@
AIO_TOKEN: 123456 # Has no function but needs to be set!
AIO_URL: localhost # Has no function but needs to be set!
APACHE_MAX_SIZE: 10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
APACHE_MAX_SIZE: "10737418240" # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
APACHE_PORT: 443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx and else).
CLAMAV_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
COLLABORA_DICTIONARIES: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru # You can change this in order to enable other dictionaries for collabora

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 \\;"
}
}

57
php/composer.lock generated
View File

@@ -4,26 +4,26 @@
"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.0",
"version": "7.6.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.5",
"guzzlehttp/psr7": "^1.9 || ^2.4",
"guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -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.0"
"source": "https://github.com/guzzle/guzzle/tree/7.6.1"
},
"funding": [
{
@@ -132,7 +129,7 @@
"type": "tidelift"
}
],
"time": "2022-08-28T15:39:27+00:00"
"time": "2023-05-15T20:43:01+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -220,22 +217,22 @@
},
{
"name": "guzzlehttp/psr7",
"version": "2.4.4",
"version": "2.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf"
"reference": "b635f279edd83fc275f822a1188157ffea568ff6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf",
"reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6",
"reference": "b635f279edd83fc275f822a1188157ffea568ff6",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0",
"psr/http-message": "^1.1 || ^2.0",
"ralouphie/getallheaders": "^3.0"
},
"provide": {
@@ -255,9 +252,6 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
@@ -319,7 +313,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.4.4"
"source": "https://github.com/guzzle/psr7/tree/2.5.0"
},
"funding": [
{
@@ -335,7 +329,7 @@
"type": "tidelift"
}
],
"time": "2023-03-09T13:19:02+00:00"
"time": "2023-04-17T16:11:26+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -1645,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": {
@@ -1663,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/"
@@ -1705,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": [
{
@@ -1717,7 +1706,7 @@
"type": "tidelift"
}
],
"time": "2023-02-08T07:49:20+00:00"
"time": "2023-05-03T19:06:57+00:00"
}
],
"packages-dev": [],
@@ -1727,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",
@@ -332,7 +326,7 @@
],
"volumes": [
{
"source": "%DOCKER_SOCKET_PATH%",
"source": "%WATCHTOWER_DOCKER_SOCKET_PATH%",
"destination": "/var/run/docker.sock",
"writeable": false
}

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

@@ -117,7 +117,7 @@ class ContainerDefinitionFetcher
if ($value['source'] === '') {
continue;
}
} elseif ($value['source'] === '%DOCKER_SOCKET_PATH%') {
} elseif ($value['source'] === '%WATCHTOWER_DOCKER_SOCKET_PATH%') {
$value['source'] = $this->configurationManager->GetDockerSocketPath();
if($value['source'] === '') {
continue;
@@ -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

@@ -239,6 +239,16 @@ class ConfigurationManager
throw new InvalidSettingConfigurationException("Domain must contain at least one dot!");
}
// Validate that no slashes are contained
if (strpos($domain, '/') !== false) {
throw new InvalidSettingConfigurationException("Domain must not contain slashes!");
}
// Validate that no colons are contained
if (strpos($domain, ':') !== false) {
throw new InvalidSettingConfigurationException("Domain must not contain colons!");
}
// Validate domain
if (!filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) {
throw new InvalidSettingConfigurationException("Domain is not a valid domain!");
@@ -572,7 +582,7 @@ class ConfigurationManager
}
public function GetDockerSocketPath() : string {
$envVariableName = 'DOCKER_SOCKET_PATH';
$envVariableName = 'WATCHTOWER_DOCKER_SOCKET_PATH';
$configName = 'docker_socket_path';
$defaultValue = '/var/run/docker.sock';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
@@ -801,7 +811,7 @@ class ConfigurationManager
}
private function GetDisableBackupSection() : string {
$envVariableName = 'DISABLE_BACKUP_SECTION';
$envVariableName = 'AIO_DISABLE_BACKUP_SECTION';
$configName = 'disable_backup_section';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);

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.0</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>
@@ -79,9 +79,16 @@
</form>
{% 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>
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,11 +213,14 @@
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/>
<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>
{% endif %}
{% else %}
{% if isAnyRestarting == false %}
<span class="status running"></span> Containers are currently starting.<br /><br />
@@ -223,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>
@@ -336,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 %}
@@ -361,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 />
@@ -391,9 +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 will use 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.
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</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 section</a></b> and below.<br>
{% if isApacheStarting != true %}
<h3>Backup creation</h3>
@@ -467,9 +483,9 @@
{% endif %}
{% endif %}
{% if has_backup_run_once == false %}
<br /><br />
<br />
{% else %}
</details><br /><br />
</details><br />
{% endif %}
{% endif %}
{% endif %}
@@ -478,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 %}
@@ -521,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>
@@ -533,7 +552,7 @@
<input id="options-form-submit" class="button" type="submit" value="Save changes" />
<script type="text/javascript" src="options-form-submit.js"></script>
</form>
<b>Minimal system requirements:</b> When any optional addon is enabled, at least 2GB RAM, a dual-core CPU and 40GB system storage are required. When enabling ClamAV or Fulltextsearch, at least 3GB RAM are required. When enabling everything, at least 4GB RAM are required. Recommended are at least 1GB more RAM than the minimal requirement.<br><br>
<b>Minimal system requirements:</b> When any optional addon is enabled, at least 2GB RAM, a dual-core CPU and 40GB system storage are required. When enabling ClamAV or Fulltextsearch, at least 3GB RAM are required. When enabling everything, at least 4GB RAM are required. Recommended are at least 1GB more RAM than the minimal requirement. For further advices and recommendations see <b><a href="https://github.com/nextcloud/all-in-one/discussions/1335">this documentation</a></b><br><br>
{% if isAnyRunning == true or is_x64_platform == false %}
<script type="text/javascript" src="disable-clamav.js"></script>
{% endif %}

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

@@ -5,7 +5,7 @@
<div class="login">
<img src="/img/logo-blue.svg" style="margin-left: auto;margin-right: auto;display: block;">
<h1>Nextcloud AIO setup</h1>
<p>Nextcloud AIO stands for Nextcloud All In One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.</p>
<p>Nextcloud AIO stands for Nextcloud All-in-One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.</p>
<p>Please note down the password to access the AIO interface and don't lose it!</p>
<strong>Password</strong><br/> <span class="monospace">{{ password }}</span><br>
<a href="/" class="button" target="_blank" rel="noopener">Open Nextcloud AIO login ↗</a>

170
readme.md
View File

@@ -1,15 +1,77 @@
# Nextcloud All In One
Nextcloud AIO stands for Nextcloud All In One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.
# Nextcloud All-in-One
Nextcloud AIO stands for Nextcloud All-in-One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.
Included are:
- Nextcloud
- Nextcloud Office
- High performance backend for Nextcloud Files
- High performance backend for Nextcloud Talk
- High performance backend for Nextcloud Talk and TURN-server
- Backup solution (based on [BorgBackup](https://github.com/borgbackup/borg#what-is-borgbackup))
- Imaginary (for previews of heic, heif, illustrator, pdf, svg, tiff and webp)
- ClamAV (Antivirus backend for Nextcloud)
- Fulltextsearch
<details><summary>And much more:</summary>
- Simple web interface included that enables easy installation and maintenance
- [Easy updates included](https://github.com/nextcloud/all-in-one#how-to-update-the-containers)
- Update and backup notifications included
- Daily backups can get enabled from the AIO interface which also allows to update all containers, Nextcloud and its apps afterwards automatically
- Instance restore from backup archive via the AIO interface included (you only need the archive and the password in order to restore the whole instance on a new AIO instance)
- APCU as local cache
- Redis as distributed cache and for file locking
- Postgresql as database
- PHP-FPM with performance-optimized config
- A+ security in Nextcloud security scan
- Ready to be used behind existing [Reverse proxies](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md)
- Can be used behind [Cloudflare Tunnel](https://github.com/nextcloud/all-in-one#how-to-run-nextcloud-behind-a-cloudflare-tunnel)
- Ready for big file uploads up to 10 GB on public links, [adjustable](https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud) (logged in users can upload much bigger files using the webinterface or the mobile/desktop clients since chunking is used in that case)
- PHP and web server timeouts set to 3600s, [adjustable](https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud) (important for big file uploads)
- Defaults to a max of 512 MB RAM per PHP process, [adjustable](https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud)
- Automatic TLS included (by using Let's Encrypt)
- HTTP/2 and HTTP/3 enabled
- "Pretty URLs" for Nextcloud are enabled by default (removes the index.php from all links)
- Video previews work out of the box and when Imaginary is enabled, many recent image formats as well!
- Only one domain and not multiple domains are required for everything to work (usually you would need to have one domain for each service which is much more complex)
- [Adjustable location](https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir) of Nextcloud's datadir (e.g. good for easy file-sharing with host system on Windows and MacOS)
- By default confined (good for security) but can [allow access to additional storages](https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host) in order to enable the usage of the local external storage feature
- Possibility included to [adjust default installed Nextcloud apps](https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup)
- Nextcloud installation is not read only - that means you can apply patches if you should need them (instead of having to wait for the next release for them getting applied)
- `ffmpeg`, `smbclient` and `nodejs` are included by default
- Possibility included to [permanently add additional OS packages into the Nextcloud container](https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup) without having to build your own Docker image
- Possibility included to [permanently add additional PHP extensions into the Nextcloud container](https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container) without having to build your own Docker image
- Possibility included to [pass the needed device for hardware transcoding](https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud) to the Nextcloud containe
- Possibility included to [store all docker related files on a separate drive](https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive)
- [LDAP can be used as user backend for Nextcloud](https://github.com/nextcloud/all-in-one/tree/main#ldap)
- Migration from any former Nextcloud installation to AIO is possible. See [this documentation](https://github.com/nextcloud/all-in-one/blob/main/migration.md)
- [Fail2Ban can be added](https://github.com/nextcloud/all-in-one#fail2ban)
- [phpMyAdmin, Adminer or pgAdmin can be added](https://github.com/nextcloud/all-in-one#phpmyadmin-adminer-or-pgadmin)
- [Mail server can be added](https://github.com/nextcloud/all-in-one#mail-server)
- Nextcloud can be [accessed locally via the domain](https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
- Can [be installed locally](https://github.com/nextcloud/all-in-one/blob/main/local-instance.md) (if you don't want or cannot make the instance publicly reachable)
- [IPv6-ready](https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md)
- Can be used with [Docker rootles](https://github.com/nextcloud/all-in-one/blob/main/docker-rootless.md) (good for additional security)
- Runs on all platforms Docker supports (e.g. also on Windows and Macos)
- Included containers easy to debug by having the possibility to check their logs directly from the AIO interface
- [Docker-compose ready](https://github.com/nextcloud/all-in-one/blob/main/docker-compose.yml)
- Can be installed [without a container having access to the docker socket](https://github.com/nextcloud/all-in-one/tree/main/manual-install)
- Can be installed with [Docker Swarm](https://github.com/nextcloud/all-in-one#can-i-run-this-with-docker-swarm)
- Can be installed with [Kubernetes](https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart)
- Almost all included containers Alpine Linux based (good for security and size)
- Many of the included containers run as non-root user (good for security)
- Included containers run in its own docker network (good for security) and only really necessary ports are exposed on the host
- [Multiple instances on one server](https://github.com/nextcloud/all-in-one/blob/main/multiple-instances.md) are doable without having to deal with VMs
- Adjustable backup path from the AIO interface (good to put the backups e.g. on a different drive)
- Possibility included to also back up external Docker Volumes or Host paths (can be used for host backups)
- Borg backup can be completely managed from the AIO interface, including backup creation, backup restore, backup integrity check and integrity-repair
- [Remote backups](https://github.com/nextcloud/all-in-one#are-remote-borg-backups-supported) are indirectly possible
- Updates and backups can be [run from an external script](https://github.com/nextcloud/all-in-one#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally). See [this documentation](https://github.com/nextcloud/all-in-one#how-to-enable-automatic-updates-without-creating-a-backup-beforehand) for a complete example.
</details>
## Screenshots
| First setup | After installation |
|---|---|
| ![image](https://user-images.githubusercontent.com/42591237/232849125-30e24c85-bfd7-465e-8310-9b69cd9666fe.png) | ![image](https://user-images.githubusercontent.com/42591237/232849036-28c38d9a-3151-4cf1-97a5-4d94c1f0eba0.png) |
## How to use this?
The following instructions are meant for installations without a web server or reverse proxy (like Apache, Nginx and else) already being in place. If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx and else), see the [reverse proxy documentation](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md). Also, the instructions below are especially meant for Linux. For macOS see [this](#how-to-run-aio-on-macos), for Windows see [this](#how-to-run-aio-on-windows) and for Synology see [this](#how-to-run-aio-on-synology-dsm).
@@ -17,8 +79,8 @@ The following instructions are meant for installations without a web server or r
```sh
curl -fsSL https://get.docker.com | sudo sh
```
1. If you need ipv6 support, you should enable it by following https://docs.docker.com/config/daemon/ipv6/.
2. Run the command below in order to start the container:
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 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 \
@@ -43,16 +105,16 @@ The following instructions are meant for installations without a web server or r
- `--publish 8080:8080` This means that port 8080 of the container should get published on the host using port 8080. This port is used for the AIO interface and uses a self-signed certificate by default. You can also use a different host port if port 8080 is already used on your host, for example `--publish 8081:8080` (only the first port can be changed for the host, the second port is for the container and must remain at 8080).
- `--publish 8443:8443` This means that port 8443 of the container should get published on the host using port 8443. If you publish port 80 and 8443 to the public internet, you can access the AIO interface via this port with a valid certificate. It is not needed if you run AIO behind a web server or reverse proxy and can get removed in that case as you can simply use port 8080 for the AIO interface then.
- `--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config` This means that the files that are created by the mastercontainer will be stored in a docker volume that is called `nextcloud_aio_mastercontainer`. This line is not allowed to be changed, since built-in backups would fail later on.
- `--volume /var/run/docker.sock:/var/run/docker.sock:ro` The docker socket is mounted into the container which is used for spinning up all the other containers and for further features. It needs to be adjusted on Windows/macOS and on docker rootless. See the applicable documentation on this. If adjusting, don't forget to also set `DOCKER_SOCKET_PATH`! If you dislike this, see https://github.com/nextcloud/all-in-one/discussions/500#discussioncomment-2740767 and the whole thread for options.
- `--volume /var/run/docker.sock:/var/run/docker.sock:ro` The docker socket is mounted into the container which is used for spinning up all the other containers and for further features. It needs to be adjusted on Windows/macOS and on docker rootless. See the applicable documentation on this. If adjusting, don't forget to also set `WATCHTOWER_DOCKER_SOCKET_PATH`! If you dislike this, see https://github.com/nextcloud/all-in-one/tree/main/manual-install.
- `nextcloud/all-in-one:latest` This is the docker container image that is used.
- Further options can be set using environment variables, for example `-e NEXTCLOUD_DATADIR="/mnt/ncdata"` (This is an example for Linux. See [this](https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir) for other OS' and for an explanation of what this value does. This specific one needs to be specified upon the first startup if you want to change it to a specific path instead of the default Docker volume). To see explanations and examples for further variables (like changing the location of Nextcloud's datadir or mounting some locations as external storage into the Nextcloud container), read through this readme and look at the docker-compose file: https://github.com/nextcloud/all-in-one/blob/main/docker-compose.yml
- Further options can be set using environment variables, for example `--env NEXTCLOUD_DATADIR="/mnt/ncdata"` (This is an example for Linux. See [this](https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir) for other OS' and for an explanation of what this value does. This specific one needs to be specified upon the first startup if you want to change it to a specific path instead of the default Docker volume). To see explanations and examples for further variables (like changing the location of Nextcloud's datadir or mounting some locations as external storage into the Nextcloud container), read through this readme and look at the docker-compose file: https://github.com/nextcloud/all-in-one/blob/main/docker-compose.yml
</details>
Note: You may be interested in adjusting Nextclouds datadir to store the files in a different location than the default docker volume. See [this documentation](https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir) on how to do it.
3. After the initial startup, you should be able to open the Nextcloud AIO Interface now on port 8080 of this server.<br>
E.g. `https://ip.address.of.this.server:8080`<br><br>
If your firewall/router has port 80 and 8443 open and you point a domain to your server, you can get a valid certificate automatically by opening the Nextcloud AIO Interface via:<br>
If your firewall/router has port 80 and 8443 open/forwarded and you point a domain to your server, you can get a valid certificate automatically by opening the Nextcloud AIO Interface via:<br>
`https://your-domain-that-points-to-this-server.tld:8443`
4. Please do not forget to open port `3478/TCP` and `3478/UDP` in your firewall/router for the Talk container!
@@ -76,17 +138,17 @@ Only those (if you access the Mastercontainer Interface internally via port 8080
### Explanation of used ports:
- `8080/TCP`: Mastercontainer Interface with self-signed certificate (works always, also if only access via IP-address is possible, e.g. `https://ip.address.of.this.server:8080/`)
- `80/TCP`: redirects to Nextcloud (is used for getting the certificate via ACME http-challenge for the Mastercontainer)
- `8443/TCP`: Mastercontainer Interface with valid certificate (only works if port 80 and 8443 are open in your firewall/router and you point a domain to your server. It generates a valid certificate then automatically and access via e.g. `https://public.domain.com:8443/` is possible.)
- `443/TCP`: will be used by the Apache container later on and needs to be open in your firewall/router
- `3478/TCP` and `3478/UDP`: will be used by the Turnserver inside the Talk container and needs to be open in your firewall/router
- `8443/TCP`: Mastercontainer Interface with valid certificate (only works if port 80 and 8443 are open/forwarded in your firewall/router and you point a domain to your server. It generates a valid certificate then automatically and access via e.g. `https://public.domain.com:8443/` is possible.)
- `443/TCP`: will be used by the Apache container later on and needs to be open/forwarded in your firewall/router
- `3478/TCP` and `3478/UDP`: will be used by the Turnserver inside the Talk container and needs to be open/forwarded in your firewall/router
### How to run AIO on macOS?
On macOS, there is only one thing different in comparison to Linux: instead of using `--volume /var/run/docker.sock:/var/run/docker.sock:ro`, you need to use `--volume /var/run/docker.sock.raw:/var/run/docker.sock:ro` to run it after you installed [Docker Desktop](https://www.docker.com/products/docker-desktop/). Apart from that it should work and behave the same like on Linux.
On macOS, there is only one thing different in comparison to Linux: instead of using `--volume /var/run/docker.sock:/var/run/docker.sock:ro`, you need to use `--volume /var/run/docker.sock.raw:/var/run/docker.sock:ro` to run it after you installed [Docker Desktop](https://www.docker.com/products/docker-desktop/) (and don't forget to [enable ipv6](https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md) if you should need that). Apart from that it should work and behave the same like on Linux.
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.
### How to run AIO on Windows?
On Windows, the following command should work in the command prompt after you installed [Docker Desktop](https://www.docker.com/products/docker-desktop/):
On Windows, install [Docker Desktop](https://www.docker.com/products/docker-desktop/) (and don't forget to [enable ipv6](https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md) if you should need that) and run the following command in the command prompt:
```
docker run ^
@@ -106,7 +168,9 @@ Also, you may be interested in adjusting Nextcloud's Datadir to store the files
⚠️ **Please note:** Almost all commands in this project's documentation use `sudo docker ...`. Since `sudo` is not available on Windows, you simply remove `sudo` from the commands and they should work.
### 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 `-e DOCKER_SOCKET_PATH="/volume1/docker/docker.sock"`to the startup command. 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.
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.
@@ -133,12 +197,13 @@ 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.
### How to run Nextcloud behind a Cloudflare Tunnel?
Although it does not seems like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. So please follow the [reverse proxy documentation](./reverse-proxy.md) where is documented how to make it run behind a Cloudflare Tunnel. Also see https://github.com/dani-garcia/vaultwarden/wiki/Running-a-private-vaultwarden-instance-with-Let%27s-Encrypt-certs#cloudflare-setup for additional docs on this topic.
Although it does not seems like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. So please follow the [reverse proxy documentation](./reverse-proxy.md) where is documented how to make it run behind a Cloudflare Tunnel. However please see the [caveats](https://github.com/nextcloud/all-in-one#notes-on-cloudflare-proxytunnel) before proceeding.
### Disrecommended VPS providers
- Stratos VPS crash/freeze/make errors when they reach an extremely low PID limit, which is very quickly reached by AIO, see [here](https://github.com/nextcloud/all-in-one/discussions/1747#discussioncomment-4716164), Strato does normally not increase this limit.
@@ -178,7 +243,7 @@ The recommended way is to set up a local dns-server like a pi-hole and set up a
- https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html
### How to skip the domain validation?
If you are completely sure that you've configured everything correctly and are not able to pass the domain validation, you may skip the domain validation by adding `-e SKIP_DOMAIN_VALIDATION=true` to the docker run command of the mastercontainer.
If you are completely sure that you've configured everything correctly and are not able to pass the domain validation, you may skip the domain validation by adding `--env SKIP_DOMAIN_VALIDATION=true` 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).
### How to resolve firewall problems with Fedora Linux, RHEL OS, CentOS, SUSE Linux and others?
It is known that Linux distros that use [firewalld](https://firewalld.org) as their firewall daemon have problems with docker networks. In case the containers are not able to communicate with each other, you may change your firewalld to use the iptables backend by running:
@@ -222,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.
@@ -238,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`.
@@ -268,7 +333,11 @@ Backups can be created and restored in the AIO interface using the buttons `Crea
The backups itself get encrypted with an encryption key that gets shown to you in the AIO interface. Please save that at a safe place as you will not be able to restore from backup without this key.
Be aware that this solution does not back up files and folders that are mounted into Nextcloud using the external storage app.
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.
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.
Regarding backup retention, see [this documentation](https://github.com/nextcloud/all-in-one/discussions/1675).
---
@@ -442,23 +511,23 @@ You can do so by running the `/daily-backup.sh` script that is stored in the mas
- `STOP_CONTAINERS` if set to `1`, it will automatically stop the containers.
- `CHECK_BACKUP` if set to `1`, it will start the backup check. This is not allowed to be enabled at the same time like `DAILY_BACKUP`. Please be aware that this option is non-blocking which means that the backup check is not done when the process is finished since it only start the borgbackup container with the correct configuration.
One example for this would be `sudo docker exec -it -e DAILY_BACKUP=1 nextcloud-aio-mastercontainer /daily-backup.sh`, which you can run via a cronjob or put it in a script.
One example for this would be `sudo docker exec -it --env DAILY_BACKUP=1 nextcloud-aio-mastercontainer /daily-backup.sh`, which you can run via a cronjob or put it in a script.
⚠️ Please note that none of the option returns error codes. So you need to check for the correct result yourself.
### How to disable the backup section?
If you already have a backup solution in place, you may want to hide the backup section. You can do so by adding `-e DISABLE_BACKUP_SECTION=true` to the initial startup of the mastercontainer.
If you already have a backup solution in place, you may want to hide the backup section. You can do so by adding `--env AIO_DISABLE_BACKUP_SECTION=true` 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).
### How to change the default location of Nextcloud's Datadir?
⚠️ **Attention:** It is very important to change the datadir **before** Nextcloud is installed/started the first time and not to change it afterwards! If you still want to do it afterwards, see [this](https://github.com/nextcloud/all-in-one/discussions/890#discussioncomment-3089903) on how to do it.
You can configure the Nextcloud container to use a specific directory on your host as data directory. You can do so by adding the environmental variable `NEXTCLOUD_DATADIR` to the initial startup of the mastercontainer. Allowed values for that variable are strings that start with `/` and are not equal to `/`.
You can configure the Nextcloud container to use a specific directory on your host as data directory. You can do so by adding the environmental variable `NEXTCLOUD_DATADIR` 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). Allowed values for that variable are strings that start with `/` and are not equal to `/`. The chosen directory or volume will then be mounted to `/mnt/ncdata` inside the container.
- An example for Linux is `-e NEXTCLOUD_DATADIR="/mnt/ncdata"`.
- On macOS it might be `-e NEXTCLOUD_DATADIR="/var/nextcloud-data"`
- For Synology it may be `-e NEXTCLOUD_DATADIR="/volume1/docker/nextcloud/data"`.
- On Windows it might be `-e NEXTCLOUD_DATADIR="/run/desktop/mnt/host/c/ncdata"`. (This path is equivalent to `C:\ncdata` 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/ncdata` which is equivalent to `C:\ncdata`.)
- Another option is to provide a specific volume name here with: `-e NEXTCLOUD_DATADIR="nextcloud_aio_nextcloud_datadir"`. This volume needs to be created beforehand manually by you in order to be able to use it. e.g. with:
- An example for Linux is `--env NEXTCLOUD_DATADIR="/mnt/ncdata"`.
- On macOS it might be `--env NEXTCLOUD_DATADIR="/var/nextcloud-data"`
- For Synology it may be `--env NEXTCLOUD_DATADIR="/volume1/docker/nextcloud/data"`.
- On Windows it might be `--env NEXTCLOUD_DATADIR="/run/desktop/mnt/host/c/ncdata"`. (This path is equivalent to `C:\ncdata` 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/ncdata` which is equivalent to `C:\ncdata`.)
- Another option is to provide a specific volume name here with: `--env NEXTCLOUD_DATADIR="nextcloud_aio_nextcloud_datadir"`. This volume needs to be created beforehand manually by you in order to be able to use it. e.g. with:
```
docker volume create ^
--driver local ^
@@ -486,14 +555,14 @@ password=<password>
Now you can use `/mnt/storagebox` as Nextcloud's datadir like described in the section above above this one.
### How to allow the Nextcloud container to access directories on the host?
By default, the Nextcloud container is confined and cannot access directories on the host OS. You might want to change this when you are planning to use local external storage in Nextcloud to store some files outside the data directory and can do so by adding the environmental variable `NEXTCLOUD_MOUNT` to the initial startup of the mastercontainer. Allowed values for that variable are strings that start with `/` and are not equal to `/`.
By default, the Nextcloud container is confined and cannot access directories on the host OS. You might want to change this when you are planning to use local external storage in Nextcloud to store some files outside the data directory and can do so by adding the environmental variable `NEXTCLOUD_MOUNT` 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). Allowed values for that variable are strings that start with `/` and are not equal to `/`.
- Two examples for Linux are `-e NEXTCLOUD_MOUNT="/mnt/"` and `-e NEXTCLOUD_MOUNT="/media/"`.
- On macOS it might be `-e NEXTCLOUD_MOUNT="/Volumes/your_drive/"`
- For Synology it may be `-e NEXTCLOUD_MOUNT="/volume1/"`.
- On Windows it might be `-e NEXTCLOUD_MOUNT="/run/desktop/mnt/host/d/your-folder/"`. (This path is equivalent to `D:\your-folder` 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. `d/your-folder/` which is equivalent to `D:\your-folder`.)
- Two examples for Linux are `--env NEXTCLOUD_MOUNT="/mnt/"` and `--env NEXTCLOUD_MOUNT="/media/"`.
- On macOS it might be `--env NEXTCLOUD_MOUNT="/Volumes/your_drive/"`
- For Synology it may be `--env NEXTCLOUD_MOUNT="/volume1/"`.
- On Windows it might be `--env NEXTCLOUD_MOUNT="/run/desktop/mnt/host/d/your-folder/"`. (This path is equivalent to `D:\your-folder` 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. `d/your-folder/` which is equivalent to `D:\your-folder`.)
After using this option, please make sure to apply the correct permissions to the directories that you want to use in Nextcloud. E.g. `sudo chown -R 33:0 /mnt/your-drive-mountpoint` and `sudo chmod -R 750 /mnt/your-drive-mountpoint` should make it work on Linux when you have used `-e NEXTCLOUD_MOUNT="/mnt/"`. On Windows you could do this e.g. with `docker exec -it nextcloud-aio-nextcloud chown -R 33:0 /run/desktop/mnt/host/d/your-folder/` and `docker exec -it nextcloud-aio-nextcloud chmod -R 750 /run/desktop/mnt/host/d/your-folder/`.
After using this option, please make sure to apply the correct permissions to the directories that you want to use in Nextcloud. E.g. `sudo chown -R 33:0 /mnt/your-drive-mountpoint` and `sudo chmod -R 750 /mnt/your-drive-mountpoint` should make it work on Linux when you have used `--env NEXTCLOUD_MOUNT="/mnt/"`. On Windows you could do this e.g. with `docker exec -it nextcloud-aio-nextcloud chown -R 33:0 /run/desktop/mnt/host/d/your-folder/` and `docker exec -it nextcloud-aio-nextcloud chmod -R 750 /run/desktop/mnt/host/d/your-folder/`.
You can then navigate to the apps management page, activate the external storage app, navigate to `https://your-nc-domain.com/settings/admin/externalstorages` and add a local external storage directory that will be accessible inside the container at the same place that you've entered. E.g. `/mnt/your-drive-mountpoint` will be mounted to `/mnt/your-drive-mountpoint` inside the container, etc.
@@ -502,23 +571,26 @@ 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. `-e TALK_PORT=3478` to the initial docker run command 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 uploads to Nextcloud limited to a max of 10G. You can adjust the upload limit by providing `-e NEXTCLOUD_UPLOAD_LIMIT=10G` to the docker run command of the mastercontainer and customize the value to your fitting. It must start with a number and end with `G` e.g. `10G`.
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`.
### How to adjust the max execution time for Nextcloud?
By default are uploads to Nextcloud limited to a max of 3600s. You can adjust the upload time limit by providing `-e NEXTCLOUD_MAX_TIME=3600` to the docker run command of the mastercontainer and customize the value to your fitting. It must be a number e.g. `3600`.
By default are uploads to Nextcloud limited to a max of 3600s. You can adjust the upload time limit by providing `--env NEXTCLOUD_MAX_TIME=3600` 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 be a number e.g. `3600`.
### How to adjust the PHP memory limit for Nextcloud?
By default is each PHP process in the Nextcloud container limited to a max of 512 MB. You can adjust the memory limit by providing `-e NEXTCLOUD_MEMORY_LIMIT=512M` to the docker run command of the mastercontainer and customize the value to your fitting. It must start with a number and end with `M` e.g. `1024M`.
By default is each PHP process in the Nextcloud container limited to a max of 512 MB. You can adjust the memory limit by providing `--env NEXTCLOUD_MEMORY_LIMIT=512M` 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 `M` e.g. `1024M`.
### What can I do to fix the internal or reserved ip-address error?
If you get an error during the domain validation which states that your ip-address is an internal or reserved ip-address, you can fix this by first making sure that your domain indeed has the correct public ip-address that points to the server and then adding `--add-host yourdomain.com:<public-ip-address>` to the initial docker run command which will allow the domain validation to work correctly. And so that you know: even if the `A` record of your domain should change over time, this is no problem since the mastercontainer will not make any attempt to access the chosen domain after the initial domain validation.
If you get an error during the domain validation which states that your ip-address is an internal or reserved ip-address, you can fix this by first making sure that your domain indeed has the correct public ip-address that points to the server and then adding `--add-host yourdomain.com:<public-ip-address>` 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) which will allow the domain validation to work correctly. And so that you know: even if the `A` record of your domain should change over time, this is no problem since the mastercontainer will not make any attempt to access the chosen domain after the initial domain validation.
### 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)
@@ -526,23 +598,25 @@ You can run AIO also with docker rootless. How to do this is documented here: [d
No. Since Podman is not 100% compatible with the Docker API, you cannot use Podman instead of Docker (since that would add yet another platform where the maintaner would need to test on). However you can use and follow the [manual-install documentation](./manual-install/) to get AIO's containers running with Podman or use Docker rootless, as described in the above section.
### How to change the Nextcloud apps that are installed on the first startup?
You might want to adjust the Nextcloud apps that are installed upon the first startup of the Nextcloud container. You can do so by adding `-e NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts"` to the docker run command of the mastercontainer and customize the value to your fitting. It must be a string with small letters a-z, 0-9, spaces and hyphens or '_'. You can disable shipped and by default enabled apps by adding a hyphen in front of the appid. E.g. `-contactsinteraction`.
You might want to adjust the Nextcloud apps that are installed upon the first startup of the Nextcloud container. You can do so by adding `--env NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts"` 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 be a string with small letters a-z, 0-9, spaces and hyphens or '_'. You can disable shipped and by default enabled apps by adding a hyphen in front of the appid. E.g. `-contactsinteraction`.
### How to add OS packages permanently to the Nextcloud container?
Some Nextcloud apps require additional external dependencies that must be bundled within Nextcloud container in order to work correctly. As we cannot put each and every dependency for all apps into the container - as this would make the project very fast unmaintainable - there is an official way how you can add additional dependencies into the Nextcloud container. However note that doing this is disrecommended since we do not test Nextcloud apps that require external dependencies.
You can do so by adding `-e NEXTCLOUD_ADDITIONAL_APKS="imagemagick dependency2 dependency3"` to the docker run command of the mastercontainer and customize the value to your fitting. It must be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available packages here: https://pkgs.alpinelinux.org/packages?name=&branch=v3.16&repo=&arch=&maintainer=. By default added is `imagemagick`. If you want to keep that, you need to specify it as well.
You can do so by adding `--env NEXTCLOUD_ADDITIONAL_APKS="imagemagick dependency2 dependency3"` 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 be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available packages here: https://pkgs.alpinelinux.org/packages?name=&branch=v3.16&repo=&arch=&maintainer=. By default added is `imagemagick`. If you want to keep that, you need to specify it as well.
### How to add PHP extensions permanently to the Nextcloud container?
Some Nextcloud apps require additional php extensions that must be bundled within Nextcloud container in order to work correctly. As we cannot put each and every dependency for all apps into the container - as this would make the project very fast unmaintainable - there is an official way how you can add additional php extensions into the Nextcloud container. However note that doing this is disrecommended since we do not test Nextcloud apps that require additional php extensions.
You can do so by adding `-e NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS="imagick extension1 extension2"` to the docker run command of the mastercontainer and customize the value to your fitting. It must be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available extensions here: https://pecl.php.net/packages.php. By default added is `imagick`. If you want to keep that, you need to specify it as well.
You can do so by adding `--env NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS="imagick extension1 extension2"` 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 be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available extensions here: https://pecl.php.net/packages.php. By default added is `imagick`. If you want to keep that, you need to specify it as well.
### What about the pdlib PHP extension for the facerecognition app?
The [facerecognition app](https://apps.nextcloud.com/apps/facerecognition) requires the pdlib PHP extension to be installed. Unfortunately, it is not available on PECL nor via PHP core, so there is no way to add this into AIO currently. However you can vote up [this issue](https://github.com/goodspb/pdlib/issues/56) to bring it to PECL and there is the [recognize app](https://apps.nextcloud.com/apps/recognize) that also allows to do face-recognition.
### How to enable hardware-transcoding for Nextcloud?
The [memories app](https://apps.nextcloud.com/apps/memories) allows to enable hardware transcoding for videos. In order to use that, you need to add `-e NEXTCLOUD_ENABLE_DRI_DEVICE=true` to the docker run command of the mastercontainer which will mount the `/dev/dri` device into the container (⚠️ Attention: this only works if the device is present on the host!). Additionally, you need to add required packets to the Nextcloud container by using [this feature](https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container) and adding the required Alpine packages that are documented [here](https://github.com/pulsejet/memories/wiki/QSV-Transcoding).
⚠️ Attention: this only works if the `/dev/dri` device is present on the host! If it should not exist on your host, don't proceed as otherwise the Nextcloud container will fail to start!
The [memories app](https://apps.nextcloud.com/apps/memories) allows to enable hardware transcoding for videos. In order to use that, you need to add `--env NEXTCLOUD_ENABLE_DRI_DEVICE=true` 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) which will mount the `/dev/dri` device into the container. Additionally, you need to add required packets to the Nextcloud container by using [this feature](https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container) and adding the required Alpine packages that are documented [here](https://github.com/pulsejet/memories/wiki/QSV-Transcoding).
### Huge docker logs
When your containers run for a few days without a restart, the container logs that you can view from the AIO interface can get really huge. You can limit the loge sizes by enabling logrotate for docker container logs. Feel free to enable this by following those instructions: https://sandro-keil.de/blog/logrotate-for-docker-container/
@@ -596,14 +670,14 @@ What are the requirements?
### How to trust user-defiend Certification Authorities (CA)?
For some applications it might be necessary to enstablish a secured connection to a host / server which is using a certificated issued by a Certification Authority that is not trusted out of the box. An example could be configuring LDAPS against the Domain Controller (ActiveDirectory) of an organization
You can make the Nextcloud container trust any Certification Authority by providing the environmental variable `NEXTCLOUD_TRUSTED_CACERTS_DIR` when starting the AIO-mastercontainer. The value of the variables should be set to the absolute path to a directory on the host, which contains one or more Certification Authority's certificate. You should use X.509 certificates, Base64 encoded. (Other formats may work but have not been tested!) All the certificates in the directory will be trusted.
You can make the Nextcloud container trust any Certification Authority by providing the environmental variable `NEXTCLOUD_TRUSTED_CACERTS_DIR` 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). The value of the variables should be set to the absolute path to a directory on the host, which contains one or more Certification Authority's certificate. You should use X.509 certificates, Base64 encoded. (Other formats may work but have not been tested!) All the certificates in the directory will be trusted.
When using `docker run`, the environmental variable can be set with `-e NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts`.
When using `docker run`, the environmental variable can be set with `--env NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts`.
In order for the value to be valid, the path should start with `/` and not end with '/' and point to an existing **directory**. Pointing the variable directly to a certificate **file** will not work and may also break things.
### How to disable Collabora's Seccomp feature?
The Collabora container enables Seccomp by default, which is a security feature of the Linux kernel. On systems without this kernel feature enabled, you need to provide `-e COLLABORA_SECCOMP_DISABLED=true` to the initial docker run command in order to make it work.
The Collabora container enables Seccomp by default, which is a security feature of the Linux kernel. On systems without this kernel feature enabled, you need to provide `--env COLLABORA_SECCOMP_DISABLED=true` to the initial docker run command in order to make it work.
### How to enable automatic updates without creating a backup beforehand?
If you have an external backup solution, you might want to enable automatic updates without creating a backup first. However note that doing this is disrecommended since you will not be able to easily create and restore a backup from the AIO interface anymore and you need to make sure to shut down all the containers properly before creating the backup, e.g. by stopping them from the AIO interface first.
@@ -617,7 +691,7 @@ But anyhow, is here a guide that helps you automate the whole procedure:
#!/bin/bash
# Stop the containers
docker exec -e STOP_CONTAINERS=1 nextcloud-aio-mastercontainer /daily-backup.sh
docker exec --env STOP_CONTAINERS=1 nextcloud-aio-mastercontainer /daily-backup.sh
# Below is optional if you run AIO in a VM which will shut down the VM afterwards
# poweroff
@@ -645,7 +719,7 @@ Afterwards apply the correct permissions with `sudo chown root:root /root/shutdo
#!/bin/bash
# Run container update once
if ! docker exec -e AUTOMATIC_UPDATES=1 nextcloud-aio-mastercontainer /daily-backup.sh; then
if ! docker exec --env AUTOMATIC_UPDATES=1 nextcloud-aio-mastercontainer /daily-backup.sh; then
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; do
echo "Waiting for watchtower to stop"
sleep 30
@@ -657,7 +731,7 @@ if ! docker exec -e AUTOMATIC_UPDATES=1 nextcloud-aio-mastercontainer /daily-bac
done
# Run container update another time to make sure that all containers are updated correctly.
docker exec -e AUTOMATIC_UPDATES=1 nextcloud-aio-mastercontainer /daily-backup.sh
docker exec --env AUTOMATIC_UPDATES=1 nextcloud-aio-mastercontainer /daily-backup.sh
fi
```

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>
@@ -80,7 +80,7 @@ Add this as a new Apache site config:
</VirtualHost>
```
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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
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)***
To make the config work you can run the following command:
`sudo a2enmod rewrite proxy proxy_http proxy_wstunnel ssl headers http2`
@@ -101,7 +101,7 @@ https://<your-nc-domain>:443 {
}
```
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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
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)***
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/575#discussion-4055615) for a more complete example.
@@ -125,23 +125,33 @@ You can get AIO running using the ACME DNS-challenge. Here is how to do it.
}
}
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. You also need to adjust `<provider>` and `<key>` to match your case. 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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `-e SKIP_DOMAIN_VALIDATION=true` to the docker run command which will disable the dommain validation (because it is known that the domain validation will not when using the DNS-challenge since no port is publicly opened.
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. You also need to adjust `<provider>` and `<key>` to match your case. 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)***
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`) which will disable the dommain validation (because it is known that the domain validation will not when using the DNS-challenge since no port is publicly opened.
**Advice:** In order to make it work in your home network, you may add the internal ipv4-address of your reverse proxy as A DNS-record to your domain and disable the dns-rebind-protection in your router. Another way it to set up a local dns-server like a pi-hole and set up a custom dns-record for that domain that points to the internal ip-adddress of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally). If both is not possible, you may add the domain to the hosts file which is needed then for any devices that shall use the server.
</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>
<summary>click here to expand</summary>
Although it does not seems like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. Here is how to make it work:
Although it does not seems like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. Please see the [caveats](https://github.com/nextcloud/all-in-one#notes-on-cloudflare-proxytunnel) before proceeding. Here is then how to make it work:
1. Install the Cloudflare Tunnel on the same machine where AIO will be running on and point the Tunnel with the domain that you want to use for AIO to `http://localhost:11000`. If the Tunnel is running on a different machine, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `-e SKIP_DOMAIN_VALIDATION=true` to the docker run command which will disable the dommain validation (because it is known that the domain validation will not work behind a Cloudflare Tunnel). So you need to ensure yourself that you've configured everything correctly.
1. Install the Cloudflare Tunnel on the same machine where AIO will be running on and point the Tunnel with the domain that you want to use for AIO to `http://localhost:11000`. ***If the Tunnel is running on a different machine, 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)***
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command which will disable the dommain validation (because it is known that the domain validation will not work behind a Cloudflare Tunnel). So you need to ensure yourself that you've configured everything correctly.
**Advice:** Make sure to [disable Cloudflares Rocket Loader feature](https://help.nextcloud.com/t/login-page-not-working-solved/149417/8) as otherwise Nextcloud's login prompt will not be shown.
@@ -233,7 +243,7 @@ backend Nextcloud
server Nextcloud localhost:11000
```
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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
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>
@@ -267,8 +277,7 @@ server {
server_name <your-nc-domain>;
location / {
resolver localhost; # Note: you need to set a valid dns resolver here or use 127.0.0.1 / [::1] instead of localhost in the line below. See https://stackoverflow.com/a/49642310 for a better explanation
proxy_pass http://localhost:11000$request_uri; # Note: you need to change localhost to 127.0.0.1 or [::1], if you don't use a valid dns resolver in the line above
proxy_pass http://127.0.0.1:11000$request_uri;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port $server_port;
@@ -302,7 +311,7 @@ server {
```
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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
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 `127.0.0.1` 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)***
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/588#discussioncomment-2811152) for a more complete example.
@@ -329,7 +338,9 @@ Apart from that, there is this: [manual-install](https://github.com/nextcloud/al
<summary>click here to expand</summary>
See these screenshots for a working config:
First, please make sure that the environmental variables `PUID` and `PGID` in the docker-compose.yml file for NPM are either unset or set to `0`.
Second, see these screenshots for a working config:
![grafik](https://user-images.githubusercontent.com/75573284/213889707-b7841ca0-3ea7-4321-acf6-50e1c1649442.png)
@@ -345,12 +356,100 @@ proxy_read_timeout 86400s;
client_max_body_size 0;
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also change `<you>@<your-mail-provider-domain>` to a mail address of yours. 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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also change `<you>@<your-mail-provider-domain>` to a mail address of yours. 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)***
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/588#discussioncomment-3040493) for a more complete example.
</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>
@@ -365,7 +464,7 @@ See these screenshots for a working config:
![image](https://user-images.githubusercontent.com/70434961/213193789-fa936edc-e307-4e6a-9a53-ae26d1bf2f42.jpg)
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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
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>
@@ -448,9 +547,9 @@ The examples below define the dynamic configuration in YAML files. If you rather
Of course you need to modify `<your-nextcloud-domain>` in the `nextcloud.yml` 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 for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
**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>
@@ -477,8 +576,8 @@ sudo docker run \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 8080:8080 \
-e APACHE_PORT=11000 \
-e APACHE_IP_BINDING=0.0.0.0 \
--env APACHE_PORT=11000 \
--env APACHE_IP_BINDING=0.0.0.0 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:latest
@@ -494,14 +593,16 @@ On macOS see https://github.com/nextcloud/all-in-one#how-to-run-aio-on-macos.
<summary>Command for Windows</summary>
On Windows, install [Docker Desktop](https://www.docker.com/products/docker-desktop/) (and don't forget to [enable ipv6](https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md) if you should need that) and run the following command in the command prompt:
```
docker run ^
--sig-proxy=false ^
--name nextcloud-aio-mastercontainer ^
--restart always ^
--publish 8080:8080 ^
-e APACHE_PORT=11000 ^
-e APACHE_IP_BINDING=0.0.0.0 ^
--env APACHE_PORT=11000 ^
--env APACHE_IP_BINDING=0.0.0.0 ^
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config ^
--volume //var/run/docker.sock:/var/run/docker.sock:ro ^
nextcloud/all-in-one:latest
@@ -519,10 +620,10 @@ Simply translate the docker run command into a docker-compose file. You can have
## 3. Limit the access to the apache container
Use this envorinmental variable during the initial startup of the mastercontainer to make the apache container only listen on localhost: `-e APACHE_IP_BINDING=127.0.0.1`. **Attention:** This is only recommended to be set if you use `localhost` in your reverse proxy config to connect to your AIO instance. If you use an ip-address instead of localhost, you should set it to `0.0.0.0`.
Use this envorinmental variable during the initial startup of the mastercontainer to make the apache container only listen on localhost: `--env APACHE_IP_BINDING=127.0.0.1`. **Attention:** This is only recommended to be set if you use `localhost` in your reverse proxy config to connect to your AIO instance. If you use an ip-address instead of localhost, you should set it to `0.0.0.0`.
## 4. Open the AIO interface.
After starting AIO, you should be able to access the AIO Interface via `https://ip.address.of.the.host:8080`. Enter your domain that you've entered in the reverse proxy config and you should be done. Please do not forget to open port `3478/TCP` and `3478/UDP` in your firewall/router for the Talk container!
After starting AIO, you should be able to access the AIO Interface via `https://ip.address.of.the.host:8080`. Enter your domain that you've entered in the reverse proxy config and you should be done. Please do not forget to open/forward port `3478/TCP` and `3478/UDP` in your firewall/router for the Talk container!
## 5. Optional: get a valid certificate for the AIO interface
@@ -538,17 +639,22 @@ https://<your-nc-domain>:8443 {
}
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. **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` when starting the reverse proxy container in order to connect the reverse proxy container to the host network. If that is not an option for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. **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` 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)
Afterwards should the AIO interface be accessible via `https://ip.address.of.the.host:8443`. You can alternatively change the domain to a different subdomain by using `https://<your-alternative-domain>:443` instead of `https://<your-nc-domain>:8443` in the Caddyfile and use that to access the AIO interface.
## 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 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, substitute `localhost` in the default configurations by the ip-address that you can easily get when running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (The command only works on Linux)
1. Make sure that all ports match the chosen APACHE_PORT.
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)
1. Make sure that the mastercontainer is able to spawn other containers. You can do so by checking that the mastercontainer indeed has access to the Docker socket which might not be positioned in one of the suggested directories like `/var/run/docker.sock` but in a different directory, based on your OS and the way how you installed Docker. The mastercontainer logs should help figuring this out. You can have a look at them by running `sudo docker logs nextcloud-aio-mastercontainer` after the container is started the first time.
1. Check if after the mastercontainer was started, the reverse proxy if running inside a container, can reach the provided apache port. You can test this by running `nc -z localhost 11000; echo $?` from inside the reverse proxy container. If the output is `0`, everything works. Alternatively you can of course use instead of `localhost` the ip-address of the host here for the test.
1. Try to configure everything from scratch if it still does not work!
1. As last resort, you may disable the domain validation by adding `-e SKIP_DOMAIN_VALIDATION=true` to the docker run command. But only use this if you are completely sure that you've correctly configured everything!
1. Make sure that you are not behind CGNAT. If that is the case, you will not be able to open ports properly. In that case you might use a Cloudflare Tunnel.
1. If you use Cloudflare, you might need to skip the domain validation anyways since it is known that Cloudflare might block the validation attempts. In that case, see the last option below.
1. Check if you have a public IPv4- and public IPv6-address. If you only have a public IPv6-address (e.g. due to DS-Lite), make sure to enable IPv6 in Docker and your whole networking infrastructure (e.g. also by adding an AAAA DNS-entry to your domain).
1. Try to configure everything from scratch if it still does not work by following https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance.
1. As last resort, you may disable the domain validation by adding `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command. But only use this if you are completely sure that you've correctly configured everything!

View File

@@ -1,23 +1,23 @@
# Environmental variables
- [ ] When starting the mastercontainer with `-e APACHE_PORT=11000` on a clean instance, the domaincheck container should be started with that same port published. That makes sure that also the Apache container will use that port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `-e APACHE_IP_BINDING=127.0.0.1` on a clean instance, the domaincheck container's apache port should only listen on localhost on the host. Using a value here that is not a number or dot will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `-e TALK_PORT=3479` on a clean instance, the talk container should use this port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly. Also it should stop if apache_port and talk_port are set to the same value.
- [ ] When starting the mastercontainer with `--env APACHE_PORT=11000` on a clean instance, the domaincheck container should be started with that same port published. That makes sure that also the Apache container will use that port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `--env APACHE_IP_BINDING=127.0.0.1` on a clean instance, the domaincheck container's apache port should only listen on localhost on the host. Using a value here that is not a number or dot will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `--env TALK_PORT=3479` on a clean instance, the talk container should use this port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly. Also it should stop if apache_port and talk_port are set to the same value.
- [ ] Make also sure that reverse proxies work by following https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#reverse-proxy-documentation and following [001-initial-setup.md](./001-initial-setup.md) and [002-new-instance.md](./002-new-instance.md)
- [ ] When starting the mastercontainer with `-e SKIP_DOMAIN_VALIDATION=true` on a clean instance, it should skip the domain verification. So it should accept any domain that you type in then.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_DATADIR="/mnt/testdata"` it should map that location from `/mnt/testdata` to `/mnt/ncdata` inside the Nextcloud container. Not having adjusted the permissions correctly before starting the Nextcloud container the first time will not allow the Nextcloud container to start correctly. See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir for allowed values.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_MOUNT="/mnt/"` it should map `/mnt/` to `/mnt/` inside the Nextcloud container. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host for allowed values.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_UPLOAD_LIMIT=11G` it should change Nextclouds upload limit to 11G. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud for allowed values.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_MEMORY_LIMIT=1024M` it should change Nextclouds PHP memory limit to 1024M. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud for allowed values.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_MAX_TIME=4000` it should change Nextclouds upload max time 4000s. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud for allowed values.
- [ ] When starting the mastercontainer with `-e DOCKER_SOCKET_PATH="$XDG_RUNTIME_DIR/docker.sock"` it should map `$XDG_RUNTIME_DIR/docker.sock` to `/var/run/docker.sock` inside the watchtower container which allow to update the mastercontainer on docker rootless.
- [ ] When starting the mastercontainer with `-e DISABLE_BACKUP_SECTION=true` it should hide the backup section that gets shown after AIO is set up (everything of [020-backup-and-restore](./020-backup-and-restore.md)) and simply show that the backup section is disabled.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts`, the resulting nextcloud container should trust all the Certification Authorities, whose certificates are included in the directory `/path/to/my/cacerts` on the host.
- [ ] When starting the mastercontainer with `--env SKIP_DOMAIN_VALIDATION=true` on a clean instance, it should skip the domain verification. So it should accept any domain that you type in then.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_DATADIR="/mnt/testdata"` it should map that location from `/mnt/testdata` to `/mnt/ncdata` inside the Nextcloud container. Not having adjusted the permissions correctly before starting the Nextcloud container the first time will not allow the Nextcloud container to start correctly. See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir for allowed values.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_MOUNT="/mnt/"` it should map `/mnt/` to `/mnt/` inside the Nextcloud container. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host for allowed values.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_UPLOAD_LIMIT=11G` it should change Nextclouds upload limit to 11G. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud for allowed values.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_MEMORY_LIMIT=1024M` it should change Nextclouds PHP memory limit to 1024M. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud for allowed values.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_MAX_TIME=4000` it should change Nextclouds upload max time 4000s. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud for allowed values.
- [ ] When starting the mastercontainer with `--env WATCHTOWER_DOCKER_SOCKET_PATH="$XDG_RUNTIME_DIR/docker.sock"` it should map `$XDG_RUNTIME_DIR/docker.sock` to `/var/run/docker.sock` inside the watchtower container which allow to update the mastercontainer on docker rootless.
- [ ] When starting the mastercontainer with `--env AIO_DISABLE_BACKUP_SECTION=true` it should hide the backup section that gets shown after AIO is set up (everything of [020-backup-and-restore](./020-backup-and-restore.md)) and simply show that the backup section is disabled.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts`, the resulting nextcloud container should trust all the Certification Authorities, whose certificates are included in the directory `/path/to/my/cacerts` on the host.
See https://github.com/nextcloud/all-in-one#how-to-trust-user-defiend-certification-authorities-ca
- [ ] When starting the mastercontainer with `-e COLLABORA_SECCOMP_DISABLED=true`, the resulting collabora container should have `--o:security.seccomp=false` applied to it.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_STARTUP_APPS=deck`, the resulting Nextcloud should have only installed the deck app and not the other apps that get installed by default. Default are `deck twofactor_totp tasks calendar contacts`.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_ADDITIONAL_APKS=zip`, the resulting Nextcloud container should have the zip package installed and not imagemagick.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=inotify`, the resulting Nextcloud container should have the inotify extension installed and not the imagick extension.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_ENABLE_DRI_DEVICE=true`, the resulting Nextcloud container should have the /dev/dri device mounted into the container. (Only works if a `/dev/dri` device is present on the host)
- [ ] When starting the mastercontainer with `--env COLLABORA_SECCOMP_DISABLED=true`, the resulting collabora container should have `--o:security.seccomp=false` applied to it.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_STARTUP_APPS=deck`, the resulting Nextcloud should have only installed the deck app and not the other apps that get installed by default. Default are `deck twofactor_totp tasks calendar contacts`.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_ADDITIONAL_APKS=zip`, the resulting Nextcloud container should have the zip package installed and not imagemagick.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=inotify`, the resulting Nextcloud container should have the inotify extension installed and not the imagick extension.
- [ ] When starting the mastercontainer with `--env NEXTCLOUD_ENABLE_DRI_DEVICE=true`, the resulting Nextcloud container should have the /dev/dri device mounted into the container. (Only works if a `/dev/dri` device is present on the host)
You can now continue with [070-timezone-change.md](./070-timezone-change.md)