Compare commits

...

419 Commits

Author SHA1 Message Date
Simon L
bce08a1564 Merge pull request #1363 from nextcloud/enh/noid/updater-deletion
do not delete the updater so that it can get used later on
2022-12-08 15:09:16 +01:00
Simon L
ba6a0f4652 Merge pull request #1491 from nextcloud/nextcloud-container-update
Nextcloud update
2022-12-08 15:08:37 +01:00
szaimen
02ed48f0d5 nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-12-08 14:06:32 +00:00
Simon L
979f2e45fe allow to update Nextcloud dependencies using workflow_dispatch
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-08 15:02:41 +01:00
Simon L
710b0d15f8 Merge pull request #1485 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221205-slim
Bump debian from bullseye-20221114-slim to bullseye-20221205-slim in /Containers/apache
2022-12-06 15:44:13 +01:00
Simon L
9b622f3c37 Merge pull request #1486 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221205-slim
Bump debian from bullseye-20221114-slim to bullseye-20221205-slim in /Containers/borgbackup
2022-12-06 15:43:42 +01:00
dependabot[bot]
914bc68eea Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20221114-slim to bullseye-20221205-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-06 12:05:03 +00:00
dependabot[bot]
16dadb8f4e Bump debian in /Containers/apache
Bumps debian from bullseye-20221114-slim to bullseye-20221205-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-06 12:04:58 +00:00
Simon L
3d94ae56c4 increase to 3.2.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 15:44:16 +01:00
Simon L
7833057c6d Merge pull request #1481 from nextcloud/enh/noid/reactivate-error-log
re-activate error.log for php-fpm
2022-12-05 15:21:56 +01:00
Simon L
56c400bd83 Merge pull request #1482 from nextcloud/enh/noid/apache-use-stderr
Print apache errors in the future to stderr
2022-12-05 15:21:45 +01:00
Simon L
df9882a944 Merge pull request #1471 from nextcloud/enh/1467/check-for-overlay2
check if vfs or fuse-overlayfs is used
2022-12-05 15:21:29 +01:00
Simon L
dffba06345 Merge pull request #1484 from nextcloud/dependabot/github_actions/dessant/lock-threads-4
Bump dessant/lock-threads from 3 to 4
2022-12-05 13:15:15 +01:00
dependabot[bot]
a05a3c02a2 Bump dessant/lock-threads from 3 to 4
Bumps [dessant/lock-threads](https://github.com/dessant/lock-threads) from 3 to 4.
- [Release notes](https://github.com/dessant/lock-threads/releases)
- [Changelog](https://github.com/dessant/lock-threads/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dessant/lock-threads/compare/v3...v4)

---
updated-dependencies:
- dependency-name: dessant/lock-threads
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 12:11:41 +00:00
Simon L
a0cbcc7f52 file logging is not needed
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:58:04 +01:00
Simon L
94a508d8aa Print apache errors in the future to stderr
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:55:49 +01:00
Simon L
38f9cb2046 fix the dependency update workflow?
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:34:33 +01:00
Simon L
bc77beced4 re-activate error.log for php-fpm
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 10:19:55 +01:00
Simon L
b86c1f490a check if vfs or fuse-overlayfs is used
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-03 19:02:30 +01:00
Simon L
d33f3f3b26 fix the dependency-update workflow
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-03 16:05:38 +01:00
Simon L
ae6b328de4 Merge pull request #1477 from nextcloud/automated/noid/psalm-baseline-update-1670041287
[Automated] Update psalm-baseline.xml
2022-12-03 09:36:15 +01:00
nextcloud-command
7f0f84ecfb Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-03 04:21:26 +00:00
Simon L
f3c20d8b76 Merge pull request #1441 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-0.105.1-7
Bump clamav/clamav from 0.105.1 to 0.105.1-7 in /Containers/clamav
2022-12-02 21:58:35 +01:00
Simon L
638675906c fix version number
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-02 21:58:11 +01:00
Simon L
9cffa4db38 Merge pull request #1454 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.26-fpm-alpine3.16
Bump php from 8.0.25-fpm-alpine3.16 to 8.0.26-fpm-alpine3.16 in /Containers/nextcloud
2022-12-02 21:57:27 +01:00
Simon L
906926382f Merge pull request #1456 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.26-apache-bullseye
Bump php from 8.0.25-apache-bullseye to 8.0.26-apache-bullseye in /Containers/mastercontainer
2022-12-02 21:57:09 +01:00
Simon L
8a213fa29a Merge pull request #1447 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.8.4.1
Bump collabora/code from 22.05.8.2.1 to 22.05.8.4.1 in /Containers/collabora
2022-12-02 21:56:30 +01:00
Simon L
c31990e41d Merge pull request #1466 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20221201
Bump nextcloud/imaginary from 20221101 to 20221201 in /Containers/imaginary
2022-12-02 21:56:14 +01:00
Simon L
700ddf25bf Merge pull request #1473 from nextcloud/enh/noid/add-appdata-hint
add hint for not present appdata dir
2022-12-02 21:51:57 +01:00
Simon L
5c966bc1f8 Merge pull request #1472 from nextcloud/enh/1469/add-lock-file-hint
add a hint what to do if the backup container was forcefully killed
2022-12-02 21:51:51 +01:00
Simon L
d093b524ed Merge pull request #1470 from nextcloud/enh/1467/improve-watchtower-logging
increase the loglevel for watchtower
2022-12-02 21:51:46 +01:00
Simon L
87ac260764 add hint for not present appdata dir
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-02 21:41:04 +01:00
Simon L
a3ed26063c add hint regarding default borg.config path
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-02 21:37:48 +01:00
Simon L
bd8546f30d Merge pull request #1462 from nextcloud/enh/noid/adjust-migration-docs
adjust migration docs
2022-12-01 16:46:22 +01:00
Simon L
fe251a9996 add a hint what to do if the backup container was forcefully killed
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-01 16:29:23 +01:00
Simon L
1ef7945c31 increasea the loglevel for watchtower
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-01 16:14:58 +01:00
dependabot[bot]
9d305844bf Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20221101 to 20221201.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-01 12:09:26 +00:00
Simon L
413633cfea Merge pull request #1465 from sergiocasero/Improve-local_storage-documentation
Update readme.md
2022-12-01 10:50:16 +01:00
Sergio Casero Hernández
f8820cb7c9 Update readme.md
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Sergio Casero Hernández <soy@sergiocasero.es>
2022-12-01 10:47:32 +01:00
Sergio Casero Hernández
d632df56bd Update readme.md
Updated readme by including the info about "what happens if local storage doesn't appear on the interface"

Signed-off-by: Sergio Casero Hernández <soy@sergiocasero.es>
2022-12-01 10:35:21 +01:00
Simon L
d34e18ee91 Merge pull request #1464 from nextcloud/automated/noid/psalm-baseline-update-1669868673
[Automated] Update psalm-baseline.xml
2022-12-01 08:37:57 +01:00
nextcloud-command
170e512690 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-12-01 04:24:32 +00:00
Simon L
3b97270862 adjust migration docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-01 03:25:58 +01:00
dependabot[bot]
d5db7568fe Bump clamav/clamav from 0.105.1 to 0.105.1-7 in /Containers/clamav
Bumps clamav/clamav from 0.105.1 to 0.105.1-7.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-29 12:24:51 +00:00
dependabot[bot]
0969d0582a Bump php in /Containers/mastercontainer
Bumps php from 8.0.25-apache-bullseye to 8.0.26-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-29 12:05:53 +00:00
dependabot[bot]
459fe462ab Bump php in /Containers/nextcloud
Bumps php from 8.0.25-fpm-alpine3.16 to 8.0.26-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-29 12:05:36 +00:00
Simon L
efbc247cb6 Merge pull request #1451 from nextcloud/fix-nginx-localhost
Fix reverse proxy documentation for nginx
2022-11-28 18:44:54 +01:00
Zoey
9019fda7e4 Fix reverse proxy documentation for nginx
Signed-off-by: Zoey <zoey@z0ey.de>
2022-11-28 15:51:18 +01:00
dependabot[bot]
b13e8afe18 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.8.2.1 to 22.05.8.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 12:05:30 +00:00
Simon L
3fa584442b change not recommended to disrecommended
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-24 11:39:05 +01:00
Simon L
6b6500c29d just exclude the whole dir on restore
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 19:03:17 +01:00
Simon L
b02d5cde1a fix the new update process
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 18:38:34 +01:00
Simon L
4a1539b473 dont restore ocsp folder
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 18:26:36 +01:00
Simon L
9e0079effc increase to 3.1.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-21 17:26:28 +01:00
Simon L
b8d5903c3b Merge pull request #1428 from nextcloud/enh/noid/disable-race-condition
make sure to only trigger the daily-backup script if daily_backups ar…
2022-11-21 17:25:02 +01:00
Simon L
ebe30e69f9 make sure to only trigger the daily-backup script if daily_backups are really enabled
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-20 01:36:55 +01:00
Simon L
e323f9770b improve the script
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-20 00:59:40 +01:00
Simon L
d5272c0ea7 Merge pull request #1423 from nextcloud/enh/1034/automatic-update-guide
add a guide on how to run automatic updates without creating a backup…
2022-11-19 14:07:42 +01:00
Simon L
daa9a94ebd add a guide on how to run automatic updates without creating a backup first
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 14:06:24 +01:00
Simon L
ccd4c9046a invert the default for DISABLE_BACKUP_SECTION
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:58:46 +01:00
Simon L
ed7b1e3cba adjust quotation marks
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:32:42 +01:00
Simon L
d45c42f8ed add a hint to also set docker_socket_path
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:31:40 +01:00
Simon L
bec7ee9a76 re-order the docker-compose entries partially alphabetically
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:27:48 +01:00
Simon L
dea53d9dad Merge pull request #1420 from nextcloud/enh/1400/make-update-process-more-stable
make update process more stable
2022-11-19 12:18:07 +01:00
Simon L
374b7bf7a6 make sure that all apps are up-to-date
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-19 12:05:39 +01:00
Simon L
e56a388cc5 Merge pull request #1419 from nextcloud/enh/1417/add-outdated-notification
add an AIO outdated notification
2022-11-18 10:38:43 +01:00
Simon L
df8b340b18 Merge pull request #1402 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.16.3
Bump alpine from 3.16.2 to 3.16.3 in /Containers/watchtower
2022-11-18 10:36:03 +01:00
Simon L
febe766eac Merge pull request #1401 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.16.3
Bump alpine from 3.16.2 to 3.16.3 in /Containers/domaincheck
2022-11-18 10:35:55 +01:00
dependabot[bot]
c3aa304e08 Bump alpine from 3.16.2 to 3.16.3 in /Containers/watchtower
Bumps alpine from 3.16.2 to 3.16.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 09:04:06 +00:00
dependabot[bot]
64f37b959e Bump alpine from 3.16.2 to 3.16.3 in /Containers/domaincheck
Bumps alpine from 3.16.2 to 3.16.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 09:04:02 +00:00
Simon L
9ff31d48cc Merge pull request #1408 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221114-slim
Bump debian from bullseye-20221024-slim to bullseye-20221114-slim in /Containers/apache
2022-11-18 10:03:02 +01:00
Simon L
92f00b2068 Merge pull request #1407 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221114-slim
Bump debian from bullseye-20221024-slim to bullseye-20221114-slim in /Containers/borgbackup
2022-11-18 10:02:31 +01:00
Simon L
7e5c56c066 Merge pull request #1404 from nextcloud/enh/noid/re-add-password-change
re-add the password change
2022-11-18 10:01:15 +01:00
Simon L
bd0bb708b8 Merge pull request #1394 from nextcloud/enh/noid/imaginary-add-return-size-option
imaginary - add `-return-size` option by default
2022-11-18 09:56:33 +01:00
Simon L
4f93ffc870 Merge pull request #1390 from nextcloud/dependabot/docker/Containers/postgresql/postgres-14.6-alpine
Bump postgres from 14.5-alpine to 14.6-alpine in /Containers/postgresql
2022-11-18 09:56:12 +01:00
Simon L
77a0717417 make update process more stable
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-17 17:54:09 +01:00
Simon L
de137f70ae add an AIO outdated notification
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-17 13:38:09 +01:00
dependabot[bot]
16b0f77895 Bump postgres from 14.5-alpine to 14.6-alpine in /Containers/postgresql
Bumps postgres from 14.5-alpine to 14.6-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-17 10:53:44 +00:00
Simon L
bdcd4fc240 Merge pull request #1384 from nextcloud/aio-yaml-update
Yaml updates
2022-11-17 11:52:39 +01:00
dependabot[bot]
2ad2d7c9eb Bump debian in /Containers/apache
Bumps debian from bullseye-20221024-slim to bullseye-20221114-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 12:04:28 +00:00
dependabot[bot]
72248fc4bd Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20221024-slim to bullseye-20221114-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 12:03:57 +00:00
Simon L
15526b6fed re-add the password change
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-14 17:31:45 +01:00
szaimen
cccf21805e Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-11-12 12:17:20 +00:00
Simon L
b6f8d3e8e9 imaginary - add -return-size option by default
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-11 15:28:48 +01:00
Simon L
c5201731c3 fix spacing
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-11 15:23:40 +01:00
Simon L
30911356c1 Merge pull request #1388 from nextcloud/fix-regex
fix regex syntax
2022-11-10 20:57:52 +01:00
Simon L
bf4ef11474 fix removing of build dependencies
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 20:46:18 +01:00
Zoey
cbf579df18 fix regex syntax
I forgot, that the "-" must be at the end of the regex

Signed-off-by: Zoey <zoey@z0ey.de>
2022-11-10 20:40:22 +01:00
Simon L
8c1e1a268e Merge pull request #1387 from nextcloud/enh/noid/allow-digits
2nd follow-up to #1377
2022-11-10 20:30:36 +01:00
Simon L
7a93ad0e4e also allow digits
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 20:27:13 +01:00
Simon L
84f54b58aa make explanation better
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 19:44:59 +01:00
Simon L
ed8979ab2d Merge pull request #1386 from nextcloud/enh/noid/1377-follow-up
follow-up to #1377
2022-11-10 19:41:23 +01:00
Simon L
7bca6b3d2e follow-up to #1377
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 19:39:55 +01:00
Simon L
a04947034e Merge pull request #1377 from nextcloud/enh/1162/allow-to-add-additional-dependencies
allow to add dependencies and php extensions into the Nextcloud container
2022-11-10 18:22:33 +01:00
Simon L
fb7d5e531f add error output
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 18:13:01 +01:00
Simon L
bc9abd39a9 address review
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 18:09:05 +01:00
Simon L
bb09e4ac0a Merge pull request #1370 from nextcloud/enh/noid/keep-session
session should not get cleared automatically before 24h
2022-11-10 14:09:10 +01:00
Simon L
d06c4419cc Merge pull request #1385 from nextcloud/aio-dependency-update
Dependency updates
2022-11-10 13:33:31 +01:00
Simon L
38dd034fae improv the startup apps docs
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 13:28:00 +01:00
szaimen
0bab4eaa6d dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-11-10 12:26:29 +00:00
Simon L
50e3a5f5de fix the string replacement
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 13:22:52 +01:00
Simon L
6f4b918677 increase to 3.0.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 12:49:13 +01:00
Simon L
da2b967a33 allow to add dependencies and php extensions into the Nextcloud container
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 12:32:21 +01:00
Simon L
63f568ef36 Merge pull request #1382 from nextcloud/enh/noid/allow-to-adjust-php-memory-limit
allow to adjust the PHP memory limit
2022-11-10 12:30:03 +01:00
Simon L
588f9a36e7 allow to adjust the PHP memory limit
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 12:15:40 +01:00
Simon L
a1eac7dbbc Merge pull request #1378 from nextcloud/enh/noid/improve-login-screen
improve the UX when the login is blocked
2022-11-10 12:14:24 +01:00
Simon L
e4becc7249 Merge pull request #1381 from nextcloud/enh/noid/rename-trusted-cacerts-dir-variable
rename TRUSTED_CACERTS_DIR to NEXTCLOUD_TRUSTED_CACERTS_DIR
2022-11-10 12:01:57 +01:00
Simon L
dd6925d004 Merge pull request #1374 from nextcloud/dependabot/docker/Containers/watchtower/containrrr/watchtower-1.5.1
Bump containrrr/watchtower from 1.4.0 to 1.5.1 in /Containers/watchtower
2022-11-10 11:58:36 +01:00
Simon L
e9d1afe4fd Merge pull request #1380 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.8.2.1
Bump collabora/code from 22.05.7.3.1 to 22.05.8.2.1 in /Containers/collabora
2022-11-10 11:58:19 +01:00
Simon L
89b0c1f73d Merge pull request #1368 from nextcloud/aio-dependency-update
Dependency updates
2022-11-10 11:55:21 +01:00
Simon L
6a51a6a251 use an existing path as example
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:53:40 +01:00
Simon L
d424776a43 rename TRUSTED_CACERTS_DIR to NEXTCLOUD_TRUSTED_CACERTS_DIR
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:49:34 +01:00
Simon L
9b8937884e fix the link
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:44:51 +01:00
Simon L
dd7dac314f Merge pull request #1199 from nextcloud/enh/11998/adjust-apps
allow to adjust Nextcloud apps that get installed upon first startup
2022-11-10 11:43:27 +01:00
Simon L
bdb159b2fe add a link
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-10 11:42:43 +01:00
Simon L
bd80fd1915 Merge pull request #1362 from Brouware/main
Fixed typo's readme.md
2022-11-09 23:12:16 +01:00
szaimen
54687a2375 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-11-09 12:24:54 +00:00
dependabot[bot]
f9f29ae42a Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.7.3.1 to 22.05.8.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-09 12:04:23 +00:00
Simon L
78959b26cb improve the UX when the login is blocked
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-08 23:41:24 +01:00
Simon L
b027cdd293 Merge pull request #1375 from nextcloud/enh/1350/add-explanation-of-docker-run
Add explanation of the initial docker run command to the readme
2022-11-08 22:15:30 +01:00
Simon L
36f38e549e Merge pull request #1376 from roib20/patch-1
Proofread and revise explanation of the initial docker run command
2022-11-08 22:12:52 +01:00
szaimen
029b6ea797 allow to adjust Nextcloud apps that get installed upon first startup
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-08 21:48:21 +01:00
roib20
f42fa09202 Proofread and revise explanation of the initial docker run command
Clarify explanations of initial docker run command and fix grammar, punctuation and typos (in readme.md)

Signed-off-by: roib20 <66280613+roib20@users.noreply.github.com>
2022-11-08 21:40:13 +02:00
Simon L
4e7fa6b4b9 Add explanation of the initial docker run command to the readme
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-08 19:34:45 +01:00
dependabot[bot]
43eddabeaf Bump containrrr/watchtower from 1.4.0 to 1.5.1 in /Containers/watchtower
Bumps containrrr/watchtower from 1.4.0 to 1.5.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 12:07:10 +00:00
Simon L
b47e674aa7 session should not get cleared automatically before 24h
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-07 19:44:02 +01:00
Simon L
54f39b5334 Merge pull request #1369 from nextcloud/automated/noid/psalm-baseline-update-1667796403
[Automated] Update psalm-baseline.xml
2022-11-07 08:50:20 +01:00
nextcloud-command
19369c7ce2 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-11-07 04:46:43 +00:00
Simon L
cd8ba20716 Merge pull request #1365 from nextcloud/enh/noid/deprecation-detector
add php-deprecation-detector
2022-11-05 21:56:26 +01:00
Simon L
0e36ae0ba9 add php-deprecation-detector
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-05 21:54:05 +01:00
Simon L
fd88b61882 do not delete the updater so that it can get used later on
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-05 01:42:07 +01:00
Brouware
90991c6c24 Fixed typo's
- Fixed command to check Borg version
- Fixed script breaking typo under "Sync the backup regularly to another drive"

Signed-off-by: Brouware <63195347+Brouware@users.noreply.github.com>
2022-11-05 00:10:13 +01:00
Simon L
99b45997a6 Add link to docker dns
Signed-off-by: Simon L. <szaimen@e.mail.de>
2022-11-04 13:53:58 +01:00
szaimen
8cf7d47f26 increase to 2.1.2
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-03 15:09:15 +01:00
szaimen
4e67b82d46 fix typo
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-03 15:08:07 +01:00
Simon L
820ac1d918 Merge pull request #1347 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20221101
Bump nextcloud/imaginary from 20221003 to 20221101 in /Containers/imaginary
2022-11-03 15:04:45 +01:00
Simon L
e63d59ff1e Merge pull request #1351 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.7.3.1
Bump collabora/code from 22.05.7.2.1 to 22.05.7.3.1 in /Containers/collabora
2022-11-03 15:04:34 +01:00
Simon L
df8791b7f8 Merge pull request #1355 from nextcloud/nextcloud-container-update
Nextcloud update
2022-11-03 15:04:23 +01:00
szaimen
df808c10bb nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-11-03 12:52:31 +00:00
dependabot[bot]
3bba9da0d5 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.7.2.1 to 22.05.7.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-02 12:37:17 +00:00
dependabot[bot]
968103ee45 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20221003 to 20221101.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 13:44:54 +00:00
szaimen
982f7644f5 increase to 2.1.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-31 15:15:05 +01:00
Simon L
bdfb238683 Merge pull request #1339 from nextcloud/enh/noid/improve-logging
improve logging situation
2022-10-31 15:14:00 +01:00
Simon L
b02a874497 Merge pull request #1340 from nextcloud/fix/noid/fix-the-notify-script
fix the notify script
2022-10-31 15:13:38 +01:00
Simon L
0b540ef4fc Merge pull request #1345 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.25-fpm-alpine3.16
Bump php from 8.0.24-fpm-alpine3.16 to 8.0.25-fpm-alpine3.16 in /Containers/nextcloud
2022-10-31 15:13:00 +01:00
Simon L
bd8a1c024d Merge pull request #1346 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.25-apache-bullseye
Bump php from 8.0.24-apache-bullseye to 8.0.25-apache-bullseye in /Containers/mastercontainer
2022-10-31 15:12:40 +01:00
Simon L
48e692a09f Merge pull request #1344 from nextcloud/enh/noid/apache-sites
Make sure that the sites are really gone
2022-10-31 15:12:13 +01:00
dependabot[bot]
d767ec65d9 Bump php in /Containers/mastercontainer
Bumps php from 8.0.24-apache-bullseye to 8.0.25-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 12:45:17 +00:00
dependabot[bot]
0e60c52b91 Bump php in /Containers/nextcloud
Bumps php from 8.0.24-fpm-alpine3.16 to 8.0.25-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 12:45:15 +00:00
szaimen
77613f456c Make sure that the sites are really gone
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-31 11:49:37 +01:00
szaimen
adb4279de1 improve logging situation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-31 11:17:29 +01:00
szaimen
3616ce48a9 fix the notify script
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-30 02:12:06 +02:00
Simon L
0397f30bb5 Merge pull request #1336 from nextcloud/optimize-nginx
optimize nginx reverse proxy documentation
2022-10-29 11:20:22 +02:00
Zoey
b7708b66df optimize nginx reverse proxy documentation
With this change, it is not needed to change the main http block

Signed-off-by: Zoey <zoey@z0ey.de>
2022-10-28 17:15:33 +02:00
Simon L
6b0b65e425 Merge pull request #1331 from Zoey2936/main
improve nginx reverse proxy documnetation
2022-10-28 12:57:34 +02:00
Simon L
896b44a172 Merge pull request #1332 from nextcloud/automated/noid/psalm-baseline-update-1666932620
[Automated] Update psalm-baseline.xml
2022-10-28 08:11:19 +02:00
nextcloud-command
39f7874ea7 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-28 04:50:20 +00:00
Zoey
a0dc8781a7 improve nginx reverse proxy documnetation
Signed-off-by: Zoey <zoey@z0ey.de>
2022-10-27 22:11:22 +02:00
szaimen
db5cab9e34 fix it!
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 18:51:51 +02:00
szaimen
a547f1d892 another attempt
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 18:23:16 +02:00
szaimen
a03fad2c33 fix sudo command
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 16:11:09 +02:00
szaimen
6458bf6613 fix chaning to root user
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 15:58:40 +02:00
szaimen
24eefc7009 increase to 2.1.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 15:22:47 +02:00
Simon L
e358e40c15 Merge pull request #1326 from nextcloud/enh/noid/skip-update
skip app update if backup was restored or comparable
2022-10-27 15:21:10 +02:00
Simon L
a639a9f103 Merge pull request #1307 from nextcloud/enh/1088/talk-settings
use the add commands to add talk settings
2022-10-27 15:20:19 +02:00
Simon L
1c987b180c Merge pull request #1329 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-7.17.7
Bump elasticsearch from 7.17.6 to 7.17.7 in /Containers/fulltextsearch
2022-10-27 15:18:57 +02:00
Simon L
c8ffe9ef4a Merge pull request #1327 from nextcloud/dependabot/composer/php/guzzlehttp/psr7-2.4.3
Bump guzzlehttp/psr7 from 2.4.2 to 2.4.3 in /php
2022-10-27 15:17:55 +02:00
dependabot[bot]
12f6220591 Bump elasticsearch from 7.17.6 to 7.17.7 in /Containers/fulltextsearch
Bumps elasticsearch from 7.17.6 to 7.17.7.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 12:43:04 +00:00
dependabot[bot]
31a16535fe Bump guzzlehttp/psr7 from 2.4.2 to 2.4.3 in /php
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.4.2 to 2.4.3.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.4.2...2.4.3)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 12:23:27 +00:00
szaimen
e81c4e3041 skip app update if backup was restored or comparable
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 13:53:17 +02:00
szaimen
87192838e8 improve detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 13:04:45 +02:00
Simon L
9f2c74b030 Merge pull request #1313 from TheManchineel/patch-1
rework NGINX reverse proxy docs to support CODE
2022-10-27 12:57:05 +02:00
TheManchineel
201dbc15ae Rework NGINX reverse proxy docs to support CODE
As per PR #1236, applied the same documentation change to the NGINX configuration, so as to pass the full URI of each HTTP request to the Collabora Online backend. This fixes #834 but for NGINX rather than Apache. It might be necessary to make similar changes to other proxy software, but NGINX is what I am familiar with.

Signed-off-by: TheManchineel <37479927+TheManchineel@users.noreply.github.com>
2022-10-27 12:51:10 +02:00
szaimen
f8a1c1862a address review
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 12:42:13 +02:00
szaimen
4b10fcada2 use the add commands to add talk settings
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 12:41:52 +02:00
Simon L
d6f0023a42 Merge pull request #1249 from nextcloud/enh/1233/nextcloud-entrypoint-root
change entrypoint of nextcloud container to root
2022-10-27 12:40:14 +02:00
szaimen
b9ada72be3 address missing points
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-27 12:35:42 +02:00
Simon L
41507c05fa Merge pull request #1274 from nextcloud/enh/1272/session-deduplication
rework session deduplication
2022-10-27 12:33:01 +02:00
Simon L
53044c8354 Merge pull request #1325 from nextcloud/enh/noid/json-improvements
prettify json and unescape slashes
2022-10-27 00:16:18 +02:00
szaimen
d01a1087fa prettify json and unescape slashes
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-26 19:30:15 +02:00
Simon L
2771f5124d Merge pull request #1320 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.21-dind-alpine3.16
Bump docker from 20.10.20-dind-alpine3.16 to 20.10.21-dind-alpine3.16 in /Containers/mastercontainer
2022-10-26 18:30:18 +02:00
Simon L
d9e8c98724 Merge pull request #1319 from nextcloud/dependabot/composer/php/guzzlehttp/psr7-2.4.2
Bump guzzlehttp/psr7 from 2.4.1 to 2.4.2 in /php
2022-10-26 18:29:50 +02:00
Simon L
f282d1439c Merge pull request #1324 from BR14Nx/patch-1
Hint about custom datadirectory path in database migration
2022-10-26 18:28:29 +02:00
Brian Philipp
e92daa62bf Hint about custom datadirectory path
Signed-off-by: Brian Philipp <66728496+BR14Nx@users.noreply.github.com>
2022-10-26 17:50:04 +02:00
dependabot[bot]
2faa1357d3 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.20-dind-alpine3.16 to 20.10.21-dind-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 12:41:22 +00:00
dependabot[bot]
fa6a238d16 Bump guzzlehttp/psr7 from 2.4.1 to 2.4.2 in /php
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.4.1...2.4.2)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 12:36:26 +00:00
Simon L
ab7c2fccad Merge pull request #1310 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221024-slim
Bump debian from bullseye-20221004-slim to bullseye-20221024-slim in /Containers/apache
2022-10-25 18:23:08 +02:00
Simon L
7606cadf40 Merge pull request #1309 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221024-slim
Bump debian from bullseye-20221004-slim to bullseye-20221024-slim in /Containers/borgbackup
2022-10-25 18:22:55 +02:00
Simon L
6f87a30595 Merge pull request #1308 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20221019
Bump ubuntu from focal-20220922 to focal-20221019 in /Containers/talk
2022-10-25 18:22:42 +02:00
szaimen
e1ec9c738d update one-click settings
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-25 18:13:16 +02:00
dependabot[bot]
9daecad5b3 Bump debian in /Containers/apache
Bumps debian from bullseye-20221004-slim to bullseye-20221024-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 12:41:23 +00:00
dependabot[bot]
d41ae98de7 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20221004-slim to bullseye-20221024-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 12:41:17 +00:00
dependabot[bot]
8a71b4e9dc Bump ubuntu from focal-20220922 to focal-20221019 in /Containers/talk
Bumps ubuntu from focal-20220922 to focal-20221019.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 12:41:17 +00:00
Simon L
aae58915d7 Merge pull request #1261 from nextcloud/dependabot/docker/Containers/apache/caddy-2.6.2-alpine
Bump caddy from 2.6.1-alpine to 2.6.2-alpine in /Containers/apache
2022-10-24 20:54:31 +02:00
Simon L
0f728d2660 Merge pull request #1262 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.6.2-alpine
Bump caddy from 2.6.1-alpine to 2.6.2-alpine in /Containers/mastercontainer
2022-10-24 20:54:12 +02:00
Simon L
ec7f379779 Merge pull request #1285 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.20-dind-alpine3.16
Bump docker from 20.10.18-dind-alpine3.16 to 20.10.20-dind-alpine3.16 in /Containers/mastercontainer
2022-10-24 20:53:50 +02:00
Simon L
e7d1d19936 Merge pull request #1302 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.7.2.1
Bump collabora/code from 22.05.6.3.1 to 22.05.7.2.1 in /Containers/collabora
2022-10-24 20:53:20 +02:00
dependabot[bot]
62f129bdd2 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.18-dind-alpine3.16 to 20.10.20-dind-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 18:52:20 +00:00
szaimen
e5fce3eb89 update OO
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 20:51:36 +02:00
Simon L
69122c55bf Merge pull request #1305 from nextcloud/enh/279/update-borg
install borg from backports in the future
2022-10-24 20:45:39 +02:00
szaimen
f5102f8562 add bullseye-backports to sources.list
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 20:41:56 +02:00
Simon L
3a29a55dc0 Merge pull request #1275 from nextcloud/enh/noid/2nd-tab-warning
add 2nd tab warning
2022-10-24 20:38:45 +02:00
szaimen
5c25656460 install borg from backports in the future
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 19:46:09 +02:00
szaimen
d4645d50ab make nginx config more verbose
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 18:58:39 +02:00
Simon L
4cbc8c7e53 Merge pull request #1259 from Klaus15/patch-1
Update nginx section of reverse-proxy.md
2022-10-24 18:58:09 +02:00
Simon L
4cffe12e16 Merge pull request #1197 from nextcloud/enh/noid/add-haproxy
add HaProxy to reverse proxy documentation
2022-10-24 18:51:21 +02:00
dependabot[bot]
be243fdba9 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.6.3.1 to 22.05.7.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 12:31:59 +00:00
szaimen
8397ff50b4 reverse the order
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-18 23:52:20 +02:00
szaimen
132b97ba20 add some guides for local dns server
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-18 23:50:16 +02:00
Simon L
228d113bb0 Merge pull request #1266 from nextcloud/feat/workflow-auto-update-lint-php.yml
Updating lint-php.yml workflow from template
2022-10-17 17:56:25 +02:00
szaimen
203b17d316 improve rootless docs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-17 17:45:10 +02:00
szaimen
d3d8b11e28 change entrypoint of nextcloud container to root
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-17 17:45:10 +02:00
szaimen
c789b7e5db fix lint
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-17 16:30:38 +02:00
szaimen
3ac260837f add 2nd tab warning
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-16 18:58:59 +02:00
szaimen
3118ecf385 rework session deduplication
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-16 18:12:50 +02:00
Nextcloud bot
8450d7d9a5 Updating lint-php.yml workflow from template
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-10-15 09:57:35 +00:00
szaimen
9d4c591f1a add not to borg delete regarding freeing space
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-15 00:48:52 +02:00
dependabot[bot]
4e598b9de3 Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.6.1-alpine to 2.6.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 12:21:20 +00:00
dependabot[bot]
b6470db144 Bump caddy from 2.6.1-alpine to 2.6.2-alpine in /Containers/apache
Bumps caddy from 2.6.1-alpine to 2.6.2-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 12:21:19 +00:00
Simon L
6210657558 Merge pull request #1194 from nextcloud/aio-yaml-update
Yaml updates
2022-10-14 12:45:57 +02:00
Klaus15
5641f62561 Update nginx section of reverse-proxy.md
added nginx.conf code snippet to get a working websocket config

Signed-off-by: Klaus15 <le_kluus@web.de>
2022-10-13 23:04:32 +02:00
szaimen
6c81f2b244 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-10-12 12:23:55 +00:00
Simon L
82adedf26a Merge pull request #1250 from nextcloud/automated/noid/psalm-baseline-update-1665551327
[Automated] Update psalm-baseline.xml
2022-10-12 08:54:11 +02:00
nextcloud-command
c4e5e0e8d4 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-12 05:08:47 +00:00
szaimen
ce47fab555 remove the issue from the doc
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-09 17:48:40 +02:00
szaimen
0bbae775c6 small detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-09 17:28:29 +02:00
Simon L
c283c71362 Merge pull request #1236 from nextcloud/enh/noid/fix-apache
rework the apache reverse proxy documentation
2022-10-09 17:23:50 +02:00
szaimen
ca5e97ef5b rework the apache reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-09 17:22:24 +02:00
Simon L
19e1e067bc Merge pull request #1235 from nextcloud/automated/noid/psalm-baseline-update-1665204655
[Automated] Update psalm-baseline.xml
2022-10-08 10:56:00 +02:00
nextcloud-command
d5a1fa32c4 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-10-08 04:50:55 +00:00
szaimen
be299dfe8c add it to mastercontainer as well
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 23:22:19 +02:00
szaimen
56af317778 use correct config syntax
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 23:02:59 +02:00
szaimen
1cf6f995d4 increase to 2.0.4
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 22:42:18 +02:00
Simon L
dc97ef872e Merge pull request #1206 from nextcloud/enh/noid/synology-rp
add Synology Reverse Proxyy to reverse proxy documentation
2022-10-06 22:40:14 +02:00
Simon L
99cf7f385a Merge pull request #1231 from nextcloud/enh/1221/add-free-disk-space
add a check for free space
2022-10-06 22:39:26 +02:00
Simon L
a721e250bd Merge pull request #1232 from nextcloud/enh/1204/change-healthcheck-to-nc
use netcat for healthchecks
2022-10-06 22:39:01 +02:00
szaimen
95311fd7c3 use netcat for healthchecks
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 22:34:10 +02:00
szaimen
abbeaa31d7 add a check for free space
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 20:08:46 +02:00
Simon L
ac06db59c7 Merge pull request #1229 from nextcloud/enh/1222/add-channel-hint
add channel advice
2022-10-06 19:54:44 +02:00
Simon L
3904e24ee0 Merge pull request #1228 from nextcloud/nextcloud-container-update
Nextcloud update
2022-10-06 19:53:31 +02:00
Simon L
e80fd26fdb Merge pull request #1225 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20221004-slim
Bump debian from bullseye-20220912-slim to bullseye-20221004-slim in /Containers/apache
2022-10-06 19:53:06 +02:00
Simon L
0f8561a920 Merge pull request #1224 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220922
Bump ubuntu from focal-20220826 to focal-20220922 in /Containers/talk
2022-10-06 19:52:47 +02:00
Simon L
677123e57b Merge pull request #1223 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20221004-slim
Bump debian from bullseye-20220912-slim to bullseye-20221004-slim in /Containers/borgbackup
2022-10-06 19:52:24 +02:00
Simon L
e60cffc4cc Merge pull request #1217 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20221003
Bump nextcloud/imaginary from 20220919 to 20221003 in /Containers/imaginary
2022-10-06 19:51:28 +02:00
Simon L
dced664925 Merge pull request #1216 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.24-fpm-alpine3.16
Bump php from 8.0.23-fpm-alpine3.16 to 8.0.24-fpm-alpine3.16 in /Containers/nextcloud
2022-10-06 19:51:01 +02:00
Simon L
ab0856842b Merge pull request #1215 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.24-apache-bullseye
Bump php from 8.0.23-apache-bullseye to 8.0.24-apache-bullseye in /Containers/mastercontainer
2022-10-06 19:50:37 +02:00
Simon L
2bd8894454 Merge pull request #1203 from nextcloud/enh/noid/talk-startup-logs
fix talk startup logs
2022-10-06 19:49:51 +02:00
szaimen
1b7c7a3d66 add lets encrypt back
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 18:59:23 +02:00
szaimen
b88b55feb4 add channel advice
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-06 18:27:19 +02:00
szaimen
1a2b4217ec nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-10-06 12:59:23 +00:00
dependabot[bot]
dd607243d7 Bump debian in /Containers/apache
Bumps debian from bullseye-20220912-slim to bullseye-20221004-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-05 12:40:33 +00:00
dependabot[bot]
fcabd7cf50 Bump ubuntu from focal-20220826 to focal-20220922 in /Containers/talk
Bumps ubuntu from focal-20220826 to focal-20220922.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-05 12:40:30 +00:00
dependabot[bot]
b63f50e00b Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220912-slim to bullseye-20221004-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-05 12:40:30 +00:00
szaimen
7e235b088f remove codeowners
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-03 17:40:52 +02:00
dependabot[bot]
7239360a70 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220919 to 20221003.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 13:05:56 +00:00
dependabot[bot]
ece09c2f41 Bump php in /Containers/nextcloud
Bumps php from 8.0.23-fpm-alpine3.16 to 8.0.24-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 12:41:48 +00:00
dependabot[bot]
6e34656540 Bump php in /Containers/mastercontainer
Bumps php from 8.0.23-apache-bullseye to 8.0.24-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 12:41:48 +00:00
Simon L
1e8d9809c9 Merge pull request #1208 from nextcloud/aio-dependency-update
Dependency updates
2022-09-28 14:24:15 +02:00
szaimen
27d70b7739 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-28 12:22:33 +00:00
Simon L
77e6f59610 Merge pull request #1205 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.6.3.1
Bump collabora/code from 22.05.6.1.1 to 22.05.6.3.1 in /Containers/collabora
2022-09-27 15:02:31 +02:00
szaimen
bce24687cc add Synology Reverse Proxyy to reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-27 14:54:49 +02:00
dependabot[bot]
7716548c75 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.6.1.1 to 22.05.6.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-27 12:34:31 +00:00
szaimen
dafa03698b fix talk startup logs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-27 11:28:50 +02:00
szaimen
fd3c30bdb7 add a disclaimer
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 19:28:18 +02:00
szaimen
730128b1ab add HaProxy to reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 19:25:04 +02:00
Simon L
3645033663 Merge pull request #1188 from nextcloud/dependabot/docker/Containers/apache/caddy-2.6.1-alpine
Bump caddy from 2.5.2-alpine to 2.6.1-alpine in /Containers/apache
2022-09-26 12:30:57 +02:00
Simon L
99838dea4f Merge pull request #1189 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.6.1-alpine
Bump caddy from 2.5.2-alpine to 2.6.1-alpine in /Containers/mastercontainer
2022-09-26 12:30:35 +02:00
szaimen
8889e92a64 fix incorrect removal of OO
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 12:22:05 +02:00
szaimen
2af13efe63 update some files
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-26 12:18:58 +02:00
Simon L
1f58094ddd Merge pull request #1181 from nextcloud/aio-yaml-update
Yaml updates
2022-09-26 12:04:06 +02:00
szaimen
0523af0f8a add a hint that the chosen datadir needs to be cleaned up as well
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-25 18:55:07 +02:00
dependabot[bot]
fb8fcae3d6 Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.5.2-alpine to 2.6.1-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-23 12:40:50 +00:00
dependabot[bot]
240a29cb2b Bump caddy from 2.5.2-alpine to 2.6.1-alpine in /Containers/apache
Bumps caddy from 2.5.2-alpine to 2.6.1-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-23 12:40:43 +00:00
szaimen
073f5e18e3 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-21 12:23:29 +00:00
szaimen
e0a52df781 fix link
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 20:44:13 +02:00
szaimen
ef0361dd29 increase to 2.0.3
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 20:05:10 +02:00
Simon L
dff437fe26 Merge pull request #1150 from nextcloud/enh/1149/collabora-seccomp
allow to disable seccomp for collabora
2022-09-20 20:03:18 +02:00
szaimen
4e8c1e53ee allow to disable seccomp for collabora
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 19:58:36 +02:00
Simon L
dc63eec43b Merge pull request #1168 from nextcloud/enh/noid/small-enhancements
small enhancements for daily-backup.sh
2022-09-20 19:33:21 +02:00
szaimen
4397e74ca9 small enhancements
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 19:28:17 +02:00
Simon L
c670d982aa Merge pull request #1178 from nextcloud/enh/noid/bring-in-sync
bring Apache limits in sync with PHP limits
2022-09-20 19:12:00 +02:00
Simon L
ef6e85dbec Merge pull request #1177 from nextcloud/enh/1176/be-more-verbose
update permissions output and fix usage of variable
2022-09-20 19:10:08 +02:00
Simon L
3051214536 Merge pull request #1174 from mustaphazorgati/fix-aio-apache
aio-apache configuration now uses NEXTCLOUD_HOST env variable (#1173)
2022-09-20 19:06:23 +02:00
Simon L
b5b84fa6c7 Merge pull request #1169 from nextcloud/enh/1164/fix-updatenotification-removal
fix removal of the updatenotification app for migrated instances
2022-09-20 19:06:02 +02:00
Simon L
0430df5d63 Merge pull request #1172 from nextcloud/nextcloud-container-update
Nextcloud update
2022-09-20 19:05:20 +02:00
Simon L
ff88664cb2 Merge pull request #1141 from nextcloud/aio-dependency-update
Dependency updates
2022-09-20 19:04:56 +02:00
Simon L
08e52444db Merge pull request #1146 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.18-dind-alpine3.16
Bump docker from 20.10.17-dind-alpine3.16 to 20.10.18-dind-alpine3.16 in /Containers/mastercontainer
2022-09-20 19:04:29 +02:00
Simon L
48dd97b708 Merge pull request #1145 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220912-slim
Bump debian from bullseye-20220822-slim to bullseye-20220912-slim in /Containers/borgbackup
2022-09-20 19:04:06 +02:00
dependabot[bot]
7e148f8287 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.17-dind-alpine3.16 to 20.10.18-dind-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 17:04:05 +00:00
Simon L
ef93133b02 Merge pull request #1144 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220912-slim
Bump debian from bullseye-20220822-slim to bullseye-20220912-slim in /Containers/apache
2022-09-20 19:03:52 +02:00
Simon L
fb51b06c00 Merge pull request #1157 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.6.1.1
Bump collabora/code from 22.05.5.4.1 to 22.05.6.1.1 in /Containers/collabora
2022-09-20 19:03:30 +02:00
Simon L
75c53350ab Merge pull request #1171 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20220919
Bump nextcloud/imaginary from 20220905 to 20220919 in /Containers/imaginary
2022-09-20 19:03:10 +02:00
Simon L
39514d54e8 Merge pull request #1097 from lollo0296/trust-custom-ca
Let the Nextcloud-Container trust custom CAs (e.g. for using LDAPS) 2
2022-09-20 19:02:40 +02:00
szaimen
8dd871b368 add logging to apache
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 18:56:22 +02:00
szaimen
1e8d5c71f4 update permissions output and fix usage of variable
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 18:34:53 +02:00
szaimen
2b5deb81f5 bring Apache limits in sync with PHP limits
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-20 18:16:17 +02:00
Mustapha Zorgati
6e2872b953 aio-apache configuration now uses NEXTCLOUD_HOST env variable (#1173)
instead of hardcoded container name
2022-09-19 23:53:12 +02:00
szaimen
18227536cd fix removal of the updatenotification app for migrated instances
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-19 16:25:17 +02:00
szaimen
93f1f9c47e nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-09-19 12:57:18 +00:00
dependabot[bot]
544f38a882 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220905 to 20220919.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 12:51:35 +00:00
szaimen
7efa09339c dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-19 12:24:35 +00:00
dependabot[bot]
e91a3d7bce Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.5.4.1 to 22.05.6.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-15 12:39:08 +00:00
Lorenzo Marroccoli
935d4aab11 Let the Nextcloud-Container trust custom CAs (e.g. for using LDAPS) 2
Signed-off-by: Lorenzo Marroccoli <lollo0296@gmail.com>
Signed-off-by: szaimen <szaimen@e.mail.de>
Co-Authored-By: Simon L. <szaimen@e.mail.de>
2022-09-14 10:08:24 +02:00
dependabot[bot]
319bda83e8 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220822-slim to bullseye-20220912-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-13 12:31:15 +00:00
dependabot[bot]
609cabf9dc Bump debian in /Containers/apache
Bumps debian from bullseye-20220822-slim to bullseye-20220912-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-13 12:31:14 +00:00
Simon L
bfcbc41141 Merge pull request #1136 from nextcloud/enh/noid/add-tz-confirmation
add a confirmation for the timezone
2022-09-08 17:39:29 +02:00
szaimen
3ac6fc590a add a confirmation for the timezone
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-08 17:33:33 +02:00
Simon L
0aee7c6bb9 Merge pull request #1135 from nextcloud/revert-1118-enh/1073/add-db-check
Revert "add a check for init-user-db.sh"
2022-09-08 17:32:57 +02:00
Simon L
feb6438d39 Revert "add a check for init-user-db.sh"
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-08 17:27:15 +02:00
szaimen
4ecfaa0650 increase to 2.0.2
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-08 16:15:16 +02:00
Simon L
8dec561045 Merge pull request #1093 from nextcloud/fix/noid/container-logs
fix container logs new line
2022-09-08 16:07:07 +02:00
Simon L
2ab42b06ed Merge pull request #1094 from nextcloud/enh/1077/backup-check
rework the daily backup script and allow to start the backup check from it
2022-09-08 16:05:24 +02:00
Simon L
d25c74e382 Merge pull request #1118 from nextcloud/enh/1073/add-db-check
add a check for init-user-db.sh
2022-09-08 15:49:22 +02:00
Simon L
8c544d96c9 Merge pull request #1069 from nextcloud/fix/1067/fix-pulling-images
do not pull containers if START_CONTAINERS was provided and not …
2022-09-08 15:45:54 +02:00
Simon L
3280a08430 Merge pull request #1092 from nextcloud/fix/1085/fix-dbpassword
the dbpassword and dbuser do not need to be overwritten anymore
2022-09-08 15:44:57 +02:00
Simon L
29f3952713 Merge pull request #1095 from nextcloud/enh/noid/borg-logs
do not show progress for borg operations
2022-09-08 15:44:36 +02:00
Simon L
3bc55fb104 Merge pull request #1096 from nextcloud/fix/noid/mastercontainer-logs
get rid of some strange lines in the mastercontainer logs
2022-09-08 15:44:11 +02:00
Simon L
d01eed902a Merge pull request #1107 from nextcloud/enh/596/allow-to-change-backup-location
Allow to choose a different backup location if the first backup fails
2022-09-08 15:32:23 +02:00
Simon L
88751452c7 Merge pull request #1129 from MartinM01/fix/1121/fix-hpb-participants-limited-7-8
TURN_CONF set total-quota unlimited
2022-09-08 15:31:23 +02:00
Simon L
f7b0787fe5 Merge pull request #1134 from nextcloud/nextcloud-container-update
Nextcloud update
2022-09-08 15:30:25 +02:00
szaimen
46b1a0c068 nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-09-08 12:50:47 +00:00
martin.mueller
80482657be TURN_CONF set total-quota unlimited
Signed-off-by: martin.mueller <martin.mueller@model-engineers.com>
2022-09-07 13:28:04 +02:00
Simon L
2c7e0518f1 Merge pull request #1120 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20220905
Bump nextcloud/imaginary from 20220822 to 20220905 in /Containers/imaginary
2022-09-07 09:59:24 +02:00
Simon L
fbb9180c0f Merge pull request #1104 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.23-fpm-alpine3.16
Bump php from 8.0.22-fpm-alpine3.16 to 8.0.23-fpm-alpine3.16 in /Containers/nextcloud
2022-09-07 09:58:29 +02:00
Simon L
5a91eeb55c Merge pull request #1103 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220826
Bump ubuntu from focal-20220801 to focal-20220826 in /Containers/talk
2022-09-07 09:58:10 +02:00
Simon L
b8d686fa00 Merge pull request #1102 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.23-apache-bullseye
Bump php from 8.0.22-apache-bullseye to 8.0.23-apache-bullseye in /Containers/mastercontainer
2022-09-07 09:57:53 +02:00
Simon L
0614d9d3f5 Merge pull request #1081 from nextcloud/aio-dependency-update
Dependency updates
2022-09-07 09:56:26 +02:00
dependabot[bot]
16c75492f3 Bump php in /Containers/mastercontainer
Bumps php from 8.0.22-apache-bullseye to 8.0.23-apache-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-07 07:46:40 +00:00
dependabot[bot]
0cc5d278fb Bump php in /Containers/nextcloud
Bumps php from 8.0.22-fpm-alpine3.16 to 8.0.23-fpm-alpine3.16.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-07 07:46:39 +00:00
Simon L
d14ece713f Merge pull request #1045 from nextcloud/aio-yaml-update
Yaml updates
2022-09-07 09:45:53 +02:00
dependabot[bot]
06315218b8 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220822 to 20220905.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:04:45 +00:00
szaimen
e03e3cfc08 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-05 12:19:49 +00:00
szaimen
04abdbed9e Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-09-05 12:19:49 +00:00
szaimen
abb414129a add a check for init-user-db.sh
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-05 14:06:16 +02:00
szaimen
3f48169f5c increase to 2.0.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-05 13:32:14 +02:00
Simon L
db91ede42a Merge pull request #1116 from nextcloud/fix/1115/mastercontainer-healthcheck
improve healthcheck for mastercontainer
2022-09-05 13:31:25 +02:00
szaimen
59bbff23fe improve healthcheck for mastercontainer
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-05 13:29:57 +02:00
Simon L
1a84679537 Merge pull request #1113 from nextcloud/start.sh-typo
Fix typo in mastercontainer start.sh
2022-09-05 13:25:09 +02:00
Álvaro Brey
27e0080ed0 Fix typo in mastercontainer start.sh
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
2022-09-05 10:01:43 +02:00
szaimen
fa4eb44898 Allow to choose a different backup location if the first backup fails
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-03 15:43:40 +02:00
dependabot[bot]
b61d2d46fd Bump ubuntu from focal-20220801 to focal-20220826 in /Containers/talk
Bumps ubuntu from focal-20220801 to focal-20220826.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 12:35:07 +00:00
Simon L
5cebbcd7b3 Merge pull request #1100 from nextcloud/automated/noid/psalm-baseline-update-1662096933
[Automated] Update psalm-baseline.xml
2022-09-02 08:11:22 +02:00
nextcloud-command
92b1639329 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-09-02 05:35:32 +00:00
szaimen
999c74a731 get rid of some strange lines in the mastercontainer logs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 19:04:47 +02:00
szaimen
ec1605d29a do not show progress for borg operations
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 14:22:11 +02:00
szaimen
d6e1f62202 rework the daily backup script and allow to start the backup check from it
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 14:08:40 +02:00
szaimen
5eaff0ba2f fix container logs new line
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 13:45:23 +02:00
szaimen
7ad975f4b1 the dbpassword and dbuser do not need to be overwritten anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-31 12:31:56 +02:00
szaimen
ed82a41bc1 remove resolved issues from nginx docs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-27 16:13:08 +02:00
szaimen
c872c259c1 do not pull containers START_CONTAINERS was provided and not AUTOMATIC_UPDATES
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 22:52:19 +02:00
szaimen
34d5ee6298 use the correct syntax for running from an external script
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 22:35:42 +02:00
szaimen
c29839f65f also save and restore daily backup time upon restore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 15:26:51 +02:00
szaimen
b22c239998 fix restoring of addional bakup dirs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 15:04:52 +02:00
Simon L
2b05939f17 Merge pull request #1065 from nextcloud/enh/noid/fix-fts
fix FTS
2022-08-26 14:47:42 +02:00
szaimen
f8017a0a02 fix FTS
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 14:12:29 +02:00
Simon L
06b3e82522 Merge pull request #1064 from nextcloud/enh/noid/publish
use long syntax for port publishing
2022-08-26 14:03:45 +02:00
szaimen
f188ac8ebf reorder dependencies
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 14:03:18 +02:00
Simon L
e9d9fb1ae6 Merge pull request #1063 from nextcloud/enh/noid/sig-proxy
modify the docker run command to not exit if you press ctrl+c
2022-08-26 12:35:45 +02:00
szaimen
c6b9bf20e7 modify the docker run command to not exit if you press ctrl+c
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 12:27:13 +02:00
szaimen
84333607e8 use long syntax for port publishing
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-26 12:21:56 +02:00
szaimen
40b2e014fb Fix additional backup dirs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 19:03:29 +02:00
Simon L
14fdec4dd4 Merge pull request #1060 from nextcloud/healthcheck-apache-fix
fix apache healthcheck
2022-08-25 18:21:04 +02:00
Zoey
a9c4b1fdf4 fix apache healthcheck
Signed-off-by: Zoey <zoey@z0ey.de>
Co-Authored-By: Simon L. <szaimen@e.mail.de>
2022-08-25 18:17:29 +02:00
Simon L
90bf396b9e Merge pull request #1059 from nextcloud/healthcheck-fulltextsearch-patch-1
fix healthcheck in fulltextsearch container
2022-08-25 17:47:11 +02:00
Zoey
bf165642dc fix healthcheck in fulltextsearch container
Signed-off-by: Zoey <zoey@z0ey.de>
2022-08-25 16:18:46 +02:00
szaimen
ce7027d026 increase to 2.0.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 15:29:23 +02:00
Simon L
f15a28b9e7 Merge pull request #1058 from nextcloud/Zoey2936-patch-1
add docker healthchecks to the docker images
2022-08-25 15:28:05 +02:00
Zoey
1edb422f3d add docker healthchecks to the docker images
Signed-off-by: Zoey <zoey@z0ey.de>
2022-08-25 15:18:35 +02:00
szaimen
c90ee1c4db add PHP_MAX_TIME to containers.json
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 14:59:57 +02:00
Simon L
f3ce490a8c Merge pull request #1046 from nextcloud/enh/695/additional-directories
allow to back up additional directories
2022-08-25 14:31:50 +02:00
Simon L
687707731f add command-rebase
Signed-off-by: szaimen <szaimen@e.mail.de>

Signed-off-by: Simon L. <szaimen@e.mail.de>
2022-08-25 13:52:58 +02:00
szaimen
2ee63dbe42 allow to back up additional directories
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 13:44:04 +02:00
szaimen
6c63adc37f fix fulltextsearch build
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 13:33:16 +02:00
Simon L
267378998c Merge pull request #1057 from nextcloud/dependabot/docker/Containers/fulltextsearch/elasticsearch-7.17.6
Bump elasticsearch from 7.17.5 to 7.17.6 in /Containers/fulltextsearch
2022-08-25 13:04:23 +02:00
dependabot[bot]
9dbad0592c Bump elasticsearch from 7.17.5 to 7.17.6 in /Containers/fulltextsearch
Bumps elasticsearch from 7.17.5 to 7.17.6.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-25 11:01:18 +00:00
szaimen
c353406f24 do not update elasticsearch to major automatically
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 13:00:39 +02:00
Simon L
40efd3092f Merge pull request #1044 from nextcloud/enh/1036/fulltextsearch
add fulltextsearch as option
2022-08-25 12:58:18 +02:00
Simon L
37d40f0992 Merge pull request #1042 from nextcloud/enh/noid/temp_dir
Configure tempdirectory automatically
2022-08-25 12:57:45 +02:00
szaimen
b94b72e893 substitute 365d through inf
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 12:53:36 +02:00
szaimen
201dfc67f3 fix removing clamav and onlyoffice correctly
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-25 12:20:06 +02:00
Simon L
8ff05aa80a Merge pull request #1052 from flortsch/patch-2
Fix bad error message in start.sh
2022-08-25 11:55:51 +02:00
Florian Latifi
cc19fd4e74 Fix bad error message in start.sh
Fix bad error message in start.sh which seems to be a copy/paste error from the previous if check.

Signed-off-by: Florian Latifi <mail@florian-latifi.at>
2022-08-23 21:45:48 +02:00
Simon L
7af4c3a2ec Merge pull request #1050 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.5.4.1
Bump collabora/code from 22.05.5.3.1 to 22.05.5.4.1 in /Containers/collabora
2022-08-23 15:20:29 +02:00
Simon L
387fa30056 Merge pull request #1049 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220822-slim
Bump debian from bullseye-20220801-slim to bullseye-20220822-slim in /Containers/borgbackup
2022-08-23 15:17:23 +02:00
Simon L
8628ab06c3 Merge pull request #1051 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220822-slim
Bump debian from bullseye-20220801-slim to bullseye-20220822-slim in /Containers/apache
2022-08-23 15:16:55 +02:00
dependabot[bot]
c264cc3a02 Bump debian in /Containers/apache
Bumps debian from bullseye-20220801-slim to bullseye-20220822-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 12:40:04 +00:00
dependabot[bot]
212e5eff1c Bump collabora/code in /Containers/collabora
Bumps collabora/code from 22.05.5.3.1 to 22.05.5.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 12:39:57 +00:00
dependabot[bot]
aa957ad4f4 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220801-slim to bullseye-20220822-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 12:39:57 +00:00
szaimen
8010030a5d add fulltextsearch as option
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-23 11:37:59 +02:00
szaimen
096be7107a fix enabling of imaginary
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 23:14:05 +02:00
szaimen
7b4876c681 fix changing the max_children
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 23:05:14 +02:00
szaimen
2e1e53e9d3 fix setting max connections
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 22:45:03 +02:00
szaimen
20892c2d40 fix onlyoffice not being there anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 22:36:34 +02:00
szaimen
2ba61b8971 remove Onlyoffice from QA section
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 14:05:53 +02:00
szaimen
25bd890a71 add imaginary to QA section
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 14:03:54 +02:00
szaimen
09003fcce1 rework collabora activation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 13:25:14 +02:00
Simon L
7ddb60cce9 Merge pull request #1029 from nextcloud/enh/noid/set-values-based-on-hardware
set max connections and max php children based on available hardware
2022-08-22 12:31:16 +02:00
Simon L
b38a7e11c1 Merge pull request #1030 from nextcloud/enh/901/upload-time
allow to adjust the max upload time
2022-08-22 12:28:02 +02:00
szaimen
f42cb98b98 allow to adjust the max upload time
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 12:27:06 +02:00
Simon L
9a83c3af47 Merge pull request #1035 from Zoey2936/patch-1
Set default talk port inside Dockerfile
2022-08-22 12:21:59 +02:00
Simon L
eb744398d7 Merge pull request #1028 from nextcloud/enh/880/upload-limit
allow to adjust the upload limit
2022-08-22 12:18:52 +02:00
szaimen
e152185fe9 allow to adjust the upload limit
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 12:11:55 +02:00
Simon L
7ba83089ec Merge pull request #1043 from nextcloud/dependabot/docker/Containers/imaginary/nextcloud/imaginary-20220822
Bump nextcloud/imaginary from 20220819 to 20220822 in /Containers/imaginary
2022-08-22 12:07:00 +02:00
dependabot[bot]
de99fb89f9 Bump nextcloud/imaginary in /Containers/imaginary
Bumps nextcloud/imaginary from 20220819 to 20220822.

---
updated-dependencies:
- dependency-name: nextcloud/imaginary
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 10:05:45 +00:00
Simon L
2fab890ac0 Merge pull request #1026 from nextcloud/enh/393/imaginary
add imaginary as option
2022-08-22 12:05:14 +02:00
szaimen
05e90d6110 add imaginary
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 12:02:56 +02:00
Simon L
c926f92b6f Merge pull request #1024 from nextcloud/enh/noid/disable-onlyoffice
disable onlyoffice
2022-08-22 11:58:45 +02:00
Simon L
8350aad484 Merge pull request #1025 from nextcloud/aio-yaml-update
Yaml updates
2022-08-22 11:54:36 +02:00
szaimen
b75074f30d Configure tempdirectory automatically
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 11:14:19 +02:00
szaimen
ae29ce409e Support big file uploads in Apache
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-22 10:19:28 +02:00
szaimen
fa265a84c5 improve wording
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-21 21:09:41 +02:00
szaimen
5cfdb32081 Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-08-21 12:16:25 +00:00
szaimen
539727a19d fix dependency updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-20 15:34:14 +02:00
szaimen
8754cd3571 disable onlyoffice
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-20 13:50:13 +02:00
Zoey
365c1065fe Set default talk port inside Dockerfile
Should close https://github.com/nextcloud/all-in-one/issues/1011, because so the default env is set and when the talk container is launched by the mastercontainer, the env should be overridden by the env send from the mastercontainer.
If I have an image with an env (myenv=456) set inside the Dockerfile and then launch it with "-e myenv=123" the env is set to 123 inside the container,
I hope it's the same when the container is launched through the docker socket. But if yes, this should change help.

Signed-off-by: Zoey <zoey@z0ey.de>
2022-08-19 20:34:51 +02:00
szaimen
cbec4df965 fix dependency updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-18 14:28:19 +02:00
szaimen
bd4b3d69d6 add s3 and swift back for manual installations
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-18 13:36:24 +02:00
Simon L
115b295999 Make system requirements a bit more clear
Signed-off-by: Simon L. <szaimen@e.mail.de>
2022-08-18 00:46:45 +02:00
szaimen
5804f68824 set max connections and max php children based on available hardware
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-08-17 19:10:54 +02:00
84 changed files with 2040 additions and 447 deletions

View File

@@ -135,3 +135,24 @@ updates:
labels:
- 3. to review
- dependencies
- package-ecosystem: "docker"
directory: "/Containers/imaginary"
schedule:
interval: "daily"
time: "12:00"
open-pull-requests-limit: 10
labels:
- 3. to review
- dependencies
- package-ecosystem: "docker"
directory: "/Containers/fulltextsearch"
schedule:
interval: "daily"
time: "12:00"
ignore:
- dependency-name: "elasticsearch"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 10
labels:
- 3. to review
- dependencies

51
.github/workflows/command-rebase.yml vendored Normal file
View File

@@ -0,0 +1,51 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Rebase command
on:
issue_comment:
types: created
permissions:
contents: read
jobs:
rebase:
runs-on: ubuntu-latest
permissions:
contents: none
# On pull requests and if the comment starts with `/rebase`
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
steps:
- name: Add reaction on start
uses: peter-evans/create-or-update-comment@v2
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
comment-id: ${{ github.event.comment.id }}
reaction-type: "+1"
- name: Checkout the latest code
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }}
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.7
env:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure
uses: peter-evans/create-or-update-comment@v2
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
comment-id: ${{ github.event.comment.id }}
reaction-type: "-1"

View File

@@ -1,18 +1,20 @@
name: dependency-updates
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
jobs:
dependency_updates:
name: Run dependency update script
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: nanasess/setup-php@master
with:
php-version: '8.0'
php-version: 8.0
extensions: apcu
- name: Run dependency update script
run: |
set -x
@@ -22,7 +24,7 @@ jobs:
cd ./php
composer update
set +e
ALL_LINES="$(composer outdated | grep -v "psr/container")"
ALL_LINES="$(composer outdated | grep -v "psr/container\|^$\|Direct dependencies\|Everything up to date\|Transitive dependencies")"
set -e
while [ -n "$ALL_LINES" ]; do
CURRENT_LINE="$(echo "$ALL_LINES" | head -1)"

View File

@@ -1,48 +1,55 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
on:
pull_request:
push:
branches:
- main
- master
- stable*
jobs:
php-lint:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.0"]
name: php-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: Lint
run: cd php && composer run lint
summary:
runs-on: ubuntu-latest
needs: php-lint
if: always()
name: php-lint-summary
steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: lint-php-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
php-lint:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ["8.0"]
name: php-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: Lint
run: cd php && composer run lint
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: php-lint
if: always()
name: php-lint-summary
steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi

View File

@@ -14,7 +14,7 @@ jobs:
action:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v3
- uses: dessant/lock-threads@v4
with:
issue-inactive-days: '14'
process-only: 'issues'

View File

@@ -2,6 +2,7 @@
name: nextcloud-update
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
@@ -57,8 +58,8 @@ jobs:
| sort -V \
| tail -1
)"
sed -i "s|pecl install imagick.*\;|pecl install imagick-$imagick_version\;|" ./Containers/nextcloud/Dockerfile
sed -i "s|pecl install imagick.*|pecl install imagick-$imagick_version >/dev/null|" ./Containers/nextcloud/start.sh
# Nextcloud
NC_MAJOR="$(grep "ENV NEXTCLOUD_VERSION" ./Containers/nextcloud/Dockerfile | grep -oP '[23][0-9]')"
NCVERSION=$(curl -s -m 900 https://download.nextcloud.com/server/releases/ | sed --silent 's/.*href="nextcloud-\([^"]\+\).zip.asc".*/\1/p' | grep "$NC_MAJOR" | sort --version-sort | tail -1)

View File

@@ -0,0 +1,29 @@
name: PHP Deprecation Detector
# See https://github.com/wapmorgan/PhpDeprecationDetector
on:
pull_request:
push:
branches:
- main
jobs:
psalm:
name: PHP Deprecation Detector
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up php8.0
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
extensions: apcu
coverage: none
- name: Run script
run: |
set -x
cd php
composer global require wapmorgan/php-deprecation-detector dev-master
composer install
composer run php-deprecation-detector

View File

@@ -8,7 +8,7 @@ on:
jobs:
shellcheck:
name: Github Actions
name: Check Shell
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

View File

@@ -1 +0,0 @@
* @szaimen @juliushaertl

View File

@@ -1,7 +1,7 @@
# Caddy is a requirement
FROM caddy:2.5.2-alpine as caddy
FROM caddy:2.6.2-alpine as caddy
FROM debian:bullseye-20220801-slim
FROM debian:bullseye-20221205-slim
RUN mkdir -p /mnt/data; \
chown www-data:www-data /mnt/data;
@@ -19,6 +19,7 @@ RUN set -ex; \
openssl \
netcat \
dpkg-dev \
curl \
; \
rm -rf /var/lib/apt/lists/*
@@ -45,6 +46,10 @@ RUN rm /etc/apache2/ports.conf; \
RUN set -ex; \
a2dissite 000-default && \
a2dissite default-ssl && \
rm -f /etc/apache2/sites-enabled/000-default.conf && \
rm -f /etc/apache2/sites-enabled/default-ssl.conf && \
rm /etc/apache2/sites-available/000-default.conf && \
rm /etc/apache2/sites-available/default-ssl.conf && \
a2ensite nextcloud.conf && \
rm -rf /var/www/html/* && \
chown www-data:www-data -R /var/log/apache2; \
@@ -60,8 +65,10 @@ RUN mkdir /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; \
chmod +r -R /etc/apache2
@@ -72,4 +79,6 @@ RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD healthcheck.sh

View File

@@ -0,0 +1,8 @@
#!/bin/bash
curl -skfI localhost:8000 || exit 1
if [ "$APACHE_PORT" != '443' ]; then
nc -z localhost "$APACHE_PORT" || exit 1
else
nc -z "$NC_DOMAIN" "$APACHE_PORT" || exit 1
fi

View File

@@ -1,8 +1,14 @@
Listen 8000
<VirtualHost *:8000>
ServerName localhost
# Add error log
CustomLog /proc/self/fd/1 combined
ErrorLog /proc/self/fd/2
# PHP match
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://nextcloud-aio-nextcloud:9000"
SetHandler "proxy:fcgi://${NEXTCLOUD_HOST}:9000"
</FilesMatch>
# Nextcloud dir
DocumentRoot /var/www/html/
@@ -24,4 +30,13 @@ Listen 8000
# Fix zero file sizes
# See https://github.com/nextcloud/server/issues/3056#issuecomment-954209565
SetEnv proxy-sendcl 1
# See https://httpd.apache.org/docs/current/en/mod/core.html#limitrequestbody
LimitRequestBody ${APACHE_MAX_SIZE}
# See https://httpd.apache.org/docs/current/mod/core.html#timeout
Timeout ${APACHE_MAX_TIME}
# See https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxytimeout
ProxyTimeout ${APACHE_MAX_TIME}
</VirtualHost>

View File

@@ -1,23 +1,23 @@
[supervisord]
nodaemon=true
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
[program:apache]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apachectl -DFOREGROUND
[program:caddy]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/usr/bin/caddy run -config /Caddyfile
[supervisord]
nodaemon=true
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
[program:apache]
# stdout_logfile=/dev/stdout
# stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apachectl -DFOREGROUND
[program:caddy]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/usr/bin/caddy run --config /Caddyfile

View File

@@ -1,10 +1,11 @@
FROM debian:bullseye-20220801-slim
FROM debian:bullseye-20221205-slim
RUN set -ex; \
\
echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list; \
apt-get update; \
apt-get install -y --no-install-recommends borgbackup -t bullseye-backports; \
apt-get install -y --no-install-recommends \
borgbackup \
rsync \
fuse \
python3-llfuse \

View File

@@ -87,10 +87,13 @@ if [ "$BORG_MODE" = backup ]; 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 "By default it is stored here: /var/lib/docker/volumes/nextcloud_aio_mastercontainer/_data/data/borg.config"
exit 1
fi
echo "initializing repository..."
NEW_REPOSITORY=1
if ! borg init --debug --encryption=repokey-blake2 "$BORG_BACKUP_DIRECTORY"; then
echo "Could not initialize borg repository."
rm -f "$BORG_BACKUP_DIRECTORY/config"
@@ -124,15 +127,19 @@ if [ "$BORG_MODE" = backup ]; then
# Borg options
# auto,zstd compression seems to has the best ratio based on:
# https://forum.level1techs.com/t/optimal-compression-for-borg-backups/145870/6
BORG_OPTS=(--stats --progress --compression "auto,zstd" --exclude-caches --checkpoint-interval 86400)
BORG_OPTS=(--stats --compression "auto,zstd" --exclude-caches --checkpoint-interval 86400)
# Create the backup
echo "Starting the backup..."
get_start_time
if ! borg create "${BORG_OPTS[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/"; then
echo "Deleting the failed backup archive..."
borg delete --stats --progress "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio"
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio"
echo "Backup failed!"
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"
fi
exit 1
fi
@@ -140,7 +147,7 @@ if [ "$BORG_MODE" = backup ]; then
rm -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/skip.update"
# Prune options
BORG_PRUNE_OPTS=(--stats --progress --keep-within=7d --keep-weekly=4 --keep-monthly=6 "$BORG_BACKUP_DIRECTORY")
BORG_PRUNE_OPTS=(--stats --keep-within=7d --keep-weekly=4 --keep-monthly=6 "$BORG_BACKUP_DIRECTORY")
# Prune archives
echo "Pruning the archives..."
@@ -149,6 +156,68 @@ if [ "$BORG_MODE" = backup ]; then
exit 1
fi
# Compact archives
echo "Compacting the archives..."
if ! borg compact "$BORG_BACKUP_DIRECTORY"; then
echo "Failed to compact archives!"
exit 1
fi
# Back up additional directories of the host
if [ "$ADDITIONAL_DIRECTORIES_BACKUP" = 'yes' ]; then
if [ -d "/docker_volumes/" ]; then
DOCKER_VOLUME_DIRS="$(find /docker_volumes -mindepth 1 -maxdepth 1 -type d)"
mapfile -t DOCKER_VOLUME_DIRS <<< "$DOCKER_VOLUME_DIRS"
for directory in "${DOCKER_VOLUME_DIRS[@]}"; do
if [ -z "$(ls -A "$directory")" ]; then
echo "$directory is empty which is not allowed."
exit 1
fi
done
if ! borg create "${BORG_OPTS[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-docker-volumes" "/docker_volumes/"; then
echo "Deleting the failed backup archive..."
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-docker-volumes"
echo "Backup of additional docker-volumes failed!"
exit 1
fi
if ! borg prune --prefix '*_*-additional-docker-volumes' "${BORG_PRUNE_OPTS[@]}"; then
echo "Failed to prune additional docker-volumes archives!"
exit 1
fi
if ! borg compact "$BORG_BACKUP_DIRECTORY"; then
echo "Failed to compact archives!"
exit 1
fi
fi
if [ -d "/host_mounts/" ]; then
EXCLUDED_DIRECTORIES=(home/*/.cache root/.cache var/cache lost+found run var/run dev tmp sys proc)
# Exclude borg backup cache
EXCLUDED_DIRECTORIES+=(var/lib/docker/volumes/nextcloud_aio_backup_cache/_data)
# Exclude target directory
if [ -n "$BORGBACKUP_HOST_LOCATION" ] && [ "$BORGBACKUP_HOST_LOCATION" != "nextcloud_aio_backupdir" ]; then
EXCLUDED_DIRECTORIES+=("$BORGBACKUP_HOST_LOCATION")
fi
for directory in "${EXCLUDED_DIRECTORIES[@]}"
do
EXCLUDE_DIRS+=(--exclude "/host_mounts/$directory/")
done
if ! borg create "${BORG_OPTS[@]}" "${EXCLUDE_DIRS[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-host-mounts" "/host_mounts/"; then
echo "Deleting the failed backup archive..."
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-additional-host-mounts"
echo "Backup of additional host-mounts failed!"
exit 1
fi
if ! borg prune --prefix '*_*-additional-host-mounts' "${BORG_PRUNE_OPTS[@]}"; then
echo "Failed to prune additional host-mount archives!"
exit 1
fi
if ! borg compact "$BORG_BACKUP_DIRECTORY"; then
echo "Failed to compact archives!"
exit 1
fi
fi
fi
# Inform user
get_expiration_time
echo "Backup finished successfully on $END_DATE_READABLE ($DURATION_READABLE)"
@@ -177,12 +246,25 @@ if [ "$BORG_MODE" = restore ]; then
exit 1
fi
# Save Additional Backup dirs
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories" ]; then
ADDITIONAL_BACKUP_DIRECTORIES="$(cat /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories)"
fi
# Save daily backup time
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time" ]; then
DAILY_BACKUPTIME="$(cat /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time)"
fi
# Restore everything except the configuration file
if ! rsync --stats --archive --human-readable -vv --delete \
--exclude "nextcloud_aio_mastercontainer/session/"** \
--exclude "nextcloud_aio_mastercontainer/certs/"** \
--exclude "nextcloud_aio_mastercontainer/data/daily_backup_running" \
--exclude "nextcloud_aio_mastercontainer/data/session_date_file" \
--exclude "nextcloud_aio_mastercontainer/data/configuration.json" \
--exclude "nextcloud_aio_apache/caddy/"** \
--exclude "nextcloud_aio_mastercontainer/caddy/"** \
/tmp/borg/nextcloud_aio_volumes/ /nextcloud_aio_volumes; then
echo "Something failed while restoring from backup."
umount /tmp/borg
@@ -227,6 +309,20 @@ if [ "$BORG_MODE" = restore ]; then
CONTENTS="$(jq ".nextcloud_datadir = $NEXTCLOUD_DATADIR" /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/configuration.json)"
echo -E "${CONTENTS}" > /nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/configuration.json
# Reset the additional backup directories
if [ -n "$ADDITIONAL_BACKUP_DIRECTORIES" ]; then
echo "$ADDITIONAL_BACKUP_DIRECTORIES" > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories"
chown 33:0 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories"
chmod 770 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/additional_backup_directories"
fi
# Reset the additional backup directories
if [ -n "$DAILY_BACKUPTIME" ]; then
echo "$DAILY_BACKUPTIME" > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time"
chown 33:0 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time"
chmod 770 "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/daily_backup_time"
fi
umount /tmp/borg
# Inform user
@@ -248,7 +344,7 @@ if [ "$BORG_MODE" = check ]; then
echo "Checking the backup integrity..."
# Perform the check
if ! borg check --verify-data --progress "$BORG_BACKUP_DIRECTORY"; then
if ! borg check --verify-data "$BORG_BACKUP_DIRECTORY"; then
echo "Some errors were found while checking the backup integrity!"
exit 1
fi

View File

@@ -1,5 +1,5 @@
# Probably from this file: https://github.com/Cisco-Talos/clamav/blob/main/Dockerfile
FROM clamav/clamav:0.105.1
FROM clamav/clamav:0.105.1-7
RUN apk add --update --no-cache tzdata
COPY clamav.conf /tmp/

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.5.3.1
FROM collabora/code:22.05.8.4.1
USER root
@@ -9,7 +9,10 @@ RUN set -ex; \
export DEBIAN_FRONTEND=noninteractive; \
apt-get install -y --no-install-recommends \
tzdata \
netcat \
; \
rm -rf /var/lib/apt/lists/*
USER 104
HEALTHCHECK CMD nc -z localhost 9980 || exit 1

View File

@@ -1,5 +1,5 @@
FROM alpine:3.16.2
RUN apk add --update --no-cache lighttpd bash
FROM alpine:3.16.3
RUN apk add --update --no-cache lighttpd bash curl netcat-openbsd
RUN adduser -S www-data -G www-data
RUN rm -rf /etc/lighttpd/lighttpd.conf
@@ -14,3 +14,5 @@ RUN chmod +x /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

@@ -0,0 +1,6 @@
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
FROM elasticsearch:7.17.7
RUN elasticsearch-plugin install --batch ingest-attachment
HEALTHCHECK CMD curl -skfI localhost:9200 || exit 1

View File

@@ -0,0 +1,18 @@
# From https://github.com/h2non/imaginary/blob/master/Dockerfile
FROM nextcloud/imaginary:20221201
USER root
RUN set -ex; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
netcat \
; \
rm -rf /var/lib/apt/lists/*
USER nobody
ENTRYPOINT ["/usr/local/bin/imaginary", "-return-size"]
HEALTHCHECK CMD nc -z localhost 9000 || exit 1

View File

@@ -1,11 +1,11 @@
# Docker CLI is a requirement
FROM docker:20.10.17-dind-alpine3.16 as dind
FROM docker:20.10.21-dind-alpine3.16 as dind
# Caddy is a requirement
FROM caddy:2.5.2-alpine as caddy
FROM caddy:2.6.2-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.0/bullseye/apache/Dockerfile
FROM php:8.0.22-apache-bullseye
FROM php:8.0.26-apache-bullseye
EXPOSE 80
EXPOSE 8080
@@ -37,7 +37,7 @@ COPY --from=dind /usr/local/bin/docker /usr/local/bin/
RUN chmod +x /usr/local/bin/docker
RUN set -ex; \
pecl install APCu-5.1.21; \
pecl install APCu-5.1.22; \
docker-php-ext-enable apcu
RUN set -e && \
@@ -52,7 +52,7 @@ RUN set -e && \
cd ..; \
rm -f /usr/local/bin/composer; \
chmod 770 -R ./; \
chown www-data:www-data -R ./; \
chown www-data:www-data -R /var/www; \
rm -r ./php/data; \
rm -r ./php/session
@@ -76,8 +76,13 @@ RUN rm /etc/apache2/ports.conf; \
sed -s -i -e "s/Include ports.conf//" /etc/apache2/apache2.conf; \
sed -i "/^Listen /d" /etc/apache2/apache2.conf
RUN a2dissite 000-default && \
RUN set -ex; \
a2dissite 000-default && \
a2dissite default-ssl && \
rm -f /etc/apache2/sites-enabled/000-default.conf && \
rm -f /etc/apache2/sites-enabled/default-ssl.conf && \
rm /etc/apache2/sites-available/000-default.conf && \
rm /etc/apache2/sites-available/default-ssl.conf && \
a2ensite mastercontainer.conf
RUN mkdir /var/log/supervisord; \
@@ -90,14 +95,18 @@ 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 a+r /Caddyfile; \
chmod +x /healthcheck.sh
USER root
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD /healthcheck.sh

View File

@@ -13,14 +13,14 @@ while true; do
export START_CONTAINERS=1
fi
set +x
if [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
export LOCK_FILE_PRESENT=1
else
export LOCK_FILE_PRESENT=0
fi
else
export BACKUP_TIME="04:00"
export DAILY_BACKUP=0
fi
if [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
export LOCK_FILE_PRESENT=1
else
export LOCK_FILE_PRESENT=0
fi
@@ -41,6 +41,9 @@ while true; do
# Check for updates and send notification if yes
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateNotification.php
# Check if AIO is outdated
sudo -u www-data php /var/www/docker-aio/php/src/Cron/OutdatedNotification.php
# Remove sessions older than 24h
find "/mnt/docker-aio-config/session/" -mindepth 1 -mmin +1440 -delete

View File

@@ -1,10 +1,16 @@
#!/bin/bash
echo "Daily backup has started"
echo "Daily backup script has started"
# Daily backup and backup check cannot be run at the same time
if [ "$DAILY_BACKUP" = 1 ] && [ "$CHECK_BACKUP" = 1 ]; then
echo "Daily backup and backup check cannot be run at the same time. Exiting..."
exit 1
fi
# Delete all active sessions and create a lock file
# But don't kick out the user if the mastercontainer was just updated since we block the interface either way with the lock file
if [ "$LOCK_FILE_PRESENT" = 0 ]; then
if [ "$LOCK_FILE_PRESENT" = 0 ] || ! [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
rm -f "/mnt/docker-aio-config/session/"*
fi
sudo -u www-data touch "/mnt/docker-aio-config/data/daily_backup_running"
@@ -26,6 +32,8 @@ done
# Update the mastercontainer
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
echo "Starting mastercontainer update..."
echo "(The script might get exited due to that. In order to update all the other containers correctly, you need to run this script with the same settings a second time.)"
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateMastercontainer.php
fi
@@ -40,20 +48,31 @@ else
fi
# Stop containers if required
if [ "$DAILY_BACKUP" != 1 ] || [ "$STOP_CONTAINERS" = 1 ]; then
# shellcheck disable=SC2235
if [ "$CHECK_BACKUP" != 1 ] && ([ "$DAILY_BACKUP" != 1 ] || [ "$STOP_CONTAINERS" = 1 ]); then
echo "Stopping containers..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StopContainers.php
fi
# Execute the backup itself and some related tasks (also stops the containers)
if [ "$DAILY_BACKUP" = 1 ]; then
echo "Creating daily backup..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CreateBackup.php
fi
# Execute backup check
if [ "$CHECK_BACKUP" = 1 ]; then
echo "Starting backup check..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CheckBackup.php
fi
# Start and/or update containers
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
echo "Starting and updating containers..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StartAndUpdateContainers.php
else
if [ "$START_CONTAINERS" = 1 ]; then
echo "Starting containers without updating them..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/StartContainers.php
fi
fi
@@ -61,7 +80,9 @@ fi
# Delete the lock file
rm -f "/mnt/docker-aio-config/data/daily_backup_running"
if [ "$DAILY_BACKUP" = 1 ]; then
# Send backup notification
# shellcheck disable=SC2235
if [ "$DAILY_BACKUP" = 1 ] && ([ "$AUTOMATIC_UPDATES" = 1 ] || [ "$START_CONTAINERS" = 1 ]); then
# Wait for the nextcloud container to start and send if the backup was successful
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-nextcloud$"; then
echo "Something seems to be wrong: Nextcloud should be started at this step."
@@ -75,7 +96,8 @@ if [ "$DAILY_BACKUP" = 1 ]; then
fi
done
fi
echo "Sending backup notification..."
sudo -u www-data php /var/www/docker-aio/php/src/Cron/BackupNotification.php
fi
echo "Daily backup has finished"
echo "Daily backup script has finished"

View File

@@ -0,0 +1,5 @@
#!/bin/bash
if [ -f "/mnt/docker-aio-config/data/configuration.json" ]; then
nc -z localhost 8080 || exit 1
fi

View File

@@ -1,9 +1,6 @@
Listen 8000
Listen 8080
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
# Deny access to .ht files
<Files ".ht*">
Require all denied
@@ -11,6 +8,8 @@ ErrorLog ${APACHE_LOG_DIR}/error.log
# Http host
<VirtualHost *:8000>
ServerName localhost
# PHP match
<FilesMatch "\.php$">
SetHandler application/x-httpd-php

View File

@@ -1,23 +1,22 @@
#!/bin/bash
deduplicate_sessions() {
echo "Deleting duplicate sessions"
find "/mnt/docker-aio-config/session/" -mindepth 1 -exec grep -qv "$NEW_SESSION_TIME" {} \; -delete
}
compare_times() {
if [ -f "/mnt/docker-aio-config/data/session_date_file" ]; then
unset NEW_SESSION_TIME
NEW_SESSION_TIME="$(cat "/mnt/docker-aio-config/data/session_date_file")"
if [ -n "$NEW_SESSION_TIME" ] && [ -n "$OLD_SESSION_TIME" ] && [ "$NEW_SESSION_TIME" != "$OLD_SESSION_TIME" ]; then
deduplicate_sessions
fi
OLD_SESSION_TIME="$NEW_SESSION_TIME"
fi
}
while true; do
while [ "$(find "/mnt/docker-aio-config/session/" -mindepth 1 -exec grep "aio_authenticated|[a-z]:1" {} \; | wc -l)" -gt 1 ]; do
unset SESSION_FILES
SESSION_FILES="$(find "/mnt/docker-aio-config/session/" -mindepth 1)"
unset SESSION_FILES_ARRAY
mapfile -t SESSION_FILES_ARRAY <<< "$SESSION_FILES"
for SESSION_FILE in "${SESSION_FILES_ARRAY[@]}"; do
if ! grep -q "aio_authenticated|[a-z]:1" "$SESSION_FILE"; then
rm "$SESSION_FILE"
fi
done
echo "Deleting duplicate sessions"
unset OLDEST_FILE
set -x
# shellcheck disable=SC2012
OLDEST_FILE="$(ls -t "/mnt/docker-aio-config/session/" | tail -1)"
rm "/mnt/docker-aio-config/session/$OLDEST_FILE"
set +x
done
sleep 5
compare_times
sleep 2
done

69
Containers/mastercontainer/start.sh Executable file → Normal file
View File

@@ -65,6 +65,17 @@ else
sleep 10
fi
# Check Storage drivers
STORAGE_DRIVER="$(docker info | grep "Storage Driver")"
# Check if vfs is used: https://github.com/nextcloud/all-in-one/discussions/1467
if echo "$STORAGE_DRIVER" | grep -q vfs; then
echo "$STORAGE_DRIVER"
echo "Warning: It seems like the storage driver vfs is used. This will lead to problems with disk space and performance and is disrecommended!"
elif echo "$STORAGE_DRIVER" | grep -q fuse-overlayfs; then
echo "$STORAGE_DRIVER"
echo "Warning: It seems like the storage driver fuse-overlayfs is used. Please check if you can switch to overlay2 instead."
fi
# Check if startup command was executed correctly
if ! sudo -u www-data docker ps | grep -q "nextcloud-aio-mastercontainer"; then
echo "It seems like you did not give the mastercontainer the correct name?
@@ -104,6 +115,30 @@ if [ -n "$NEXTCLOUD_DATADIR" ] && [ -n "$NEXTCLOUD_MOUNT" ]; then
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.
The string must start with a number and end with 'G'.
It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
exit 1
fi
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.
The string must be a number. E.g. '3600'.
It is set to '$NEXTCLOUD_MAX_TIME'."
exit 1
fi
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.
The string must start with a number and end with 'M'.
It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
exit 1
fi
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.
@@ -145,6 +180,38 @@ It is set to '$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.
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
fi
fi
if [ -n "$NEXTCLOUD_STARTUP_APPS" ]; then
if ! echo "$NEXTCLOUD_STARTUP_APPS" | grep -q "^[a-z _-]\+$"; then
echo "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
It needs to be a string. Allowed are small letters a-z, spaces, hyphens and '_'.
It is set to '$NEXTCLOUD_STARTUP_APPS'."
exit 1
fi
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.
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
fi
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.
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
fi
fi
# Check DNS resolution
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565
@@ -204,7 +271,7 @@ 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
If your server has port 80 and 8443 open and you point a domain to your server, you can get a valid certificate automatially by opening the Nextcloud AIO Interface via:
If your server 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:
https://your-domain-that-points-to-this-server.tld:8443"
# Set the timezone to UTC

View File

@@ -1,26 +1,28 @@
[supervisord]
nodaemon=true
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB
logfile_backups=10
loglevel=error
user=root
[program:apache]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
# stdout_logfile=/dev/stdout
# stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apache2-foreground
user=root
[program:caddy]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=sudo -u www-data /usr/bin/caddy run -config /Caddyfile
command=/usr/bin/caddy run --config /Caddyfile
user=www-data
[program:cron]
stdout_logfile=/dev/stdout
@@ -35,6 +37,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/backup-time-file-watcher.sh
user=root
[program:session-deduplicator]
stdout_logfile=/dev/stdout
@@ -42,3 +45,4 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/session-deduplicator.sh
user=root

View File

@@ -1,5 +1,5 @@
# From https://github.com/nextcloud/docker/blob/master/23/fpm-alpine/Dockerfile
FROM php:8.0.22-fpm-alpine3.16
FROM php:8.0.26-fpm-alpine3.16
# Custom: change id of www-data user as it needs to be the same like on old installations
RUN set -ex; \
@@ -21,6 +21,7 @@ RUN set -ex; \
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html
ENV PHP_MEMORY_LIMIT 512M
ENV PHP_UPLOAD_LIMIT 10G
ENV PHP_MAX_TIME 3600
RUN set -ex; \
\
apk add --no-cache --virtual .build-deps \
@@ -38,7 +39,6 @@ RUN set -ex; \
openldap-dev \
pcre-dev \
postgresql-dev \
imagemagick-dev \
libwebp-dev \
gmp-dev \
; \
@@ -60,16 +60,14 @@ RUN set -ex; \
; \
\
# pecl will claim success even if one install fails, so we need to perform each install separately
pecl install APCu-5.1.21; \
pecl install APCu-5.1.22; \
pecl install memcached-3.2.0; \
pecl install redis-5.3.7; \
pecl install imagick-3.7.0; \
\
docker-php-ext-enable \
apcu \
memcached \
redis \
imagick \
; \
rm -r /tmp/pear; \
\
@@ -96,6 +94,8 @@ RUN { \
echo 'memory_limit=${PHP_MEMORY_LIMIT}'; \
echo 'upload_max_filesize=${PHP_UPLOAD_LIMIT}'; \
echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \
echo 'max_execution_time=${PHP_MAX_TIME}'; \
echo 'max_input_time=${PHP_MAX_TIME}'; \
} > /usr/local/etc/php/conf.d/nextcloud.ini; \
\
mkdir /var/www/data; \
@@ -104,7 +104,7 @@ RUN { \
VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 24.0.4
ENV NEXTCLOUD_VERSION 24.0.8
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \
@@ -123,7 +123,6 @@ RUN set -ex; \
tar -xjf nextcloud.tar.bz2 -C /usr/src/; \
gpgconf --kill all; \
rm nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /usr/src/nextcloud/updater; \
mkdir -p /usr/src/nextcloud/data; \
mkdir -p /usr/src/nextcloud/custom_apps; \
chmod +x /usr/src/nextcloud/occ; \
@@ -141,7 +140,6 @@ RUN set -ex; \
\
apk add --no-cache \
ffmpeg \
imagemagick \
procps \
samba-client \
supervisor \
@@ -198,15 +196,20 @@ RUN set -ex; \
git \
postgresql-client \
tzdata \
mawk \
sudo \
grep \
; \
rm -rf /var/lib/apt/lists/*
RUN set -ex; \
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_children =.*/pm.max_children = 100/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.start_servers =.*/pm.start_servers = 25/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.min_spare_servers =.*/pm.min_spare_servers = 25/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_spare_servers =.*/pm.max_spare_servers = 75/' /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/^pm.start_servers =.*/pm.start_servers = 2/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.min_spare_servers =.*/pm.min_spare_servers = 1/' /usr/local/etc/php-fpm.d/www.conf; \
sed -i 's/^pm.max_spare_servers =.*/pm.max_spare_servers = 3/' /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
RUN set -ex; \
rm -rf /tmp/nextcloud-aio && \
@@ -219,19 +222,19 @@ RUN set -ex; \
RUN set -ex; \
chown www-data:root -R /usr/src && \
chown www-data:root -R /usr/local/etc/php/conf.d && \
chown www-data:root -R /var/log/supervisord/ && \
chown www-data:root -R /var/run/supervisord/ && \
chown www-data:root -R /usr/local/etc/php-fpm.d && \
rm -r /usr/src/nextcloud/apps/updatenotification
COPY start.sh /
COPY notify.sh /
COPY notify-all.sh /
RUN set -ex; \
chmod +x /start.sh && \
chmod +r /supervisord.conf && \
chmod +x /entrypoint.sh && \
chmod +r /upgrade.exclude && \
chmod +x /cron.sh && \
chmod +x /notify.sh && \
chmod +x /notify-all.sh && \
chmod +x /activate-collabora.sh
RUN set -ex; \
@@ -243,5 +246,7 @@ VOLUME /mnt/ncdata
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data
USER root
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD (sudo -u www-data nc -z localhost 9000 && sudo -u www-data nc -z localhost 7867) || exit 1

View File

@@ -1,20 +1,13 @@
#!/bin/bash
COLLABORA_ACTIVATED=0
while true; do
if [ "$COLLABORA_ENABLED" != yes ]; then
# Basically sleep for forever if collabora is not enabled
sleep 365d
fi
if [ "$COLLABORA_ACTIVATED" != 0 ]; then
# Basically sleep for forever if collabora was activated
sleep 365d
fi
while ! nc -z "$NC_DOMAIN" 443; do
sleep 5
done
echo "Activating collabora config"
php /var/www/html/occ richdocuments:activate-config
COLLABORA_ACTIVATED=1
if [ "$COLLABORA_ENABLED" != yes ]; then
# Basically sleep for forever if collabora is not enabled
sleep inf
fi
while ! nc -z "$NC_DOMAIN" 443; do
sleep 5
done
sleep 10
echo "Activating collabora config..."
php /var/www/html/occ richdocuments:activate-config
sleep inf

View File

@@ -0,0 +1,27 @@
<?php
if (getenv('OBJECTSTORE_S3_BUCKET')) {
$use_ssl = getenv('OBJECTSTORE_S3_SSL');
$use_path = getenv('OBJECTSTORE_S3_USEPATH_STYLE');
$use_legacyauth = getenv('OBJECTSTORE_S3_LEGACYAUTH');
$autocreate = getenv('OBJECTSTORE_S3_AUTOCREATE');
$CONFIG = array(
'objectstore' => array(
'class' => '\OC\Files\ObjectStore\S3',
'arguments' => array(
'bucket' => getenv('OBJECTSTORE_S3_BUCKET'),
'key' => getenv('OBJECTSTORE_S3_KEY') ?: '',
'secret' => getenv('OBJECTSTORE_S3_SECRET') ?: '',
'region' => getenv('OBJECTSTORE_S3_REGION') ?: '',
'hostname' => getenv('OBJECTSTORE_S3_HOST') ?: '',
'port' => getenv('OBJECTSTORE_S3_PORT') ?: '',
'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:",
'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true,
'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true,
// required for some non Amazon S3 implementations
'use_path_style' => $use_path == true && strtolower($use_path) !== 'false',
// required for older protocol versions
'legacy_auth' => $use_legacyauth == true && strtolower($use_legacyauth) !== 'false'
)
)
);
}

View File

@@ -0,0 +1,31 @@
<?php
if (getenv('OBJECTSTORE_SWIFT_URL')) {
$autocreate = getenv('OBJECTSTORE_SWIFT_AUTOCREATE');
$CONFIG = array(
'objectstore' => [
'class' => 'OC\\Files\\ObjectStore\\Swift',
'arguments' => [
'autocreate' => $autocreate == true && strtolower($autocreate) !== 'false',
'user' => [
'name' => getenv('OBJECTSTORE_SWIFT_USER_NAME'),
'password' => getenv('OBJECTSTORE_SWIFT_USER_PASSWORD'),
'domain' => [
'name' => (getenv('OBJECTSTORE_SWIFT_USER_DOMAIN')) ?: 'Default',
],
],
'scope' => [
'project' => [
'name' => getenv('OBJECTSTORE_SWIFT_PROJECT_NAME'),
'domain' => [
'name' => (getenv('OBJECTSTORE_SWIFT_PROJECT_DOMAIN')) ?: 'Default',
],
],
],
'serviceName' => (getenv('OBJECTSTORE_SWIFT_SERVICE_NAME')) ?: 'swift',
'region' => getenv('OBJECTSTORE_SWIFT_REGION'),
'url' => getenv('OBJECTSTORE_SWIFT_URL'),
'bucket' => getenv('OBJECTSTORE_SWIFT_CONTAINER_NAME'),
]
]
);
}

View File

@@ -10,7 +10,7 @@ directory_empty() {
[ -z "$(ls -A "$1/")" ]
}
echo "Configuring Redis as session handler"
echo "Configuring Redis as session handler..."
cat << REDIS_CONF > /usr/local/etc/php/conf.d/redis-session.ini
session.save_handler = redis
session.save_path = "tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}"
@@ -21,14 +21,28 @@ redis.session.lock_retries = -1
redis.session.lock_wait_time = 10000
REDIS_CONF
echo "Setting php max children..."
MEMORY=$(mawk '/MemTotal/ {printf "%d", $2/1024}' /proc/meminfo)
PHP_MAX_CHILDREN=$((MEMORY/50))
if [ -n "$PHP_MAX_CHILDREN" ]; then
sed -i "s/^pm.max_children =.*/pm.max_children = $PHP_MAX_CHILDREN/" /usr/local/etc/php-fpm.d/www.conf
fi
# Check permissions in ncdata
touch "/mnt/ncdata/this-is-a-test-file"
if ! [ -f "/mnt/ncdata/this-is-a-test-file" ]; then
echo "The www-data user doesn't seem to have access rights in /mnt/ncdata.
Did you maybe change the datadir and did forget to apply the correct permissions?"
touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
echo "The www-data user doesn't seem to have access rights in the datadir.
Most likely are the files located on a drive that does not follow linux permissions.
Please adjust the permissions like mentioned below.
The found permissions are:
$(stat -c "%u:%g %a" "$NEXTCLOUD_DATA_DIR")
(userID:groupID permissions)
but they should be:
33:0 750
(userID:groupID permissions)"
exit 1
fi
rm "/mnt/ncdata/this-is-a-test-file"
rm "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
if [ -f /var/www/html/version.php ]; then
# shellcheck disable=SC2016
@@ -58,7 +72,7 @@ if [ -f "/var/www/html/lib/versioncheck.php" ] && ! php /var/www/html/lib/versio
fi
# Do not start the container if the last update failed
if [ -f "/mnt/ncdata/update.failed" ]; then
if [ -f "$NEXTCLOUD_DATA_DIR/update.failed" ]; then
echo "The last Nextcloud update failed."
echo "Please restore from backup and try again!"
echo "If you do not have a backup in place, you can simply delete the update.failed file in the datadir which will allow the container to start again."
@@ -66,11 +80,18 @@ if [ -f "/mnt/ncdata/update.failed" ]; then
fi
# Skip any update if Nextcloud was just restored
if ! [ -f "/mnt/ncdata/skip.update" ]; then
if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
if version_greater "$image_version" "$installed_version"; then
# Check if it skips a major version
INSTALLED_MAJOR="${installed_version%%.*}"
IMAGE_MAJOR="${image_version%%.*}"
if [ "$installed_version" != "0.0.0.0" ]; then
# Write output to logfile.
exec > >(tee -i "/var/www/html/data/update.log")
exec 2>&1
fi
if [ "$installed_version" != "0.0.0.0" ] && [ "$((IMAGE_MAJOR - INSTALLED_MAJOR))" -gt 1 ]; then
set -ex
NEXT_MAJOR="$((INSTALLED_MAJOR + 1))"
@@ -85,7 +106,6 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
tar -xjf nextcloud.tar.bz2 -C /usr/src/tmp/
gpgconf --kill all
rm nextcloud.tar.bz2.asc nextcloud.tar.bz2
rm -rf "$GNUPGHOME" /usr/src/tmp/nextcloud/updater
mkdir -p /usr/src/tmp/nextcloud/data
mkdir -p /usr/src/tmp/nextcloud/custom_apps
chmod +x /usr/src/tmp/nextcloud/occ
@@ -119,7 +139,19 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
php /var/www/html/occ maintenance:mode --off
echo "Getting and backing up the status of apps for later, this might take a while..."
php /var/www/html/occ app:list | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before
NC_APPS="$(find /var/www/html/custom_apps/ -type d -maxdepth 1 -mindepth 1 | sed 's|/var/www/html/custom_apps/||g')"
if [ -z "$NC_APPS" ]; then
echo "No apps detected, aborting export of app status..."
APPSTORAGE="no-export-done"
else
mapfile -t NC_APPS_ARRAY <<< "$NC_APPS"
declare -Ag APPSTORAGE
echo "Disabling apps before the update in order to make the update procedure more safe. This can take a while..."
for app in "${NC_APPS_ARRAY[@]}"; do
APPSTORAGE[$app]=$(php /var/www/html/occ config:app:get "$app" enabled)
php /var/www/html/occ app:disable "$app"
done
fi
if [ "$((IMAGE_MAJOR - INSTALLED_MAJOR))" -eq 1 ]; then
php /var/www/html/occ config:system:delete app_install_overwrite
@@ -128,8 +160,11 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
php /var/www/html/occ app:update --all
# Fix removing the updatenotification for old instances
UPDATENOTIFICATION_STATUS="$(php /var/www/html/occ config:app:get updatenotification enabled)"
if [ -d "/var/www/html/apps/updatenotification" ]; then
php /var/www/html/occ app:disable updatenotification
elif [ "$UPDATENOTIFICATION_STATUS" != "no" ] && [ -n "$UPDATENOTIFICATION_STATUS" ]; then
php /var/www/html/occ config:app:set updatenotification enabled --value="no"
fi
fi
@@ -173,6 +208,9 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
# unset admin password
unset ADMIN_PASSWORD
# Post Install logs: For questions like https://help.nextcloud.com/t/nextcloud-aio-error-could-not-get-appdata-folder-after-container-has-already-written-data-in-it/151122/5
echo "Install errors: $(cat /var/www/html/data/nextcloud.log)"
# Apply log settings
echo "Applying default settings..."
mkdir -p /var/www/html/data
@@ -212,22 +250,16 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
# php /var/www/html/occ config:app:set updatenotification notify_groups --value="[]"
# Install some apps by default
php /var/www/html/occ app:install twofactor_totp
php /var/www/html/occ app:install deck
php /var/www/html/occ app:install tasks
php /var/www/html/occ app:install calendar
php /var/www/html/occ app:install contacts
php /var/www/html/occ app:install apporder
if [ -n "$STARTUP_APPS" ]; then
read -ra STARTUP_APPS_ARRAY <<< "$STARTUP_APPS"
for app in "${STARTUP_APPS_ARRAY[@]}"; do
php /var/www/html/occ app:install "$app"
done
fi
#upgrade
else
touch "/mnt/ncdata/update.failed"
while [ -n "$(pgrep -f cron.php)" ]
do
echo "Waiting for Nextclouds cronjob to finish..."
sleep 5
done
touch "$NEXTCLOUD_DATA_DIR/update.failed"
echo "Upgrading nextcloud from $installed_version to $image_version..."
if ! php /var/www/html/occ upgrade || ! php /var/www/html/occ -V; then
echo "Upgrade failed. Please restore from backup."
@@ -235,13 +267,33 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
exit 1
fi
rm "/mnt/ncdata/update.failed"
rm "$NEXTCLOUD_DATA_DIR/update.failed"
bash /notify.sh "Nextcloud update to $image_version successful!" "Feel free to inspect the Nextcloud container logs for more info."
php /var/www/html/occ app:list | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after
echo "The following apps have been disabled:"
diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1
rm -f /tmp/list_before /tmp/list_after
php /var/www/html/occ app:update --all
# Restore app status
if [ "${APPSTORAGE[0]}" != "no-export-done" ]; then
echo "Restoring the status of apps. This can take a while..."
for app in "${!APPSTORAGE[@]}"; do
if [ -n "${APPSTORAGE[$app]}" ]; then
if [ "${APPSTORAGE[$app]}" != "no" ]; then
echo "Enabling $app..."
if ! php /var/www/html/occ app:enable "$app" >/dev/null; then
echo "$app could not get enabled. Probably because it is not compatible with the new Nextcloud version."
bash /notify.sh "Could not enable the $app after the Nextcloud update!" "Feel free to look at the Nextcloud update logs and force-enable the app again from the app-store UI."
continue
fi
# Only restore the group settings, if the app was enabled (and is thus compatible with the new NC version)
if [ "${APPSTORAGE[$app]}" != "yes" ]; then
php /var/www/html/occ config:app:set "$app" enabled --value="${APPSTORAGE[$app]}"
fi
fi
fi
done
fi
php /var/www/html/occ app:update --all
# Apply optimization
echo "Doing some optimizations..."
@@ -262,25 +314,41 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
bash /notify.sh "Your apps just got updated!" "$UPDATED_APPS"
fi
fi
else
SKIP_UPDATE=1
fi
# Check if appdata is present
# If not, something broke (e.g. changing ncdatadir after aio was first started)
if [ -z "$(find "/mnt/ncdata/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
if [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
echo "Appdata is not present. Did you maybe change the datadir after aio was first started?"
echo "See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir"
echo "In the datadir was found:"
ls -la "$NEXTCLOUD_DATA_DIR/"
exit 1
fi
# Configure tempdirectory
if [ -z "$OBJECTSTORE_S3_BUCKET" ] && [ -z "$OBJECTSTORE_SWIFT_URL" ]; then
mkdir -p "$NEXTCLOUD_DATA_DIR/tmp/"
if ! grep -q upload_tmp_dir /usr/local/etc/php/conf.d/nextcloud.ini; then
echo "upload_tmp_dir = $NEXTCLOUD_DATA_DIR/tmp/" >> /usr/local/etc/php/conf.d/nextcloud.ini
fi
php /var/www/html/occ config:system:set tempdirectory --value="$NEXTCLOUD_DATA_DIR/tmp/"
fi
# Perform fingerprint update if instance was restored
if [ -f "/mnt/ncdata/fingerprint.update" ]; then
if [ -f "$NEXTCLOUD_DATA_DIR/fingerprint.update" ]; then
php /var/www/html/occ maintenance:data-fingerprint
rm "/mnt/ncdata/fingerprint.update"
rm "$NEXTCLOUD_DATA_DIR/fingerprint.update"
fi
# Apply one-click-instance settings
echo "Applying one-click-instance settings..."
php /var/www/html/occ config:system:set one-click-instance --value=true --type=bool
php /var/www/html/occ config:system:set one-click-instance.user-limit --value=100 --type=int
php /var/www/html/occ config:system:set one-click-instance.link --value="https://nextcloud.com/all-in-one/"
php /var/www/html/occ app:enable support
# Adjusting log files to be stored on a volume
echo "Adjusting log files..."
@@ -313,7 +381,7 @@ if ! [ -d "/var/www/html/custom_apps/notify_push" ]; then
php /var/www/html/occ app:install notify_push
elif [ "$(php /var/www/html/occ config:app:get notify_push enabled)" = "no" ]; then
php /var/www/html/occ app:enable notify_push
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update notify_push
fi
php /var/www/html/occ config:system:set trusted_proxies 0 --value="127.0.0.1"
@@ -326,7 +394,7 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install richdocuments
elif [ "$(php /var/www/html/occ config:app:get richdocuments enabled)" = "no" ]; then
php /var/www/html/occ app:enable richdocuments
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update richdocuments
fi
php /var/www/html/occ config:app:set richdocuments wopi_url --value="https://$NC_DOMAIN/"
@@ -348,7 +416,7 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install onlyoffice
elif [ "$(php /var/www/html/occ config:app:get onlyoffice enabled)" = "no" ]; then
php /var/www/html/occ app:enable onlyoffice
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update onlyoffice
fi
php /var/www/html/occ config:system:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
@@ -356,7 +424,7 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
php /var/www/html/occ config:app:set onlyoffice DocumentServerUrl --value="https://$NC_DOMAIN/onlyoffice"
php /var/www/html/occ config:system:set allow_local_remote_servers --type=bool --value=true
else
if [ -d "/var/www/html/custom_apps/onlyoffice" ]; then
if [ -d "/var/www/html/custom_apps/onlyoffice" ] && [ -n "$ONLYOFFICE_SECRET" ] && [ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
php /var/www/html/occ app:remove onlyoffice
fi
fi
@@ -367,15 +435,20 @@ if [ "$TALK_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install spreed
elif [ "$(php /var/www/html/occ config:app:get spreed enabled)" = "no" ]; then
php /var/www/html/occ app:enable spreed
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update spreed
fi
STUN_SERVERS="[\"$NC_DOMAIN:$TALK_PORT\"]"
TURN_SERVERS="[{\"server\":\"$NC_DOMAIN:$TALK_PORT\",\"secret\":\"$TURN_SECRET\",\"protocols\":\"udp,tcp\"}]"
SIGNALING_SERVERS="{\"servers\":[{\"server\":\"https://$NC_DOMAIN/standalone-signaling/\",\"verify\":true}],\"secret\":\"$SIGNALING_SECRET\"}"
php /var/www/html/occ config:app:set spreed stun_servers --value="$STUN_SERVERS" --output json
php /var/www/html/occ config:app:set spreed turn_servers --value="$TURN_SERVERS" --output json
php /var/www/html/occ config:app:set spreed signaling_servers --value="$SIGNALING_SERVERS" --output json
# Based on https://github.com/nextcloud/spreed/issues/960#issuecomment-416993435
if [ -z "$(php /var/www/html/occ talk:turn:list --output="plain")" ]; then
php /var/www/html/occ talk:turn:add "$NC_DOMAIN:$TALK_PORT" "udp,tcp" --secret="$TURN_SECRET"
fi
if php /var/www/html/occ talk:stun:list --output="plain" | grep -oP '[a-zA-Z.:0-9]+' | grep -q "^stun.nextcloud.com:443$"; then
php /var/www/html/occ talk:stun:add "$NC_DOMAIN:$TALK_PORT"
php /var/www/html/occ talk:stun:delete "stun.nextcloud.com:443"
fi
if ! php /var/www/html/occ talk:signaling:list --output="plain" | grep -q "https://$NC_DOMAIN/standalone-signaling/"; then
php /var/www/html/occ talk:signaling:add "https://$NC_DOMAIN/standalone-signaling/" "$SIGNALING_SECRET" --verify
fi
else
if [ -d "/var/www/html/custom_apps/spreed" ]; then
php /var/www/html/occ app:remove spreed
@@ -392,7 +465,7 @@ if [ "$CLAMAV_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:install files_antivirus
elif [ "$(php /var/www/html/occ config:app:get files_antivirus enabled)" = "no" ]; then
php /var/www/html/occ app:enable files_antivirus
else
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update files_antivirus
fi
php /var/www/html/occ config:app:set files_antivirus av_mode --value="daemon"
@@ -407,5 +480,70 @@ else
fi
fi
# Imaginary
if version_greater "$installed_version" "24.0.0.0"; then
if [ "$IMAGINARY_ENABLED" = 'yes' ]; then
php /var/www/html/occ config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Imaginary"
php /var/www/html/occ config:system:set preview_imaginary_url --value="http://$IMAGINARY_HOST:9000"
else
php /var/www/html/occ config:system:delete enabledPreviewProviders 0
php /var/www/html/occ config:system:delete preview_imaginary_url
fi
fi
# Fulltextsearch
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
while ! nc -z "$FULLTEXTSEARCH_HOST" 9200; do
echo "waiting for Fulltextsearch to become available..."
sleep 5
done
if ! [ -d "/var/www/html/custom_apps/fulltextsearch" ]; then
php /var/www/html/occ app:install fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch enabled)" = "no" ]; then
php /var/www/html/occ app:enable fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch
fi
if ! [ -d "/var/www/html/custom_apps/fulltextsearch_elasticsearch" ]; then
php /var/www/html/occ app:install fulltextsearch_elasticsearch
elif [ "$(php /var/www/html/occ config:app:get fulltextsearch_elasticsearch enabled)" = "no" ]; then
php /var/www/html/occ app:enable fulltextsearch_elasticsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update fulltextsearch_elasticsearch
fi
if ! [ -d "/var/www/html/custom_apps/files_fulltextsearch" ]; then
php /var/www/html/occ app:install files_fulltextsearch
elif [ "$(php /var/www/html/occ config:app:get files_fulltextsearch enabled)" = "no" ]; then
php /var/www/html/occ app:enable files_fulltextsearch
elif [ "$SKIP_UPDATE" != 1 ]; then
php /var/www/html/occ app:update files_fulltextsearch
fi
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_HOST:9200\",\"elastic_index\":\"nextcloud-aio\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
# Do the index
if ! [ -f "$NEXTCLOUD_DATA_DIR/fts-index.done" ]; then
echo "Waiting 10s before activating FTS..."
sleep 10
echo "Activating fulltextsearch..."
if php /var/www/html/occ fulltextsearch:test && php /var/www/html/occ fulltextsearch:index; then
touch "$NEXTCLOUD_DATA_DIR/fts-index.done"
else
echo "Fulltextsearch failed. Could not index."
fi
fi
else
if [ -d "/var/www/html/custom_apps/fulltextsearch" ]; then
php /var/www/html/occ app:remove fulltextsearch
fi
if [ -d "/var/www/html/custom_apps/fulltextsearch_elasticsearch" ]; then
php /var/www/html/occ app:remove fulltextsearch_elasticsearch
fi
if [ -d "/var/www/html/custom_apps/files_fulltextsearch" ]; then
php /var/www/html/occ app:remove files_fulltextsearch
fi
fi
# Remove the update skip file always
rm -f /mnt/ncdata/skip.update
rm -f "$NEXTCLOUD_DATA_DIR"/skip.update

View File

@@ -0,0 +1,27 @@
#!/bin/bash
if [[ "$EUID" = 0 ]]; then
COMMAND=(sudo -E -u www-data php /var/www/html/occ)
else
COMMAND=(php /var/www/html/occ)
fi
SUBJECT="$1"
MESSAGE="$2"
if [ "$("${COMMAND[@]}" config:app:get notifications enabled)" = "no" ]; then
echo "Cannot send notification as notification app is not enabled."
exit 1
fi
echo "Posting notifications to all users..."
NC_USERS=$("${COMMAND[@]}" user:list | sed 's|^ - ||g' | sed 's|:.*||')
mapfile -t NC_USERS <<< "$NC_USERS"
for user in "${NC_USERS[@]}"
do
echo "Posting '$SUBJECT' to: $user"
"${COMMAND[@]}" notification:generate "$user" "$NC_DOMAIN: $SUBJECT" -l "$MESSAGE"
done
echo "Done!"
exit 0

View File

@@ -1,19 +1,25 @@
#!/bin/bash
if [[ "$EUID" = 0 ]]; then
COMMAND=(sudo -E -u www-data php /var/www/html/occ)
else
COMMAND=(php /var/www/html/occ)
fi
SUBJECT="$1"
MESSAGE="$2"
if [ "$(php /var/www/html/occ config:app:get notifications enabled)" = "no" ]; then
if [ "$("${COMMAND[@]}" config:app:get notifications enabled)" = "no" ]; then
echo "Cannot send notification as notification app is not enabled."
exit 1
fi
echo "Posting notifications to users that are admins..."
NC_USERS=$(php /var/www/html/occ user:list | sed 's|^ - ||g' | sed 's|:.*||')
NC_USERS=$("${COMMAND[@]}" user:list | sed 's|^ - ||g' | sed 's|:.*||')
mapfile -t NC_USERS <<< "$NC_USERS"
for user in "${NC_USERS[@]}"
do
if php /var/www/html/occ user:info "$user" | cut -d "-" -f2 | grep -x -q " admin"
if "${COMMAND[@]}" user:info "$user" | cut -d "-" -f2 | grep -x -q " admin"
then
NC_ADMIN_USER+=("$user")
fi
@@ -22,7 +28,7 @@ done
for admin in "${NC_ADMIN_USER[@]}"
do
echo "Posting '$SUBJECT' to: $admin"
php /var/www/html/occ notification:generate "$admin" "$NC_DOMAIN: $SUBJECT" -l "$MESSAGE"
"${COMMAND[@]}" notification:generate "$admin" "$NC_DOMAIN: $SUBJECT" -l "$MESSAGE"
done
echo "Done!"

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# Only start container if database is accessible
while ! nc -z "$POSTGRES_HOST" 5432; do
while ! sudo -u www-data nc -z "$POSTGRES_HOST" 5432; do
echo "Waiting for database to start..."
sleep 5
done
@@ -13,16 +13,104 @@ export POSTGRES_USER
# Fix false database connection on old instances
if [ -f "/var/www/html/config/config.php" ]; then
sleep 2
while ! psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/$POSTGRES_DB" -c "select now()"; do
while ! sudo -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/$POSTGRES_DB" -c "select now()"; do
echo "Waiting for the database to start..."
sleep 5
done
sed -i "s|'dbuser'.*=>.*$|'dbuser' => '$POSTGRES_USER',|" /var/www/html/config/config.php
sed -i "s|'dbpassword'.*=>.*$|'dbpassword' => '$POSTGRES_PASSWORD',|" /var/www/html/config/config.php
if [ "$POSTGRES_USER" = "oc_nextcloud" ] && echo "$POSTGRES_PASSWORD" | grep -q '^[a-z0-9]\+$'; then
# this was introduced with https://github.com/nextcloud/all-in-one/pull/218
sed -i "s|'dbuser'.*=>.*$|'dbuser' => '$POSTGRES_USER',|" /var/www/html/config/config.php
sed -i "s|'dbpassword'.*=>.*$|'dbpassword' => '$POSTGRES_PASSWORD',|" /var/www/html/config/config.php
fi
fi
# Trust additional Cacerts, if the user provided $TRUSTED_CACERTS_DIR
if [ -n "$TRUSTED_CACERTS_DIR" ]; then
echo "User required to trust additional CA certificates, running 'update-ca-certificates.'"
update-ca-certificates
fi
# Check datadir permissions
sudo -u www-data touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
chown -R www-data:root "$NEXTCLOUD_DATA_DIR"
chmod 750 -R "$NEXTCLOUD_DATA_DIR"
fi
sudo -u www-data rm -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
# Install additional dependencies
if [ -n "$ADDITIONAL_APKS" ]; then
if ! [ -f "/additional-apks-are-installed" ]; then
read -ra ADDITIONAL_APKS_ARRAY <<< "$ADDITIONAL_APKS"
for app in "${ADDITIONAL_APKS_ARRAY[@]}"; do
echo "Installing $app via apk..."
if ! apk add --no-cache "$app" >/dev/null; then
echo "The packet $app was not installed!"
fi
done
fi
touch /additional-apks-are-installed
fi
# Install additional php extensions
if [ -n "$ADDITIONAL_PHP_EXTENSIONS" ]; then
if ! [ -f "/additional-php-extensions-are-installed" ]; then
read -ra ADDITIONAL_PHP_EXTENSIONS_ARRAY <<< "$ADDITIONAL_PHP_EXTENSIONS"
for app in "${ADDITIONAL_PHP_EXTENSIONS_ARRAY[@]}"; do
# shellcheck disable=SC2086
if [ "$PHP_DEPS_ARE_INSTALLED" != 1 ]; then
echo "Installing PHP build dependencies..."
if ! apk add --no-cache --virtual .build-deps libxml2-dev imagemagick-dev autoconf $PHPIZE_DEPS >/dev/null; then
echo "Could not install build-deps!"
fi
PHP_DEPS_ARE_INSTALLED=1
fi
if [ "$app" = imagick ]; then
echo "Installing Imagick via PECL..."
pecl install imagick-3.7.0 >/dev/null
if ! docker-php-ext-enable imagick >/dev/null; then
echo "Could not install PHP extension imagick!"
fi
elif [ "$app" = inotify ]; then
echo "Installing $app via PECL..."
pecl install "$app" >/dev/null
if ! docker-php-ext-enable "$app" >/dev/null; then
echo "Could not install PHP extension $app!"
fi
elif [ "$app" = soap ]; then
echo "Installing $app from core..."
if ! docker-php-ext-install -j "$(nproc)" "$app" >/dev/null; then
echo "Could not install PHP extension $app!"
fi
else
echo "Installing PHP extension $app ..."
if ! docker-php-ext-install -j "$(nproc)" "$app" >/dev/null; then
echo "Could not install $app from core. Trying to install from PECL..."
pecl install "$app" >/dev/null
if ! docker-php-ext-enable "$app" >/dev/null; then
echo "Could also not install $app from PECL. The PHP extensions was not installed!"
fi
fi
fi
done
if [ "$PHP_DEPS_ARE_INSTALLED" = 1 ]; then
rm -rf /tmp/pear
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)";
# shellcheck disable=SC2086
apk add --virtual .nextcloud-phpext-rundeps $runDeps >/dev/null
apk del .build-deps >/dev/null
fi
fi
touch /additional-php-extensions-are-installed
fi
# Run original entrypoint
if ! bash /entrypoint.sh; then
if ! sudo -E -u www-data bash /entrypoint.sh; then
exit 1
fi

View File

@@ -7,6 +7,7 @@ childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB ; maximum size of logfile before rotation
logfile_backups=10 ; number of backed up logfiles
loglevel=error
user=root
[program:php-fpm]
stdout_logfile=/dev/stdout
@@ -14,6 +15,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=php-fpm
user=root
[program:cron]
stdout_logfile=/dev/stdout
@@ -21,6 +23,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/cron.sh
user=www-data
[program:notify-push]
stdout_logfile=/dev/stdout
@@ -28,6 +31,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/var/www/html/custom_apps/notify_push/bin/%(ENV_CPU_ARCH)s/notify_push /var/www/html/config/config.php --port 7867 --redis-url redis://:%(ENV_REDIS_HOST_PASSWORD)s@%(ENV_REDIS_HOST)s
user=www-data
[program:activate-collabora]
stdout_logfile=/dev/stdout
@@ -35,3 +39,4 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/activate-collabora.sh
user=www-data

View File

@@ -1,2 +1,4 @@
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
FROM onlyoffice/documentserver:7.1.1.23
FROM onlyoffice/documentserver:7.2.1.34
HEALTHCHECK CMD curl -skfI localhost || exit 1

View File

@@ -1,7 +1,7 @@
# From https://github.com/docker-library/postgres/blob/master/13/alpine/Dockerfile
FROM postgres:14.5-alpine
FROM postgres:14.6-alpine
RUN apk add --update --no-cache bash openssl shadow netcat-openbsd grep
RUN apk add --update --no-cache bash openssl shadow netcat-openbsd grep mawk
# We need to use the same gid and uid as on old installations
RUN set -ex; \
@@ -31,3 +31,5 @@ RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER postgres
ENTRYPOINT ["start.sh"]
HEALTHCHECK CMD psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/$POSTGRES_DB" -c "select now()" || exit 1

View File

@@ -9,6 +9,8 @@ export PGPASSWORD="$POSTGRES_PASSWORD"
# Don't start database as long as backup is running
while [ -f "$DUMP_DIR/backup-is-running" ]; do
echo "Waiting for backup container to finish..."
echo "If this is incorrect because the backup container is not running anymore (because it was forcefully killed), you might delete the lock file which is by default stored here:"
echo "/var/lib/docker/volumes/nextcloud_aio_database_dump/_data/backup-is-running"
sleep 10
done
@@ -110,6 +112,13 @@ if ! [ -f "$DATADIR/PG_VERSION" ] && ! [ -f "$DUMP_FILE" ]; then
rm -rf "${DATADIR:?}/"*
fi
echo "Setting max connections..."
MEMORY=$(mawk '/MemTotal/ {printf "%d", $2/1024}' /proc/meminfo)
MAX_CONNECTIONS=$((MEMORY/50+3))
if [ -n "$MAX_CONNECTIONS" ]; then
sed -i "s|^max_connections =.*|max_connections = $MAX_CONNECTIONS|" "/var/lib/postgresql/data/postgresql.conf"
fi
# Catch docker stop attempts
trap 'true' SIGINT SIGTERM

View File

@@ -11,3 +11,5 @@ RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER redis
ENTRYPOINT ["start.sh"]
HEALTHCHECK CMD redis-cli -a $REDIS_HOST_PASSWORD PING || exit 1

View File

@@ -1,4 +1,4 @@
FROM ubuntu:focal-20220801
FROM ubuntu:focal-20221019
RUN set -ex; \
\
@@ -9,6 +9,7 @@ RUN set -ex; \
supervisor \
curl \
ca-certificates \
netcat \
; \
rm -rf /var/lib/apt/lists/*
@@ -61,6 +62,11 @@ RUN mkdir -p /etc/nats; \
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
# Set default talk port https://github.com/nextcloud/all-in-one/issues/1011
ENV TALK_PORT=3478
USER talk
ENTRYPOINT ["start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD (nc -z localhost 8081 && nc -z localhost 8188 && nc -z localhost 4222 && nc -z localhost $TALK_PORT) || exit 1

View File

@@ -11,7 +11,7 @@ elif [ -z "$JANUS_API_KEY" ]; then
echo "You need to provide the JANUS_API_KEY."
exit 1
elif [ -z "$SIGNALING_SECRET" ]; then
echo "You need to provide the JANUS_API_KEY."
echo "You need to provide the SIGNALING_SECRET."
exit 1
fi
@@ -23,7 +23,7 @@ lt-cred-mech
use-auth-secret
static-auth-secret=$TURN_SECRET
realm=$NC_DOMAIN
total-quota=100
total-quota=0
bps-capacity=0
stale-nonce
no-multicast-peers
@@ -43,6 +43,8 @@ sed -i 's|#turn_type .*|turn_type = "udp"|g' /etc/janus/janus.jcfg
sed -i 's|#ice_ignore_list .*|ice_ignore_list = "udp"|g' /etc/janus/janus.jcfg
sed -i 's|#interface.*|interface = "lo"|g' /etc/janus/janus.transport.websockets.jcfg
sed -i 's|#ws_interface.*|ws_interface = "lo"|g' /etc/janus/janus.transport.websockets.jcfg
sed -i 's|certfile =|#certfile =|g' /etc/janus/janus.transport.mqtt.jcfg
sed -i 's|keyfile =|#keyfile =|g' /etc/janus/janus.transport.mqtt.jcfg
set +x
# Signling

View File

@@ -27,11 +27,11 @@ stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/usr/bin/janus --config=/etc/janus/janus.jcfg --disable-colors --daemon --log-stdout
command=/usr/bin/janus --config=/etc/janus/janus.jcfg --disable-colors --log-stdout
[program:signaling]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=signaling -config /etc/signaling/server.conf
command=signaling --config /etc/signaling/server.conf

View File

@@ -1,7 +1,7 @@
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
FROM containrrr/watchtower:1.4.0 as watchtower
FROM containrrr/watchtower:1.5.1 as watchtower
FROM alpine:3.16.2
FROM alpine:3.16.3
RUN apk add --update --no-cache bash
COPY --from=watchtower /watchtower /

View File

@@ -10,7 +10,7 @@ elif ! test -r /var/run/docker.sock; then
fi
if [ -n "$CONTAINER_TO_UPDATE" ]; then
exec /watchtower --cleanup --run-once "$CONTAINER_TO_UPDATE"
exec /watchtower --cleanup --debug --run-once "$CONTAINER_TO_UPDATE"
else
echo "'CONTAINER_TO_UPDATE' is not set. Cannot update anything."
exit 1

View File

@@ -1,12 +1,13 @@
## Developer channel
If you want to switch to the develop channel, you simply stop and delete the mastercontainer and create a new one with a changed tag to develop:
```shell
sudo docker run -it \
sudo docker run \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
-p 80:80 \
-p 8080:8080 \
-p 8443:8443 \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:develop

View File

@@ -11,7 +11,7 @@ services:
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed
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
- /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'!
ports:
- 80:80 # Can be removed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
- 8080:8080
@@ -19,11 +19,19 @@ services:
# environment: # Is needed when using any of the options below
# - APACHE_PORT=11000 # Is needed when running behind a reverse proxy. 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 reverse proxy that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
# - 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.
# - 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
# - 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.
# - DISABLE_BACKUP_SECTION=true # Setting this to true allows to hide the backup section in the AIO interface.
# - 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
# - NEXTCLOUD_MAX_TIME=3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud
# - NEXTCLOUD_MEMORY_LIMIT=512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud
# - NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nexcloud container (Useful e.g. for LDAPS) See See https://github.com/nextcloud/all-in-one#how-to-trust-user-defiend-certification-authorities-ca
# - NEXTCLOUD_STARTUP_APPS=twofactor_totp deck tasks calendar contacts apporder # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup
# - NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-packets-permanently-to-the-nextcloud-container
# - 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
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
# # 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

View File

@@ -11,4 +11,4 @@ You can run AIO with docker rootless by following the steps below.
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. 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. For changing Nextcloud's datadir, 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). This logically also applies to the NEXTCLOUD_MOUNT option.
**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

@@ -1,11 +1,11 @@
# Local instance
It is possible due to several reasons that you do not want or cannot open Nextcloud to the public internet. However AIO usually requires a valid certificate to work correctly. Below is discussed how you can achieve both: Having a valid certificate for Nextcloud and only using it locally.
It is possible due to several reasons that you do not want or cannot open Nextcloud to the public internet. However AIO requires a valid certificate to work correctly. Below is discussed how you can achieve both: Having a valid certificate for Nextcloud and only using it locally.
## 1. The recommended way
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
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. Now, entering the domain in the AIO-interface should work as expected and should allow you to continue with the setup

View File

@@ -4,6 +4,7 @@ services:
nextcloud-aio-apache:
container_name: nextcloud-aio-apache
depends_on:
- nextcloud-aio-onlyoffice
- nextcloud-aio-collabora
- nextcloud-aio-talk
- nextcloud-aio-nextcloud
@@ -16,7 +17,10 @@ services:
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_HOST=nextcloud-aio-talk
- APACHE_PORT=${APACHE_PORT}
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- TZ=${TIMEZONE}
- APACHE_MAX_SIZE=${APACHE_MAX_SIZE}
- APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME}
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw
@@ -47,11 +51,14 @@ services:
depends_on:
- nextcloud-aio-database
- nextcloud-aio-redis
- nextcloud-aio-fulltextsearch
- nextcloud-aio-imaginary
image: nextcloud/aio-nextcloud:latest-arm64
volumes:
- nextcloud_aio_nextcloud:/var/www/html:rw
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
- ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw
- ${NEXTCLOUD_TRUSTED_CACERTS_DIR}:/usr/local/share/ca-certificates:ro
environment:
- POSTGRES_HOST=nextcloud-aio-database
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
@@ -68,14 +75,28 @@ services:
- OVERWRITEPROTOCOL=https
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- ONLYOFFICE_SECRET=${ONLYOFFICE_SECRET}
- AIO_URL=${AIO_URL}
- NEXTCLOUD_MOUNT=${NEXTCLOUD_MOUNT}
- ONLYOFFICE_ENABLED=${ONLYOFFICE_ENABLED}
- COLLABORA_ENABLED=${COLLABORA_ENABLED}
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_ENABLED=${TALK_ENABLED}
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- UPDATE_NEXTCLOUD_APPS=${UPDATE_NEXTCLOUD_APPS}
- TZ=${TIMEZONE}
- TALK_PORT=${TALK_PORT}
- IMAGINARY_ENABLED=${IMAGINARY_ENABLED}
- IMAGINARY_HOST=nextcloud-aio-imaginary
- PHP_UPLOAD_LIMIT=${NEXTCLOUD_UPLOAD_LIMIT}
- PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT}
- FULLTEXTSEARCH_ENABLED=${FULLTEXTSEARCH_ENABLED}
- FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch
- PHP_MAX_TIME=${NEXTCLOUD_MAX_TIME}
- TRUSTED_CACERTS_DIR=${NEXTCLOUD_TRUSTED_CACERTS_DIR}
- STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS}
- ADDITIONAL_APKS=${NEXTCLOUD_ADDITIONAL_APKS}
- ADDITIONAL_PHP_EXTENSIONS=${NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS}
stop_grace_period: 10s
restart: unless-stopped
networks:
@@ -97,7 +118,7 @@ services:
image: nextcloud/aio-collabora:latest-arm64
environment:
- aliasgroup1=https://${NC_DOMAIN}:443
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true ${COLLABORA_SECCOMP_POLICY}
- dictionaries=${COLLABORA_DICTIONARIES}
- TZ=${TIMEZONE}
stop_grace_period: 10s
@@ -123,6 +144,45 @@ services:
networks:
- nextcloud-aio
nextcloud-aio-onlyoffice:
container_name: nextcloud-aio-onlyoffice
image: nextcloud/aio-onlyoffice:latest-arm64
environment:
- TZ=${TIMEZONE}
- JWT_ENABLED=true
- JWT_HEADER=AuthorizationJwt
- JWT_SECRET=${ONLYOFFICE_SECRET}
volumes:
- nextcloud_aio_onlyoffice:/var/lib/onlyoffice:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-imaginary:
container_name: nextcloud-aio-imaginary
image: nextcloud/aio-imaginary:latest-arm64
environment:
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-fulltextsearch:
container_name: nextcloud-aio-fulltextsearch
image: nextcloud/aio-fulltextsearch:latest-arm64
environment:
- TZ=${TIMEZONE}
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms1024M -Xmx1024M
volumes:
- nextcloud_aio_elasticsearch:/usr/share/elasticsearch/data:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
volumes:
nextcloud_aio_apache:
name: nextcloud_aio_apache
@@ -130,8 +190,12 @@ volumes:
name: nextcloud_aio_database
nextcloud_aio_database_dump:
name: nextcloud_aio_database_dump
nextcloud_aio_elasticsearch:
name: nextcloud_aio_elasticsearch
nextcloud_aio_nextcloud:
name: nextcloud_aio_nextcloud
nextcloud_aio_onlyoffice:
name: nextcloud_aio_onlyoffice
nextcloud_aio_nextcloud_data:
name: nextcloud_aio_nextcloud_data

View File

@@ -6,7 +6,6 @@ services:
depends_on:
- nextcloud-aio-onlyoffice
- nextcloud-aio-collabora
- nextcloud-aio-clamav
- nextcloud-aio-talk
- nextcloud-aio-nextcloud
image: nextcloud/aio-apache:latest
@@ -20,6 +19,8 @@ services:
- APACHE_PORT=${APACHE_PORT}
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- TZ=${TIMEZONE}
- APACHE_MAX_SIZE=${APACHE_MAX_SIZE}
- APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME}
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw
@@ -50,11 +51,15 @@ services:
depends_on:
- nextcloud-aio-database
- nextcloud-aio-redis
- nextcloud-aio-clamav
- nextcloud-aio-fulltextsearch
- nextcloud-aio-imaginary
image: nextcloud/aio-nextcloud:latest
volumes:
- nextcloud_aio_nextcloud:/var/www/html:rw
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
- ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw
- ${NEXTCLOUD_TRUSTED_CACERTS_DIR}:/usr/local/share/ca-certificates:ro
environment:
- POSTGRES_HOST=nextcloud-aio-database
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
@@ -84,6 +89,17 @@ services:
- UPDATE_NEXTCLOUD_APPS=${UPDATE_NEXTCLOUD_APPS}
- TZ=${TIMEZONE}
- TALK_PORT=${TALK_PORT}
- IMAGINARY_ENABLED=${IMAGINARY_ENABLED}
- IMAGINARY_HOST=nextcloud-aio-imaginary
- PHP_UPLOAD_LIMIT=${NEXTCLOUD_UPLOAD_LIMIT}
- PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT}
- FULLTEXTSEARCH_ENABLED=${FULLTEXTSEARCH_ENABLED}
- FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch
- PHP_MAX_TIME=${NEXTCLOUD_MAX_TIME}
- TRUSTED_CACERTS_DIR=${NEXTCLOUD_TRUSTED_CACERTS_DIR}
- STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS}
- ADDITIONAL_APKS=${NEXTCLOUD_ADDITIONAL_APKS}
- ADDITIONAL_PHP_EXTENSIONS=${NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS}
stop_grace_period: 10s
restart: unless-stopped
networks:
@@ -105,7 +121,7 @@ services:
image: nextcloud/aio-collabora:latest
environment:
- aliasgroup1=https://${NC_DOMAIN}:443
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true ${COLLABORA_SECCOMP_POLICY}
- dictionaries=${COLLABORA_DICTIONARIES}
- TZ=${TIMEZONE}
stop_grace_period: 10s
@@ -157,6 +173,30 @@ services:
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-imaginary:
container_name: nextcloud-aio-imaginary
image: nextcloud/aio-imaginary:latest
environment:
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-fulltextsearch:
container_name: nextcloud-aio-fulltextsearch
image: nextcloud/aio-fulltextsearch:latest
environment:
- TZ=${TIMEZONE}
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms1024M -Xmx1024M
volumes:
- nextcloud_aio_elasticsearch:/usr/share/elasticsearch/data:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
volumes:
nextcloud_aio_apache:
@@ -167,6 +207,8 @@ volumes:
name: nextcloud_aio_database
nextcloud_aio_database_dump:
name: nextcloud_aio_database_dump
nextcloud_aio_elasticsearch:
name: nextcloud_aio_elasticsearch
nextcloud_aio_nextcloud:
name: nextcloud_aio_nextcloud
nextcloud_aio_onlyoffice:

View File

@@ -1,15 +1,26 @@
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_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a reverse proxy.
CLAMAV_ENABLED=no # Setting this to "yes" 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
COLLABORA_ENABLED=yes # Setting this to "yes" enables the option in Nextcloud automatically.
COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
DATABASE_PASSWORD= # TODO! This needs to be a unique and good password!
FULLTEXTSEARCH_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
IMAGINARY_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
JANUS_API_KEY= # TODO! This needs to be a unique and good password!
NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.
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.
NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_data # You can change this to e.g. "/mnt/ncdata" to map it to a location on your host. It needs to be adjusted before the first startup and never afterwards!
NEXTCLOUD_MAX_TIME=3600 # This allows to change the upload time limit of the Nextcloud container
NEXTCLOUD_MEMORY_LIMIT=512M # This allows to change the PHP memory limit of the Nextcloud container
NEXTCLOUD_MOUNT=/mnt/ # This allows the Nextcloud container to access directories on the host. It must never be equal to the value of NEXTCLOUD_DATADIR!
NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially created Nextcloud admin with username "admin".
NEXTCLOUD_STARTUP_APPS=twofactor_totp deck tasks calendar contacts apporder # Allows to modify the Nextcloud apps that are installed on starting AIO the first time
NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.
NEXTCLOUD_UPLOAD_LIMIT=10G # This allows to change the upload limit of the Nextcloud container
ONLYOFFICE_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
ONLYOFFICE_SECRET= # TODO! This needs to be a unique and good password!
REDIS_PASSWORD= # TODO! This needs to be a unique and good password!

View File

@@ -62,6 +62,11 @@ sed -i 's|COLLABORA_ENABLED=no|COLLABORA_ENABLED=yes|' sample.conf
sed -i 's|COLLABORA_DICTIONARIES=|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|' sample.conf
sed -i 's|NEXTCLOUD_DATADIR=|NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_data # You can change this to e.g. "/mnt/ncdata" to map it to a location on your host. It needs to be adjusted before the first startup and never afterwards!|' sample.conf
sed -i 's|NEXTCLOUD_MOUNT=|NEXTCLOUD_MOUNT=/mnt/ # This allows the Nextcloud container to access directories on the host. It must never be equal to the value of NEXTCLOUD_DATADIR!|' sample.conf
sed -i 's|NEXTCLOUD_UPLOAD_LIMIT=|NEXTCLOUD_UPLOAD_LIMIT=10G # This allows to change the upload limit of the Nextcloud container|' sample.conf
sed -i 's|NEXTCLOUD_MEMORY_LIMIT=|NEXTCLOUD_MEMORY_LIMIT=512M # This allows to change the PHP memory limit of the Nextcloud container|' sample.conf
sed -i 's|APACHE_MAX_SIZE=|APACHE_MAX_SIZE=10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT|' sample.conf
sed -i 's|NEXTCLOUD_MAX_TIME=|NEXTCLOUD_MAX_TIME=3600 # This allows to change the upload time limit of the Nextcloud container|' sample.conf
sed -i 's|NEXTCLOUD_TRUSTED_CACERTS_DIR=|NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.|' sample.conf
sed -i 's|UPDATE_NEXTCLOUD_APPS=|UPDATE_NEXTCLOUD_APPS=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup on saturdays.|' sample.conf
sed -i 's|APACHE_PORT=|APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a reverse proxy.|' sample.conf
sed -i 's|TALK_PORT=|TALK_PORT=3478 # This allows to adjust the port that the talk container is using.|' sample.conf
@@ -70,6 +75,10 @@ sed -i 's|AIO_URL=|AIO_URL=localhost # Has no function but needs to be
sed -i 's|NC_DOMAIN=|NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.|' sample.conf
sed -i 's|NEXTCLOUD_PASSWORD=|NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially created Nextcloud admin with username "admin".|' sample.conf
sed -i 's|TIMEZONE=|TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.|' sample.conf
sed -i 's|COLLABORA_SECCOMP_POLICY=|COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.|' sample.conf
sed -i 's|NEXTCLOUD_STARTUP_APPS=|NEXTCLOUD_STARTUP_APPS=twofactor_totp deck tasks calendar contacts apporder # Allows to modify the Nextcloud apps that are installed on starting AIO the first time|' sample.conf
sed -i 's|NEXTCLOUD_ADDITIONAL_APKS=|NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.|' sample.conf
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|=$|= # TODO! This needs to be a unique and good password!|' sample.conf
cat sample.conf
@@ -115,12 +124,8 @@ sed -i '/image:/s/$/:latest/' latest.yml
cat containers.yml > latest-arm64.yml
sed -i '/image:/s/$/:latest-arm64/' latest-arm64.yml
sed -i '/ nextcloud-aio-clamav:/,/^$/d' latest-arm64.yml
sed -i '/ nextcloud-aio-clamav:/,/^ $/d' latest-arm64.yml
sed -i '/nextcloud[-_]aio[-_]clamav/d' latest-arm64.yml
sed -i '/CLAMAV_ENABLED/d' latest-arm64.yml
sed -i '/ nextcloud-aio-onlyoffice:/,/^$/d' latest-arm64.yml
sed -i '/nextcloud[-_]aio[-_]onlyoffice/d' latest-arm64.yml
sed -i '/ONLYOFFICE_ENABLED/d' latest-arm64.yml
sed -i '/ONLYOFFICE_SECRET/d' latest-arm64.yml
rm containers.yml

View File

@@ -3,7 +3,7 @@
There are basically three ways how to migrate from an already existing Nextcloud installation to Nextcloud AIO:
1. Migrate only the files which is the easiest way
1. Migrate the files and the database which is much more complicated
1. Migrate the files and the database which is much more complicated (and doesn't work on former snap installations)
1. Use the user_migration app that allows to migrate some of the user's data from a former instance to a new instance but needs to be done manually for each user
## Migrate only the files
@@ -17,10 +17,10 @@ The procedure for migrating only the files works like this:
1. Restore the datadirectory of your former instance into the following directory: `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/`
1. Next, run `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` to apply the correct permissions
1. Start the containers again and wait until all containers are running
1. Run `sudo docker exec -it nextcloud-aio-nextcloud php occ files:scan-app-data && sudo docker exec -it nextcloud-aio-nextcloud php occ files:scan --all` in order to scan all files in the datadirectory.
1. Run `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan-app-data && sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all` in order to scan all files in the datadirectory.
## Migrate the files and the database
**Please note**: this is much more complicated than migrating only the files and also not as failproof so be warned!
**Please note**: this is much more complicated than migrating only the files and also not as failproof so be warned! Also, this will not work on former snap installations as the snap is read-only and thus you cannot install the necessary `pdo_pgsql` PHP extension.
The procedure for migrating the files and the database works like this:
1. Make sure that your old instance is on exactly the same version like the version used in Nextcloud AIO. (e.g. 23.0.0) You can find the used version here: [click here](https://github.com/nextcloud/all-in-one/search?l=Dockerfile&q=NEXTCLOUD_VERSION&type=). If not, simply upgrade your former installation to that version or wait until the version used in Nextcloud AIO got updated to the same version of your former installation or the other way around.
@@ -44,8 +44,8 @@ The procedure for migrating the files and the database works like this:
```
occ db:convert-type --all-apps --password "$PG_PASSWORD" pgsql "$PG_USER" 127.0.0.1 "$PG_DATABASE"
```
**Please note:** You might need to change the ip-address `127.0.0.1` based on your exact installation.<br>
Further information on the conversion is additionally available here: https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/db_conversion.html#converting-database-type
**Please note:** You might need to change the ip-address `127.0.0.1` and adjust the occ command (`occ`) based on your exact installation. Further information on the conversion is additionally available here: https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/db_conversion.html#converting-database-type<br>
**Troubleshooting:** If you get an error that it could not find a driver for the conversion, you most likely need to install the PHP extension `pdo_pgsql`.
1. Hopefully does the conversion finish successfully. If not, simply restore your old Nextcloud installation from backup. If yes, you should now log in to your Nextcloud and test if everything works and if all data has been converted successfully.
1. If everything works as expected, feel free to continue with the steps below.
1. Now, run a pg_dump to get an export of your current database. Something like the following command should work:
@@ -72,8 +72,8 @@ The procedure for migrating the files and the database works like this:
sudo chmod 777 /var/lib/docker/volumes/nextcloud_aio_database_dump/_data/database-dump.sql
sudo rm /var/lib/docker/volumes/nextcloud_aio_database_dump/_data/initial-cleanup-done
```
1. If the commands above were executed successfully, restore the datadirectory of your former instance into the following directory: `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/`
1. Next, run `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*`to apply the correct permissions
1. If the commands above were executed successfully, restore the datadirectory of your former instance into your datadirectory: `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/`. Be aware if you have changed the standard path of your datadirectory like described [here](https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir).
1. Next, run `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*`to apply the correct permissions on the datadirectory.
1. Edit the Nextcloud AIO config.php file that is stored in `/var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/config/config.php` and modify only `passwordsalt`, `secret`, `instanceid` and set it to the old values that you used on your old installation. If you are brave, feel free to modify further values e.g. add your old LDAP config or S3 storage config. (Some things like Mail server config can be added back using Nextcloud's webinterface later on).
1. When you are done and saved your changes to the file, finally start the containers again and wait until all containers are running.
1. As last step, install all apps again that were installed before on your old instance by using the webinterface.

View File

@@ -8,7 +8,7 @@ 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 `-p 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 `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.

View File

@@ -21,6 +21,7 @@
"scripts": {
"psalm": "psalm --threads=1",
"psalm:update-baseline": "psalm --threads=1 --update-baseline",
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l"
"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.0 \\;"
}
}

165
php/composer.lock generated
View File

@@ -8,16 +8,16 @@
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.4.5",
"version": "7.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82"
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"shasum": ""
},
"require": {
@@ -32,10 +32,10 @@
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"bamarni/composer-bin-plugin": "^1.8.1",
"ext-curl": "*",
"php-http/client-integration-tests": "^3.0",
"phpunit/phpunit": "^8.5.5 || ^9.3.5",
"phpunit/phpunit": "^8.5.29 || ^9.5.23",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -45,8 +45,12 @@
},
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "7.4-dev"
"dev-master": "7.5-dev"
}
},
"autoload": {
@@ -112,7 +116,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.4.5"
"source": "https://github.com/guzzle/guzzle/tree/7.5.0"
},
"funding": [
{
@@ -128,20 +132,20 @@
"type": "tidelift"
}
],
"time": "2022-06-20T22:16:13+00:00"
"time": "2022-08-28T15:39:27+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "1.5.1",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
"reference": "b94b2807d85443f9719887892882d0329d1e2598"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
"reference": "b94b2807d85443f9719887892882d0329d1e2598",
"shasum": ""
},
"require": {
@@ -196,7 +200,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/1.5.1"
"source": "https://github.com/guzzle/promises/tree/1.5.2"
},
"funding": [
{
@@ -212,20 +216,20 @@
"type": "tidelift"
}
],
"time": "2021-10-22T20:56:57+00:00"
"time": "2022-08-28T14:55:35+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.4.0",
"version": "2.4.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "13388f00956b1503577598873fffb5ae994b5737"
"reference": "67c26b443f348a51926030c83481b85718457d3d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737",
"reference": "13388f00956b1503577598873fffb5ae994b5737",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
"reference": "67c26b443f348a51926030c83481b85718457d3d",
"shasum": ""
},
"require": {
@@ -239,15 +243,19 @@
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"bamarni/composer-bin-plugin": "^1.8.1",
"http-interop/http-factory-tests": "^0.9",
"phpunit/phpunit": "^8.5.8 || ^9.3.10"
"phpunit/phpunit": "^8.5.29 || ^9.5.23"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "2.4-dev"
}
@@ -311,7 +319,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.4.0"
"source": "https://github.com/guzzle/psr7/tree/2.4.3"
},
"funding": [
{
@@ -327,7 +335,7 @@
"type": "tidelift"
}
],
"time": "2022-06-20T21:43:11+00:00"
"time": "2022-10-26T14:07:24+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -389,25 +397,26 @@
},
{
"name": "laravel/serializable-closure",
"version": "v1.2.0",
"version": "v1.2.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "09f0e9fb61829f628205b7c94906c28740ff9540"
"reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540",
"reference": "09f0e9fb61829f628205b7c94906c28740ff9540",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/47afb7fae28ed29057fdca37e16a84f90cc62fae",
"reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0"
},
"require-dev": {
"pestphp/pest": "^1.18",
"phpstan/phpstan": "^0.12.98",
"symfony/var-dumper": "^5.3"
"nesbot/carbon": "^2.61",
"pestphp/pest": "^1.21.3",
"phpstan/phpstan": "^1.8.2",
"symfony/var-dumper": "^5.4.11"
},
"type": "library",
"extra": {
@@ -444,7 +453,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2022-05-16T17:09:47+00:00"
"time": "2022-09-08T13:45:54+00:00"
},
{
"name": "nikic/fast-route",
@@ -1128,30 +1137,30 @@
},
{
"name": "slim/csrf",
"version": "1.2.1",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/slimphp/Slim-Csrf.git",
"reference": "ee811a258ecee807846aefc51aabc1963ae0a400"
"reference": "ebaaf295fd6d7224078d8ae3bba45329b31798c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/ee811a258ecee807846aefc51aabc1963ae0a400",
"reference": "ee811a258ecee807846aefc51aabc1963ae0a400",
"url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/ebaaf295fd6d7224078d8ae3bba45329b31798c7",
"reference": "ebaaf295fd6d7224078d8ae3bba45329b31798c7",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0",
"php": "^7.4 || ^8.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0",
"psr/http-server-handler": "^1.0",
"psr/http-server-middleware": "^1.0"
},
"require-dev": {
"phpspec/prophecy": "^1.12",
"phpspec/prophecy": "^1.15",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "^3.5.8"
"squizlabs/php_codesniffer": "^3.7"
},
"type": "library",
"autoload": {
@@ -1171,7 +1180,7 @@
}
],
"description": "Slim Framework 4 CSRF protection PSR-15 middleware",
"homepage": "http://slimframework.com",
"homepage": "https://www.slimframework.com",
"keywords": [
"csrf",
"framework",
@@ -1180,22 +1189,22 @@
],
"support": {
"issues": "https://github.com/slimphp/Slim-Csrf/issues",
"source": "https://github.com/slimphp/Slim-Csrf/tree/1.2.1"
"source": "https://github.com/slimphp/Slim-Csrf/tree/1.3.0"
},
"time": "2021-02-04T15:37:21+00:00"
"time": "2022-11-05T19:27:53+00:00"
},
{
"name": "slim/slim",
"version": "4.10.0",
"version": "4.11.0",
"source": {
"type": "git",
"url": "https://github.com/slimphp/Slim.git",
"reference": "0dfc7d2fdf2553b361d864d51af3fe8a6ad168b0"
"reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/slimphp/Slim/zipball/0dfc7d2fdf2553b361d864d51af3fe8a6ad168b0",
"reference": "0dfc7d2fdf2553b361d864d51af3fe8a6ad168b0",
"url": "https://api.github.com/repos/slimphp/Slim/zipball/b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7",
"reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7",
"shasum": ""
},
"require": {
@@ -1210,21 +1219,21 @@
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"require-dev": {
"adriansuter/php-autoload-override": "^1.2",
"adriansuter/php-autoload-override": "^1.3",
"ext-simplexml": "*",
"guzzlehttp/psr7": "^2.1",
"guzzlehttp/psr7": "^2.4",
"httpsoft/http-message": "^1.0",
"httpsoft/http-server-request": "^1.0",
"laminas/laminas-diactoros": "^2.8",
"laminas/laminas-diactoros": "^2.17",
"nyholm/psr7": "^1.5",
"nyholm/psr7-server": "^1.0",
"phpspec/prophecy": "^1.15",
"phpspec/prophecy-phpunit": "^2.0",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan": "^1.8",
"phpunit/phpunit": "^9.5",
"slim/http": "^1.2",
"slim/psr7": "^1.5",
"squizlabs/php_codesniffer": "^3.6"
"squizlabs/php_codesniffer": "^3.7"
},
"suggest": {
"ext-simplexml": "Needed to support XML format in BodyParsingMiddleware",
@@ -1297,7 +1306,7 @@
"type": "tidelift"
}
],
"time": "2022-03-14T14:18:23+00:00"
"time": "2022-11-06T16:33:39+00:00"
},
{
"name": "slim/twig-view",
@@ -1433,16 +1442,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"shasum": ""
},
"require": {
@@ -1457,7 +1466,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1495,7 +1504,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
},
"funding": [
{
@@ -1511,20 +1520,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"shasum": ""
},
"require": {
@@ -1539,7 +1548,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1578,7 +1587,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
},
"funding": [
{
@@ -1594,20 +1603,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1"
"reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1",
"reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
"reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
"shasum": ""
},
"require": {
@@ -1616,7 +1625,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1657,7 +1666,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
},
"funding": [
{
@@ -1673,20 +1682,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "twig/twig",
"version": "v3.4.2",
"version": "v3.4.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077"
"reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
"reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58",
"reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58",
"shasum": ""
},
"require": {
@@ -1737,7 +1746,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.4.2"
"source": "https://github.com/twigphp/Twig/tree/v3.4.3"
},
"funding": [
{
@@ -1749,7 +1758,7 @@
"type": "tidelift"
}
],
"time": "2022-08-12T06:47:24+00:00"
"time": "2022-09-28T08:42:51+00:00"
}
],
"packages-dev": [],

View File

@@ -5,7 +5,6 @@
"dependsOn": [
"nextcloud-aio-onlyoffice",
"nextcloud-aio-collabora",
"nextcloud-aio-clamav",
"nextcloud-aio-talk",
"nextcloud-aio-nextcloud"
],
@@ -25,7 +24,9 @@
"TALK_HOST=nextcloud-aio-talk",
"APACHE_PORT=%APACHE_PORT%",
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
"TZ=%TIMEZONE%"
"TZ=%TIMEZONE%",
"APACHE_MAX_SIZE=%APACHE_MAX_SIZE%",
"APACHE_MAX_TIME=%NEXTCLOUD_MAX_TIME%"
],
"volumes": [
{
@@ -80,7 +81,10 @@
"identifier": "nextcloud-aio-nextcloud",
"dependsOn": [
"nextcloud-aio-database",
"nextcloud-aio-redis"
"nextcloud-aio-redis",
"nextcloud-aio-clamav",
"nextcloud-aio-fulltextsearch",
"nextcloud-aio-imaginary"
],
"displayName": "Nextcloud",
"containerName": "nextcloud/aio-nextcloud",
@@ -110,6 +114,11 @@
"name": "%NEXTCLOUD_MOUNT%",
"location": "%NEXTCLOUD_MOUNT%",
"writeable": true
},
{
"name": "%NEXTCLOUD_TRUSTED_CACERTS_DIR%",
"location": "/usr/local/share/ca-certificates",
"writeable": false
}
],
"environmentVariables": [
@@ -140,7 +149,18 @@
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
"UPDATE_NEXTCLOUD_APPS=%UPDATE_NEXTCLOUD_APPS%",
"TZ=%TIMEZONE%",
"TALK_PORT=%TALK_PORT%"
"TALK_PORT=%TALK_PORT%",
"IMAGINARY_ENABLED=%IMAGINARY_ENABLED%",
"IMAGINARY_HOST=nextcloud-aio-imaginary",
"PHP_UPLOAD_LIMIT=%NEXTCLOUD_UPLOAD_LIMIT%",
"PHP_MEMORY_LIMIT=%NEXTCLOUD_MEMORY_LIMIT%",
"FULLTEXTSEARCH_ENABLED=%FULLTEXTSEARCH_ENABLED%",
"FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch",
"PHP_MAX_TIME=%NEXTCLOUD_MAX_TIME%",
"TRUSTED_CACERTS_DIR=%NEXTCLOUD_TRUSTED_CACERTS_DIR%",
"STARTUP_APPS=%NEXTCLOUD_STARTUP_APPS%",
"ADDITIONAL_APKS=%NEXTCLOUD_ADDITIONAL_APKS%",
"ADDITIONAL_PHP_EXTENSIONS=%NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS%"
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
@@ -177,7 +197,7 @@
],
"environmentVariables": [
"aliasgroup1=https://%NC_DOMAIN%:443",
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true",
"extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY%",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%"
],
@@ -226,7 +246,9 @@
"BORG_PASSWORD=%BORGBACKUP_PASSWORD%",
"BORG_MODE=%BORGBACKUP_MODE%",
"SELECTED_RESTORE_TIME=%SELECTED_RESTORE_TIME%",
"BACKUP_RESTORE_PASSWORD=%BACKUP_RESTORE_PASSWORD%"
"BACKUP_RESTORE_PASSWORD=%BACKUP_RESTORE_PASSWORD%",
"ADDITIONAL_DIRECTORIES_BACKUP=%ADDITIONAL_DIRECTORIES_BACKUP%",
"BORGBACKUP_HOST_LOCATION=%BORGBACKUP_HOST_LOCATION%"
],
"volumes": [
{
@@ -367,6 +389,48 @@
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
},
{
"identifier": "nextcloud-aio-imaginary",
"dependsOn": [],
"displayName": "Imaginary",
"containerName": "nextcloud/aio-imaginary",
"ports": [],
"internalPorts": [
"9000"
],
"environmentVariables": [
"TZ=%TIMEZONE%"
],
"volumes": [],
"secrets": [],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
},
{
"identifier": "nextcloud-aio-fulltextsearch",
"dependsOn": [],
"displayName": "Fulltextsearch",
"containerName": "nextcloud/aio-fulltextsearch",
"ports": [],
"internalPorts": [
"9200"
],
"environmentVariables": [
"TZ=%TIMEZONE%",
"discovery.type=single-node",
"ES_JAVA_OPTS=-Xms1024M -Xmx1024M"
],
"volumes": [
{
"name": "nextcloud_aio_elasticsearch",
"location": "/usr/share/elasticsearch/data",
"writeable": true
}
],
"secrets": [],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
}
]
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="4.26.0@6998fabb2bf528b65777bf9941920888d23c03ac">
<files psalm-version="5.1.0@4defa177c89397c5e14737a80fe4896584130674">
<file src="public/index.php">
<MissingClosureParamType occurrences="10">
<code>$args</code>
@@ -30,12 +30,6 @@
<code>$args</code>
<code>$args</code>
</MissingParamType>
<PossiblyInvalidArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['selected_restore_time']</code>
</PossiblyInvalidArrayAccess>
<PossiblyNullArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['selected_restore_time']</code>
</PossiblyNullArrayAccess>
</file>
<file src="src/Controller/LoginController.php">
<MissingParamType occurrences="3">
@@ -43,15 +37,6 @@
<code>$args</code>
<code>$args</code>
</MissingParamType>
<PossiblyInvalidArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['password']</code>
</PossiblyInvalidArrayAccess>
<PossiblyNullArgument occurrences="1">
<code>$password</code>
</PossiblyNullArgument>
<PossiblyNullArrayAccess occurrences="1">
<code>$request-&gt;getParsedBody()['password']</code>
</PossiblyNullArrayAccess>
</file>
<file src="src/Docker/DockerActionManager.php">
<InvalidReturnType occurrences="1">
@@ -64,11 +49,6 @@
<code>$container-&gt;GetInternalPorts() !== null</code>
</RedundantCondition>
</file>
<file src="src/Middleware/AuthMiddleware.php">
<UndefinedInterfaceMethod occurrences="1">
<code>withStatus</code>
</UndefinedInterfaceMethod>
</file>
<file src="src/Twig/ClassExtension.php">
<MissingParamType occurrences="1">
<code>$object</code>

View File

@@ -0,0 +1,5 @@
document.addEventListener("DOMContentLoaded", function(event) {
// Fulltextsearch
var fulltextsearch = document.getElementById("fulltextsearch");
fulltextsearch.disabled = true;
});

View File

@@ -0,0 +1,5 @@
document.addEventListener("DOMContentLoaded", function(event) {
// Imaginary
var imaginary = document.getElementById("imaginary");
imaginary.disabled = true;
});

View File

@@ -1,5 +1,9 @@
document.addEventListener("DOMContentLoaded", function(event) {
// OnlyOffice
var onlyoffice = document.getElementById("onlyoffice");
onlyoffice.disabled = true;
document.addEventListener("DOMContentLoaded", function(event) {
// OnlyOffice
try {
var onlyoffice = document.getElementById("onlyoffice");
onlyoffice.disabled = true;
} catch (error) {
// console.error(error);
}
});

View File

@@ -22,6 +22,9 @@ ini_set('session.save_path', $dataConst->GetSessionDirectory());
// Auto logout on browser close
ini_set('session.cookie_lifetime', '0');
# Keep session for 24h max
ini_set('session.gc_maxlifetime', '86400');
// Create app
AppFactory::setContainer($container);
$app = AppFactory::create();
@@ -102,6 +105,9 @@ $app->get('/containers', function ($request, $response, $args) use ($container)
'collabora_dictionaries' => $configurationManager->GetCollaboraDictionaries(),
'automatic_updates' => $configurationManager->areAutomaticUpdatesEnabled(),
'is_backup_section_enabled' => $configurationManager->isBackupSectionEnabled(),
'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled(),
'is_fulltextsearch_enabled' => $configurationManager->isFulltextsearchEnabled(),
'additional_backup_directories' => $configurationManager->GetAdditionalBackupDirectoriesString(),
]);
})->setName('profile');
$app->get('/login', function ($request, $response, $args) use ($container) {

View File

@@ -13,8 +13,12 @@ document.addEventListener("DOMContentLoaded", function(event) {
clamav.addEventListener('change', makeOptionsFormSubmitVisible);
// OnlyOffice
var onlyoffice = document.getElementById("onlyoffice");
onlyoffice.addEventListener('change', makeOptionsFormSubmitVisible);
try {
var onlyoffice = document.getElementById("onlyoffice");
onlyoffice.addEventListener('change', makeOptionsFormSubmitVisible);
} catch (error) {
// console.error(error);
}
// Collabora
var collabora = document.getElementById("collabora");
@@ -23,4 +27,12 @@ document.addEventListener("DOMContentLoaded", function(event) {
// Talk
var talk = document.getElementById("talk");
talk.addEventListener('change', makeOptionsFormSubmitVisible);
// Imaginary
var imaginary = document.getElementById("imaginary");
imaginary.addEventListener('change', makeOptionsFormSubmitVisible);
// Fulltextsearch
var fulltextsearch = document.getElementById("fulltextsearch");
fulltextsearch.addEventListener('change', makeOptionsFormSubmitVisible);
});

View File

@@ -0,0 +1,12 @@
const channel = new BroadcastChannel('tab')
channel.postMessage('second-tab')
// note that listener is added after posting the message
channel.addEventListener('message', (msg) => {
if (msg.data === 'second-tab') {
// message received from 2nd tab
document.getElementById('overlay').classList.add('loading')
alert('Cannot open multiple instances. You can use AIO here by reloading the page.')
}
});

View File

@@ -3,6 +3,8 @@
namespace AIO\Auth;
use AIO\Data\ConfigurationManager;
use AIO\Data\DataConst;
use \DateTime;
class AuthManager {
private const SESSION_KEY = 'aio_authenticated';
@@ -21,6 +23,14 @@ class AuthManager {
}
public function SetAuthState(bool $isLoggedIn) : void {
if (!$this->IsAuthenticated() && $isLoggedIn === true) {
$date = new DateTime();
$dateTime = $date->getTimestamp();
$_SESSION['date_time'] = $dateTime;
file_put_contents(DataConst::GetSessionDateFile(), (string)$dateTime);
}
$_SESSION[self::SESSION_KEY] = $isLoggedIn;
}

View File

@@ -65,6 +65,14 @@ class ContainerDefinitionFetcher
if (!$this->configurationManager->isTalkEnabled()) {
continue;
}
} elseif ($entry['identifier'] === 'nextcloud-aio-imaginary') {
if (!$this->configurationManager->isImaginaryEnabled()) {
continue;
}
} elseif ($entry['identifier'] === 'nextcloud-aio-fulltextsearch') {
if (!$this->configurationManager->isFulltextsearchEnabled()) {
continue;
}
}
$ports = new ContainerPorts();
@@ -112,6 +120,11 @@ class ContainerDefinitionFetcher
if($value['name'] === '') {
continue;
}
} elseif ($value['name'] === '%NEXTCLOUD_TRUSTED_CACERTS_DIR%') {
$value['name'] = $this->configurationManager->GetTrustedCacertsDir();
if($value['name'] === '') {
continue;
}
}
if ($value['location'] === '%NEXTCLOUD_MOUNT%') {
$value['location'] = $this->configurationManager->GetNextcloudMount();
@@ -146,6 +159,14 @@ class ContainerDefinitionFetcher
if (!$this->configurationManager->isTalkEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-imaginary') {
if (!$this->configurationManager->isImaginaryEnabled()) {
continue;
}
} elseif ($value === 'nextcloud-aio-fulltextsearch') {
if (!$this->configurationManager->isFulltextsearchEnabled()) {
continue;
}
}
$dependsOn[] = $value;
}

View File

@@ -57,6 +57,11 @@ class ConfigurationController
$this->configurationManager->DeleteDailyBackupTime();
}
if (isset($request->getParsedBody()['additional_backup_directories'])) {
$additionalBackupDirectories = $request->getParsedBody()['additional_backup_directories'] ?? '';
$this->configurationManager->SetAdditionalBackupDirectories($additionalBackupDirectories);
}
if (isset($request->getParsedBody()['delete_timezone'])) {
$this->configurationManager->DeleteTimezone();
}
@@ -90,6 +95,16 @@ class ConfigurationController
} else {
$this->configurationManager->SetTalkEnabledState(0);
}
if (isset($request->getParsedBody()['imaginary'])) {
$this->configurationManager->SetImaginaryEnabledState(1);
} else {
$this->configurationManager->SetImaginaryEnabledState(0);
}
if (isset($request->getParsedBody()['fulltextsearch'])) {
$this->configurationManager->SetFulltextsearchEnabledState(1);
} else {
$this->configurationManager->SetFulltextsearchEnabledState(0);
}
}
if (isset($request->getParsedBody()['delete_collabora_dictionaries'])) {

View File

@@ -30,20 +30,19 @@ class DockerController
$container = $this->containerDefinitionFetcher->GetContainerById($id);
foreach($container->GetDependsOn() as $dependency) {
$this->PerformRecursiveContainerStart($dependency);
$this->PerformRecursiveContainerStart($dependency, $pullContainer);
}
if ($id === 'nextcloud-aio-database') {
if ($this->dockerActionManager->GetDatabasecontainerExitCode() > 0) {
$pullContainer = false;
error_log('Not pulling the latest database image because the container was not correctly shut down.');
}
}
$this->dockerActionManager->DeleteContainer($container);
$this->dockerActionManager->CreateVolumes($container);
if ($pullContainer) {
$this->dockerActionManager->PullContainer($container);
} else {
error_log('Not pulling the latest database image because the container was not correctly shut down.');
}
$this->dockerActionManager->CreateContainer($container);
$this->dockerActionManager->StartContainer($container);
@@ -86,20 +85,23 @@ class DockerController
}
public function StartBackupContainerCheck(Request $request, Response $response, $args) : Response {
$this->checkBackup();
return $response->withStatus(201)->withHeader('Location', '/');
}
public function checkBackup() : void {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'check';
$this->configurationManager->WriteConfig($config);
$id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id);
return $response->withStatus(201)->withHeader('Location', '/');
}
public function StartBackupContainerRestore(Request $request, Response $response, $args) : Response {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'restore';
$config['selected-restore-time'] = $request->getParsedBody()['selected_restore_time'];
$config['selected-restore-time'] = $request->getParsedBody()['selected_restore_time'] ?? '';
$this->configurationManager->WriteConfig($config);
$id = self::TOP_CONTAINER;

View File

@@ -23,7 +23,7 @@ class LoginController
if (!$this->dockerActionManager->isLoginAllowed()) {
return $response->withHeader('Location', '/')->withStatus(302);
}
$password = $request->getParsedBody()['password'];
$password = $request->getParsedBody()['password'] ?? '';
if($this->authManager->CheckCredentials($password)) {
$this->authManager->SetAuthState(true);
return $response->withHeader('Location', '/')->withStatus(302);
@@ -33,7 +33,7 @@ class LoginController
}
public function GetTryLogin(Request $request, Response $response, $args) : Response {
$token = $request->getQueryParams()['token'];
$token = $request->getQueryParams()['token'] ?? '';
if($this->authManager->CheckToken($token)) {
$this->authManager->SetAuthState(true);
return $response->withHeader('Location', '/')->withStatus(302);

View File

@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Controller\DockerController $dockerController */
$dockerController = $container->get(\AIO\Controller\DockerController::class);
// Stop container and start backup check
$dockerController->checkBackup();

View File

@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);
// increase memory limit to 2GB
ini_set('memory_limit', '2048M');
use DI\Container;
require __DIR__ . '/../../vendor/autoload.php';
$container = \AIO\DependencyInjection::GetContainer();
/** @var \AIO\Docker\DockerActionManager $dockerActionManger */
$dockerActionManger = $container->get(\AIO\Docker\DockerActionManager::class);
/** @var \AIO\ContainerDefinitionFetcher $containerDefinitionFetcher */
$containerDefinitionFetcher = $container->get(\AIO\ContainerDefinitionFetcher::class);
$id = 'nextcloud-aio-nextcloud';
$nextcloudContainer = $containerDefinitionFetcher->GetContainerById($id);
$isNextcloudImageOutdated = $dockerActionManger->isNextcloudImageOutdated();
if ($isNextcloudImageOutdated === true) {
$dockerActionManger->sendNotification($nextcloudContainer, 'AIO is outdated!', 'Please open the AIO interface or ask an administrator to update it. If you do not want to do it manually each time, you can enable the daily backup feature from the AIO interface which automatically updates all containers.', '/notify-all.sh');
}

View File

@@ -139,6 +139,36 @@ class ConfigurationManager
$this->WriteConfig($config);
}
public function isImaginaryEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isImaginaryEnabled']) && $config['isImaginaryEnabled'] === 1) {
return true;
} else {
return false;
}
}
public function SetImaginaryEnabledState(int $value) : void {
$config = $this->GetConfig();
$config['isImaginaryEnabled'] = $value;
$this->WriteConfig($config);
}
public function isFulltextsearchEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isFulltextsearchEnabled']) && $config['isFulltextsearchEnabled'] === 1) {
return true;
} else {
return false;
}
}
public function SetFulltextsearchEnabledState(int $value) : void {
$config = $this->GetConfig();
$config['isFulltextsearchEnabled'] = $value;
$this->WriteConfig($config);
}
public function isOnlyofficeEnabled() : bool {
$config = $this->GetConfig();
if (isset($config['isOnlyofficeEnabled']) && $config['isOnlyofficeEnabled'] === 1) {
@@ -409,7 +439,11 @@ class ConfigurationManager
if(!is_dir(DataConst::GetDataDirectory())) {
throw new InvalidSettingConfigurationException(DataConst::GetDataDirectory() . " does not exist! Something was set up falsely!");
}
file_put_contents(DataConst::GetConfigFile(), json_encode($config));
$df = disk_free_space(DataConst::GetDataDirectory());
if ($df !== false && (int)$df < 10240) {
throw new InvalidSettingConfigurationException(DataConst::GetDataDirectory() . " does not have enough space for writing the config file! Not writing it back!");
}
file_put_contents(DataConst::GetConfigFile(), json_encode($config, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT));
}
private function GetEnvironmentalVariableOrConfig(string $envVariableName, string $configName, string $defaultValue) : string {
@@ -487,6 +521,32 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetNextcloudUploadLimit() : string {
$envVariableName = 'NEXTCLOUD_UPLOAD_LIMIT';
$configName = 'nextcloud_upload_limit';
$defaultValue = '10G';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetNextcloudMemoryLimit() : string {
$envVariableName = 'NEXTCLOUD_MEMORY_LIMIT';
$configName = 'nextcloud_memory_limit';
$defaultValue = '512M';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetApacheMaxSize() : int {
$uploadLimit = (int)rtrim($this->GetNextcloudUploadLimit(), 'G');
return $uploadLimit * 1024 * 1024 * 1024;
}
public function GetNextcloudMaxTime() : string {
$envVariableName = 'NEXTCLOUD_MAX_TIME';
$configName = 'nextcloud_max_time';
$defaultValue = '3600';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetDockerSocketPath() : string {
$envVariableName = 'DOCKER_SOCKET_PATH';
$configName = 'docker_socket_path';
@@ -494,6 +554,42 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetTrustedCacertsDir() : string {
$envVariableName = 'NEXTCLOUD_TRUSTED_CACERTS_DIR';
$configName = 'trusted_cacerts_dir';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetNextcloudAdditionalApks() : string {
$envVariableName = 'NEXTCLOUD_ADDITIONAL_APKS';
$configName = 'nextcloud_additional_apks';
$defaultValue = 'imagemagick';
return trim($this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue));
}
public function GetNextcloudAdditionalPhpExtensions() : string {
$envVariableName = 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS';
$configName = 'nextcloud_additional_php_extensions';
$defaultValue = 'imagick';
return trim($this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue));
}
public function GetCollaboraSeccompPolicy() : string {
$defaultString = '--o:security.seccomp=';
if ($this->GetCollaboraSeccompDisabledState() !== 'true') {
return $defaultString . 'true';
}
return $defaultString . 'false';
}
private function GetCollaboraSeccompDisabledState() : string {
$envVariableName = 'COLLABORA_SECCOMP_DISABLED';
$configName = 'collabora_seccomp_disabled';
$defaultValue = 'false';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
/**
* @throws InvalidSettingConfigurationException
*/
@@ -540,6 +636,45 @@ class ConfigurationManager
}
}
/**
* @throws InvalidSettingConfigurationException
*/
public function SetAdditionalBackupDirectories(string $additionalBackupDirectories) : void {
$additionalBackupDirectoriesArray = explode("\n", $additionalBackupDirectories);
$validDirectories = '';
foreach($additionalBackupDirectoriesArray as $entry) {
// Trim all unwanted chars on both sites
$entry = trim($entry);
if ($entry !== "") {
if (!preg_match("#^/[0-1a-zA-Z/-_]+$#", $entry) && !preg_match("#^[0-1a-zA-Z_-]+$#", $entry)) {
throw new InvalidSettingConfigurationException("You entered unallowed characters! Problematic is " . $entry);
}
$validDirectories .= rtrim($entry, '/') . PHP_EOL;
}
}
if ($validDirectories === '') {
unlink(DataConst::GetAdditionalBackupDirectoriesFile());
} else {
file_put_contents(DataConst::GetAdditionalBackupDirectoriesFile(), $validDirectories);
}
}
public function GetAdditionalBackupDirectoriesString() : string {
if (!file_exists(DataConst::GetAdditionalBackupDirectoriesFile())) {
return '';
}
$additionalBackupDirectories = file_get_contents(DataConst::GetAdditionalBackupDirectoriesFile());
return $additionalBackupDirectories;
}
public function GetAdditionalBackupDirectoriesArray() : array {
$additionalBackupDirectories = $this->GetAdditionalBackupDirectoriesString();
$additionalBackupDirectoriesArray = explode("\n", $additionalBackupDirectories);
$additionalBackupDirectoriesArray = array_unique($additionalBackupDirectoriesArray, SORT_REGULAR);
return $additionalBackupDirectoriesArray;
}
public function isDailyBackupRunning() : bool {
if (file_exists(DataConst::GetDailyBackupBlockFile())) {
return true;
@@ -586,6 +721,14 @@ class ConfigurationManager
return false;
}
public function GetNextcloudStartupApps() : string {
$apps = getenv('NEXTCLOUD_STARTUP_APPS');
if (is_string($apps)) {
return trim($apps);
}
return 'twofactor_totp deck tasks calendar contacts apporder';
}
public function GetCollaboraDictionaries() : string {
$config = $this->GetConfig();
if(!isset($config['collabora_dictionaries'])) {

View File

@@ -31,6 +31,10 @@ class DataConst {
return self::GetDataDirectory() . '/daily_backup_time';
}
public static function GetAdditionalBackupDirectoriesFile() : string {
return self::GetDataDirectory() . '/additional_backup_directories';
}
public static function GetDailyBackupBlockFile() : string {
return self::GetDataDirectory() . '/daily_backup_running';
}
@@ -42,4 +46,8 @@ class DataConst {
public static function GetBackupArchivesList() : string {
return self::GetDataDirectory() . '/backup_archives.list';
}
public static function GetSessionDateFile() : string {
return self::GetDataDirectory() . '/session_date_file';
}
}

View File

@@ -162,11 +162,11 @@ class DockerActionManager
$response = "";
$separator = "\r\n";
$line = strtok($responseBody, $separator);
$response = substr($line, 8) . "\n";
$response = substr($line, 8) . $separator;
while ($line !== false) {
$line = strtok($separator);
$response .= substr($line, 8) . "\n";
$response .= substr($line, 8) . $separator;
}
return $response;
@@ -298,6 +298,44 @@ class DockerActionManager
} else {
$replacements[1] = $this->configurationManager->GetCollaboraDictionaries();
}
} elseif ($out[1] === 'IMAGINARY_ENABLED') {
if ($this->configurationManager->isImaginaryEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'FULLTEXTSEARCH_ENABLED') {
if ($this->configurationManager->isFulltextsearchEnabled()) {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'NEXTCLOUD_UPLOAD_LIMIT') {
$replacements[1] = $this->configurationManager->GetNextcloudUploadLimit();
} elseif ($out[1] === 'NEXTCLOUD_MEMORY_LIMIT') {
$replacements[1] = $this->configurationManager->GetNextcloudMemoryLimit();
} elseif ($out[1] === 'NEXTCLOUD_MAX_TIME') {
$replacements[1] = $this->configurationManager->GetNextcloudMaxTime();
} elseif ($out[1] === 'NEXTCLOUD_TRUSTED_CACERTS_DIR') {
$replacements[1] = $this->configurationManager->GetTrustedCacertsDir();
} elseif ($out[1] === 'ADDITIONAL_DIRECTORIES_BACKUP') {
if ($this->configurationManager->GetAdditionalBackupDirectoriesString() !== '') {
$replacements[1] = 'yes';
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'BORGBACKUP_HOST_LOCATION') {
$replacements[1] = $this->configurationManager->GetBorgBackupHostLocation();
} elseif ($out[1] === 'APACHE_MAX_SIZE') {
$replacements[1] = $this->configurationManager->GetApacheMaxSize();
} elseif ($out[1] === 'COLLABORA_SECCOMP_POLICY') {
$replacements[1] = $this->configurationManager->GetCollaboraSeccompPolicy();
} elseif ($out[1] === 'NEXTCLOUD_STARTUP_APPS') {
$replacements[1] = $this->configurationManager->GetNextcloudStartupApps();
} elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_APKS') {
$replacements[1] = $this->configurationManager->GetNextcloudAdditionalApks();
} elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS') {
$replacements[1] = $this->configurationManager->GetNextcloudAdditionalPhpExtensions();
} else {
$replacements[1] = $this->configurationManager->GetSecret($out[1]);
}
@@ -338,6 +376,21 @@ class DockerActionManager
$requestBody['HostConfig']['CapAdd'] = ["SYS_ADMIN"];
$requestBody['HostConfig']['Devices'] = [["PathOnHost" => "/dev/fuse", "PathInContainer" => "/dev/fuse", "CgroupPermissions" => "rwm"]];
$requestBody['HostConfig']['SecurityOpt'] = ["apparmor:unconfined"];
// Additional backup directories
$mounts = [];
foreach ($this->configurationManager->GetAdditionalBackupDirectoriesArray() as $additionalBackupDirectories) {
if ($additionalBackupDirectories !== '') {
if (!str_starts_with($additionalBackupDirectories, '/')) {
$mounts[] = ["Type" => "volume", "Source" => $additionalBackupDirectories, "Target" => "/docker_volumes/" . $additionalBackupDirectories, "ReadOnly" => true];
} else {
$mounts[] = ["Type" => "bind", "Source" => $additionalBackupDirectories, "Target" => "/host_mounts" . $additionalBackupDirectories, "ReadOnly" => true, "BindOptions" => ["NonRecursive" => true]];
}
}
}
if(count($mounts) > 0) {
$requestBody['HostConfig']['Mounts'] = $mounts;
}
}
$url = $this->BuildApiUrl('containers/create?name=' . $container->GetIdentifier());
@@ -487,7 +540,7 @@ class DockerActionManager
return true;
}
public function sendNotification(Container $container, string $subject, string $message) : void
public function sendNotification(Container $container, string $subject, string $message, string $file = '/notify.sh') : void
{
if ($this->GetContainerStartingState($container) instanceof RunningState) {
@@ -505,7 +558,7 @@ class DockerActionManager
'Tty' => true,
'Cmd' => [
'bash',
'/notify.sh',
$file,
$subject,
$message
],
@@ -686,4 +739,36 @@ class DockerActionManager
}
return false;
}
private function GetCreatedTimeOfNextcloudImage() : ?string {
$imageName = 'nextcloud/aio-nextcloud' . ':' . $this->GetCurrentChannel();
try {
$imageUrl = $this->BuildApiUrl(sprintf('images/%s/json', $imageName));
$imageOutput = json_decode($this->guzzleClient->get($imageUrl)->getBody()->getContents(), true);
if (!isset($imageOutput['Created'])) {
error_log('Created is not set of image ' . $imageName);
return null;
}
return str_replace('T', ' ', $imageOutput['Created']);
} catch (\Exception $e) {
return null;
}
}
public function isNextcloudImageOutdated() : bool {
$createdTime = $this->GetCreatedTimeOfNextcloudImage();
if ($createdTime === null) {
return false;
}
// If the image is older than 90 days, it is outdated.
if ((time() - (60 * 60 * 24 * 90)) > strtotime($createdTime)) {
return true;
}
return false;
}
}

View File

@@ -28,10 +28,10 @@ class AuthMiddleware
if(!in_array($request->getUri()->getPath(), $publicRoutes)) {
if(!$this->authManager->IsAuthenticated()) {
$response = new Response();
return $response
->withHeader('Location', '/')
->withStatus(302);
$status = 302;
$headers = ['Location' => '/'];
$response = new Response($status, $headers);
return $response;
}
}

View File

@@ -16,7 +16,10 @@
</header>
<div class="content">
<h1>Nextcloud AIO v1.7.1</h1>
<h1>Nextcloud AIO v3.2.0</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>
{% set isAnyRunning = false %}
{% set isAnyRestarting = false %}
@@ -167,7 +170,11 @@
{% endif %}
{% if domain != "" and 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 %}
No channel was found. This means that AIO is not able to update itself and its component and will also not be able to report about updates. Updates need to be done externally.
{% endif %}
{% endif %}
{% if is_backup_container_running == true %}
@@ -371,7 +378,7 @@
</form>
<h3>Backup restore</h3>
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will overwrite all your files with the state of the backup so you should consider creating a backup first. It also makes sense to run an integrity check before restoring your files but is not mandatory since it shouldn't be needed in most situations.<br><br>
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will overwrite all your files with the state of the backup so you should consider creating a backup first. It also makes sense to run an integrity check before restoring your files but is not mandatory since it shouldn't be needed in most situations. Please note that this will not restore additionally chosen backup directories!<br><br>
<form method="POST" action="/api/docker/restore" class="xhr" id="restore_selection">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
@@ -406,6 +413,21 @@
<input class="button" type="submit" value="Disable daily backups" />
</form>
{% endif %}
<h3>Back up additional directories and docker volumes of your host</h3>
Below, you can enter directories and docker volumes of your host that will backed up additionally into the same borg backup archive.<br><br>
<form method="POST" action="/api/configuration" class="xhr">
<textarea id="additional_backup_directories" name="additional_backup_directories" rows="4" cols="50" placeholder="/directory/on/the/host&#10;my_custom_docker_volume">{{ additional_backup_directories }}</textarea>
<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" /><br>
</form>
Each line and entry needs to start with a slash or letter/digit. Allowed are only <b>a-z</b>, <b>A-Z</b>, <b>0-9</b>, <b>_</b>, <b>-</b>, and <b>/</b>. If the entry begins with a letter/digit are slashes not supported. Two valid entries are <b>/directory/on/the/host</b> and <b>my_custom_docker_volume</b>. You need to make sure yourself that all given directories exist. Otherwise the backup container will fail starting!<br><br/>
Make sure to specify all storages that you want to back up separately since storages will not be mounted recursively. E.g. providing <b>/</b> as additional backup directory will only back up files and folders that are stored on the root partition and not on the EFI partition or any other. Excluded by the backup will be caches and a few other directories. You should make sure to stop all services before the backup can run correctly if you want to back up the root partition. For automating this see <a href="https://github.com/nextcloud/all-in-one#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally">this documentation</a><br><br/>
Please note that the chosen directories/volumes will not be restored when you restore your instance, so this would need to be done manually. <br><br>
{% if additional_backup_directories != "" %}
This option is currently set. You can disable it again by clearing the field and submitting your changes.<br><br>
{% endif %}
{% endif %}
{% endif %}
{% if has_backup_run_once == false %}
@@ -452,26 +474,38 @@
{% else %}
<input type="checkbox" id="collabora" name="collabora"><label for="collabora">Collabora (Nextcloud Office)</label><br>
{% endif %}
{% if is_fulltextsearch_enabled == true %}
<input type="checkbox" id="fulltextsearch" name="fulltextsearch" checked="checked"><label for="fulltextsearch">Fulltextsearch (needs ~1GB additional RAM)</label><br>
{% else %}
<input type="checkbox" id="fulltextsearch" name="fulltextsearch"><label for="fulltextsearch">Fulltextsearch (needs ~1GB additional RAM)</label><br>
{% endif %}
{% if is_imaginary_enabled == true %}
<input type="checkbox" id="imaginary" name="imaginary" checked="checked"><label for="imaginary">Imaginary</label><br>
{% else %}
<input type="checkbox" id="imaginary" name="imaginary"><label for="imaginary">Imaginary</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>
{% 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>
{% endif %}
{% if is_onlyoffice_enabled == true %}
<input type="checkbox" id="onlyoffice" name="onlyoffice" checked="checked"><label for="onlyoffice">OnlyOffice (only supported on x64)</label><br>
<input type="checkbox" id="onlyoffice" name="onlyoffice" checked="checked"><label for="onlyoffice">OnlyOffice</label><br>
{% else %}
<input type="checkbox" id="onlyoffice" name="onlyoffice"><label for="onlyoffice">OnlyOffice (only supported on x64)</label><br>
{#<input type="checkbox" id="onlyoffice" name="onlyoffice"><label for="onlyoffice">OnlyOffice</label><br>#}
{% endif %}
<input id="options-form-submit" class="button" type="submit" value="Save changes" />
</form>
<b>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, at least 3GB RAM are required.<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.<br><br>
{% if isAnyRunning == true or is_x64_platform == false %}
<script type="text/javascript" src="disable-clamav.js"></script>
<script type="text/javascript" src="disable-onlyoffice.js"></script>
{% endif %}
{% if isAnyRunning == true %}
<script type="text/javascript" src="disable-talk.js"></script>
<script type="text/javascript" src="disable-collabora.js"></script>
<script type="text/javascript" src="disable-onlyoffice.js"></script>
<script type="text/javascript" src="disable-imaginary.js"></script>
<script type="text/javascript" src="disable-fulltextsearch.js"></script>
{% endif %}
{% if is_collabora_enabled == true and isAnyRunning == false and was_start_button_clicked == true %}
@@ -511,7 +545,7 @@
<input type="text" name="timezone" placeholder="Europe/Berlin" />
<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" />
<input class="button" type="submit" value="Submit" onclick="return confirm('Are you sure that this is a valid timezone? Please double check by following the wikipedia article and checking the correct column since if not, it will break the startup since the database will not get correctly initialized and you will end in a startup loop.')" />
</form>
You need to make sure that the timezone that you enter is valid. An example is <b>Europe/Berlin</b>. You can get valid values by looking at the 'TZ database name' column of this list: <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List"><b>click here</b></a>.<br><br>
{% else %}

View File

@@ -14,8 +14,8 @@
<input type="submit" class="button" value="Log in" />
</form>
{% else %}
<p>The login is blocked since Nextcloud is running. Please use the automatic login from your Nextcloud.<br><br>
You can unblock the login by running 'sudo docker stop nextcloud-aio-apache'.</p>
<p>The login is blocked since Nextcloud is running.<br>Please use the <a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface"><b>automatic login</b></a> from your Nextcloud.<br><br>
If that is not possible, you can unblock the login by running<br><b>sudo docker stop nextcloud-aio-apache</b></p>
{% endif %}
</div>
</div>

186
readme.md
View File

@@ -7,8 +7,9 @@ Included are:
- High performance backend for Nextcloud Files
- High performance backend for Nextcloud Talk
- Backup solution (based on [BorgBackup](https://github.com/borgbackup/borg#what-is-borgbackup))
- OnlyOffice
- Imaginary
- ClamAV
- Fulltextsearch
## How to use this?
The following instructions 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).
@@ -21,12 +22,13 @@ The following instructions are especially meant for Linux. For macOS see [this](
(For people that cannot use ports 80 and/or 443 on this server, please follow the [reverse proxy documentation](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md) because port 443 is used by this project and opened on the host by default even though it does not look like this is the case. Otherwise please run the command below!)
```
# For x64 CPUs:
sudo docker run -it \
sudo docker run \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
-p 80:80 \
-p 8080:8080 \
-p 8443:8443 \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:latest
@@ -36,12 +38,13 @@ The following instructions are especially meant for Linux. For macOS see [this](
```
# For arm64 CPUs:
sudo docker run -it \
sudo docker run \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
-p 80:80 \
-p 8080:8080 \
-p 8443:8443 \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nextcloud/all-in-one:latest-arm64
@@ -49,6 +52,21 @@ The following instructions are especially meant for Linux. For macOS see [this](
</details>
<details>
<summary>Explanation of the command</summary>
- `sudo docker run` This command spins up a new docker container. Docker commands can optionally be used without `sudo` if the user is added to the docker group (this is not the same as docker rootless, see FAQ below).
- `--name nextcloud-aio-mastercontainer` This is the name of the container. This line is not allowed to be changed, since mastercontainer updates would fail.
- `--restart always` This is the "restart policy". `always` means that the container should always get started with the Docker daemon. See the Docker documentation for further detail about restart policies: https://docs.docker.com/config/containers/start-containers-automatically/
- `--publish 80:80` This means that port 80 of the container should get published on the host using port 80. It is used for getting valid certificates for the AIO interface if you want to use port 8443. It is not needed if you run AIO behind a reverse proxy and can get removed in that case as you can simply use port 8080 for the AIO interface then.
- `--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 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.
- `nextcloud/all-in-one:latest` or `nextcloud/all-in-one:latest-arm64` This is the docker container image that is used. See https://github.com/nextcloud/all-in-one/discussions/490 for why there are different images for the different CPU architectures.
- Further options can be set using environment variables, for example `--env TALK_PORT=3478`. 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>
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>
@@ -81,12 +99,13 @@ On macOS, there are two things different in comparison to Linux: instead of usin
On Windows, the following command should work in the command prompt after you installed [Docker Desktop](https://www.docker.com/products/docker-desktop/):
```
docker run -it ^
docker run ^
--sig-proxy=false ^
--name nextcloud-aio-mastercontainer ^
--restart always ^
-p 80:80 ^
-p 8080:8080 ^
-p 8443:8443 ^
--publish 80:80 ^
--publish 8080:8080 ^
--publish 8443:8443 ^
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config ^
--volume //var/run/docker.sock:/var/run/docker.sock:ro ^
nextcloud/all-in-one:latest
@@ -130,7 +149,10 @@ No and they will not be. Please use a dedicated domain for Nextcloud and set it
No and it will not be added. Please use a dedicated domain for Nextcloud and set it up correctly by following the [reverse proxy documentation](./reverse-proxy.md).
### How can I access Nextcloud locally?
The recommended way is 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 server that runs Nextcloud AIO.
The recommended way is 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 server that runs Nextcloud AIO. Below are some guides:
- https://www.howtogeek.com/devops/how-to-run-your-own-dns-server-on-your-local-network/
- https://howchoo.com/pi/pi-hole-setup together with https://docs.callitkarma.me/posts/PiHole-Local-DNS/
- 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.
@@ -146,16 +168,16 @@ Afterwards it should work.<br>
See https://dev.to/ozorest/fedora-32-how-to-solve-docker-internal-network-issue-22me for more details on this. This limitation is even mentioned on the official firewalld website: https://firewalld.org/#who-is-using-it
### How to run `occ` commands?
Simply run the following: `sudo docker exec -it nextcloud-aio-nextcloud php occ your-command`. Of course `your-command` needs to be exchanged with the command that you want to run.
Simply run the following: `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ your-command`. Of course `your-command` needs to be exchanged with the command that you want to run.
### How to resolve `Security & setup warnings displays the "missing default phone region" after initial install`?
Simply run the following command: `sudo docker exec -it nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="yourvalue"`. Of course you need to modify `yourvalue` based on your location. Examples are `DE`, `EN` and `GB`. See this list for more codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
Simply run the following command: `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="yourvalue"`. Of course you need to modify `yourvalue` based on your location. Examples are `DE`, `EN` and `GB`. See this list for more codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
### How to run multiple AIO instances on one server?
See [multiple-instances.md](./multiple-instances.md) for some documentation on this.
### Bruteforce protection FAQ
Nextcloud features a built-in bruteforce protection which may get triggered and will block an ip-address or disable a user. You can unblock an ip-address by running `sudo docker exec -it nextcloud-aio-nextcloud php occ security:bruteforce:reset <ip-address>` and enable a disabled user by running `sudo docker exec -it nextcloud-aio-nextcloud php occ user:enable <name of user>`. See https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#security for further information.
Nextcloud features a built-in bruteforce protection which may get triggered and will block an ip-address or disable a user. You can unblock an ip-address by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ security:bruteforce:reset <ip-address>` and enable a disabled user by running `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ user:enable <name of user>`. See https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#security for further information.
### Update policy
This project values stability over new features. That means that when a new major Nextcloud update gets introduced, we will wait at least until the first patch release, e.g. `24.0.1` is out before upgrading to it. Also we will wait with the upgrade until all important apps are compatible with the new major version. Minor or patch releases for Nextcloud and all dependencies as well as all containers will be updated to new versions as soon as possible but we try to give all updates first a good test round before pushing them. That means that it can take around 2 weeks before new updates reach the `latest` channel. If you want to help testing, you can switch to the `beta` channel by following [this documentation](#how-to-switch-the-channel) which will also give you the updates earlier.
@@ -192,7 +214,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` (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` (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`). Also 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.
1. Optional: You can remove all docker images with `sudo docker image prune -a`.
1. And you are done! Now feel free to start over with the recommended docker run command!
@@ -266,6 +288,12 @@ sudo borg list "/mnt/backup/borg"
# An example backup archive might be called 20220223_174237-nextcloud-aio
# Then you can simply delete the archive with:
sudo borg delete --stats --progress "/mnt/backup/borg::20220223_174237-nextcloud-aio"
# If borg 1.2.0 or higher is installed, you then need to run borg compact in order to clean up the freed space
sudo borg --version
# If version number of the command above is higher than 1.2.0 you need to run the command below:
sudo borg compact "/mnt/backup/"
```
After doing so, make sure to update the backup archives list in the AIO interface!<br>
@@ -313,7 +341,7 @@ if ! [ -d "$DRIVE_MOUNTPOINT" ]; then
exit 1
fi
if ! grep -q " $DRIVE_MOUNTPOINT " /etc/fstab; then
if ! grep -q "$DRIVE_MOUNTPOINT" /etc/fstab; then
echo "Could not find the drive mountpoint in the fstab file. Did you add it there?"
exit 1
fi
@@ -374,11 +402,14 @@ Afterwards apply the correct permissions with `sudo chown root:root /root/backup
### How to stop/start/update containers or trigger the daily backup from a script externally?
You can do so by running the `/daily-backup.sh` script that is stored in the mastercontainer. It accepts the following environmental varilables:
- `AUTOMATIC_UPDATES` if set to `1`, it will automatically stop the containers, update them and start them including the mastercontainer. If the mastercontainer gets updated, this script's execution will stop as soon as the mastercontainer gets stopped. You can then wait until it is started again and run the script with this flag again in order to update all containers correctly afterwards.
- `DAILY_BACKUP` if set to `1`, it will automatically stop the containers and create a backup. If you want to start them again afterwards, you may have a look at the `START_CONTAINERS` option. Please be aware that this option is non-blocking which means that the backup is not done when the process is finished since it only start the borgbackup container with the correct configuration.
- `DAILY_BACKUP` if set to `1`, it will automatically stop the containers and create a backup. If you want to start them again afterwards, you may have a look at the `START_CONTAINERS` option. Please be aware that this option is non-blocking if `START_CONTAINERS` and `AUTOMATIC_UPDATES` is not enabled at the same time 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.
- `START_CONTAINERS` if set to `1`, it will automatically start the containers without updating them.
- `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 nextcloud-aio-mastercontainer DAILY_BACKUP=1 /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 -e 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.
@@ -402,13 +433,6 @@ You can configure the Nextcloud container to use a specific directory on your ho
```
(The value `/host_mnt/c/your/data/path` in this example would be equivalent to `C:\your\data\path` on the Windows host. So you need to translate the path that you want to use into the correct format.) ⚠️️ **Attention**: Make sure that the path exists on the host before you create the volume! Otherwise everything will bug out!
⚠️ Please make sure to apply the correct permissions to the chosen directory before starting Nextcloud the first time (not needed on Windows).
- In this example for Linux, the command for this would be `sudo chown -R 33:0 /mnt/ncdata` and `sudo chmod -R 750 /mnt/ncdata`.
- On macOS, the command for this would be `sudo chown -R 33:0 /var/nextcloud-data` and `sudo chmod -R 750 /var/nextcloud-data`.
- For Synology, the command for this example would be `sudo chown -R 33:0 /volume1/docker/nextcloud/data` and `sudo chmod -R 750 /volume1/docker/nextcloud/data`
- On Windows, this command is not needed.
### 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 `/`.
@@ -422,22 +446,46 @@ You can then navigate to the apps management page, activate the external storage
Be aware though that these locations will not be covered by the built-in backup solution!
**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.
### 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`.
### 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`.
### 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`.
### 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.
### 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)
### 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="twofactor_totp deck tasks calendar contacts apporder"` 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, spaces and hyphens or '_'.
### How to add packets 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.
### 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.
### 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/
### Access/Edit Nextcloud files/folders manually
The files and folders that you add to Nextcloud are by default stored in the following directory: `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/` on the host. If needed, you can modify/add/delete files/folders there but **ATTENTION**: be very careful when doing so because you might corrupt your AIO installation! Best is to create a backup using the built-in backup solution before editing/changing files/folders in there because you will then be able to restore your instance to the backed up state.
After you are done modifying/adding/deleting files/folders, don't forget to apply the correct permissions by running: `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and rescan the files with `sudo docker exec -it nextcloud-aio-nextcloud php occ files:scan --all`.
After you are done modifying/adding/deleting files/folders, don't forget to apply the correct permissions by running: `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and rescan the files with `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all`.
### How to store the files/installation on a separate drive?
You can move the whole docker library and all its files including all Nextcloud AIO files and folders to a separate drive by first mounting the drive in the host OS (NTFS is not supported) and then following this tutorial: https://www.guguweb.com/2019/02/07/how-to-move-docker-data-directory-to-another-location-on-ubuntu/<br>
@@ -447,7 +495,7 @@ You can move the whole docker library and all its files including all Nextcloud
You can edit Nextclouds config.php file directly from the host with your favorite text editor. E.g. like this: `sudo nano /var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/config/config.php`. Make sure to not break the file though which might corrupt your Nextcloud instance otherwise. In best case, create a backup using the built-in backup solution before editing the file.
### Custom skeleton directory
If you want to define a custom skeleton directory, you can do so by putting your skeleton files into `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/skeleton/`, applying the correct permissions with `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/skeleton` and and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and setting the skeleton directory option with `sudo docker exec -it nextcloud-aio-nextcloud php occ config:system:set skeletondirectory --value="/mnt/ncdata/skeleton"`. You can read further on this option here: [click here](https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html?highlight=skeletondir#:~:text=adding%20%3Fdirect%3D1-,'skeletondirectory',-%3D%3E%20'%2Fpath%2Fto%2Fnextcloud)
If you want to define a custom skeleton directory, you can do so by putting your skeleton files into `/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/skeleton/`, applying the correct permissions with `sudo chown -R 33:0 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/skeleton` and and `sudo chmod -R 750 /var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/*` and setting the skeleton directory option with `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:system:set skeletondirectory --value="/mnt/ncdata/skeleton"`. You can read further on this option here: [click here](https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html?highlight=skeletondir#:~:text=adding%20%3Fdirect%3D1-,'skeletondirectory',-%3D%3E%20'%2Fpath%2Fto%2Fnextcloud)
### Fail2ban
You can configure your server to block certain ip-addresses using fail2ban as bruteforce protection. Here is how to set it up: https://docs.nextcloud.com/server/stable/admin_manual/installation/harden_server.html#setup-fail2ban. The logpath of AIO is by default `/var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/data/nextcloud.log`. Do not forget to add `chain=DOCKER-USER` to your nextcloud jail config (`nextcloud.local`) otherwise the nextcloud service running on docker will still be accessible even if the IP is banned. Also, you may change the blocked ports to cover all AIO ports: by default `80,443,8080,8443,3478` (see [this](https://github.com/nextcloud/all-in-one#explanation-of-used-ports))
@@ -479,3 +527,81 @@ What are the requirements?
3. The feature that gets added into Nextcloud by adding the container must be maintained by the Nextcloud GmbH.
4. It must be possible to run the container without big quirks inside docker containers. Big quirks means e.g. needing to change the capabilities or security options.
5. The container should not mount directories from the host into the container: only docker volumes should be used.
### 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.
When using `docker run`, the environmental variable can be set with `-e 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.
### 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.
But anyhow, is here a guide that helps you automate the whole procedure:
<details>
<summary>Click here to expand</summary>
```bash
#!/bin/bash
# Stop the containers
docker exec -e 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
```
</details>
You can simply copy and past the script into a file e.g. named `shutdown-script.sh` e.g. here: `/root/shutdown-script.sh`.
Afterwards apply the correct permissions with `sudo chown root:root /root/shutdown-script.sh` and `sudo chmod 700 /root/shutdown-script.sh`. Then you can create a cronjob that runs e.g. runs the script at `04:00` each day like this:
1. Open the cronjob with `sudo crontab -u root -e` (and choose your editor of choice if not already done. I'd recommend nano).
1. Add the following new line to the crontab if not already present: `0 4 * * * /root/shutdown-script.sh` which will run the script at 04:00 each day.
1. save and close the crontab (when using nano are the shortcuts for this `Ctrl + o` -> `Enter` and close the editor with `Ctrl + x`).
**After that is in place, you should schedule a backup from your backup solution that creates a backup after AIO is shut down properly. Hint: If your backup runs on the same host, make sure to at least back up all docker volumes and additionally Nextclouds datadir, if it is not stored in a docker volume.**
**Afterwards, you can create a second script that automatically updates the containers:**
<details>
<summary>Click here to expand</summary>
```bash
#!/bin/bash
# Run container update once
if ! docker exec -e 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
done
while ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-mastercontainer$"; do
echo "Waiting for Mastercontainer to start"
sleep 30
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
fi
```
</details>
You can simply copy and past the script into a file e.g. named `automatic-updates.sh` e.g. here: `/root/automatic-updates.sh`.
Afterwards apply the correct permissions with `sudo chown root:root /root/automatic-updates.sh` and `sudo chmod 700 /root/automatic-updates.sh`. Then you can create a cronjob that runs e.g. at `05:00` each day like this:
1. Open the cronjob with `sudo crontab -u root -e` (and choose your editor of choice if not already done. I'd recommend nano).
1. Add the following new line to the crontab if not already present: `0 5 * * * /root/automatic-updates.sh` which will run the script at 05:00 each day.
1. save and close the crontab (when using nano are the shortcuts for this `Ctrl + o` -> `Enter` and close the editor with `Ctrl + x`).

View File

@@ -21,7 +21,7 @@ In order to run Nextcloud behind a reverse proxy, you need to specify the port t
<summary>click here to expand</summary>
**Disclaimer:** It might be possible that the config below is not working 100% correctly, yet. See e.g. https://github.com/nextcloud/all-in-one/issues/834. Improvements to it are very welcome!
**Disclaimer:** It might be possible that the config below is not working 100% correctly, yet. Improvements to it are very welcome!
Add this as a new Apache site config:
@@ -41,14 +41,14 @@ Add this as a new Apache site config:
<VirtualHost *:443>
ServerName <your-nc-domain>
# Reverse proxy
# Reverse proxy based on https://httpd.apache.org/docs/current/mod/mod_proxy_wstunnel.html
RewriteEngine On
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
ProxyPass / http://localhost:11000/
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/(.*) "ws://localhost:11000/$1" [P,L]
ProxyPass / http://localhost:11000/
ProxyPassReverse / http://localhost:11000/
RewriteRule ^/?(.*) "ws://localhost:11000/$1" [P,QSA,B=?:;]
# Enable h2, h2c and http1.1
Protocols h2 h2c http/1.1
@@ -64,6 +64,9 @@ Add this as a new Apache site config:
<Files ".ht*">
Require all denied
</Files>
# Support big file uploads
LimitRequestBody 0
</VirtualHost>
```
@@ -115,7 +118,7 @@ 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.
**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. 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.
**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>
@@ -132,21 +135,131 @@ Although it does not seems like it is the case but from AIO perspective a Cloudf
</details>
### HaProxy
<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!
Here is an example HaProxy config:
```
global
chroot /var/haproxy
log /var/run/log audit debug
lua-prepend-path /tmp/haproxy/lua/?.lua
defaults
log global
option redispatch -1
retries 3
default-server init-addr last,libc
# Frontend: LetsEncrypt_443 ()
frontend LetsEncrypt_443
bind 0.0.0.0:443 name 0.0.0.0:443 ssl prefer-client-ciphers ssl-min-ver TLSv1.2 ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256 ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 crt-list /tmp/haproxy/ssl/605f6609f106d1.17683543.certlist
mode http
option http-keep-alive
default_backend acme_challenge_backend
option forwardfor
# tuning options
timeout client 30s
# logging options
# ACL: find_acme_challenge
acl acl_605f6d4b6453d2.03059920 path_beg -i /.well-known/acme-challenge/
# ACL: Nextcloud
acl acl_60604e669c3ca4.13013327 hdr(host) -i <your-nc-domain>
# ACTION: redirect_acme_challenges
use_backend acme_challenge_backend if acl_605f6d4b6453d2.03059920
# ACTION: Nextcloud
use_backend Nextcloud if acl_60604e669c3ca4.13013327
# Frontend: LetsEncrypt_80 ()
frontend LetsEncrypt_80
bind 0.0.0.0:80 name 0.0.0.0:80
mode tcp
default_backend acme_challenge_backend
# tuning options
timeout client 30s
# logging options
# ACL: find_acme_challenge
acl acl_605f6d4b6453d2.03059920 path_beg -i /.well-known/acme-challenge/
# ACTION: redirect_acme_challenges
use_backend acme_challenge_backend if acl_605f6d4b6453d2.03059920
# Frontend (DISABLED): 1_HTTP_frontend ()
# Frontend (DISABLED): 1_HTTPS_frontend ()
# Frontend (DISABLED): 0_SNI_frontend ()
# Backend: acme_challenge_backend (Added by Let's Encrypt plugin)
backend acme_challenge_backend
# health checking is DISABLED
mode http
balance source
# stickiness
stick-table type ip size 50k expire 30m
stick on src
# tuning options
timeout connect 30s
timeout server 30s
http-reuse safe
server acme_challenge_host 127.0.0.1:43580
# Backend: Nextcloud ()
backend Nextcloud
mode http
balance source
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)
</details>
### Nginx
<details>
<summary>click here to expand</summary>
**Disclaimer:** the config below is not working 100% correctly, yet. See e.g. https://github.com/nextcloud/all-in-one/issues/450, https://github.com/nextcloud/all-in-one/issues/447 and https://github.com/nextcloud/all-in-one/issues/491. Improvements to it are very welcome!
**Disclaimer:** It might be possible that the config below is not working 100% correctly, yet. Improvements to it are very welcome!
Add this to you nginx config:
```
location / {
proxy_pass http://localhost:11000;
proxy_set_header X-Real-IP $remote_addr;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80; # comment to disable IPv6
if ($scheme = "http") {
return 301 https://$host$request_uri;
}
listen 443 ssl http2;
listen [::]:443 ssl http2; # comment to disable IPv6
server_name <your-nc-domain>;
location / {
resolver localhost;
proxy_pass http://localhost:11000$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 0;
@@ -155,8 +268,21 @@ location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
```
ssl_certificate /etc/letsencrypt/live/<your-nc-domain>/fullchain.pem; # managed by certbot on host machine
ssl_certificate_key /etc/letsencrypt/live/<your-nc-domain>/privkey.pem; # managed by certbot on host machine
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
}
```
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)
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/588#discussioncomment-2811152) for a more complete example.
@@ -200,6 +326,24 @@ Of course you need to modify `<your-nc-domain>` to the domain on which you want
</details>
### Synology Reverse Proxy
<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!
See these screenshots for a working config:
![image](https://user-images.githubusercontent.com/89748315/192525606-48cab54b-866e-4964-90a8-15e71bd362fb.png)
![image](https://user-images.githubusercontent.com/89748315/192525681-c06f3b39-f510-458e-b1f2-6b2cd995e24c.png)
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)
</details>
### Traefik 2
<details>
@@ -271,10 +415,11 @@ After adjusting your reverse proxy config, use the following command to start AI
```
# For x64 CPUs:
sudo docker run -it \
sudo docker run \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
-p 8080:8080 \
--publish 8080:8080 \
-e APACHE_PORT=11000 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
@@ -289,10 +434,11 @@ You should also think about limiting the apache container to listen only on loca
```
# For arm64 CPUs:
sudo docker run -it \
sudo docker run \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
-p 8080:8080 \
--publish 8080:8080 \
-e APACHE_PORT=11000 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
@@ -308,10 +454,11 @@ On macOS see https://github.com/nextcloud/all-in-one#how-to-run-aio-on-macos.
<summary>Command for Windows</summary>
```
docker run -it ^
docker run ^
--sig-proxy=false ^
--name nextcloud-aio-mastercontainer ^
--restart always ^
-p 8080:8080 ^
--publish 8080:8080 ^
-e APACHE_PORT=11000 ^
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config ^
--volume //var/run/docker.sock:/var/run/docker.sock:ro ^

View File

@@ -7,5 +7,6 @@
- [ ] Submitting a time here should reload the page and reveal at the same place the option to delete the setting again.
- [ ] When the time of the automatic backup has come (you can test it by choosing a time that is e.g. only a minute away), it should automatically log you out (you can verify by reloading) and after you log in again you should see that the automatic backup is currently running.
- [ ] After a while you should see that your container are starting and in the Backup and restore section you should see that the backup was successful
- [ ] When entering additional backup directories, it should allow e.g. `/etc` and `nextcloud_aio_mastercontainer` but not `nextcloud/test`. Running a backup with this should back up these directories/volumes successfully.
You can now continue with [030-aio-password-change.md](./030-aio-password-change.md)

View File

@@ -7,7 +7,8 @@
- [ ] ClamAV by trying to upload a testvirus to Nextcloud https://www.eicar.org/?page_id=3950
- [ ] Collabora by trying to open a .docx or .odt file in Nextcloud
- [ ] Nextcloud Talk by opening the Talk app in Nextcloud, creating a new chat and trying to join a call in this chat. Also verifying in the settings that the HPB and turn server work.
- [ ] Onlyoffice by trying to open a .docx file in Nextcloud
- [ ] Imaginary by having a look if when uploading a new picture in Nextcloud, it adds some log entries to the container
- [ ] Fulltextsearch by trying to search for a heading inside a file in Nextcloud
- [ ] When Collabora is enabled, it should show below the Optional Addons section a section where you can change the dictionaries for collabora. `de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru` should be a valid setting. E.g. `de.De` not. If already set, it should show a button that allows to remove the setting again.
You can now continue with [060-environmental-variables.md](./060-environmental-variables.md)

View File

@@ -7,7 +7,16 @@
- [ ] 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="/var/run/docker.sock.raw"` it should map `/var/run/docker.sock.raw` to `/var/run/docker.sock` inside the watchtower container which allow to update the mastercontainer on macos and with 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.
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 `twofactor_totp deck tasks calendar contacts apporder`.
- [ ] 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.
You can now continue with [070-timezone-change.md](./070-timezone-change.md)