Compare commits

...

335 Commits

Author SHA1 Message Date
szaimen
5ece00e496 fix shouldDomainValidationBeSkipped
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 15:32:39 +02:00
szaimen
db620e035a increase to 1.5.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 14:36:54 +02:00
Simon L
f99d4f19c6 Merge pull request #865 from nextcloud/enh/761/collabora-dictionaries
allow to set collabora dictionaries
2022-07-04 14:35:21 +02:00
szaimen
97f053228c allow to set collabora dictionaries
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 14:32:48 +02:00
Simon L
a26d36c084 Merge pull request #793 from nextcloud/enh/734/talk-port
allow to adjust the talk port
2022-07-04 14:21:35 +02:00
szaimen
7ae718300f allow to adjust the talk port
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 14:17:33 +02:00
Simon L
8b7aa71d15 Merge pull request #869 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-22.05.3.1.1
Bump collabora/code from 21.11.5.3.1 to 22.05.3.1.1 in /Containers/collabora
2022-07-04 14:15:45 +02:00
Simon L
8f5966dae9 Merge pull request #873 from nextcloud/enh/858/skip-domain-verification
allow to skip the domain validation and add documentation for cloud…
2022-07-04 14:15:28 +02:00
szaimen
263b5605e1 onlyoffice now needs allow_local_remote_servers, too
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-07-04 13:35:23 +02:00
szaimen
7f245bd048 allow to skip the domain verification and add documentation for cloudflare argo tunnel
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 17:00:00 +02:00
Simon L
758a721d84 Merge pull request #867 from nextcloud/aio-dependency-update
Dependency updates
2022-06-30 16:56:47 +02:00
szaimen
49d94b388e remove the onlyoffice secret from latest-arm64.yml
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 16:55:35 +02:00
Simon L
973ea5ff4f Merge pull request #875 from nextcloud/enh/noid/internal-ip-address-documentation
add documentation on how to fix the internal or reserved ip-address e…
2022-06-30 16:51:17 +02:00
szaimen
0bd376743f add documentation on how to fix the internal or reserved ip-address error
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 16:41:12 +02:00
Simon L
86f15d0911 Merge pull request #874 from nextcloud/fix/872/ipv6-domain-validatioin
domain validation should be compatible with ipv6 only as well
2022-06-30 16:11:02 +02:00
szaimen
00c6eeda44 domain validation should be compatible with ipv6 only
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-30 14:47:37 +02:00
dependabot[bot]
9d8990348b Bump collabora/code in /Containers/collabora
Bumps collabora/code from 21.11.5.3.1 to 22.05.3.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-29 12:33:52 +00:00
szaimen
036bba94c0 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-06-28 12:19:27 +00:00
Simon L
dfb672811f Merge pull request #866 from nextcloud/automated/noid/psalm-baseline-update-1656391562
[Automated] Update psalm-baseline.xml
2022-06-28 07:58:02 +02:00
nextcloud-command
db89be5e9c Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-06-28 04:46:02 +00:00
szaimen
847e5a887c fix onlyoffice secret
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 17:29:37 +02:00
Simon L
dc87c7d3f4 Merge pull request #794 from nextcloud/enh/748/onlyoffice-collabora-secret
add a secret to onlyoffice
2022-06-27 16:47:57 +02:00
Simon L
bea77e4642 Merge pull request #859 from nextcloud/enh/noid/setdomain-logging
improve logging of setdomain and allow private ip-addresses again when running behind a reverse proxy
2022-06-27 16:47:30 +02:00
Simon L
e6211d93fe Merge pull request #864 from nextcloud/enh/862/change-backup-path
allow to change the backup path again if the initial backup was not s…
2022-06-27 16:46:45 +02:00
szaimen
2cf98773cc add a secret to onlyoffice and collabora
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 14:11:29 +02:00
Simon L
85caab7507 Merge pull request #853 from nextcloud/enh/noid/requirements
add a list of requirements for integrating new containers
2022-06-27 12:56:37 +02:00
Simon L
13beca4072 Merge pull request #852 from nextcloud/enh/noid/netdata
document how to install Netdata
2022-06-27 12:55:57 +02:00
Simon L
988c37f60b Merge pull request #851 from nextcloud/enh/noid/fail2ban
add docs on how to set up fail2ban
2022-06-27 12:54:57 +02:00
Simon L
d462813e4f Merge pull request #835 from nextcloud/enh/834/push-proxy
apache documentation - make the push proxy work
2022-06-27 12:54:17 +02:00
Simon L
4a651fc44e Merge pull request #850 from nextcloud/enh/noid/add-bruteforce-and-database-docs
add some bruteforce documentation and some documentation on phpmyadmi…
2022-06-27 12:53:39 +02:00
Simon L
9d971902d7 Merge pull request #856 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220622-slim
Bump debian from bullseye-20220527-slim to bullseye-20220622-slim in /Containers/borgbackup
2022-06-27 12:52:26 +02:00
Simon L
fb8c2a524d Merge pull request #857 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220622-slim
Bump debian from bullseye-20220527-slim to bullseye-20220622-slim in /Containers/apache
2022-06-27 12:52:13 +02:00
szaimen
95a3323993 allow to change the backup path again if the initial backup was not successful
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 12:49:19 +02:00
szaimen
b454660599 allow to continue with local ip-address when behind reverse proxy
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 12:21:20 +02:00
szaimen
21422f2e1c the timezone needs to be UTC for the mastercontainer
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-27 12:12:07 +02:00
szaimen
3beee36872 apache documentation - make the push proxy work
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-25 19:38:56 +02:00
szaimen
fc58ec2ac2 make visible that automatic updates is already implemented
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-24 21:22:09 +02:00
szaimen
036c1707d6 add a list of requirements for integratingnew containers
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-24 20:27:13 +02:00
szaimen
9b68d3c157 improve logging of setdomain
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-24 01:00:05 +02:00
dependabot[bot]
fc49283a5e Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220527-slim to bullseye-20220622-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 14:49:59 +00:00
dependabot[bot]
cf0b8bdb2a Bump debian in /Containers/apache
Bumps debian from bullseye-20220527-slim to bullseye-20220622-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 14:49:59 +00:00
Simon L
62e4ea3238 Merge pull request #855 from pmocek/patch-1
docs(manual-install): Fix typo in env var
2022-06-23 14:17:18 +02:00
Phil Mocek
8ff0536705 docs: Fix typo
In manual-install/readme.md, environmental variable NEXTCLOUD_DATADIR was misspelled NEXTLOUD_DATADIR.
2022-06-22 20:00:24 -07:00
szaimen
c88696809a port 80 should not be exposed since it can be changed
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-23 03:12:28 +02:00
szaimen
96888c2ffa document how to install Netdata
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 16:48:38 +02:00
szaimen
693df4d4e2 add docs on how to set up fail2ban
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 16:21:55 +02:00
szaimen
ffcace3688 add some bruteforce documentation and some documentation on phpmyadmin, adminer and pgadmin
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 15:56:10 +02:00
szaimen
4ae556422a enable psalm-security workflow again
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 15:05:07 +02:00
szaimen
3de963c238 increase to v1.4.2
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 15:03:23 +02:00
Simon L
effeb44690 Merge pull request #795 from nextcloud/enh/723/external-backup-locking
allow to lock the backup archive for external scripts
2022-06-22 15:02:32 +02:00
szaimen
4dc2400a87 disable psalm-security analysis as it fails currently
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 14:43:53 +02:00
szaimen
b5d5b1f4bc allow to lock the backup archive for external scripts
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-22 14:33:35 +02:00
Simon L
14dbc49863 Merge pull request #824 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.17-dind-alpine3.16
Bump docker from 20.10.16-dind-alpine3.16 to 20.10.17-dind-alpine3.16 in /Containers/mastercontainer
2022-06-22 14:28:15 +02:00
Simon L
dc4e251b05 Merge pull request #830 from nextcloud/enh/828/trusted-proxies
fix trusted_proxies for caddy in case of a reverse proxy situation
2022-06-22 14:27:57 +02:00
dependabot[bot]
06779d09ba Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.16-dind-alpine3.16 to 20.10.17-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-06-22 12:26:25 +00:00
Simon L
686128c9d4 Merge pull request #832 from nextcloud/enh/791/interned-strings-buffer
set the interned strings buffer to 32
2022-06-22 14:25:58 +02:00
Simon L
ae056c8c06 Merge pull request #831 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-21.11.5.3.1
Bump collabora/code from 21.11.5.1.1 to 21.11.5.3.1 in /Containers/collabora
2022-06-22 14:25:30 +02:00
Simon L
538f5e5bd3 Merge pull request #843 from nextcloud/aio-dependency-update
Dependency updates
2022-06-22 14:22:30 +02:00
Simon L
ad751595a8 Merge pull request #846 from nextcloud/nextcloud-container-update
Nextcloud update
2022-06-22 14:21:30 +02:00
szaimen
9b1e734efc nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-06-21 12:51:43 +00:00
szaimen
44f6cc0d16 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-06-21 12:18:55 +00:00
szaimen
aed1cd9700 set the interned strings buffer to 32
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-17 13:17:43 +02:00
Simon L
56948a8140 Merge pull request #829 from nextcloud/enh/823/docker-rootless-docs
add a note on docker-rootless regarding permissions outside the conta…
2022-06-16 09:23:04 +02:00
szaimen
66484803c3 add a note on docker-rootless regarding permissions outside the containers
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-15 22:33:36 +02:00
szaimen
f0ddf95a3e fix trusted_proxies for caddy in case of a reverse proxy situation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-15 19:17:57 +02:00
dependabot[bot]
6fe4b99306 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 21.11.5.1.1 to 21.11.5.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-15 12:36:30 +00:00
szaimen
145d83c000 the dind tag was not found
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-13 12:11:47 +02:00
Simon L
9f6f638d1b Merge pull request #821 from nextcloud/dependabot/docker/Containers/redis/redis-6.2.7-alpine
Bump redis from 6.2.6-alpine to 6.2.7-alpine in /Containers/redis
2022-06-13 12:03:06 +02:00
dependabot[bot]
5d0f344839 Bump redis from 6.2.6-alpine to 6.2.7-alpine in /Containers/redis
Bumps redis from 6.2.6-alpine to 6.2.7-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-13 10:02:36 +00:00
szaimen
334c879a5e update redis dependabot settings
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-13 12:02:01 +02:00
szaimen
61e1939de4 increase to 1.4.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-13 11:59:30 +02:00
Simon L
c2c4698119 Merge pull request #792 from nextcloud/enh/745/improve-ip-check
improve the ip-address check for setdomain
2022-06-13 11:57:03 +02:00
Simon L
69382b638a Merge pull request #814 from nextcloud/enh/813/support-no-give-channel
allow to use it even if no channel was provided
2022-06-13 11:47:24 +02:00
szaimen
d5afe84c78 fix false psalm report
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-13 11:45:06 +02:00
Simon L
bfab40f0d8 Merge pull request #791 from nextcloud/enh/772/opcache-buffer
increase opcache buffer to 64
2022-06-13 11:41:48 +02:00
szaimen
565f77759f increase opcache buffer to 64
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-13 11:41:14 +02:00
Simon L
bdc07b940f Merge pull request #806 from nextcloud/aio-dependency-update
Dependency updates
2022-06-13 11:39:02 +02:00
Simon L
9f6821c703 Merge pull request #811 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.20-apache-bullseye
Bump php from 8.0.19-apache-bullseye to 8.0.20-apache-bullseye in /Containers/mastercontainer
2022-06-13 11:36:59 +02:00
Simon L
ca0371f1f1 Merge pull request #812 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.20-fpm-alpine3.15
Bump php from 8.0.19-fpm-alpine3.15 to 8.0.20-fpm-alpine3.15 in /Containers/nextcloud
2022-06-13 11:36:43 +02:00
Simon L
ad9eadb7f9 Merge pull request #648 from nextcloud/enh/558/docker-rootless
add documentation for docker rootless
2022-06-13 11:31:58 +02:00
szaimen
80d3d71ae9 remove alpine3.15 tag from certain containers
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-12 22:59:04 +02:00
szaimen
45bb084ae5 allow to use it even if no channel was provided
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-11 14:48:05 +02:00
dependabot[bot]
620ef5ad7f Bump php in /Containers/nextcloud
Bumps php from 8.0.19-fpm-alpine3.15 to 8.0.20-fpm-alpine3.15.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-10 12:29:37 +00:00
dependabot[bot]
a1a9db3404 Bump php in /Containers/mastercontainer
Bumps php from 8.0.19-apache-bullseye to 8.0.20-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-06-10 12:29:35 +00:00
szaimen
6590f1d12e dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-06-10 12:17:48 +00:00
szaimen
bad431984e improve wording
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-10 01:08:11 +02:00
Simon L
f5d942f4c9 Merge pull request #679 from nextcloud/enh/676/apache
add apache to reverse proxy documentation
2022-06-08 10:46:33 +02:00
szaimen
a80f56bb17 make clear that this is for cmd
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-08 01:13:33 +02:00
szaimen
e5fa3e683b remove HSTS
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-08 00:40:57 +02:00
szaimen
8a43baf837 address review
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-08 00:40:06 +02:00
Simon L
b575bf4028 Merge pull request #799 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220531
Bump ubuntu from focal-20220426 to focal-20220531 in /Containers/talk
2022-06-07 19:22:57 +02:00
dependabot[bot]
ace4410e78 Bump ubuntu from focal-20220426 to focal-20220531 in /Containers/talk
Bumps ubuntu from focal-20220426 to focal-20220531.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-07 12:38:34 +00:00
szaimen
f3bd9eba66 improve the ip-address check for setdomain
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-07 00:15:02 +02:00
szaimen
3c14cc2676 fix a detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 23:44:25 +02:00
szaimen
bbdb874f90 increase to 1.4.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 23:08:14 +02:00
szaimen
a1a85dde8d address review
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 22:54:07 +02:00
szaimen
f73d1e39b4 add documentation for docker rootless
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 22:54:05 +02:00
Simon L
2d9a1afa33 Merge pull request #636 from nextcloud/enh/558/docker-socket-path
allow to specify the docker socket path
2022-06-06 22:51:47 +02:00
szaimen
3db57c6290 allow to specify the docker socket path
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 22:49:22 +02:00
szaimen
3f079bd0f3 fix localhost
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 22:39:45 +02:00
szaimen
cf0a5c9cbc add apache to reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 22:39:44 +02:00
Simon L
8764824870 Merge pull request #758 from nextcloud/fix/750/caddyfile-permissions
fix writing to the caddyfile
2022-06-06 22:31:10 +02:00
Simon L
703bfa9335 Merge pull request #759 from nextcloud/fix/753/notification-spam
fix the notification spam
2022-06-06 22:29:39 +02:00
szaimen
141887c635 fix the notification spam
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-06 22:27:23 +02:00
Simon L
5e9069c450 Merge pull request #773 from nextcloud/enh/noid/do-not-break-borg-lock
Do not break the borg lock automatically
2022-06-06 22:23:17 +02:00
Simon L
3ff65dda79 Merge pull request #775 from nextcloud/aio-dependency-update
Dependency updates
2022-06-06 22:21:36 +02:00
Simon L
f470cd8fb5 Merge pull request #776 from nextcloud/dependabot/docker/Containers/onlyoffice/onlyoffice/documentserver-7.1.1.23
Bump onlyoffice/documentserver from 7.1.0.215 to 7.1.1.23 in /Containers/onlyoffice
2022-06-06 22:20:51 +02:00
Simon L
bb4f3e34db Merge pull request #765 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-21.11.5.1.1
Bump collabora/code from 21.11.4.2.1 to 21.11.5.1.1 in /Containers/collabora
2022-06-06 22:20:21 +02:00
Simon L
a1c58d9189 Merge pull request #764 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220527-slim
Bump debian from bullseye-20220509-slim to bullseye-20220527-slim in /Containers/apache
2022-06-06 22:19:23 +02:00
Simon L
fc9d0ce7a3 Merge pull request #766 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220527-slim
Bump debian from bullseye-20220509-slim to bullseye-20220527-slim in /Containers/borgbackup
2022-06-06 22:19:15 +02:00
dependabot[bot]
603c980f00 Bump onlyoffice/documentserver in /Containers/onlyoffice
Bumps onlyoffice/documentserver from 7.1.0.215 to 7.1.1.23.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-02 12:36:55 +00:00
szaimen
f2f816257d dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-06-02 12:20:37 +00:00
szaimen
3358f53b84 Do not break the borg lock automatically
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-06-01 15:10:39 +02:00
szaimen
d15e2d7637 make the advice better understandable
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-31 18:53:46 +02:00
szaimen
39b5925d07 add some more hints on what is not allowed to be changed
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-30 22:53:17 +02:00
dependabot[bot]
12d54ff260 Bump collabora/code in /Containers/collabora
Bumps collabora/code from 21.11.4.2.1 to 21.11.5.1.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-30 12:29:41 +00:00
dependabot[bot]
81d2a660ec Bump debian in /Containers/apache
Bumps debian from bullseye-20220509-slim to bullseye-20220527-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-30 12:29:41 +00:00
dependabot[bot]
a42349f8ec Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220509-slim to bullseye-20220527-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-30 12:29:41 +00:00
szaimen
1f6b8d48a9 fix writing to the caddyfile
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-30 12:27:45 +02:00
Simon L
7ba10559fd Merge pull request #746 from nextcloud/aio-dependency-update
Dependency updates
2022-05-26 15:02:10 +02:00
szaimen
af43635fea dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-05-26 12:18:43 +00:00
szaimen
a60ac1bbf4 increase to 1.3.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-26 10:47:04 +02:00
Simon L
00964ae824 Merge pull request #728 from nextcloud/enh/725/log-files
adjust log files to be stored in a volume
2022-05-26 10:43:41 +02:00
szaimen
f7011b2459 Revert "Merge pull request #712 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.16.0"
This reverts commit c6a356714d, reversing
changes made to 6240e2e44e.
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-26 10:42:33 +02:00
Simon L
c6a356714d Merge pull request #712 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.16.0
Bump alpine from 3.15.4 to 3.16.0 in /Containers/domaincheck
2022-05-26 10:41:21 +02:00
Simon L
6240e2e44e Merge pull request #720 from nextcloud/enh/noid/timezone-visibility
show timezone also while container are running
2022-05-26 10:40:16 +02:00
szaimen
8dc83171d6 improve timezone
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-26 10:39:00 +02:00
Simon L
709a1315dd Merge pull request #739 from nextcloud/dependabot/composer/php/guzzlehttp/guzzle-7.4.3
Bump guzzlehttp/guzzle from 7.4.2 to 7.4.3 in /php
2022-05-26 10:32:42 +02:00
Simon L
10d686a44f Merge pull request #741 from nextcloud/fix/740/timezone
it should work even if no timezone was set
2022-05-26 10:32:26 +02:00
szaimen
0c2177bead it should work even if no timezone was set
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-26 01:57:31 +02:00
dependabot[bot]
4238044199 Bump guzzlehttp/guzzle from 7.4.2 to 7.4.3 in /php
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 7.4.2 to 7.4.3.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.4.2...7.4.3)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-25 22:25:32 +00:00
szaimen
5e1c252b2a fix detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-25 15:46:16 +02:00
Simon L
bdd8f87763 Merge pull request #729 from nextcloud/enh/724/rework-workflows
rework some workflows
2022-05-25 15:42:58 +02:00
szaimen
66995c9c7b rework some workflows
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-25 15:38:39 +02:00
szaimen
f7b04cda0e adjust log files to be stored in a volume
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-25 15:15:52 +02:00
szaimen
3f5f11dfd9 don't wrap windows in a details tag anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 21:30:42 +02:00
Simon L
8be1816f92 Merge pull request #710 from nextcloud/aio-yaml-update
Yaml updates
2022-05-24 20:39:51 +02:00
szaimen
20080daa71 show timezone also while container are running
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 20:23:11 +02:00
szaimen
abfc70b71d ipv6 networks fail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 19:43:36 +02:00
Simon L
22b702f23d Merge pull request #713 from nextcloud/enh/708/auto-backup-visibility
improve the visibility of automatic updates
2022-05-24 19:27:59 +02:00
szaimen
a53c8442fd revert 8443 http listen since this does not work
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 19:24:45 +02:00
Simon L
9e62e7f135 Merge pull request #719 from nextcloud/enh/noid/timezone-improvements
move the timezone change section to a better place
2022-05-24 19:09:50 +02:00
Simon L
56b6425f46 Merge pull request #670 from Eeemil/fix/https-redirects
Fix https redirects
2022-05-24 19:08:55 +02:00
szaimen
f618460a9f increase to 7775
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 19:07:33 +02:00
szaimen
13ca4c164a move the timezone change section to a better place
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 19:03:03 +02:00
Simon L
4740ff1370 Merge pull request #718 from nextcloud/fix/715/network-connections
fix the docker network
2022-05-24 18:53:08 +02:00
szaimen
b371a30531 fix the docker network
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 18:50:57 +02:00
dependabot[bot]
dd18312f68 Bump alpine from 3.15.4 to 3.16.0 in /Containers/domaincheck
Bumps alpine from 3.15.4 to 3.16.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-24 12:42:19 +00:00
szaimen
f17ea0f8e4 improve the visibility of automatic updates
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-24 14:40:30 +02:00
szaimen
39a40b153a Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-05-24 12:18:38 +00:00
Simon L
331bced264 Merge pull request #704 from nextcloud/enh/701/windows-volume-docs
improve windows volume create docs
2022-05-23 20:21:38 +02:00
szaimen
dc8ec276f2 improve windows volume create docs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 20:19:23 +02:00
szaimen
76bdd92c7f set PGTZ, too
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 20:16:05 +02:00
szaimen
8669f49811 add a note hint
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 20:05:30 +02:00
szaimen
f2f70904d1 fix the timezone PR
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 19:55:50 +02:00
szaimen
1e82bd757a use the correct warning sign
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 19:19:06 +02:00
szaimen
f47a45b07a add a warning for the volume create command
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 17:52:42 +02:00
szaimen
74cdcd27bb fix removal doc for windows
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 17:35:52 +02:00
Simon L
24c970b184 Merge pull request #700 from nextcloud/enh/688/windows-host-access
fix windows host access correctly
2022-05-23 17:29:38 +02:00
szaimen
cb24213a31 fix windows host access correctly
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 17:19:23 +02:00
szaimen
82dd888109 Revert "fix host mounts for windows"
This reverts commit 3c6cb85c74.
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 16:41:21 +02:00
szaimen
4c4080077e fix typo
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 16:19:35 +02:00
szaimen
307d6e0228 increase to 1.3.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 16:14:40 +02:00
Simon L
d42800a7a4 Merge pull request #689 from nextcloud/enh/688/winodws-host-mounts
fix host mounts for windows
2022-05-23 16:13:09 +02:00
szaimen
3c6cb85c74 fix host mounts for windows
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 15:55:29 +02:00
Simon L
b4a8322a1a Merge pull request #654 from nextcloud/enh/621/timezone
allow to change the timezone
2022-05-23 15:45:58 +02:00
szaimen
3e019d25f2 allow to change the timezone
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 15:39:09 +02:00
Simon L
a3d676b408 add redirect to https for port 8443
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-23 15:16:13 +02:00
Simon L
981166d218 Merge pull request #677 from nextcloud/fix/673/fix-port
set AIO_URL port to 443 if port 8000 was discovered
2022-05-23 15:03:51 +02:00
Simon L
0498e05f25 Merge pull request #680 from nextcloud/enh/noid/improve-domain-check
make the domain check more verbose and allow to debug it better
2022-05-23 15:03:37 +02:00
Simon L
081f6830f5 Merge pull request #696 from DavidBradette/main
Corrected typos
2022-05-23 12:52:12 +02:00
David Bradette
d0c569ba2f Update readme.md
Corrected typos.
2022-05-22 17:18:00 -06:00
Simon L
3beba0e1a8 Merge pull request #693 from nextcloud/enh/687/fedora
document how to resolve problems with firewalld
2022-05-22 19:42:35 +02:00
szaimen
c8eea9397f document how to resolve problems with firewalld
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-22 19:38:18 +02:00
Simon L
7a0c9a7f52 Merge pull request #678 from nextcloud/enh/665/reset-instance
document how to reset the instance properly
2022-05-22 13:42:04 +02:00
szaimen
46ddf8fb86 document how to reset the instance properly
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-22 13:38:23 +02:00
szaimen
3bf0a769c7 make the domain check more verbose and allow to debug it better
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-22 13:03:14 +02:00
Simon L
c9d7db4dc4 Merge pull request #682 from nextcloud/enh/681/add-nginx-proxy-manager
add nginx-proxy-manager to the reverse proxy documentation
2022-05-20 17:56:55 +02:00
szaimen
216f0a8e9e add nginx-proxy-manager to the reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-20 17:41:11 +02:00
Simon L
ccddef46b5 Merge pull request #683 from nextcloud/enh/noid/network-create
improve the network creation
2022-05-20 16:17:08 +02:00
szaimen
2b58c544ff improve the network creation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-20 16:10:57 +02:00
szaimen
c64bfd7253 set AIO_URL port to 443 if port 8000 was discovered
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-20 12:36:16 +02:00
Emil Marklund
d284812c6b Signing off
Signed-off-by: Emil Marklund <emil@btlcomputing.com>
2022-05-19 16:42:57 +02:00
Emil Marklund
8d0a2d3199 Fix https redirects
Signed-off-by: Emil Marklund <emil@btlcomputing.com>
2022-05-19 16:42:57 +02:00
szaimen
be7d57cf9f increase to 1.2.1
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-19 16:12:45 +02:00
Simon L
9ca1946bbc Merge pull request #652 from nextcloud/enh/638/fix-password-for-firefox
fix password copy for firefox
2022-05-19 16:11:40 +02:00
Simon L
7fc49d3f8d Merge pull request #643 from nextcloud/aio-dependency-update
Dependency updates
2022-05-19 16:10:16 +02:00
Simon L
5aa904fac0 Merge pull request #668 from nextcloud/nextcloud-container-update
Nextcloud update
2022-05-19 16:09:34 +02:00
szaimen
86af333662 nextcloud-update automated change
Signed-off-by: GitHub <noreply@github.com>
2022-05-19 12:50:02 +00:00
szaimen
8dc4bd4c43 dependency updates
Signed-off-by: GitHub <noreply@github.com>
2022-05-19 12:18:50 +00:00
szaimen
159a46db52 fix wrong quotation marks
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-18 23:44:52 +02:00
Simon L
4d29c8bf97 Merge pull request #647 from nextcloud/enh/641/migration-docs
improve migration docs
2022-05-18 22:40:24 +02:00
szaimen
3054711098 fix password copy for firefox
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-18 17:25:16 +02:00
Simon L
1cf5cf5509 Merge pull request #651 from nextcloud/dependabot/docker/Containers/postgresql/postgres-14.3-alpine3.15
Bump postgres from 14.2-alpine3.15 to 14.3-alpine3.15 in /Containers/postgresql
2022-05-18 17:17:53 +02:00
dependabot[bot]
541e030d89 Bump postgres in /Containers/postgresql
Bumps postgres from 14.2-alpine3.15 to 14.3-alpine3.15.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 12:31:42 +00:00
szaimen
989e11a89e adjust the headline sizes
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-17 16:16:40 +02:00
szaimen
c1d08769b4 improve migration docs
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-17 12:15:28 +02:00
Simon L
09c0e435ff Merge pull request #642 from ninoppp/patch-2
Fix migration doc by changing PGDP_PASS to PG_PASSWORD
2022-05-17 11:31:05 +02:00
Simon L
2fd91c0a28 fix it in the second place, too
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-17 11:30:13 +02:00
Simon L
b07b365046 Merge pull request #646 from DavidBradette/main
Corrected typos.
2022-05-17 11:03:03 +02:00
David Bradette
e50c63df96 Update readme.md
Corrected a typo.
2022-05-16 21:05:46 -06:00
David Bradette
e2616f79ba Update readme.md
Corrected a typo.
2022-05-16 20:57:57 -06:00
Simon L
1bb0fb7006 Merge pull request #634 from nextcloud/fix/625/onlyoffice
fix onlyoffice for caddy reverse proxy
2022-05-16 14:47:14 +02:00
szaimen
2e92a82a83 also stop the apache container
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-16 13:31:10 +02:00
szaimen
205887f17d improve the manual-upgrade documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-16 13:24:51 +02:00
szaimen
02f07bce72 add docs about manual upgrade
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-16 13:06:08 +02:00
szaimen
a3568cfa00 change php updates to daily
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-16 11:34:40 +02:00
szaimen
c51f91a446 reverse proxy documentation - document that others are currently not documented
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-16 11:09:34 +02:00
szaimen
96bf19a162 correct example for synology
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-16 11:05:29 +02:00
ninoppp
4bf56d7981 Update migration.md 2022-05-15 13:11:53 +02:00
Simon L
f07f1e1deb Merge pull request #633 from nextcloud/dependabot/docker/Containers/onlyoffice/onlyoffice/documentserver-7.1.0.215
Bump onlyoffice/documentserver from 7.0.1.37 to 7.1.0.215 in /Containers/onlyoffice
2022-05-13 19:19:43 +02:00
Simon L
929f3415ed Merge pull request #631 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.0.19-apache-bullseye
Bump php from 8.0.18-apache-bullseye to 8.0.19-apache-bullseye in /Containers/mastercontainer
2022-05-13 19:19:26 +02:00
Simon L
ac3509e257 Merge pull request #630 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.0.19-fpm-alpine3.15
Bump php from 8.0.18-fpm-alpine3.15 to 8.0.19-fpm-alpine3.15 in /Containers/nextcloud
2022-05-13 19:19:09 +02:00
Simon L
b08335718d Merge pull request #632 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.16-dind-alpine3.15
Bump docker from 20.10.15-dind-alpine3.15 to 20.10.16-dind-alpine3.15 in /Containers/mastercontainer
2022-05-13 17:59:16 +02:00
Simon L
2674b61ae7 Merge pull request #619 from nextcloud/dependabot/docker/Containers/borgbackup/debian-bullseye-20220509-slim
Bump debian from bullseye-20220418-slim to bullseye-20220509-slim in /Containers/borgbackup
2022-05-13 17:59:02 +02:00
Simon L
9eded5ae02 Merge pull request #620 from nextcloud/dependabot/docker/Containers/apache/debian-bullseye-20220509-slim
Bump debian from bullseye-20220418-slim to bullseye-20220509-slim in /Containers/apache
2022-05-13 17:58:48 +02:00
Simon L
c6f9d883db Merge pull request #626 from nextcloud/enh/614/document-chmod
document that chmod is required too
2022-05-13 17:58:10 +02:00
Simon L
7d68f2f3ca Merge pull request #627 from nextcloud/enh/615/document-port-443
explain that it needs port 443 a bit better
2022-05-13 17:57:36 +02:00
szaimen
268c647e5f fix onlyoffice for caddy reverse proxy
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-13 17:14:10 +02:00
dependabot[bot]
bcf051b721 Bump onlyoffice/documentserver in /Containers/onlyoffice
Bumps onlyoffice/documentserver from 7.0.1.37 to 7.1.0.215.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-13 12:33:53 +00:00
dependabot[bot]
74bd6df049 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.15-dind-alpine3.15 to 20.10.16-dind-alpine3.15.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-13 12:32:13 +00:00
dependabot[bot]
31050b559e Bump php in /Containers/mastercontainer
Bumps php from 8.0.18-apache-bullseye to 8.0.19-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-05-13 12:32:10 +00:00
dependabot[bot]
a17682a533 Bump php in /Containers/nextcloud
Bumps php from 8.0.18-fpm-alpine3.15 to 8.0.19-fpm-alpine3.15.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-13 12:31:55 +00:00
Simon L
7d419695c1 Merge pull request #628 from nextcloud/aio-yaml-update
Yaml updates
2022-05-13 13:35:50 +02:00
szaimen
d23e138d2a Yaml updates
Signed-off-by: GitHub <noreply@github.com>
2022-05-13 11:34:07 +00:00
szaimen
cae24e69f8 improve latest-arm64.yml further
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-13 13:31:45 +02:00
szaimen
0b6a41f385 improve the latest-arm64.yml file
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-13 13:26:12 +02:00
szaimen
2fe227de5d explain that it needs port 443 a bit better
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-13 13:13:04 +02:00
szaimen
2faeceb05a document that chmod is required too
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-13 13:03:30 +02:00
Simon L
23b0ea7c8c Merge pull request #599 from nextcloud/enh/557/add-docker-compose
allow to run the AIO containers with docker compose
2022-05-12 17:04:55 +02:00
szaimen
668cc3694a fix the commands
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-12 16:41:05 +02:00
dependabot[bot]
3bb97b66a1 Bump debian in /Containers/apache
Bumps debian from bullseye-20220418-slim to bullseye-20220509-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-12 12:35:58 +00:00
dependabot[bot]
4695e56011 Bump debian in /Containers/borgbackup
Bumps debian from bullseye-20220418-slim to bullseye-20220509-slim.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-12 12:35:45 +00:00
szaimen
e4f34ef93d add a readme
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-11 19:46:35 +02:00
szaimen
a2f99636bb update only via schedule
Signed-off-by: szaimen <szaimen@e.mail.de>

Revert "update only via schedule"

This reverts commit 86bcad9c4c0047bdc45cb12ce58ede89b8c1a07b.

Revert "Revert "update only via schedule""

This reverts commit 40a4236bd204ed65c25185c1d874378f094db6af.
2022-05-11 12:44:47 +02:00
szaimen
b003a8b49b allow to run containers without access to the docker socket
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-11 12:44:46 +02:00
szaimen
4e361e3ce2 use a different port for Nextcloud internally
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 21:49:19 +02:00
szaimen
ff27bd77cc fix access to the aio interface for everyone
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 21:00:37 +02:00
Simon L
c152fd7868 Merge pull request #606 from nextcloud/dependabot/github_actions/docker/login-action-2
Bump docker/login-action from 1 to 2
2022-05-09 19:25:45 +02:00
Simon L
e5acc9a108 Merge pull request #607 from nextcloud/dependabot/github_actions/docker/build-push-action-3
Bump docker/build-push-action from 2 to 3
2022-05-09 19:25:26 +02:00
dependabot[bot]
195d009c85 Bump docker/build-push-action from 2 to 3
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2 to 3.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 17:24:07 +00:00
dependabot[bot]
710b6c562b Bump docker/login-action from 1 to 2
Bumps [docker/login-action](https://github.com/docker/login-action) from 1 to 2.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 17:24:03 +00:00
szaimen
bb36f7e22c fix the reported gateway problem
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 18:20:25 +02:00
szaimen
6d0a68abf3 fix the build
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 16:31:28 +02:00
szaimen
9a0e3eccde fix the build
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 16:15:17 +02:00
szaimen
3449cd61f1 remove the backup archive from the repo as it produced issues
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 16:04:44 +02:00
szaimen
b6f22a04f9 1.2.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 15:54:06 +02:00
Simon L
346824b5e1 Merge pull request #584 from nextcloud/enh/576/rework-allowed-paths
refactor allowed paths
2022-05-09 15:51:06 +02:00
szaimen
36797305d8 document that windows is currently limited
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 15:48:18 +02:00
Simon L
32681c4c95 Merge pull request #536 from nextcloud/enh/535/fix-permission-changes
fix docker socket permission changes
2022-05-09 15:42:25 +02:00
Simon L
f508e7b33a Merge pull request #571 from nextcloud/enh/565/dns-resolution
check the DNS resolving on startup
2022-05-09 15:42:09 +02:00
szaimen
d669a0086c refactor allowed paths
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-09 15:41:01 +02:00
Simon L
5ef9846b61 Merge pull request #602 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.5.1-alpine
Bump caddy from 2.5.0-alpine to 2.5.1-alpine in /Containers/mastercontainer
2022-05-09 15:05:07 +02:00
Simon L
4025ac15ae Merge pull request #601 from nextcloud/dependabot/docker/Containers/apache/caddy-2.5.1-alpine
Bump caddy from 2.5.0-alpine to 2.5.1-alpine in /Containers/apache
2022-05-09 15:04:41 +02:00
dependabot[bot]
3baaf02969 Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.5.0-alpine to 2.5.1-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-05-09 12:30:18 +00:00
dependabot[bot]
ddf45ad73f Bump caddy from 2.5.0-alpine to 2.5.1-alpine in /Containers/apache
Bumps caddy from 2.5.0-alpine to 2.5.1-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-05-09 12:30:12 +00:00
szaimen
c5066f2b31 make error message more clear
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-08 17:42:10 +02:00
szaimen
3b85396afe fix detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-07 13:31:14 +02:00
Simon L
b9dc1b26d2 Merge pull request #593 from nextcloud/enh/568/improve-reverse-proxy
improve the reverse-proxy documentation another time
2022-05-07 13:25:02 +02:00
szaimen
375ddad429 improve the reverse-proxy documentation another time
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-07 13:22:59 +02:00
Simon L
f699c57f07 Merge pull request #595 from nextcloud/fix/594/apache-not-starting
fix apache not starting
2022-05-07 12:36:36 +02:00
Simon L
199102918e Merge pull request #592 from nextcloud/enh/543/treafik
improve the traefik reverse proxy documentation
2022-05-07 12:24:49 +02:00
szaimen
31d369117a fix apache not starting
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-07 11:25:35 +02:00
szaimen
575150fb92 fix word
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 21:07:30 +02:00
szaimen
b3b8c85ace add another debug point
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 21:05:53 +02:00
szaimen
0bf4538fb9 don't allow access from nextcloud-aio-nextcloud
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 20:24:12 +02:00
szaimen
0b0d872c05 document possibilities for nginx-proxy
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 17:12:19 +02:00
szaimen
177477d3cb improve the traefik reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 17:03:54 +02:00
Simon L
ed646c5cde Merge pull request #589 from nextcloud/enh/575/caddy
add an example caddy conf to the docker-compose file
2022-05-06 16:04:40 +02:00
Simon L
44584431e2 Merge pull request #590 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-20.10.15-dind-alpine3.15
Bump docker from 20.10.14-dind-alpine3.15 to 20.10.15-dind-alpine3.15 in /Containers/mastercontainer
2022-05-06 14:32:38 +02:00
dependabot[bot]
8de4655db6 Bump docker in /Containers/mastercontainer
Bumps docker from 20.10.14-dind-alpine3.15 to 20.10.15-dind-alpine3.15.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 12:26:37 +00:00
Simon L
9f13f15eb2 Merge pull request #587 from marekschneider/patch-2
Fixed WebDav Uploads Nginx
2022-05-06 12:45:02 +02:00
szaimen
f732bed008 add an example caddy conf to the docker-compose file
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 12:40:37 +02:00
marekschneider
d02ff5fc9f Fixed WebDav Uploads Nginx
Signed-off-by: marekschneider <marek@kms.onl>
2022-05-06 12:26:19 +02:00
Simon L
b0d83d45a1 Merge pull request #573 from nextcloud/enh/565/synology-paths
allow volume directories for synology
2022-05-06 11:48:06 +02:00
Julius Härtl
be9a5f01ea Merge pull request #566 from nextcloud/enh/543/increase-timeout
increase forms error timeout
2022-05-06 09:28:32 +02:00
szaimen
895ec0387d increase error timeout
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 01:35:24 +02:00
szaimen
9f88384f12 document that nginx-proxy is not supported
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 01:02:06 +02:00
szaimen
f110d3e345 improve the reverse proxy ddocumentation again
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-06 00:34:37 +02:00
Simon L
c6ad842c62 Merge pull request #562 from nextcloud/enh/559/update-policy
document the update policy
2022-05-05 21:53:13 +02:00
Simon L
99ee0d6744 Merge pull request #574 from nextcloud/enh/570/reverse-proxy-documentation
improve the reverse proxy documentation
2022-05-05 21:45:09 +02:00
szaimen
aaf7bcca99 improve the reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-05 21:43:25 +02:00
Simon L
84d164de41 Merge pull request #544 from nextcloud/enh/noid/system-requirements
improve optional addons section and add system requirements
2022-05-05 20:14:25 +02:00
szaimen
4759f8fad4 allow volume directories for synology
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-05 20:13:17 +02:00
Simon L
ee790d999a Merge pull request #561 from nextcloud/enh/560/verbose-output
make the variables check more verbose
2022-05-05 19:32:27 +02:00
Simon L
8ec7bb4af9 Merge pull request #555 from nextcloud/dependabot/docker/Containers/collabora/collabora/code-21.11.4.2.1
Bump collabora/code from 21.11.4.1.1 to 21.11.4.2.1 in /Containers/collabora
2022-05-05 19:31:39 +02:00
szaimen
c5973d9875 check the DNS resolving on startup
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-05 18:36:02 +02:00
Simon L
92bca4f424 Merge pull request #563 from nextcloud/enh/494/document-options
document all options in the docker-compose file
2022-05-05 09:24:40 +02:00
Simon L
ae36756476 Merge pull request #564 from nextcloud/enh/543/traefik
add Treafik 2 to reverse proxy documentation
2022-05-05 09:22:04 +02:00
szaimen
2c4ba5f4a8 add Treafik 2 to reverse proxy documentation
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-04 18:13:08 +02:00
Simon L
0a1e2c48e6 Merge pull request #550 from bentongxyz/patch-1
change some wordings to read more smoothly
2022-05-04 15:05:03 +02:00
szaimen
61cdb6b950 document all options in the docker-compose file
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-04 10:08:17 +02:00
szaimen
d6de2ea76f fix a detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-04 10:02:13 +02:00
szaimen
433db49eaf document the update policy
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-04 09:42:37 +02:00
szaimen
9af6a5fe4d make the variables check more verbose
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-04 09:16:16 +02:00
szaimen
732c8e7dd9 document vps builds
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-04 09:10:58 +02:00
szaimen
7f82405c8b fix the nextcloud update workflow
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-03 14:59:57 +02:00
dependabot[bot]
abdb477e8c Bump collabora/code in /Containers/collabora
Bumps collabora/code from 21.11.4.1.1 to 21.11.4.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 12:25:37 +00:00
bentongxyz
dd19188d6f change some wordings to read more smoothly 2022-05-03 02:17:24 +08:00
Simon L
55a2f40eca Merge pull request #547 from nextcloud/dependabot/docker/Containers/talk/ubuntu-focal-20220426
Bump ubuntu from focal-20220415 to focal-20220426 in /Containers/talk
2022-05-02 19:46:03 +02:00
Simon L
de6a79ab5c Merge pull request #549 from nextcloud/dependabot/github_actions/github/codeql-action-2
Bump github/codeql-action from 1 to 2
2022-05-02 19:45:25 +02:00
dependabot[bot]
d53c2b21cb Bump github/codeql-action from 1 to 2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 17:42:11 +00:00
szaimen
3d1cf55f50 copy nextcloud-aio app to the next major update
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-02 17:01:04 +02:00
dependabot[bot]
318310efef Bump ubuntu from focal-20220415 to focal-20220426 in /Containers/talk
Bumps ubuntu from focal-20220415 to focal-20220426.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 12:40:32 +00:00
szaimen
531f0d7f52 improve optional addons section
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-05-02 11:31:53 +02:00
Julius Härtl
3ccc58fefd Merge pull request #545 from nextcloud/automated/noid/psalm-baseline-update-1651467315
[Automated] Update psalm-baseline.xml
2022-05-02 08:53:12 +02:00
nextcloud-command
edb987bdb7 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2022-05-02 04:55:15 +00:00
szaimen
0659414118 fix detail
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-30 12:21:09 +02:00
szaimen
82621cccdc improve the steps for the rsync backup
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-30 12:19:33 +02:00
szaimen
603ce7cca0 don't allow access from nextcloud-aio-nextcloud
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-28 21:57:19 +02:00
szaimen
8ba392ba0a fix docker socket permission changes
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-27 13:52:03 +02:00
szaimen
f518ea7fee simply turn autocomplete off
password is bad in terms of UX because you cannot see the password anymore
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-27 01:02:34 +02:00
szaimen
04b51a9467 password field should be a password
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-26 23:34:52 +02:00
szaimen
046aad7b1a increase to 1.1.0
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-26 22:00:02 +02:00
Simon L
0bd106e44a Merge pull request #527 from nextcloud/enh/525/instance-restore-process
make the instance restore process better understandable
2022-04-26 21:59:09 +02:00
Simon L
e7c24196ad Merge pull request #534 from nextcloud/enh/528/php-version
Block Nextcloud from starting if php version is not compatible with i…
2022-04-26 21:58:25 +02:00
Simon L
09f9a24fa2 Merge pull request #533 from nextcloud/enh/529/data-fingerprint
update data fingerprint when restore was done
2022-04-26 21:57:46 +02:00
Simon L
d979383993 Merge pull request #532 from nextcloud/enh/noid/improve-wording-daily-backup
improve wording regarding daily backup
2022-04-26 21:57:28 +02:00
Simon L
ca47e2d912 Merge pull request #523 from nextcloud/enh/522/improve-docker-api-version-message
improve message when docker api version is not supported
2022-04-26 21:56:58 +02:00
Simon L
2b89156bb1 Merge pull request #520 from nextcloud/enh/noid/show-initial-credentials-better
show the initial credentials more prominent when being new
2022-04-26 21:56:44 +02:00
szaimen
316ea5a618 Block Nextcloud from starting if php version is not compatible with installed NC version
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-26 19:17:38 +02:00
szaimen
8e00812e0d update data fingerprint when restore was done
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-26 15:44:13 +02:00
szaimen
e44fbc880b improve wording regarding daily backup
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-26 15:22:00 +02:00
Simon L
77fa851391 Merge pull request #531 from nextcloud/dependabot/docker/Containers/mastercontainer/caddy-2.5.0-alpine
Bump caddy from 2.4.6-alpine to 2.5.0-alpine in /Containers/mastercontainer
2022-04-26 14:44:49 +02:00
Simon L
75446409fb Merge pull request #530 from nextcloud/dependabot/docker/Containers/apache/caddy-2.5.0-alpine
Bump caddy from 2.4.6-alpine to 2.5.0-alpine in /Containers/apache
2022-04-26 14:44:32 +02:00
dependabot[bot]
249a0e4a55 Bump caddy in /Containers/mastercontainer
Bumps caddy from 2.4.6-alpine to 2.5.0-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-04-26 12:34:53 +00:00
dependabot[bot]
6a1ce7cd2e Bump caddy from 2.4.6-alpine to 2.5.0-alpine in /Containers/apache
Bumps caddy from 2.4.6-alpine to 2.5.0-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-04-26 12:34:51 +00:00
szaimen
d288bdd023 make the instance restore process better understandable
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-24 14:12:03 +02:00
szaimen
8da25b6c35 improve message when docker api version is not supported
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-23 22:16:46 +02:00
szaimen
388dadb587 show the initial credentials more prominent when being new
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-23 20:11:33 +02:00
Simon L
6037b4402b Merge pull request #519 from nextcloud/qa-test-plans-2
additional qa test plans
2022-04-23 20:01:39 +02:00
szaimen
933eddae6d additional qa test plans
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-23 19:58:20 +02:00
Simon L
e28a2c4559 Merge pull request #516 from nextcloud/enh/noid/qa-test-plans
add qa test plans
2022-04-23 19:00:54 +02:00
szaimen
1276a1a51f add qa test plans
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-23 18:58:25 +02:00
szaimen
73924df349 fix pecl dependency update regex
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-04-22 18:00:35 +02:00
74 changed files with 2000 additions and 350 deletions

View File

@@ -17,9 +17,9 @@ labels: bug, 0. Needs triage
2.
3.
### Expected behaviour <!--- Tell us what should happen -->
### Expected behavior <!--- Tell us what should happen -->
### Actual behaviour <!--- Tell us what happens instead -->
### Actual behavior <!--- Tell us what happens instead -->
### Host OS <!--- (the host OS on which you are trying to install AIO on) -->

View File

@@ -3,7 +3,8 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
interval: "daily"
time: "12:00"
open-pull-requests-limit: 10
- package-ecosystem: composer
directory: "/php/"
@@ -91,6 +92,9 @@ updates:
schedule:
interval: "daily"
time: "12:00"
ignore:
- dependency-name: "redis"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 10
labels:
- 3. to review

View File

@@ -31,21 +31,21 @@ jobs:
APCU
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: docker.pkg.github.com
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to GitHub Container Registry
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build container image
uses: docker/build-push-action@v2
uses: docker/build-push-action@v3
with:
push: true
context: 'psalm-github-actions'

View File

@@ -37,7 +37,7 @@ jobs:
apcu_version="$(
git ls-remote --tags https://github.com/krakjoe/apcu.git \
| cut -d/ -f3 \
| grep -vE -- '-rc|-b' \
| grep -viE -- 'rc|b' \
| sed -E 's/^v//' \
| sort -V \
| tail -1

20
.github/workflows/json-validator.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: Json Validator
on:
pull_request:
push:
branches:
- main
jobs:
psalm:
name: Json Validator
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Validate Json
run: |
sudo apt install python3-pip --no-install-recommends
sudo pip3 install json-spec
json validate --schema-file=php/containers-schema.json --document-file=php/containers.json

48
.github/workflows/lint-php.yml vendored Normal file
View File

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

View File

@@ -19,7 +19,7 @@ jobs:
apcu_version="$(
git ls-remote --tags https://github.com/krakjoe/apcu.git \
| cut -d/ -f3 \
| grep -vE -- '-rc|-b' \
| grep -viE -- 'rc|b' \
| sed -E 's/^v//' \
| sort -V \
| tail -1
@@ -30,7 +30,7 @@ jobs:
memcached_version="$(
git ls-remote --tags https://github.com/php-memcached-dev/php-memcached.git \
| cut -d/ -f3 \
| grep -vE -- '-rc|-b' \
| grep -viE -- 'rc|b' \
| sed -E 's/^[rv]//' \
| sort -V \
| tail -1
@@ -60,7 +60,8 @@ jobs:
sed -i "s|pecl install imagick.*\;|pecl install imagick-$imagick_version\;|" ./Containers/nextcloud/Dockerfile
# Nextcloud
NCVERSION=$(curl -s -m 900 https://download.nextcloud.com/server/releases/ | sed --silent 's/.*href="nextcloud-\([^"]\+\).zip.asc".*/\1/p' | sort --version-sort | tail -1)
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)
sed -i "s|^ENV NEXTCLOUD_VERSION.*|ENV NEXTCLOUD_VERSION $NCVERSION|" ./Containers/nextcloud/Dockerfile
- name: Create Pull Request

View File

@@ -3,16 +3,26 @@ name: Psalm Analysis
on:
pull_request:
push:
branches:
- main
jobs:
psalm:
name: Psalm
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Psalm
uses: docker://ghcr.io/nextcloud/all-in-one-psalm
- uses: actions/checkout@v3
- name: Set up php8.0
uses: shivammathur/setup-php@v2
with:
composer_ignore_platform_reqs: false
relative_dir: php
php-version: 8.0
extensions: apcu
coverage: none
- name: Run script
run: |
set -x
cd php
composer global require vimeo/psalm --prefer-dist --no-progress --dev
composer install
composer run psalm

View File

@@ -20,6 +20,6 @@ jobs:
composer_ignore_platform_reqs: false
report_file: results.sarif
- name: Upload Security Analysis results to GitHub
uses: github/codeql-action/upload-sarif@v1
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: php/results.sarif

View File

@@ -3,6 +3,8 @@ name: Shellcheck
on:
pull_request:
push:
branches:
- main
jobs:
shellcheck:

View File

@@ -3,6 +3,8 @@ name: 'Spellcheck'
on:
pull_request:
push:
branches:
- main
jobs:
spellcheck:

27
.github/workflows/update-yaml.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: Update Yaml files
on:
workflow_dispatch:
schedule:
- cron: '00 12 * * *'
jobs:
psalm:
name: update yaml files
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: update yaml files
run: |
sudo bash manual-install/update-yaml.sh
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
with:
commit-message: Yaml updates
signoff: true
title: Yaml updates
body: Automated yaml updates for the docker-compose files. Should only be merged shortly before the next latest release.
labels: dependencies
milestone: next
branch: aio-yaml-update

3
.gitignore vendored
View File

@@ -3,3 +3,6 @@
/php/data/configuration.json
/php/data/backupsecret.json
/php/vendor
/manual-install/*.conf
!/manual-install/sample.conf
/manual-install/docker-compose.yml

View File

@@ -11,24 +11,34 @@
# Notify Push
route /push/* {
uri strip_prefix /push
reverse_proxy {$NEXTCLOUD_HOST}:7867
reverse_proxy {$NEXTCLOUD_HOST}:7867 {
# trusted_proxies placeholder
}
}
# Talk
route /standalone-signaling/* {
uri strip_prefix /standalone-signaling
reverse_proxy {$TALK_HOST}:8081
reverse_proxy {$TALK_HOST}:8081 {
# trusted_proxies placeholder
}
}
# Collabora
route /browser/* {
reverse_proxy {$COLLABORA_HOST}:9980
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
route /hosting/* {
reverse_proxy {$COLLABORA_HOST}:9980
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
route /cool/* {
reverse_proxy {$COLLABORA_HOST}:9980
reverse_proxy {$COLLABORA_HOST}:9980 {
# trusted_proxies placeholder
}
}
# Onlyoffice
@@ -36,6 +46,8 @@
uri strip_prefix /onlyoffice
reverse_proxy {$ONLYOFFICE_HOST}:80 {
header_up X-Forwarded-Host {http.request.host}/onlyoffice
header_up X-Forwarded-Proto https
# trusted_proxies placeholder
}
}
@@ -44,7 +56,10 @@
rewrite /.well-known/carddav /remote.php/dav
rewrite /.well-known/caldav /remote.php/dav
header Strict-Transport-Security max-age=31536000;
reverse_proxy localhost:80
reverse_proxy localhost:8000 {
# See https://github.com/nextcloud/all-in-one/issues/828
# trusted_proxies placeholder
}
}
# TLS options

View File

@@ -1,9 +1,7 @@
# Caddy is a requirement
FROM caddy:2.4.6-alpine as caddy
FROM caddy:2.5.1-alpine as caddy
FROM debian:bullseye-20220418-slim
EXPOSE 80
FROM debian:bullseye-20220622-slim
RUN mkdir -p /mnt/data; \
chown www-data:www-data /mnt/data;
@@ -40,12 +38,17 @@ RUN a2enmod rewrite \
COPY nextcloud.conf /etc/apache2/sites-available/
RUN a2dissite 000-default && \
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 set -ex; \
a2dissite 000-default && \
a2dissite default-ssl && \
a2ensite nextcloud.conf && \
rm -rf /var/www/html/* && \
service apache2 restart; \
chown www-data:www-data -R /var/log/apache2; \
mkdir -p /var/run/apache2; \
chown -R www-data:www-data /var/run/apache2; \
chown -R www-data:www-data /var/www;
@@ -60,8 +63,8 @@ COPY start.sh /usr/bin/
COPY supervisord.conf /
RUN chmod +x /usr/bin/start.sh; \
chmod +r /supervisord.conf; \
chmod a+w /Caddyfile; \
chmod a+w /
chown www-data:www-data /Caddyfile; \
chmod +r -R /etc/apache2
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd

View File

@@ -1,4 +1,5 @@
<VirtualHost *:80>
Listen 8000
<VirtualHost *:8000>
# PHP match
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://nextcloud-aio-nextcloud:9000"

View File

@@ -21,15 +21,30 @@ if [ -z "$APACHE_PORT" ]; then
export APACHE_PORT="443"
fi
# Change variables in case of reverse proxies
if [ "$APACHE_PORT" != '443' ]; then
export PROTOCOL="http"
export NC_DOMAIN=""
sed -i 's|auto_https.*|auto_https off|' /Caddyfile
else
export PROTOCOL="https"
sed -i 's|auto_https.*|auto_https disable_redirects|' /Caddyfile
fi
# Change the auto_https in case of reverse proxies
if [ "$APACHE_PORT" != '443' ]; then
CADDYFILE="$(sed 's|auto_https.*|auto_https off|' /Caddyfile)"
else
CADDYFILE="$(sed 's|auto_https.*|auto_https disable_redirects|' /Caddyfile)"
fi
echo "$CADDYFILE" > /Caddyfile
# Change the trusted_proxies in case of reverse proxies
if [ "$APACHE_PORT" != '443' ]; then
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies private_ranges|' /Caddyfile)"
else
CADDYFILE="$(sed 's|trusted_proxies private_ranges|# trusted_proxies placeholder|' /Caddyfile)"
fi
echo "$CADDYFILE" > /Caddyfile
# Add caddy path
mkdir -p /mnt/data/caddy/

View File

@@ -1,4 +1,4 @@
FROM debian:bullseye-20220418-slim
FROM debian:bullseye-20220622-slim
RUN set -ex; \
\

View File

@@ -37,13 +37,11 @@ if [ "$BORG_MODE" != backup ] && [ "$BORG_MODE" != test ] && ! [ -f "$BORG_BACKU
exit 1
fi
# Break the borg lock if it exists
if [ -f "$BORG_BACKUP_DIRECTORY/lock.roster" ]; then
echo "Breaking the borg lock..."
if ! borg break-lock "$BORG_BACKUP_DIRECTORY"; then
echo "Could not break the borg lock!"
exit 1
fi
# Do not continue if this file exists (needed for simple external blocking)
if [ -f "$BORG_BACKUP_DIRECTORY/aio-lockfile" ]; then
echo "Not continuing because aio-lockfile exists - it seems like a script is externally running which is locking the backup archive."
echo "If this should not be the case, you can fix this by deleting the 'aio-lockfile' file from the backup archive directory."
exit 1
fi
# Create lockfile
@@ -233,6 +231,10 @@ if [ "$BORG_MODE" = restore ]; then
# Add file to Nextcloud container so that it skips any update the next time
touch "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/skip.update"
chmod 777 "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/skip.update"
# Add file to Nextcloud container so that it performs a fingerprint update the next time
touch "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/fingerprint.update"
chmod 777 "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/fingerprint.update"
fi
# Do the Backup check
@@ -256,11 +258,15 @@ fi
if [ "$BORG_MODE" = test ]; then
if ! [ -d "$BORG_BACKUP_DIRECTORY" ]; then
echo "No 'borg' directory in the given backup directory found!"
echo "Only the files/folders below have been found in the given directory."
ls -a "$MOUNT_DIR"
echo "Please adjust the directory so that the borg archive is positioned in a folder named 'borg' inside the given directory!"
exit 1
elif ! [ -f "$BORG_BACKUP_DIRECTORY/config" ]; then
echo "A 'borg' directory was found but could not find the borg archive."
echo "It must be positioned directly in the 'borg' subfolder."
echo "Only the files/folders below have been found in the borg directory."
ls -a "$BORG_BACKUP_DIRECTORY"
echo "The archive and most importantly the config file must be positioned directly in the 'borg' subfolder."
exit 1
elif ! borg list "$BORG_BACKUP_DIRECTORY"; then
echo "The entered path seems to be valid but could not open the backup archive."

View File

@@ -1,7 +1,8 @@
#!/bin/bash
# Variables
export BORG_BACKUP_DIRECTORY="/mnt/borgbackup/borg"
export MOUNT_DIR="/mnt/borgbackup"
export BORG_BACKUP_DIRECTORY="$MOUNT_DIR/borg"
# Validate BORG_PASSWORD
if [ -z "$BORG_PASSWORD" ] && [ -z "$BACKUP_RESTORE_PASSWORD" ]; then
@@ -35,7 +36,11 @@ fi
rm -f "/nextcloud_aio_volumes/nextcloud_aio_database_dump/backup-is-running"
# Get a list of all available borg archives
borg list "$BORG_BACKUP_DIRECTORY" | grep "nextcloud-aio" | awk -F " " '{print $1","$3,$4}' > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/backup_archives.list"
if borg list "$BORG_BACKUP_DIRECTORY" &>/dev/null; then
borg list "$BORG_BACKUP_DIRECTORY" | grep "nextcloud-aio" | awk -F " " '{print $1","$3,$4}' > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/backup_archives.list"
else
echo "" > "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/backup_archives.list"
fi
chmod +r "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/backup_archives.list"
if [ -n "$FAILED" ]; then

View File

@@ -1,5 +1,6 @@
# Probably from this file: https://github.com/Cisco-Talos/clamav/blob/main/Dockerfile
FROM clamav/clamav:0.104.2-3
RUN apk add --update --no-cache tzdata
COPY clamav.conf /tmp/
RUN cat /tmp/clamav.conf >> /etc/clamav/clamd.conf

View File

@@ -1,2 +1,15 @@
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
FROM collabora/code:21.11.4.1.1
FROM collabora/code:22.05.3.1.1
USER root
RUN set -ex; \
\
apt-get update; \
export DEBIAN_FRONTEND=noninteractive; \
apt-get install -y --no-install-recommends \
tzdata \
; \
rm -rf /var/lib/apt/lists/*
USER 104

View File

@@ -1,4 +1,6 @@
{
# auto_https will create redirects for https://{host}:8443 instead of https://{host}
# https redirects are added manually in the http://:80 block
auto_https disable_redirects
storage file_system {
@@ -6,6 +8,10 @@
}
}
http://:80 {
redir https://{host}{uri}
}
https://:8443 {
reverse_proxy localhost:8000

View File

@@ -1,11 +1,11 @@
# Docker CLI is a requirement
FROM docker:20.10.14-dind-alpine3.15 as dind
FROM docker:20.10.17-dind-alpine3.16 as dind
# Caddy is a requirement
FROM caddy:2.4.6-alpine as caddy
FROM caddy:2.5.1-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.0/bullseye/apache/Dockerfile
FROM php:8.0.18-apache-bullseye
FROM php:8.0.20-apache-bullseye
EXPOSE 80
EXPOSE 8080

View File

@@ -20,7 +20,7 @@ while true; do
# Allow to continue directly if e.g. the mastercontainer was updated. Otherwise wait for the next execution
if [ "$LOCK_FILE_PRESENT" = 0 ]; then
while [ "$(date +%H:%M)" != "$BACKUP_TIME" ]; do
sleep 1
sleep 30
done
fi
@@ -93,4 +93,7 @@ while true; do
# Remove dangling images
sudo -u www-data docker image prune -f
# Wait 60s so that the whole loop will not be executed again
sleep 60
done

View File

@@ -31,6 +31,9 @@ elif ! sudo -u www-data test -r /var/run/docker.sock; then
echo "Adding internal www-data to group $DOCKER_GROUP"
usermod -aG "$DOCKER_GROUP" www-data
else
# Delete the docker group for cases when the docker socket permissions changed between restarts
groupdel docker &>/dev/null
# If the group doesn't exist, create it
echo "Creating docker group internally with id $DOCKER_GROUP_ID"
groupadd -g "$DOCKER_GROUP_ID" docker
@@ -54,7 +57,7 @@ API_VERSION_NUMB="$(echo "$API_VERSION" | sed 's/\.//')"
LOCAL_API_VERSION_NUMB="$(sudo -u www-data docker version | grep -i "api version" | grep -oP '[0-9]+.[0-9]+' | head -1 | sed 's/\.//')"
if [ -n "$LOCAL_API_VERSION_NUMB" ] && [ -n "$API_VERSION_NUMB" ]; then
if ! [ "$LOCAL_API_VERSION_NUMB" -ge "$API_VERSION_NUMB" ]; then
echo "Docker v$API_VERSION is not supported by your docker engine. Cannot proceed."
echo "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
exit 1
fi
else
@@ -64,39 +67,34 @@ 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?"
echo "It seems like you did not give the mastercontainer the correct name?
Using a different name is not supported!"
exit 1
elif ! sudo -u www-data docker volume ls | grep -q "nextcloud_aio_mastercontainer"; then
echo "It seems like you did not give the mastercontainer volume the correct name?"
echo "It seems like you did not give the mastercontainer volume the correct name?
Using a different name is not supported!"
exit 1
fi
# Check for other options
if [ -n "$NEXTCLOUD_DATADIR" ]; then
if ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/mnt/" \
&& ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/media/" \
&& ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/host_mnt/"
then
if [ "$NEXTCLOUD_DATADIR" = "nextcloud_aio_nextcloud_datadir" ]; then
echo "NEXTCLOUD_DATADIR is set to $NEXTCLOUD_DATADIR"
elif ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/" || [ "$NEXTCLOUD_DATADIR" = "/" ]; then
echo "You've set NEXTCLOUD_DATADIR but not to an allowed value.
The string must start with '/mnt/', '/media/' or '/host_mnt/'. E.g. '/mnt/ncdata'"
exit 1
elif [ "$NEXTCLOUD_DATADIR" = "/mnt/" ] || [ "$NEXTCLOUD_DATADIR" = "/media/" ] || [ "$NEXTCLOUD_DATADIR" = "/host_mnt/" ]; then
echo "You've set NEXTCLOUD_DATADIR but not to an allowed value.
The string must start with '/mnt/', '/media/' or '/host_mnt/' and not be equal to these."
The string must start with '/' and must not be equal to '/'.
It is set to '$NEXTCLOUD_DATADIR'."
exit 1
fi
fi
if [ -n "$NEXTCLOUD_MOUNT" ]; then
if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/" \
&& ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/media/" \
&& ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/host_mnt/" \
&& ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/var/backups$"
then
if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/" || [ "$NEXTCLOUD_MOUNT" = "/" ]; then
echo "You've set NEXCLOUD_MOUNT but not to an allowed value.
The string must be equal to/start with '/mnt/', '/media/' or '/host_mnt/' or be equal to '/var/backups'."
The string must start with '/' and must not be equal to '/'.
It is set to '$NEXTCLOUD_MOUNT'."
exit 1
elif [ "$NEXTCLOUD_MOUNT" = "/mnt/ncdata" ] || echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/ncdata/"; then
echo "/mnt/ncdata and /mnt/ncdata/ are not allowed for NEXTCLOUD_MOUNT."
echo "'/mnt/ncdata' and '/mnt/ncdata/' are not allowed as values for NEXTCLOUD_MOUNT."
exit 1
fi
fi
@@ -108,13 +106,48 @@ if [ -n "$NEXTCLOUD_DATADIR" ] && [ -n "$NEXTCLOUD_MOUNT" ]; then
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"
echo "You provided an Apache port but did not only use numbers.
It is set to '$APACHE_PORT'."
exit 1
elif ! [ "$APACHE_PORT" -le 65535 ] || ! [ "$APACHE_PORT" -ge 1 ]; then
echo "The provided Apache port is invalid. It must be between 1 and 65535"
exit 1
fi
fi
if [ -n "$TALK_PORT" ]; then
if ! check_if_number "$TALK_PORT"; then
echo "You provided an Talk port but did not only use numbers.
It is set to '$TALK_PORT'."
exit 1
elif ! [ "$TALK_PORT" -le 65535 ] || ! [ "$TALK_PORT" -ge 1 ]; then
echo "The provided Talk port is invalid. It must be between 1 and 65535"
exit 1
fi
fi
if [ -n "$APACHE_PORT" ] && [ -n "$TALK_PORT" ]; then
if [ "$APACHE_PORT" = "$TALK_PORT" ]; then
echo "APACHE_PORT and TALK_PORT are not allowed to be equal."
exit 1
fi
fi
if [ -n "$DOCKER_SOCKET_PATH" ]; then
if ! echo "$DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$DOCKER_SOCKET_PATH" | grep -q "/$"; then
echo "You've set DOCKER_SOCKET_PATH but not to an allowed value.
The string must start with '/' and must not end with '/'.
It is set to '$DOCKER_SOCKET_PATH'."
exit 1
fi
fi
# Check DNS resolution
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565
curl https://nextcloud.com &>/dev/null
if [ "$?" = 6 ]; then
echo "Could not resolve the host nextcloud.com."
echo "Most likely the DNS resolving does not work."
echo "You should be able to fix this by adding the '--dns=\"ip.address.of.dns.server\"' option to the docker run command."
exit 1
fi
# Add important folders
mkdir -p /mnt/docker-aio-config/data/
@@ -130,6 +163,20 @@ chown www-data:www-data -R /mnt/docker-aio-config/session/
chown www-data:www-data -R /mnt/docker-aio-config/caddy/
chown root:root -R /mnt/docker-aio-config/certs/
# Don't allow access to the AIO interface from the Nextcloud container
# Probably more cosmetic than anything but at least an attempt
if ! grep -q '# nextcloud-aio-block' /etc/apache2/apache2.conf; then
cat << APACHE_CONF >> /etc/apache2/apache2.conf
# nextcloud-aio-block-start
<Location />
order allow,deny
deny from nextcloud-aio-nextcloud.nextcloud-aio
allow from all
</Location>
# nextcloud-aio-block-end
APACHE_CONF
fi
# Adjust certs
GENERATED_CERTS="/mnt/docker-aio-config/certs"
TMP_CERTS="/etc/apache2/certs"
@@ -153,4 +200,7 @@ 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:
https://your-domain-that-points-to-this-server.tld:8443"
# Set the timezone to UTC
export TZ=UTC
exec "$@"

View File

@@ -1,5 +1,5 @@
# From https://github.com/nextcloud/docker/blob/master/23/fpm-alpine/Dockerfile
FROM php:8.0.18-fpm-alpine3.15
FROM php:8.0.20-fpm-alpine3.15
# Custom: change id of www-data user as it needs to be the same like on old installations
RUN set -ex; \
@@ -85,7 +85,7 @@ RUN set -ex; \
# set recommended PHP.ini settings
# see https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/server_tuning.html#enable-php-opcache
RUN { \
echo 'opcache.interned_strings_buffer=16'; \
echo 'opcache.interned_strings_buffer=32'; \
echo 'opcache.save_comments=1'; \
echo 'opcache.revalidate_freq=60'; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini; \
@@ -105,7 +105,7 @@ RUN { \
VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 23.0.4
ENV NEXTCLOUD_VERSION 23.0.6
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \
@@ -198,6 +198,7 @@ RUN set -ex; \
gnupg \
git \
postgresql-client \
tzdata \
; \
rm -rf /var/lib/apt/lists/*
@@ -221,8 +222,6 @@ RUN set -ex; \
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/ && \
mkdir -p /var/log/nextcloud/ && \
chown -R www-data:root /var/log/nextcloud/ && \
rm -r /usr/src/nextcloud/apps/updatenotification
COPY start.sh /

View File

@@ -48,6 +48,15 @@ if [ "$installed_version" != "0.0.0.0" ]; then
unset ADMIN_PASSWORD
fi
# Don't start the container if Nextcloud is not compatible with the PHP version
if [ -f "/var/www/html/lib/versioncheck.php" ] && ! php /var/www/html/lib/versioncheck.php; then
echo "It seems like your installed Nextcloud is not compatible with the by the container provided PHP version."
echo "This most likely happened because you tried to restore an old Nextcloud version from backup that is not compatible with the PHP version that comes with the container."
echo "Please try to restore a more recent backup which contains a Nextcloud version that is compatible with the PHP version that comes with the container."
echo "If you do not have a more recent backup, feel free to have a look at this documentation: https://github.com/nextcloud/all-in-one/blob/main/manual-upgrade.md"
exit 1
fi
# Skip any update if Nextcloud was just restored
if ! [ -f "/mnt/ncdata/skip.update" ]; then
if version_greater "$image_version" "$installed_version"; then
@@ -73,6 +82,8 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
mkdir -p /usr/src/tmp/nextcloud/custom_apps
chmod +x /usr/src/tmp/nextcloud/occ
cp /usr/src/nextcloud/config/* /usr/src/tmp/nextcloud/config/
mkdir -p /usr/src/tmp/nextcloud/apps/nextcloud-aio
cp /usr/src/nextcloud/apps/nextcloud-aio/* /usr/src/tmp/nextcloud/apps/nextcloud-aio/
mv /usr/src/nextcloud /usr/src/temp-nextcloud
mv /usr/src/tmp/nextcloud /usr/src/nextcloud
rm -r /usr/src/tmp
@@ -159,10 +170,10 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
mkdir -p /var/www/html/data
php /var/www/html/occ config:system:set loglevel --value=2
php /var/www/html/occ config:system:set log_type --value=file
php /var/www/html/occ config:system:set logfile --value="/var/log/nextcloud/nextcloud.log"
php /var/www/html/occ config:system:set logfile --value="/var/www/html/data/nextcloud.log"
php /var/www/html/occ config:system:set log_rotate_size --value="10485760"
php /var/www/html/occ app:enable admin_audit
php /var/www/html/occ config:app:set admin_audit logfile --value="/var/log/nextcloud/audit.log"
php /var/www/html/occ config:app:set admin_audit logfile --value="/var/www/html/data/audit.log"
php /var/www/html/occ config:system:set log.condition apps 0 --value="admin_audit"
# Apply preview settings
@@ -250,11 +261,22 @@ if [ -z "$(find "/mnt/ncdata/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*"
exit 1
fi
# Perform fingerprint update if instance was restored
if [ -f "/mnt/ncdata/fingerprint.update" ]; then
php /var/www/html/occ maintenance:data-fingerprint
rm "/mnt/ncdata/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
# Adjusting log files to be stored on a volume
echo "Adjusting log files..."
php /var/www/html/occ config:system:set logfile --value="/var/www/html/data/nextcloud.log"
php /var/www/html/occ config:app:set admin_audit logfile --value="/var/www/html/data/audit.log"
# Apply network settings
echo "Applying network settings..."
php /var/www/html/occ config:system:set trusted_domains 1 --value="$NC_DOMAIN"
@@ -285,6 +307,7 @@ else
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"
php /var/www/html/occ config:system:set trusted_proxies 1 --value="::1"
php /var/www/html/occ config:app:set notify_push base_endpoint --value="https://$NC_DOMAIN/push"
# Collabora
@@ -301,7 +324,6 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
php /var/www/html/occ config:system:set allow_local_remote_servers --type=bool --value=true
else
if [ -d "/var/www/html/custom_apps/richdocuments" ]; then
php /var/www/html/occ config:system:delete allow_local_remote_servers
php /var/www/html/occ app:remove richdocuments
fi
fi
@@ -319,7 +341,10 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
else
php /var/www/html/occ app:update onlyoffice
fi
php /var/www/html/occ config:system:set onlyoffice jwt_secret --value="$ONLYOFFICE_SECRET"
php /var/www/html/occ config:system:set onlyoffice jwt_header --value="AuthorizationJwt"
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
php /var/www/html/occ app:remove onlyoffice
@@ -335,8 +360,8 @@ if [ "$TALK_ENABLED" = 'yes' ]; then
else
php /var/www/html/occ app:update spreed
fi
STUN_SERVERS="[\"$NC_DOMAIN:3478\"]"
TURN_SERVERS="[{\"server\":\"$NC_DOMAIN:3478\",\"secret\":\"$TURN_SECRET\",\"protocols\":\"udp,tcp\"}]"
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

View File

@@ -1,2 +1,2 @@
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
FROM onlyoffice/documentserver:7.0.1.37
FROM onlyoffice/documentserver:7.1.1.23

View File

@@ -1,5 +1,5 @@
# From https://github.com/docker-library/postgres/blob/master/13/alpine/Dockerfile
FROM postgres:14.2-alpine3.15
FROM postgres:14.3-alpine3.15
RUN apk add --update --no-cache bash openssl shadow netcat-openbsd

View File

@@ -1,5 +1,5 @@
# From https://github.com/docker-library/redis/blob/master/6.2/alpine/Dockerfile
FROM redis:6.2.6-alpine3.15
FROM redis:6.2.7-alpine
RUN apk add --update --no-cache openssl bash

View File

@@ -1,6 +1,4 @@
FROM ubuntu:focal-20220415
EXPOSE 3478
FROM ubuntu:focal-20220531
RUN set -ex; \
\

View File

@@ -17,7 +17,7 @@ fi
# Turn
cat << TURN_CONF > "/etc/turnserver.conf"
listening-port=3478
listening-port=$TALK_PORT
fingerprint
lt-cred-mech
use-auth-secret
@@ -36,8 +36,8 @@ set -x
sed -i "s|#turn_rest_api_key.*|turn_rest_api_key = \"$JANUS_API_KEY\"|" /etc/janus/janus.jcfg
sed -i "s|#full_trickle.*|full_trickle = true|g" /etc/janus/janus.jcfg
sed -i 's|#stun_server.*|stun_server = "127.0.0.1"|g' /etc/janus/janus.jcfg
sed -i "s|#stun_port.*|stun_port = 3478|g" /etc/janus/janus.jcfg
sed -i "s|#turn_port.*|turn_port = 3478|g" /etc/janus/janus.jcfg
sed -i "s|#stun_port.*|stun_port = $TALK_PORT|g" /etc/janus/janus.jcfg
sed -i "s|#turn_port.*|turn_port = $TALK_PORT|g" /etc/janus/janus.jcfg
sed -i 's|#turn_server.*|turn_server = "127.0.0.1"|g'/etc/janus/janus.jcfg
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
@@ -80,7 +80,7 @@ url = ws://127.0.0.1:8188
[turn]
apikey = ${JANUS_API_KEY}
secret = ${TURN_SECRET}
servers = turn:$NC_DOMAIN:3478?transport=tcp,turn:$NC_DOMAIN:3478?transport=udp
servers = turn:$NC_DOMAIN:$TALK_PORT?transport=tcp,turn:$NC_DOMAIN:$TALK_PORT?transport=udp
SIGNALING_CONF
exec "$@"

View File

@@ -14,6 +14,9 @@ nextcloud/all-in-one:develop
And you are done :)
It will now also select the developer channel for all other containers automatically.
## How to publish new releases?
Simply use https://github.com/nextcloud/all-in-one/issues/180 as template.
## How to build new containers
Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/repo-sync.yml and run the workflow that will first sync the repo and then build new container that automatically get published to `develop` and `develop-arm64`.
@@ -27,3 +30,6 @@ Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/repo-sy
1. Verify that no job is running here: https://github.com/nextcloud-releases/all-in-one/actions/workflows/promote-to-beta.yml
2. Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/promote-to-latest.yml, click on `Run workflow`.
## Where to find the VPS and other builds?
This is documented here: https://github.com/nextcloud-releases/all-in-one/tree/main/.build

View File

@@ -2,17 +2,37 @@ version: "3.8"
volumes:
nextcloud_aio_mastercontainer:
name: nextcloud_aio_mastercontainer
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed
services:
nextcloud:
image: nextcloud/all-in-one:latest
restart: unless-stopped
container_name: nextcloud-aio-mastercontainer
image: nextcloud/all-in-one:latest # Must be changed to 'nextcloud/all-in-one:latest-arm64' when used with an arm64 CPU
restart: always
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
- /var/run/docker.sock:/var/run/docker.sock:ro
- 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
ports:
- 80:80
- 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
- 8443:8443
- 8443:8443 # Can be removed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# 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
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
# - 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.
# # 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
# caddy:
# image: caddy:alpine
# restart: always
# container_name: caddy
# volumes:
# - ./Caddyfile:/etc/caddy/Caddyfile
# - ./certs:/certs
# - ./config:/config
# - ./data:/data
# - ./sites:/srv
# network_mode: "host"

12
docker-rootless.md Normal file
View File

@@ -0,0 +1,12 @@
# Docker rootless
You can run AIO with docker rootless by following the steps below.
0. If docker is already installed, you should consider disabling it first: (`sudo systemctl disable --now docker.service docker.socket`)
1. Install docker rootless by following the official documentation: https://docs.docker.com/engine/security/rootless/#install. The easiest way is installing it **Without packages**. Further limitations, distribution specific hints, etc. are discussed on the same site. Also do not forget to enable the systemd service, which may not be enabled always by default. See https://docs.docker.com/engine/security/rootless/#usage. (`systemctl --user enable docker`)
1. Do not forget to set the mentioned environmental variables and in best case add them to your `~/.bashrc` file as shown!
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`)
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `-e DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
1. 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.

View File

@@ -0,0 +1,136 @@
version: "3.8"
services:
nextcloud-aio-apache:
container_name: nextcloud-aio-apache
depends_on:
- nextcloud-aio-collabora
- nextcloud-aio-talk
- nextcloud-aio-nextcloud
image: nextcloud/aio-apache:latest-arm64
ports:
- ${APACHE_PORT}:${APACHE_PORT}/tcp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- NEXTCLOUD_HOST=nextcloud-aio-nextcloud
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_HOST=nextcloud-aio-talk
- APACHE_PORT=${APACHE_PORT}
- TZ=${TIMEZONE}
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-database:
container_name: nextcloud-aio-database
image: nextcloud/aio-postgresql:latest-arm64
volumes:
- nextcloud_aio_database:/var/lib/postgresql/data:rw
- nextcloud_aio_database_dump:/mnt/data:rw
environment:
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=nextcloud_database
- POSTGRES_USER=nextcloud
- TZ=${TIMEZONE}
- PGTZ=${TIMEZONE}
stop_grace_period: 1800s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-nextcloud:
container_name: nextcloud-aio-nextcloud
depends_on:
- nextcloud-aio-database
- nextcloud-aio-redis
image: nextcloud/aio-nextcloud:latest-arm64
volumes:
- nextcloud_aio_nextcloud:/var/www/html:rw
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
- ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw
environment:
- POSTGRES_HOST=nextcloud-aio-database
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=nextcloud_database
- POSTGRES_USER=nextcloud
- REDIS_HOST=nextcloud-aio-redis
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- AIO_TOKEN=${AIO_TOKEN}
- NC_DOMAIN=${NC_DOMAIN}
- ADMIN_USER=admin
- ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD}
- NEXTCLOUD_DATA_DIR=/mnt/ncdata
- OVERWRITEHOST=${NC_DOMAIN}
- OVERWRITEPROTOCOL=https
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- AIO_URL=${AIO_URL}
- NEXTCLOUD_MOUNT=${NEXTCLOUD_MOUNT}
- COLLABORA_ENABLED=${COLLABORA_ENABLED}
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_ENABLED=${TALK_ENABLED}
- DAILY_BACKUP_RUNNING=${DAILY_BACKUP_RUNNING}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-redis:
container_name: nextcloud-aio-redis
image: nextcloud/aio-redis:latest-arm64
environment:
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-collabora:
container_name: nextcloud-aio-collabora
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
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-talk:
container_name: nextcloud-aio-talk
image: nextcloud/aio-talk:latest-arm64
ports:
- 3478:3478/tcp
- 3478:3478/udp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- JANUS_API_KEY=${JANUS_API_KEY}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
volumes:
nextcloud_aio_apache:
name: nextcloud_aio_apache
nextcloud_aio_database:
name: nextcloud_aio_database
nextcloud_aio_database_dump:
name: nextcloud_aio_database_dump
nextcloud_aio_nextcloud:
name: nextcloud_aio_nextcloud
nextcloud_aio_nextcloud_data:
name: nextcloud_aio_nextcloud_data
networks:
nextcloud-aio:

171
manual-install/latest.yml Normal file
View File

@@ -0,0 +1,171 @@
version: "3.8"
services:
nextcloud-aio-apache:
container_name: nextcloud-aio-apache
depends_on:
- nextcloud-aio-onlyoffice
- nextcloud-aio-collabora
- nextcloud-aio-clamav
- nextcloud-aio-talk
- nextcloud-aio-nextcloud
image: nextcloud/aio-apache:latest
ports:
- ${APACHE_PORT}:${APACHE_PORT}/tcp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- NEXTCLOUD_HOST=nextcloud-aio-nextcloud
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_HOST=nextcloud-aio-talk
- APACHE_PORT=${APACHE_PORT}
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- TZ=${TIMEZONE}
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-database:
container_name: nextcloud-aio-database
image: nextcloud/aio-postgresql:latest
volumes:
- nextcloud_aio_database:/var/lib/postgresql/data:rw
- nextcloud_aio_database_dump:/mnt/data:rw
environment:
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=nextcloud_database
- POSTGRES_USER=nextcloud
- TZ=${TIMEZONE}
- PGTZ=${TIMEZONE}
stop_grace_period: 1800s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-nextcloud:
container_name: nextcloud-aio-nextcloud
depends_on:
- nextcloud-aio-database
- nextcloud-aio-redis
image: nextcloud/aio-nextcloud:latest
volumes:
- nextcloud_aio_nextcloud:/var/www/html:rw
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
- ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw
environment:
- POSTGRES_HOST=nextcloud-aio-database
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=nextcloud_database
- POSTGRES_USER=nextcloud
- REDIS_HOST=nextcloud-aio-redis
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- AIO_TOKEN=${AIO_TOKEN}
- NC_DOMAIN=${NC_DOMAIN}
- ADMIN_USER=admin
- ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD}
- NEXTCLOUD_DATA_DIR=/mnt/ncdata
- OVERWRITEHOST=${NC_DOMAIN}
- OVERWRITEPROTOCOL=https
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- AIO_URL=${AIO_URL}
- NEXTCLOUD_MOUNT=${NEXTCLOUD_MOUNT}
- CLAMAV_ENABLED=${CLAMAV_ENABLED}
- CLAMAV_HOST=nextcloud-aio-clamav
- ONLYOFFICE_ENABLED=${ONLYOFFICE_ENABLED}
- COLLABORA_ENABLED=${COLLABORA_ENABLED}
- COLLABORA_HOST=nextcloud-aio-collabora
- TALK_ENABLED=${TALK_ENABLED}
- ONLYOFFICE_HOST=nextcloud-aio-onlyoffice
- DAILY_BACKUP_RUNNING=${DAILY_BACKUP_RUNNING}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-redis:
container_name: nextcloud-aio-redis
image: nextcloud/aio-redis:latest
environment:
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-collabora:
container_name: nextcloud-aio-collabora
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
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-talk:
container_name: nextcloud-aio-talk
image: nextcloud/aio-talk:latest
ports:
- 3478:3478/tcp
- 3478:3478/udp
environment:
- NC_DOMAIN=${NC_DOMAIN}
- TURN_SECRET=${TURN_SECRET}
- SIGNALING_SECRET=${SIGNALING_SECRET}
- JANUS_API_KEY=${JANUS_API_KEY}
- TZ=${TIMEZONE}
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-clamav:
container_name: nextcloud-aio-clamav
image: nextcloud/aio-clamav:latest
environment:
- TZ=${TIMEZONE}
volumes:
- nextcloud_aio_clamav:/var/lib/clamav:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
nextcloud-aio-onlyoffice:
container_name: nextcloud-aio-onlyoffice
image: nextcloud/aio-onlyoffice:latest
environment:
- TZ=${TIMEZONE}
volumes:
- nextcloud_aio_onlyoffice:/var/lib/onlyoffice:rw
stop_grace_period: 10s
restart: unless-stopped
networks:
- nextcloud-aio
volumes:
nextcloud_aio_apache:
name: nextcloud_aio_apache
nextcloud_aio_clamav:
name: nextcloud_aio_clamav
nextcloud_aio_database:
name: nextcloud_aio_database
nextcloud_aio_database_dump:
name: nextcloud_aio_database_dump
nextcloud_aio_nextcloud:
name: nextcloud_aio_nextcloud
nextcloud_aio_onlyoffice:
name: nextcloud_aio_onlyoffice
nextcloud_aio_nextcloud_data:
name: nextcloud_aio_nextcloud_data
networks:
nextcloud-aio:

41
manual-install/readme.md Normal file
View File

@@ -0,0 +1,41 @@
# Manual installation
You can run the containers that are build for AIO with docker-compose. This comes with a few downsides, that are discussed below.
### Advantages
- You can run it without a container having access to the docker socket
- You can modify all values on your own
### Disadvantages
- You loose the AIO interface
- You loose update notifications and automatic updates
- You loose all AIO backup and restore features
- You need to know what you are doing, especially when modifying the docker-compose file
- Probably more
## How to use this?
First, install docker and docker-compose if not already done. Then simply run the following:
```bash
git clone https://github.com/nextcloud/all-in-one.git
cd all-in-one/manual-install
```
Then copy the sample.conf to a new file, e.g. `cp sample.conf my.conf`, open the new conf file, e.g. with `nano my.conf`, edit all values that are marked with `# TODO!`, close and save the file.
Now copy the provided yaml file to a docker-compose file by running on x64 `cp latest.yml docker-compose.yml` and on arm64 `cp latest-arm64.yml docker-compose.yml`.
Now you should be ready to go with `sudo docker-compose --env-file my.conf up`.
## How to update?
Since the AIO containers may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade your containers.
1. Run `sudo docker-compose --env-file my.conf down` to stop all running containers
1. Back up all important files and folders
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml latest.yml` on x64 and `diff docker-compose.yml latest-arm64.yml` on arm64 for comparing.
1. Also have a look at the `sample.conf` if any variable was added or renamed and add that to your conf file as well. Here may help the diff command as well.
1. After the file update was successful, simply run `sudo docker-compose --env-file my.conf pull` to pull the new images.
1. At the end run `sudo docker-compose --env-file my.conf up` in order to start and update the containers with the new configuration.
## FAQ
### Backup and restore?
If you leave `NEXTCLOUD_DATADIR` in your conf file at the default value of `nextcloud_aio_nextcloud_data` and don't modify the yaml file, all data will be stored inside docker volumes which are on Linux by default located here: `/var/lib/docker/volumes`. Simply backing up this location should be a valid backup solution. Then you can also easily restore in case something bad happens. However if you change `NEXTCLOUD_DATADIR` to a path like `/mnt/ncdata`, you obviously need to back up this location, too because the Nextcloud data will be stored there. The same applies to any change to the yaml file.
Obviously you also need to back up the conf file and the yaml file if you modified it.

View File

@@ -0,0 +1,18 @@
AIO_TOKEN=123456 # Has no function but needs to be set!
AIO_URL=localhost # Has no function but needs to be set!
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_ENABLED=yes # Setting this to "yes" enables the option in Nextcloud automatically.
DAILY_BACKUP_RUNNING=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup.
DATABASE_PASSWORD= # TODO! This needs to be a unique and good password!
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_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_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".
ONLYOFFICE_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
REDIS_PASSWORD= # TODO! This needs to be a unique and good password!
SIGNALING_SECRET= # TODO! This needs to be a unique and good password!
TALK_ENABLED=yes # Setting this to "yes" enables the option in Nextcloud automatically.
TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.
TURN_SECRET= # TODO! This needs to be a unique and good password!

View File

@@ -0,0 +1,126 @@
#!/bin/bash
jq -c . ./php/containers.json > /tmp/containers.json
sed -i 's|","location":"|:|g' /tmp/containers.json
sed -i 's|","writeable":false|:ro"|g' /tmp/containers.json
sed -i 's|","writeable":true|:rw"|g' /tmp/containers.json
OUTPUT="$(cat /tmp/containers.json)"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[].internalPorts)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[].secrets)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[] | select(.identifier == "nextcloud-aio-watchtower"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[] | select(.identifier == "nextcloud-aio-domaincheck"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.production[] | select(.identifier == "nextcloud-aio-borgbackup"))')"
snap install yq
mkdir -p ./manual-install
echo "$OUTPUT" | yq -P > ./manual-install/containers.yml
cd manual-install || exit
sed -i "s|'||g" containers.yml
sed -i 's|production:|services:|' containers.yml
sed -i 's|- identifier:| container_name:|' containers.yml
sed -i 's|restartPolicy:|restart:|' containers.yml
sed -i 's|environmentVariables:|environment:|' containers.yml
sed -i '/displayName:/d' containers.yml
sed -i 's|maxShutdownTime:|stop_grace_period:|' containers.yml
sed -i '/stop_grace_period:/s/$/s/' containers.yml
sed -i 's|containerName:|image:|' containers.yml
sed -i '/: \[\]/d' containers.yml
sed -i 's|dependsOn:|depends_on:|' containers.yml
sed -i 's|- name: |- |' containers.yml
TCP="$(grep -oP '[%A-Z0-9_]+/tcp' containers.yml | sort -u)"
mapfile -t TCP <<< "$TCP"
for port in "${TCP[@]}"
do
solve_port="${port%%/tcp}"
sed -i "s|$port|$solve_port:$solve_port/tcp|" containers.yml
done
UDP="$(grep -oP '[%A-Z0-9_]+/udp' containers.yml | sort -u)"
mapfile -t UDP <<< "$UDP"
for port in "${UDP[@]}"
do
solve_port="${port%%/udp}"
sed -i "s|$port|$solve_port:$solve_port/udp|" containers.yml
done
rm -f sample.conf
VARIABLES="$(grep -oP '%[A-Z_a-z0-6]+%' containers.yml | sort -u)"
mapfile -t VARIABLES <<< "$VARIABLES"
for variable in "${VARIABLES[@]}"
do
# shellcheck disable=SC2001
sole_variable="$(echo "$variable" | sed 's|%||g')"
echo "$sole_variable=" >> sample.conf
sed -i "s|$variable|\${$sole_variable}|g" containers.yml
done
sed -i 's|_ENABLED=|_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.|' sample.conf
sed -i 's|TALK_ENABLED=no|TALK_ENABLED=yes|' sample.conf
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|DAILY_BACKUP_RUNNING=|DAILY_BACKUP_RUNNING=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup.|' 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
sed -i 's|AIO_TOKEN=|AIO_TOKEN=123456 # Has no function but needs to be set!|' sample.conf
sed -i 's|AIO_URL=|AIO_URL=localhost # Has no function but needs to be set!|' sample.conf
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|=$|= # TODO! This needs to be a unique and good password!|' sample.conf
cat sample.conf
OUTPUT="$(cat containers.yml)"
NAMES="$(grep -oP "container_name:.*" containers.yml | grep -oP 'nextcloud-aio.*')"
mapfile -t NAMES <<< "$NAMES"
for name in "${NAMES[@]}"
do
OUTPUT="$(echo "$OUTPUT" | sed "/container_name.*$name/i\ \ $name:")"
if [ "$name" != "nextcloud-aio-apache" ]; then
OUTPUT="$(echo "$OUTPUT" | sed "/ $name:/i\ ")"
fi
done
OUTPUT="$(echo "$OUTPUT" | sed "/restart: /a\ \ \ \ networks:\n\ \ \ \ \ \ - nextcloud-aio")"
echo 'version: "3.8"' > containers.yml
echo "" >> containers.yml
echo "$OUTPUT" >> containers.yml
VOLUMES="$(grep -oP 'nextcloud_aio_[a-z_]+' containers.yml | sort -u)"
mapfile -t VOLUMES <<< "$VOLUMES"
echo "" >> containers.yml
echo "volumes:" >> containers.yml
for volume in "${VOLUMES[@]}" "nextcloud_aio_nextcloud_data"
do
cat << VOLUMES >> containers.yml
$volume:
name: $volume
VOLUMES
done
cat << NETWORK >> containers.yml
networks:
nextcloud-aio:
NETWORK
cat containers.yml > latest.yml
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 '/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

25
manual-upgrade.md Normal file
View File

@@ -0,0 +1,25 @@
# Manual upgrade
If you do not install any upgrade for around 6-12 months or longer, it can happen that your instance is so outdated that in the meantime the PHP version of the Nextcloud container got bumped to a version that is not compatible with your currently installed Nextcloud version which means that after doing an upgrade after this long time, Nextcloud will suddenly not work anymore. There is unfortunately no way to fix this from the maintainer side if you refrain from upgrading for so long.
The only way to fix this on your side is upgrading regularly (e.g. by enabling daily backups which will also automatically upgrade all containers) and following the steps below:
1. Start all containers from the aio interface (now, it will report that Nextcloud is restarting because it is not able to start due to the above mentioned problem)
1. Do **not** click on `Stop containers` because you will need them running going forward, see below
1. Stop the Nextcloud container and the Apache container by running `sudo docker stop nextcloud-aio-nextcloud && sudo docker stop nextcloud-aio-apache`.
1. Find out with which PHP version your installed Nextcloud is compatible by running `sudo cat /var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/lib/versioncheck.php`. (There you will find information about the max. supported PHP version.)
1. Run the following commands in order to reverse engineer the Nextcloud container:
```bash
sudo docker pull assaflavie/runlike
echo '#/bin/bash' > /tmp/nextcloud-aio-nextcloud
sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike -p nextcloud-aio-nextcloud >> /tmp/nextcloud-aio-nextcloud
sudo chown root:root /tmp/nextcloud-aio-nextcloud
```
1. Now open the file with e.g. nano: `sudo nano /tmp/nextcloud-aio-nextcloud` and change the line that should probably be `nextcloud/aio-nextcloud:latest` on x64 or `nextcloud/aio-nextcloud:latest-arm64` on arm64 to the highest compatible PHP version: E.g. `nextcloud/aio-nextcloud:php8.0-latest` on x64 or `nextcloud/aio-nextcloud:php8.0-latest-arm64` on arm64. Then save the file and close it with `[Ctrl]+[o]` -> `[Enter]` and `[Ctrl]+[x]`.
1. After doing so, remove the Nextcloud container with `sudo docker rm nextcloud-aio-nextcloud`.
1. Now start the Nextcloud container with the new tag by simply running `sudo bash /tmp/nextcloud-aio-nextcloud` which at startup should automatically upgrade Nextcloud to a more recent version. If not, make sure that there is no `skip.update` file in the Nextcloud datadir. If there is such a file, simply delete the file and restart the container again.<br>
**Info**: You can open the Nextcloud container logs with `sudo docker logs -f nextcloud-aio-nextcloud`.
1. After the Nextcloud container is started (you can tell by looking at the logs), simply restart the container again with `sudo docker restart nextcloud-aio-nextcloud` until it does not install a new Nextcloud update anymore upon the container startup.
1. Now, you should be able to use the AIO interface again by simply stopping the AIO containers and starting them again which should finally bring up your instance again.
1. If not and if you get the same error again, you may repeat the process starting from the beginning again until your Nextcloud version is finally up-to-date.
1. Now, if everything is finally running as usual again, it is recommended to create a backup in order to save the current state. Also you should think about enabling daily backups if doing regularl upgrades is too much effort for you.

View File

@@ -1,11 +1,11 @@
## How to migrate from an already existing Nextcloud installation to Nextcloud AIO?
# How to migrate from an already existing Nextcloud installation to Nextcloud AIO?
There are basically two 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
### Migrate only the files
## Migrate only the files
**Please note**: If you used groupfolders or encrypted your files before, you will need to restore the database, as well!
The procedure for migrating only the files works like this:
@@ -14,16 +14,16 @@ The procedure for migrating only the files works like this:
1. Recreate all users that were present on your former installation
1. Take a backup using Nextcloud AIO's built-in backup solution (so that you can easily restore to this state again) (Note: this will stop all containers and is expected: don't start the container again at this point!)
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/*` to apply the correct permissions
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.
### Migrate the files and the database
## 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!<br>
Also, you will currently not be able to use local external storage in Nextcloud AIO since that is not supported, yet. See https://github.com/nextcloud/all-in-one/issues/76
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) 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.
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.
1. Take a backup of your former instance (especially from your datadirectory and database)
1. If your former installation didn't use Postgresql already, you will now need to convert your old installation to use Postgresql as database temporarily (in order to be able to perform a pg_dump afterwards):
1. Install Postgresql on your former installation: on a Debian based OS should the following command work:
@@ -36,13 +36,13 @@ The procedure for migrating the files and the database works like this:
export PG_PASSWORD="my-temporary-password"
export PG_DATABASE="nextcloud_db"
sudo -u postgres psql <<END
CREATE USER $PG_USER WITH PASSWORD '$PGDB_PASS';
CREATE USER $PG_USER WITH PASSWORD '$PG_PASSWORD';
CREATE DATABASE $PG_DATABASE WITH OWNER $PG_USER TEMPLATE template0 ENCODING 'UTF8';
END
```
1. Run the following command to start the conversion:
```
occ db:convert-type --all-apps --password "$PGDB_PASS" pgsql "$PG_USER" 127.0.0.1 "$PG_DATABASE"
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
@@ -54,7 +54,7 @@ The procedure for migrating the files and the database works like this:
```
**Please note:** The exact name of the database export file is important! (`database-dump.sql`)<br>
And of course you need to to use the correct name that the Postgresql database has for the export (if `$PG_DATABASE` doesn't work directly).
1. At this point, you can finally install Nextcloud AIO on a new server/linux installation, enter your domain (use the same domain that you used on your former installation) and wait until all containers are running
1. At this point, you can finally install Nextcloud AIO on a new server/linux installation, enter your domain in the AIO interface (use the same domain that you used on your former installation) and wait until all containers are running. Then you should check the included Nextcloud version by running `sudo docker inspect nextcloud-aio-nextcloud | grep NEXTCLOUD_VERSION`.
1. Next, take a backup using Nextcloud AIO's built-in backup solution (so that you can easily restore to this state again) (Note: this will stop all containers and is expected: don't start the container again at this point!)
1. Now, we are slowly starting to import your files and database. First, you need to modify the datadirectory that is stored inside the database export:
1. Find out what the directory of your old Nextcloud installation is by e.g. opening the config.php file and looking at the value `datadirectory`.
@@ -73,7 +73,7 @@ The procedure for migrating the files and the database works like this:
sudo rm -r /var/lib/docker/volumes/nextcloud_aio_database/_data/*
```
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/*` to apply the correct permissions
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. 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. Now run `sudo docker exec -it nextcloud-aio-nextcloud php occ maintenance:data-fingerprint`.

View File

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

98
php/composer.lock generated
View File

@@ -8,22 +8,22 @@
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.4.2",
"version": "7.4.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4"
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4",
"reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.5",
"guzzlehttp/psr7": "^1.8.3 || ^2.1",
"guzzlehttp/psr7": "^1.9 || ^2.4",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -112,7 +112,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.4.2"
"source": "https://github.com/guzzle/guzzle/tree/7.4.5"
},
"funding": [
{
@@ -128,7 +128,7 @@
"type": "tidelift"
}
],
"time": "2022-03-20T14:16:28+00:00"
"time": "2022-06-20T22:16:13+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -216,16 +216,16 @@
},
{
"name": "guzzlehttp/psr7",
"version": "2.2.1",
"version": "2.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "c94a94f120803a18554c1805ef2e539f8285f9a2"
"reference": "13388f00956b1503577598873fffb5ae994b5737"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2",
"reference": "c94a94f120803a18554c1805ef2e539f8285f9a2",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737",
"reference": "13388f00956b1503577598873fffb5ae994b5737",
"shasum": ""
},
"require": {
@@ -249,7 +249,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
"dev-master": "2.4-dev"
}
},
"autoload": {
@@ -311,7 +311,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.2.1"
"source": "https://github.com/guzzle/psr7/tree/2.4.0"
},
"funding": [
{
@@ -327,7 +327,7 @@
"type": "tidelift"
}
],
"time": "2022-03-20T21:55:58+00:00"
"time": "2022-06-20T21:43:11+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -389,16 +389,16 @@
},
{
"name": "laravel/serializable-closure",
"version": "v1.1.1",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e"
"reference": "09f0e9fb61829f628205b7c94906c28740ff9540"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e",
"reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540",
"reference": "09f0e9fb61829f628205b7c94906c28740ff9540",
"shasum": ""
},
"require": {
@@ -444,7 +444,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2022-02-11T19:23:53+00:00"
"time": "2022-05-16T17:09:47+00:00"
},
{
"name": "nikic/fast-route",
@@ -1366,7 +1366,7 @@
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.0.1",
"version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
@@ -1413,7 +1413,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2"
},
"funding": [
{
@@ -1433,16 +1433,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"shasum": ""
},
"require": {
@@ -1457,7 +1457,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1495,7 +1495,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
},
"funding": [
{
@@ -1511,20 +1511,20 @@
"type": "tidelift"
}
],
"time": "2021-10-20T20:35:02+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"shasum": ""
},
"require": {
@@ -1539,7 +1539,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1578,7 +1578,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
},
"funding": [
{
@@ -1594,20 +1594,20 @@
"type": "tidelift"
}
],
"time": "2021-11-30T18:21:41+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
"reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
"reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1",
"reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1",
"shasum": ""
},
"require": {
@@ -1616,7 +1616,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1657,7 +1657,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0"
},
"funding": [
{
@@ -1673,20 +1673,20 @@
"type": "tidelift"
}
],
"time": "2021-09-13T13:58:11+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "twig/twig",
"version": "v3.3.10",
"version": "v3.4.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "8442df056c51b706793adf80a9fd363406dd3674"
"reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/8442df056c51b706793adf80a9fd363406dd3674",
"reference": "8442df056c51b706793adf80a9fd363406dd3674",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/e939eae92386b69b49cfa4599dd9bead6bf4a342",
"reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342",
"shasum": ""
},
"require": {
@@ -1701,7 +1701,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.3-dev"
"dev-master": "3.4-dev"
}
},
"autoload": {
@@ -1737,7 +1737,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.3.10"
"source": "https://github.com/twigphp/Twig/tree/v3.4.1"
},
"funding": [
{
@@ -1749,7 +1749,7 @@
"type": "tidelift"
}
],
"time": "2022-04-06T06:47:41+00:00"
"time": "2022-05-17T05:48:52+00:00"
}
],
"packages-dev": [],

View File

@@ -0,0 +1,79 @@
{
"type": "object",
"description": "AIO containers definition schema",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"production": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"minProperties": 11,
"properties": {
"containerName": {
"type": "string"
},
"dependsOn": {
"type": "array",
"items": {
"type": "string"
}
},
"displayName": {
"type": "string"
},
"environmentVariables": {
"type": "array",
"items": {
"type": "string"
}
},
"identifier": {
"type": "string"
},
"internalPorts": {
"type": "array",
"items": {
"type": "string"
}
},
"maxShutdownTime": {
"type": "integer"
},
"ports": {
"type": "array",
"items": {
"type": "string"
}
},
"restartPolicy": {
"type": "string"
},
"secrets": {
"type": "array"
},
"volumes": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"minProperties": 3,
"properties": {
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"writeable": {
"type": "boolean"
}
}
}
}
}
}
}
}
}

View File

@@ -1,6 +1,7 @@
{
"production": [
{
"identifier": "nextcloud-aio-apache",
"dependsOn": [
"nextcloud-aio-onlyoffice",
"nextcloud-aio-collabora",
@@ -8,7 +9,6 @@
"nextcloud-aio-talk",
"nextcloud-aio-nextcloud"
],
"identifier": "nextcloud-aio-apache",
"displayName": "Apache",
"containerName": "nextcloud/aio-apache",
"ports": [
@@ -24,7 +24,8 @@
"COLLABORA_HOST=nextcloud-aio-collabora",
"TALK_HOST=nextcloud-aio-talk",
"APACHE_PORT=%APACHE_PORT%",
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice"
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
"TZ=%TIMEZONE%"
],
"volumes": [
{
@@ -42,8 +43,8 @@
"restartPolicy": "unless-stopped"
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-database",
"dependsOn": [],
"displayName": "Database",
"containerName": "nextcloud/aio-postgresql",
"ports": [],
@@ -68,17 +69,19 @@
"environmentVariables": [
"POSTGRES_PASSWORD=%DATABASE_PASSWORD%",
"POSTGRES_DB=nextcloud_database",
"POSTGRES_USER=nextcloud"
"POSTGRES_USER=nextcloud",
"TZ=%TIMEZONE%",
"PGTZ=%TIMEZONE%"
],
"maxShutdownTime": 1800,
"restartPolicy": "unless-stopped"
},
{
"identifier": "nextcloud-aio-nextcloud",
"dependsOn": [
"nextcloud-aio-database",
"nextcloud-aio-redis"
],
"identifier": "nextcloud-aio-nextcloud",
"displayName": "Nextcloud",
"containerName": "nextcloud/aio-nextcloud",
"ports": [],
@@ -125,6 +128,7 @@
"OVERWRITEPROTOCOL=https",
"TURN_SECRET=%TURN_SECRET%",
"SIGNALING_SECRET=%SIGNALING_SECRET%",
"ONLYOFFICE_SECRET=%ONLYOFFICE_SECRET%",
"AIO_URL=%AIO_URL%",
"NEXTCLOUD_MOUNT=%NEXTCLOUD_MOUNT%",
"CLAMAV_ENABLED=%CLAMAV_ENABLED%",
@@ -134,14 +138,16 @@
"COLLABORA_HOST=nextcloud-aio-collabora",
"TALK_ENABLED=%TALK_ENABLED%",
"ONLYOFFICE_HOST=nextcloud-aio-onlyoffice",
"DAILY_BACKUP_RUNNING=%DAILY_BACKUP_RUNNING%"
"DAILY_BACKUP_RUNNING=%DAILY_BACKUP_RUNNING%",
"TZ=%TIMEZONE%",
"TALK_PORT=%TALK_PORT%"
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-redis",
"dependsOn": [],
"displayName": "Redis",
"containerName": "nextcloud/aio-redis",
"ports": [],
@@ -149,18 +155,20 @@
"6379"
],
"environmentVariables": [
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%"
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%",
"TZ=%TIMEZONE%"
],
"volumes": [],
"secrets": [
"REDIS_PASSWORD"
"REDIS_PASSWORD",
"ONLYOFFICE_SECRET"
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-collabora",
"dependsOn": [],
"displayName": "Collabora",
"containerName": "nextcloud/aio-collabora",
"ports": [],
@@ -169,7 +177,9 @@
],
"environmentVariables": [
"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",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%"
],
"volumes": [],
"secrets": [],
@@ -177,22 +187,24 @@
"restartPolicy": "unless-stopped"
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-talk",
"dependsOn": [],
"displayName": "Talk",
"containerName": "nextcloud/aio-talk",
"ports": [
"3478/tcp",
"3478/udp"
"%TALK_PORT%/tcp",
"%TALK_PORT%/udp"
],
"internalPorts": [
"3478"
"%TALK_PORT%"
],
"environmentVariables": [
"NC_DOMAIN=%NC_DOMAIN%",
"TURN_SECRET=%TURN_SECRET%",
"SIGNALING_SECRET=%SIGNALING_SECRET%",
"JANUS_API_KEY=%JANUS_API_KEY%"
"JANUS_API_KEY=%JANUS_API_KEY%",
"TZ=%TIMEZONE%",
"TALK_PORT=%TALK_PORT%"
],
"volumes": [],
"secrets": [
@@ -204,8 +216,8 @@
"restartPolicy": "unless-stopped"
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-borgbackup",
"dependsOn": [],
"displayName": "Borgbackup",
"containerName": "nextcloud/aio-borgbackup",
"ports": [],
@@ -265,8 +277,8 @@
"restartPolicy": ""
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-watchtower",
"dependsOn": [],
"displayName": "Watchtower",
"containerName": "nextcloud/aio-watchtower",
"ports": [],
@@ -276,7 +288,7 @@
],
"volumes": [
{
"name": "/var/run/docker.sock",
"name": "%DOCKER_SOCKET_PATH%",
"location": "/var/run/docker.sock",
"writeable": false
}
@@ -306,15 +318,17 @@
"restartPolicy": ""
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-clamav",
"dependsOn": [],
"displayName": "ClamAV",
"containerName": "nextcloud/aio-clamav",
"ports": [],
"internalPorts": [
"3310"
],
"environmentVariables": [],
"environmentVariables": [
"TZ=%TIMEZONE%"
],
"volumes": [
{
"name": "nextcloud_aio_clamav",
@@ -327,15 +341,20 @@
"restartPolicy": "unless-stopped"
},
{
"dependsOn": [],
"identifier": "nextcloud-aio-onlyoffice",
"dependsOn": [],
"displayName": "OnlyOffice",
"containerName": "nextcloud/aio-onlyoffice",
"ports": [],
"internalPorts": [
"80"
],
"environmentVariables": [],
"environmentVariables": [
"TZ=%TIMEZONE%",
"JWT_ENABLED=true",
"JWT_HEADER=AuthorizationJwt",
"JWT_SECRET=%ONLYOFFICE_SECRET%"
],
"volumes": [
{
"name": "nextcloud_aio_onlyoffice",
@@ -343,7 +362,9 @@
"writeable": true
}
],
"secrets": [],
"secrets": [
"ONLYOFFICE_SECRET"
],
"maxShutdownTime": 10,
"restartPolicy": "unless-stopped"
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="4.22.0@fc2c6ab4d5fa5d644d8617089f012f3bb84b8703">
<files psalm-version="4.24.0@06dd975cb55d36af80f242561738f16c5f58264f">
<file src="public/index.php">
<MissingClosureParamType occurrences="10">
<code>$args</code>

View File

@@ -12,7 +12,7 @@
}
lastError = toast
body.prepend(toast)
setTimeout(toast.remove.bind(toast), 3000)
setTimeout(toast.remove.bind(toast), 10000)
}
function handleEvent(e) {

View File

@@ -81,6 +81,7 @@ $app->get('/containers', function ($request, $response, $args) use ($container)
'has_backup_run_once' => $configurationManager->hasBackupRunOnce(),
'is_backup_container_running' => $dockerActionManger->isBackupContainerRunning(),
'backup_exit_code' => $dockerActionManger->GetBackupcontainerExitCode(),
'is_instance_restore_attempt' => $configurationManager->isInstanceRestoreAttempt(),
'borg_backup_mode' => $configurationManager->GetBorgBackupMode(),
'was_start_button_clicked' => $configurationManager->wasStartButtonClicked(),
'has_update_available' => $dockerActionManger->isAnyUpdateAvailable(),
@@ -95,6 +96,10 @@ $app->get('/containers', function ($request, $response, $args) use ($container)
'borg_restore_password' => $configurationManager->GetBorgRestorePassword(),
'daily_backup_time' => $configurationManager->GetDailyBackupTime(),
'is_daily_backup_running' => $configurationManager->isDailyBackupRunning(),
'timezone' => $configurationManager->GetTimezone(),
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped(),
'talk_port' => $configurationManager->GetTalkPort(),
'collabora_dictionaries' => $configurationManager->GetCollaboraDictionaries(),
]);
})->setName('profile');
$app->get('/login', function ($request, $response, $args) use ($container) {

View File

@@ -7792,7 +7792,7 @@ class PasswordGenerator
if($password !== '') {
$password = $password . ' ';
}
$password = $password . $this->words[random_int(0, 2047)];
$password = $password . $this->words[random_int(0, 7775)];
}
return $password;

View File

@@ -71,6 +71,10 @@ class ContainerDefinitionFetcher
foreach ($entry['ports'] as $port) {
if($port === '%APACHE_PORT%/tcp') {
$port = $this->configurationManager->GetApachePort() . '/tcp';
} elseif($port === '%TALK_PORT%/tcp') {
$port = $this->configurationManager->GetTalkPort() . '/tcp';
} elseif($port === '%TALK_PORT%/udp') {
$port = $this->configurationManager->GetTalkPort() . '/udp';
}
$ports->AddPort($port);
}
@@ -79,6 +83,8 @@ class ContainerDefinitionFetcher
foreach ($entry['internalPorts'] as $internalPort) {
if($internalPort === '%APACHE_PORT%') {
$internalPort = $this->configurationManager->GetApachePort();
} elseif($internalPort === '%TALK_PORT%') {
$internalPort = $this->configurationManager->GetTalkPort();
}
$internalPorts->AddInternalPort($internalPort);
}
@@ -101,8 +107,13 @@ class ContainerDefinitionFetcher
if ($value['name'] === '') {
continue;
}
} elseif ($value['name'] === '%DOCKER_SOCKET_PATH%') {
$value['name'] = $this->configurationManager->GetDockerSocketPath();
if($value['name'] === '') {
continue;
}
}
if($value['location'] === '%NEXTCLOUD_MOUNT%') {
if ($value['location'] === '%NEXTCLOUD_MOUNT%') {
$value['location'] = $this->configurationManager->GetNextcloudMount();
if($value['location'] === '') {
continue;

View File

@@ -52,6 +52,15 @@ class ConfigurationController
$this->configurationManager->DeleteDailyBackupTime();
}
if (isset($request->getParsedBody()['delete_timezone'])) {
$this->configurationManager->DeleteTimezone();
}
if (isset($request->getParsedBody()['timezone'])) {
$timezone = $request->getParsedBody()['timezone'] ?? '';
$this->configurationManager->SetTimezone($timezone);
}
if (isset($request->getParsedBody()['options-form'])) {
if (isset($request->getParsedBody()['collabora']) && isset($request->getParsedBody()['onlyoffice'])) {
throw new InvalidSettingConfigurationException("Collabora and Onlyoffice are not allowed to be enabled at the same time!");
@@ -78,6 +87,15 @@ class ConfigurationController
}
}
if (isset($request->getParsedBody()['delete_collabora_dictionaries'])) {
$this->configurationManager->DeleteCollaboraDictionaries();
}
if (isset($request->getParsedBody()['collabora_dictionaries'])) {
$collaboraDictionaries = $request->getParsedBody()['collabora_dictionaries'] ?? '';
$this->configurationManager->SetCollaboraDictionaries($collaboraDictionaries);
}
return $response->withStatus(201)->withHeader('Location', '/');
} catch (InvalidSettingConfigurationException $ex) {
$response->getBody()->write($ex->getMessage());

View File

@@ -115,6 +115,7 @@ class DockerController
public function StartBackupContainerTest(Request $request, Response $response, $args) : Response {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'test';
$config['instance_restore_attempt'] = 0;
$this->configurationManager->WriteConfig($config);
$id = self::TOP_CONTAINER;
@@ -131,6 +132,10 @@ class DockerController
$uri = $request->getUri();
$host = $uri->getHost();
$port = $uri->getPort();
if ($port === 8000) {
error_log('The AIO_URL-port was discovered to be 8000 which is not expected. It is now set to 443.');
$port = 443;
}
$config = $this->configurationManager->GetConfig();
// set AIO_URL

View File

@@ -22,9 +22,9 @@ $isMastercontainerUpdateAvailable = $dockerActionManger->IsMastercontainerUpdate
$isAnyUpdateAvailable = $dockerActionManger->isAnyUpdateAvailable();
if ($isMastercontainerUpdateAvailable === true) {
$dockerActionManger->sendNotification($nextcloudContainer, 'Mastercontainer update available!', 'Please open your management interface to update it.');
$dockerActionManger->sendNotification($nextcloudContainer, 'Mastercontainer update available!', 'Please open your AIO interface 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 also automatically updates the mastercontainer.');
}
if ($isAnyUpdateAvailable === true) {
$dockerActionManger->sendNotification($nextcloudContainer, 'Container updates available!', 'Please open your management interface to update them.');
$dockerActionManger->sendNotification($nextcloudContainer, 'Container updates available!', 'Please open your AIO interface to update them. If you do not want to do it manually each time, you can enable the daily backup feature from the AIO interface which also automatically updates your containers and your Nextcloud apps.');
}

View File

@@ -190,7 +190,7 @@ class ConfigurationManager
public function SetDomain(string $domain) : void {
// Validate domain
if (!filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) {
throw new InvalidSettingConfigurationException("Domain is not in a valid format!");
throw new InvalidSettingConfigurationException("Domain is not a valid domain!");
}
// Validate that it is not an IP-address
@@ -198,40 +198,71 @@ class ConfigurationManager
throw new InvalidSettingConfigurationException("Please enter a domain and not an IP-address!");
}
$dnsRecordIP = gethostbyname($domain);
// Skip domain validation if opted in to do so
if (!$this->shouldDomainValidationBeSkipped()) {
// Validate IP
if(!filter_var($dnsRecordIP, FILTER_VALIDATE_IP)) {
throw new InvalidSettingConfigurationException("DNS config is not set or domain is not in a valid format!");
}
$dnsRecordIP = gethostbyname($domain);
if ($dnsRecordIP === $domain) {
$dnsRecordIP = '';
}
$connection = @fsockopen($domain, 443, $errno, $errstr, 0.1);
if ($connection) {
fclose($connection);
} else {
throw new InvalidSettingConfigurationException("The server is not reachable on Port 443.");
}
if (empty($dnsRecordIP)) {
$record = dns_get_record($domain, DNS_AAAA);
if (!empty($record)) {
$dnsRecordIP = $record[0]['ipv6'];
}
}
// Get Instance ID
$instanceID = $this->GetSecret('INSTANCE_ID');
// Validate IP
if (!filter_var($dnsRecordIP, FILTER_VALIDATE_IP)) {
throw new InvalidSettingConfigurationException("DNS config is not set for this domain or the domain is not a valid domain! (It was found to be set to '" . $dnsRecordIP . "')");
}
// set protocol
$port = $this->GetApachePort();
if ($port !== '443') {
$protocol = 'https://';
} else {
$protocol = 'http://';
}
// Get the apache port
$port = $this->GetApachePort();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $protocol . $domain . ':443');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = (string)curl_exec($ch);
# Get rid of trailing \n
$response = str_replace("\n", "", $response);
if (!filter_var($dnsRecordIP, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
$errorMessage = "It seems like the ip-address is set to an internal or reserved ip-address. This is not supported. (It was found to be set to '" . $dnsRecordIP . "')";
if ($port === '443') {
throw new InvalidSettingConfigurationException($errorMessage);
} else {
error_log($errorMessage);
}
}
if($response !== $instanceID) {
throw new InvalidSettingConfigurationException("Domain does not point to this server or reverse proxy not configured correctly.");
// Check if port 443 is open
$connection = @fsockopen($domain, 443, $errno, $errstr, 10);
if ($connection) {
fclose($connection);
} else {
throw new InvalidSettingConfigurationException("The server is not reachable on Port 443. You can verify this e.g. with 'https://portchecker.co/' by entering your domain there as ip-address and port 443 as port.");
}
// Get Instance ID
$instanceID = $this->GetSecret('INSTANCE_ID');
// set protocol
if ($port !== '443') {
$protocol = 'https://';
} else {
$protocol = 'http://';
}
// Check if response is correct
$ch = curl_init();
$testUrl = $protocol . $domain . ':443';
curl_setopt($ch, CURLOPT_URL, $testUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = (string)curl_exec($ch);
# Get rid of trailing \n
$response = str_replace("\n", "", $response);
if ($response !== $instanceID) {
error_log('The response of the connection attempt to "' . $testUrl . '" was: ' . $response);
error_log('Expected was: ' . $instanceID);
error_log('The error message was: ' . curl_error($ch));
throw new InvalidSettingConfigurationException("Domain does not point to this server or the reverse proxy is not configured correctly. See the mastercontainer logs for more details. ('sudo docker logs -f nextcloud-aio-mastercontainer')");
}
}
// Write domain
@@ -282,26 +313,15 @@ class ConfigurationManager
* @throws InvalidSettingConfigurationException
*/
public function SetBorgBackupHostLocation(string $location) : void {
$allowedPrefixes = [
'/mnt/',
'/media/',
'/host_mnt/',
];
$isValidPath = false;
foreach($allowedPrefixes as $allowedPrefix) {
if(str_starts_with($location, $allowedPrefix) && !str_ends_with($location, '/')) {
$isValidPath = true;
break;
}
if ($location === '/var/backups') {
$isValidPath = true;
break;
}
if (str_starts_with($location, '/') && !str_ends_with($location, '/')) {
$isValidPath = true;
} elseif ($location === 'nextcloud_aio_backupdir') {
$isValidPath = true;
}
if(!$isValidPath) {
throw new InvalidSettingConfigurationException("The path must start with '/mnt/', '/media/' or '/host_mnt/' or be equal to '/var/backups'.");
if (!$isValidPath) {
throw new InvalidSettingConfigurationException("The path must start with '/', and must not end with '/'!");
}
@@ -321,10 +341,12 @@ class ConfigurationManager
$isValidPath = false;
if (str_starts_with($location, '/') && !str_ends_with($location, '/')) {
$isValidPath = true;
} elseif ($location === 'nextcloud_aio_backupdir') {
$isValidPath = true;
}
if(!$isValidPath) {
throw new InvalidSettingConfigurationException("The path may start with '/mnt/', '/media/' or '/host_mnt/' or may be equal to '/var/backups'.");
if (!$isValidPath) {
throw new InvalidSettingConfigurationException("The path must start with '/', and must not end with '/'!");
}
if ($password === '') {
@@ -334,6 +356,7 @@ class ConfigurationManager
$config = $this->GetConfig();
$config['borg_backup_host_location'] = $location;
$config['borg_restore_password'] = $password;
$config['instance_restore_attempt'] = 1;
$this->WriteConfig($config);
}
@@ -372,6 +395,13 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetTalkPort() : string {
$envVariableName = 'TALK_PORT';
$configName = 'talk_port';
$defaultValue = '3478';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
/**
* @throws InvalidSettingConfigurationException
*/
@@ -422,6 +452,18 @@ class ConfigurationManager
return $config['borg_restore_password'];
}
public function isInstanceRestoreAttempt() : bool {
$config = $this->GetConfig();
if(!isset($config['instance_restore_attempt'])) {
$config['instance_restore_attempt'] = '';
}
if ($config['instance_restore_attempt'] === 1) {
return true;
}
return false;
}
public function GetBorgBackupMode() : string {
$config = $this->GetConfig();
if(!isset($config['backup-mode'])) {
@@ -445,6 +487,13 @@ class ConfigurationManager
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetDockerSocketPath() : string {
$envVariableName = 'DOCKER_SOCKET_PATH';
$configName = 'docker_socket_path';
$defaultValue = '/var/run/docker.sock';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
/**
* @throws InvalidSettingConfigurationException
*/
@@ -479,4 +528,75 @@ class ConfigurationManager
}
return false;
}
public function GetTimezone() : string {
$config = $this->GetConfig();
if(!isset($config['timezone'])) {
$config['timezone'] = '';
}
return $config['timezone'];
}
/**
* @throws InvalidSettingConfigurationException
*/
public function SetTimezone(string $timezone) : void {
if ($timezone === "") {
throw new InvalidSettingConfigurationException("The timezone must not be empty!");
}
if (!preg_match("#^[a-zA-Z0-9_\-\/\+]+$#", $timezone)) {
throw new InvalidSettingConfigurationException("The entered timezone does not seem to be a valid timezone!");
}
$config = $this->GetConfig();
$config['timezone'] = $timezone;
$this->WriteConfig($config);
}
public function DeleteTimezone() : void {
$config = $this->GetConfig();
$config['timezone'] = '';
$this->WriteConfig($config);
}
public function shouldDomainValidationBeSkipped() : bool {
if (getenv('SKIP_DOMAIN_VALIDATION') !== false) {
return true;
}
return false;
}
public function GetCollaboraDictionaries() : string {
$config = $this->GetConfig();
if(!isset($config['collabora_dictionaries'])) {
$config['collabora_dictionaries'] = '';
}
return $config['collabora_dictionaries'];
}
/**
* @throws InvalidSettingConfigurationException
*/
public function SetCollaboraDictionaries(string $CollaboraDictionaries) : void {
if ($CollaboraDictionaries === "") {
throw new InvalidSettingConfigurationException("The dictionaries must not be empty!");
}
if (!preg_match("#^[a-zA-Z_ ]+$#", $CollaboraDictionaries)) {
throw new InvalidSettingConfigurationException("The entered dictionaries do not seem to be a valid!");
}
$config = $this->GetConfig();
$config['collabora_dictionaries'] = $CollaboraDictionaries;
$this->WriteConfig($config);
}
public function DeleteCollaboraDictionaries() : void {
$config = $this->GetConfig();
$config['collabora_dictionaries'] = '';
$this->WriteConfig($config);
}
}

View File

@@ -185,6 +185,10 @@ class DockerActionManager
'/',
];
if ($volume->name === 'nextcloud_aio_nextcloud_datadir' || $volume->name === 'nextcloud_aio_backupdir') {
return;
}
$firstChar = substr($volume->name, 0, 1);
if(!in_array($firstChar, $forbiddenChars)) {
$this->guzzleClient->request(
@@ -246,6 +250,8 @@ class DockerActionManager
$replacements[1] = $this->configurationManager->GetSelectedRestoreTime();
} elseif ($out[1] === 'APACHE_PORT') {
$replacements[1] = $this->configurationManager->GetApachePort();
} elseif ($out[1] === 'TALK_PORT') {
$replacements[1] = $this->configurationManager->GetTalkPort();
} elseif ($out[1] === 'NEXTCLOUD_MOUNT') {
$replacements[1] = $this->configurationManager->GetNextcloudMount();
} elseif ($out[1] === 'BACKUP_RESTORE_PASSWORD') {
@@ -280,6 +286,18 @@ class DockerActionManager
} else {
$replacements[1] = '';
}
} elseif ($out[1] === 'TIMEZONE') {
if ($this->configurationManager->GetTimezone() === '') {
$replacements[1] = 'UTC';
} else {
$replacements[1] = $this->configurationManager->GetTimezone();
}
} elseif ($out[1] === 'COLLABORA_DICTIONARIES') {
if ($this->configurationManager->GetCollaboraDictionaries() === '') {
$replacements[1] = 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru';
} else {
$replacements[1] = $this->configurationManager->GetCollaboraDictionaries();
}
} else {
$replacements[1] = $this->configurationManager->GetSecret($out[1]);
}
@@ -421,6 +439,13 @@ class DockerActionManager
$tagArray = explode(':', $output['Config']['Image']);
$tag = $tagArray[1];
apcu_add($cacheKey, $tag);
/**
* @psalm-suppress TypeDoesNotContainNull
*/
if ($tag === null) {
error_log("No tag was found when getting the current channel. You probably did not follow the documentation correctly. Changing the channel to the default 'latest'.");
$tag = 'latest';
}
return $tag;
} catch (\Exception $e) {
error_log('Could not get current channel ' . $e->getMessage());
@@ -530,9 +555,13 @@ class DockerActionManager
$url,
[
'json' => [
'name' => 'nextcloud-aio',
'checkDuplicate' => true,
'internal' => true,
'Name' => 'nextcloud-aio',
'CheckDuplicate' => true,
'Driver' => 'bridge',
'Internal' => false,
'Options' => [
'com.docker.network.bridge.enable_icc' => 'true'
]
]
]
);

View File

@@ -16,7 +16,7 @@
</header>
<div class="content">
<h1>Nextcloud AIO v1.0.2</h1>
<h1>Nextcloud AIO v1.5.0</h1>
{% set isAnyRunning = false %}
{% set isAnyRestarting = false %}
@@ -51,7 +51,7 @@
{% if is_daily_backup_running == true %}
<span class="status running"></span> Daily backup currently running. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer">Logs</a>)<br /><br />
It will update all containers and all apps if the backup is successful.<br /><br />
It will update your containers, the mastercontainer and your Nextcloud apps if the backup is successful.<br /><br />
{% if is_mastercontainer_update_available == true %}
Since the mastercontainer gets updated, it will restart the container which will make it unavailable for a moment. (<a href="/api/docker/logs?id=nextcloud-aio-watchtower">Logs</a>)<br /><br />
{% endif %}
@@ -68,7 +68,7 @@
{% if is_backup_container_running == false and domain == "" %}
{% if is_mastercontainer_update_available == true %}
<h2>Mastercontainer update</h2>
⚠ A mastercontainer update is available. Please click on the button below to update it. Afterwards, you will be able to proceed with the setup.<br><br>
A mastercontainer update is available. Please click on the button below to update it. Afterwards, you will be able to proceed with the setup.<br><br>
<form method="POST" action="/api/docker/watchtower" class="xhr">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
@@ -79,79 +79,86 @@
Nextcloud AIO stands for Nextcloud All In One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.<br><br>
<h2>New AIO instance</h2>
Please type in the domain that will be used for Nextcloud if you want to create a new instance:<br><br />
{% if skip_domain_validation == true %}
<b>Please Note:</b> The domain validation is disabled so any domain will be accepted here! So make sure that you do not make a typo here as you will not be able to change it afterwards!<br><br>
{% endif %}
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" name="domain" value="{{ domain }}" placeholder="nextcloud.yourdomain.com"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
Make sure that this server is reachable on Port 443 and you've correctly set up the DNS config for the domain that you enter. <br><br>
If you have a dynamic IP-address, you can use e.g. <a href="https://ddclient.net/">DDclient</a> with a compatible domain provider for DNS updates. <br /><br/>
{% if skip_domain_validation == false %}
Make sure that this server is reachable on Port 443 and you've correctly set up the DNS config for the domain that you enter. <br><br>
If you have a dynamic IP-address, you can use e.g. <a href="https://ddclient.net/">DDclient</a> with a compatible domain provider for DNS updates. <br /><br/>
{% endif %}
<h2>Restore AIO instance from backup</h2>
You can alternatively restore an AIO instance from backup.<br><br>
<h2>Restore former AIO instance from backup</h2>
You can alternatively restore a former AIO instance from backup.<br><br>
{% endif %}
{% if borg_backup_host_location != '' and borg_restore_password != '' %}
{% if borg_backup_mode in ['test', 'check'] %}
{% if backup_exit_code > 0 %}
<span class="status error"></span> Last {{ borg_backup_mode }} failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
{% if borg_backup_mode == 'test' %}
Please adjust the path and/or password in order to make it work! After changing and submitting the values, click on 'Test path and password' button at the bottom of this page to verify and test the new settings!<br><br>
{% elseif borg_backup_mode == 'check' %}
The backup archive seems to be corrupt. Please try to use a different intact backup archive or try to fix it by following <a href="https://borgbackup.readthedocs.io/en/stable/faq.html?highlight=repair#:~:text=repairing%20a%20damaged%20repository"><b>this documentation</b></a>
{% endif %}
{% elseif backup_exit_code == 0 %}
<span class="status success"></span> Last {{ borg_backup_mode }} successful! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
{% if borg_backup_mode == 'test' %}
Feel free to check the integrity of the backup archive below before starting the restore process in order to make double-sure that the restore will work. This can take a long time though depending on the size of the backup archive and is thus not required.<br><br>
<form method="POST" action="/api/docker/backup-check" class="xhr">
{% if is_instance_restore_attempt == false %}
{% if borg_backup_host_location != '' and borg_restore_password != '' %}
{% if borg_backup_mode in ['test', 'check'] %}
{% if backup_exit_code > 0 %}
<span class="status error"></span> Last {{ borg_backup_mode }} failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
{% if borg_backup_mode == 'test' %}
Please adjust the path and/or the password in order to make it work!<br><br>
{% elseif borg_backup_mode == 'check' %}
The backup archive seems to be corrupt. Please try to use a different intact backup archive or try to fix it by following <a href="https://borgbackup.readthedocs.io/en/stable/faq.html?highlight=repair#:~:text=repairing%20a%20damaged%20repository"><b>this documentation</b></a>
{% endif %}
{% elseif backup_exit_code == 0 %}
<span class="status success"></span> Last {{ borg_backup_mode }} successful! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
{% if borg_backup_mode == 'test' %}
Feel free to check the integrity of the backup archive below before starting the restore process in order to make double-sure that the restore will work. This can take a long time though depending on the size of the backup archive and is thus not required.<br><br>
<form method="POST" action="/api/docker/backup-check" class="xhr">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Check backup integrity"/><br/>
</form>
{% endif %}
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance from backup. Please not that the current AIO password will be kept and the AIO password not restored from backup!<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}}">
<input class="button" type="submit" value="Check backup integrity"/><br/>
<select id="selected_restore_time" name="selected_restore_time" form="restore_selection">
{% for restore_time in backup_times %}
<option value="{{ restore_time }}">{{ restore_time }} UTC</option>
{% endfor %}
</select>
<input class="button" type="submit" value="Restore selected backup"/>
</form>
{% endif %}
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance from backup. Please not that the current AIO password will be kept and the AIO password not restored from backup!<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}}">
<select id="selected_restore_time" name="selected_restore_time" form="restore_selection">
{% for restore_time in backup_times %}
<option value="{{ restore_time }}">{{ restore_time }} UTC</option>
{% endfor %}
</select>
<input class="button" type="submit" value="Restore selected backup"/>
</form>
{% endif %}
{% elseif borg_backup_mode == 'restore' %}
{% if backup_exit_code > 0 %}
<span class="status error"></span> Last restore failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
Somehow the restore failed which is unexpected! Please adjust the path and password, test it and try to restore again!
{% elseif borg_backup_mode == 'restore' %}
{% if backup_exit_code > 0 %}
<span class="status error"></span> Last restore failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
Somehow the restore failed which is unexpected! Please adjust the path and password, test it and try to restore again!
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% if borg_backup_host_location == '' or borg_restore_password == '' or borg_backup_mode not in ['test', 'check', ''] or backup_exit_code > 0 %}
Please enter the location of the backup archive on your host and the password of the backup archive below:<br><br>
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" name="borg_restore_host_location" value="{{borg_backup_host_location}}" placeholder="/mnt/backup"/>
<input type="text" name="borg_restore_password" value="{{borg_restore_password}}" placeholder="enter the borg password"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
The folder path that you enter may start with <b>/mnt/</b>, <b>/media/</b> or <b>/host_mnt/</b> or may be equal to <b>/var/backups</b>.<br><br>So e.g. <b>/mnt/backup</b> on Linux and macOS or <b>/host_mnt/c/backup/directory</b> on Windows. (This Windows example would be equivalent to 'C:\backup\directory' on the Windows host. So you need to translate the path that you want to use into the correct format.)<br><br>
⚠ Note that the backup archive must be located in a subfolder of the folder that you enter here and the subfolder which contains the archive must be named 'borg'. Otherwise will the backup container not find the backup archive!<br><br>
{% endif %}
{% if borg_backup_host_location != '' and borg_restore_password != '' %}
{% if borg_backup_mode not in ['test', 'check'] or backup_exit_code != 0 %}
<b>Everything set!</b> Click on the button below to test the path and password:<br/><br/>
<form method="POST" action="/api/docker/backup-test" class="xhr">
{% if borg_backup_host_location == '' or borg_restore_password == '' or borg_backup_mode not in ['test', 'check', ''] or backup_exit_code > 0 %}
Please enter the location of the backup archive on your host and the password of the backup archive below:<br><br>
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" name="borg_restore_host_location" value="{{borg_backup_host_location}}" placeholder="/mnt/backup"/>
<input type="text" name="borg_restore_password" value="{{borg_restore_password}}" placeholder="enter the borg password"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Test path and password"/><br/>
<input class="button" type="submit" value="Submit" />
</form>
The folder path that you enter must start with <b>/</b> and must <b>not</b> end with <b>/</b>.<br><br>
An example for Linux is <b>/mnt/backup</b>.<br>
For macOS it may be <b>/var/backup</b>.<br>
On Windows it must be <b>nextcloud_aio_backupdir</b>. You need to create the 'nextcloud_aio_backupdir' volume beforehand by following this documentation: <a href="https://github.com/nextcloud/all-in-one#how-to-run-it-on-windows"><b>click here</b></a><br><br>
⚠️ Note that the backup archive must be located in a subfolder of the folder that you enter here and the subfolder which contains the archive must be named 'borg'. Otherwise will the backup container not find the backup archive!<br><br>
{% endif %}
{% else %}
<b>Everything set!</b> Click on the button below to test the path and password:<br/><br/>
<form method="POST" action="/api/docker/backup-test" class="xhr">
<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="Test path and password"/><br/>
</form>
{% endif %}
{% endif %}
{% endif %}
@@ -168,11 +175,18 @@
{% if domain != "" %}
{% if isAnyRunning == true %}
{% if isApacheStarting != true %}
<details>
<summary>Click here to reveal the initial Nextcloud credentials</summary><br />
Initial Nextcloud username: <b>admin</b><br />
Initial Nextcloud password: <b>{{ nextcloud_password }}</b>
</details><br /><br />
{% if borg_backup_host_location != '' %}
<details>
<summary>Click here to reveal the initial Nextcloud credentials</summary><br />
{% endif %}
Initial Nextcloud username: <b>admin</b><br />
Initial Nextcloud password:
{% if borg_backup_host_location != '' %}
{# nextcloud_password needs to be duplicated due to a bug in Firefox. See https://github.com/nextcloud/all-in-one/issues/638. #}
<b>{{ nextcloud_password }}</b></details><br /><br />
{% else %}
<b>{{ nextcloud_password }}</b><br><br>
{% endif %}
<a href="https://{{ domain }}" class="button" target="_blank" rel="noopener">Open your Nextcloud ↗</a><br/>
{% else %}
{% if isAnyRestarting == false %}
@@ -214,7 +228,7 @@
{% if has_update_available == true %}
{% if is_mastercontainer_update_available == false %}
⚠ Container updates are available. Click on 'Stop Containers' and 'Start Containers' to update them. You should consider creating a backup first.<br><br>
Container updates are available. Click on 'Stop Containers' and 'Start Containers' to update them. You should consider creating a backup first.<br><br>
{% endif %}
{% else %}
{% if is_mastercontainer_update_available == false %}
@@ -226,7 +240,7 @@
{% if isAnyRunning == true %}
{% if isApacheStarting != true %}
{% if is_mastercontainer_update_available == true %}
⚠ A mastercontainer update is available. Please click on the button below to stop your containers in order to be able to update the mastercontainer.<br /><br />
A mastercontainer update is available. Please click on the button below to stop your containers in order to be able to update the mastercontainer.<br /><br />
{% if current_channel starts with 'latest' %}
You can find the changelog <a href="https://github.com/nextcloud/all-in-one/releases/latest"><b>here</b></a><br><br>
{% elseif current_channel starts with 'beta' %}
@@ -251,7 +265,7 @@
Clicking on the button below will download all docker containers and start them. This can take a lot of time depending on your internect connection. Since the overall size is a few GB, this will take around 5-10 min or more. So be aware and patient!<br><br>
{% endif %}
{% if is_mastercontainer_update_available == true %}
⚠ A mastercontainer update is available. Please click on the button below to update it.<br><br>
A mastercontainer update is available. Please click on the button below to update it.<br><br>
<form method="POST" action="/api/docker/watchtower" class="xhr">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
@@ -286,7 +300,10 @@
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
The folder path that you enter must start with <b>/mnt/</b>, <b>/media/</b> or <b>/host_mnt/</b> or be equal to <b>/var/backups</b>.<br><br>So e.g. <b>/mnt/backup</b> on Linux and macOS or <b>/host_mnt/c/backup/directory</b> on Windows. (This Windows example would be equivalent to 'C:\backup\directory' on the Windows host. So you need to translate the path that you want to use into the correct format.)
The folder path that you enter must start with <b>/</b> and must <b>not</b> end with <b>/</b>.<br><br>
An example for Linux is <b>/mnt/backup</b>.<br>
For macOS it may be <b>/var/backup</b>.<br>
On Windows it must be <b>nextcloud_aio_backupdir</b>. You need to create the 'nextcloud_aio_backupdir' volume beforehand by following this documentation: <a href="https://github.com/nextcloud/all-in-one#how-to-run-it-on-windows"><b>click here</b></a><br><br>
{% endif %}
{% if borg_backup_host_location != "" %}
@@ -294,6 +311,15 @@
<h2>Backup and restore</h2>
{% if backup_exit_code > 0 %}
<span class="status error"></span> Last {{ borg_backup_mode }} failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
{% if has_backup_run_once == false %}
You may change the backup path again since the initial backup was not successful. After submitting the new value, you need to click on 'Create Backup' for testing the new value.<br /><br />
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" value="{{borg_backup_host_location}}" name="borg_backup_host_location" placeholder="/mnt/backup"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
{% endif %}
{% elseif backup_exit_code == 0 %}
{% if borg_backup_mode == "backup" %}
<span class="status success"></span> Last {{ borg_backup_mode }} successful on {{ last_backup_time }} UTC! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup">Logs</a>)<br /><br />
@@ -306,7 +332,7 @@
{% if is_backup_container_running == false and isApacheStarting == false %}
{% if has_backup_run_once == true %}
<details>
<summary>Click here to reveal all backup options</summary><br />
<summary>Click here to reveal all backup options (it also includes an option for automatic updates)</summary><br />
{% endif %}
<h3>Backup information</h3>
This is your encryption password for backups: <b>{{ borgbackup_password }}</b><br /><br/>
@@ -347,7 +373,7 @@
<input class="button" type="submit" value="Restore selected backup" onclick="return confirm('Restore the selected backup? Are you sure that you want to restore the selected backup? This will stop all running containers and restore the selected backup. It is recommended to create a backup first. You might also want to check the backup integrity.')" />
</form>
<h3>Daily backup creation</h3>
<h3>Daily backup and automatic updates</h3>
{% if daily_backup_time == "" %}
By entering a time below, you can enable daily backups. It will create them at the entered time in 24h format. E.g. <b>04:00</b> will create backups at 4 am UTC and <b>16:00</b> at 4 pm UTC.<br><br/>
<form method="POST" action="/api/configuration" class="xhr">
@@ -356,9 +382,9 @@
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
This option will also automatically update your containers and apps and will send a notification about the result of the backup.<br><br/>
This option will also automatically update your containers, the mastercontainer and your Nextcloud apps and will send a notification about the result of the backup.<br><br/>
{% else %}
Daily backups will be created at <b>{{ daily_backup_time }} UTC</b> which includes a notification about the result of the backup and automatic updates of your containers and apps. You can disable this option again by clicking on the button below.<br><br/>
Daily backups will be created at <b>{{ daily_backup_time }} UTC</b> which includes a notification about the result of the backup and automatic updates of your containers, the mastercontainer and your Nextcloud apps. You can disable this option again by clicking on the button below.<br><br/>
<form method="POST" action="/api/configuration" class="xhr">
<input type="hidden" name="delete_daily_backup_time" value="yes"/>
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
@@ -387,14 +413,16 @@
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
The new password needs to be at least 24 characters long. Allowed characters are the <a href="https://en.wikipedia.org/wiki/Latin_alphabet#/media/File:Abecedarium.png"><b>latin characters</b></a> <b>a-z</b>, <b>A-Z</b>, <b>0-9</b> and <b>spaces</b>.
The new password needs to be at least 24 characters long. Allowed characters are the <a href="https://en.wikipedia.org/wiki/Latin_alphabet#/media/File:Abecedarium.png"><b>latin characters</b></a> <b>a-z</b>, <b>A-Z</b>, <b>0-9</b> and <b>spaces</b>.<br><br>
{% endif %}
{% endif %}
{% endif %}
{% if is_backup_container_running == false %}
<h2>Optional addons</h2>
In this section you can find optional addons.<br>
You can enable or disable them when your containers are stopped.<br><br>
In this section you can enable or disable optional addons.<br><br>
{% if isAnyRunning == true %}
<b>Note:</b> You can enable or disable them when your containers are stopped.<br><br>
{% endif %}
<form id="options-form" method="POST" action="/api/configuration" class="xhr">
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
@@ -405,14 +433,14 @@
<input type="checkbox" id="clamav" name="clamav"><label for="clamav">ClamAV (only supported on x64, needs ~1GB additional RAM)</label><br>
{% endif %}
{% if is_collabora_enabled == true %}
<input type="checkbox" id="collabora" name="collabora" checked="checked"><label for="collabora">Collabora</label><br>
<input type="checkbox" id="collabora" name="collabora" checked="checked"><label for="collabora">Collabora (Nextcloud Office)</label><br>
{% else %}
<input type="checkbox" id="collabora" name="collabora"><label for="collabora">Collabora</label><br>
<input type="checkbox" id="collabora" name="collabora"><label for="collabora">Collabora (Nextcloud Office)</label><br>
{% endif %}
{% if is_talk_enabled == true %}
<input type="checkbox" id="talk" name="talk" checked="checked"><label for="talk">Nextcloud Talk (needs ports 3478/TCP and 3478/UDP open in your firewall/router)</label><br><br>
<input type="checkbox" id="talk" name="talk" checked="checked"><label for="talk">Nextcloud Talk (needs ports {{ talk_port }}/TCP and {{ talk_port }}/UDP open in your firewall/router)</label><br><br>
{% else %}
<input type="checkbox" id="talk" name="talk"><label for="talk">Nextcloud Talk (needs ports 3478/TCP and 3478/UDP open in your firewall/router)</label><br><br>
<input type="checkbox" id="talk" name="talk"><label for="talk">Nextcloud Talk (needs ports {{ talk_port }}/TCP and {{ talk_port }}/UDP open 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>
@@ -421,6 +449,7 @@
{% 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>
{% 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>
@@ -429,6 +458,57 @@
<script type="text/javascript" src="disable-talk.js"></script>
<script type="text/javascript" src="disable-collabora.js"></script>
{% endif %}
{% if is_collabora_enabled == true and isAnyRunning == false and was_start_button_clicked == true %}
<h3>Collabora dictionaries</h3>
{% if collabora_dictionaries == "" %}
In order to get the correct dictionaries in Collabora, you may configure the dictionaries below:<br><br>
<form method="POST" action="/api/configuration" class="xhr">
<input type="text" name="collabora_dictionaries" placeholder="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" />
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input class="button" type="submit" value="Submit" />
</form>
You need to make sure that the dictionaries that you enter are valid. An example is <b>de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru</b>.<br><br>
{% else %}
The dictionaries for Collabora are currently set to <b>{{ collabora_dictionaries }}</b>. You can reset them again by clicking on the button below.<br><br/>
<form method="POST" action="/api/configuration" class="xhr">
<input type="hidden" name="delete_collabora_dictionaries" value="yes"/>
<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="Reset collabora dictionaries" />
</form>
{% endif %}
{% endif %}
<h2>Timezone change</h2>
{% if isAnyRunning == true %}
{% if timezone != "" %}
The timezone for Nextcloud is currently set to <b>{{ timezone }}</b>.<br><br>
{% endif %}
<b>Note:</b> You can change the timezone when your containers are stopped.<br><br>
{% else %}
{% if timezone == "" %}
In order to get the correct time values for certain Nextcloud features, it makes sense to set the timezone for Nextcloud to the one that your users mainly use. Please note that this setting does not apply to the mastercontainer and any backup option.<br><br>
You can configure the timezone for Nextcloud below:<br><br>
<form method="POST" action="/api/configuration" class="xhr">
<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" />
</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 %}
The timezone for Nextcloud is currently set to <b>{{ timezone }}</b>. You can reset the timezone again by clicking on the button below.<br><br/>
<form method="POST" action="/api/configuration" class="xhr">
<input type="hidden" name="delete_timezone" value="yes"/>
<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="Reset the timezone" />
</form>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}

View File

@@ -8,7 +8,7 @@
{% if is_login_allowed == true %}
<p>Log in using your Nextcloud AIO password:</p>
<form method="POST" action="/api/auth/login">
<input type="text" name="password" placeholder="Password" />
<input type="text" autocomplete="off" name="password" placeholder="Password" />
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
<input type="submit" class="button" value="Login" />

150
readme.md
View File

@@ -17,8 +17,8 @@ The following instructions are especially meant for Linux. For macOS see [this](
curl -fsSL get.docker.com | sudo sh
```
2. Run the following command in order to start the container:<br>
(For people that cannot use ports 80 and/or 443 on this server, please follow [this documentation](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md). Otherwise please run the command below!)
2. Run the command below in order to start the container:<br><br>
(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 \
@@ -50,37 +50,35 @@ The following instructions are especially meant for Linux. For macOS see [this](
</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://internal.ip.of.this.server:8080`<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 automatially by opening the Nextcloud AIO Interface via:<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>
`https://your-domain-that-points-to-this-server.tld:8443`
4. Please do not forget to open port `3478/TCP` and `3478/UDP` in your firewall/router for the Talk container!
## FAQ
### How does it work?
Nextcloud AIO is inspired by projects like Portainer that allow to manage the docker daemon by talking to the docker socket directly. This concept allows to install only one container with a single command that does the heavy lifting of creating and managing all containers that are needed in order to provide a Nextcloud installation with most features included. It also makes updating a breeze and is not bound to the host system (and its slow updates) anymore as everything is in containers. Additionally, it is very easy to handle from a user perspective because a simple interface for managing your Nextcloud AIO installation is provided.
Nextcloud AIO is inspired by projects like Portainer that manage the docker daemon by talking to it through the docker socket directly. This concept allows a user to install only one container with a single command that does the heavy lifting of creating and managing all containers that are needed in order to provide a Nextcloud installation with most features included. It also makes updating a breeze and is not bound to the host system (and its slow updates) anymore as everything is in containers. Additionally, it is very easy to handle from a user perspective because a simple interface for managing your Nextcloud AIO installation is provided.
### Are reverse proxies supported?
Yes. Please refer to the following documentation on this: [reverse-proxy.md](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md)
### Which ports are mandatory to be open in your firewall/router?
Only those (if you acces the Mastercontainer Interface internally via port 8080):
Only those (if you access the Mastercontainer Interface internally via port 8080):
- `443/TCP` for the Apache container
- `3478/TCP` and `3478/UDP` for the Talk container
### Explanation of used ports:
- `8080/TCP`: Mastercontainer Interface with self-signed certificate (works always, also if only access via IP-address is possible, e.g. `https://internal.ip.address:8080/`)
- `8080/TCP`: Mastercontainer Interface with self-signed certificate (works always, also if only access via IP-address is possible, e.g. `https://ip.address.of.this.server:8080/`)
- `80/TCP`: redirects to Nextcloud (is used for getting the certificate via ACME http-challenge for the Mastercontainer)
- `8443/TCP`: Mastercontainer Interface with valid certificate (only works if port 80 and 8443 are open in your firewall/router and you point a domain to your server. It generates a valid certificate then automatically and access via e.g. `https://public.domain.com:8443/` is possible.)
- `443/TCP`: will be used by the Apache container later on and needs to be open in your firewall/router
- `3478/TCP` and `3478/UDP`: will be used by the Turnserver inside the Talk container and needs to be open in your firewall/router
### How to run it on macOS?
On macOS, there is one specialty in comparison to Linux: instead of using `--volume /var/run/docker.sock:/var/run/docker.sock:ro`, you need to use `--volume /var/run/docker.sock.raw:/var/run/docker.sock:ro` to run it after you installed [Docker Desktop](https://www.docker.com/products/docker-desktop/). Apart from that it should work and behave the same like on Linux.
On macOS, there are two things different in comparison to Linux: instead of using `--volume /var/run/docker.sock:/var/run/docker.sock:ro`, you need to use `--volume /var/run/docker.sock.raw:/var/run/docker.sock:ro` to run it after you installed [Docker Desktop](https://www.docker.com/products/docker-desktop/). You also need to add `-e DOCKER_SOCKET_PATH="/var/run/docker.sock.raw"`to the startup command. Apart from that it should work and behave the same like on Linux.
### How to run it on Windows?
On Windows, the following command should work after you installed [Docker Desktop](https://www.docker.com/products/docker-desktop/):
<details>
<summary>Click here to show it</summary>
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 ^
@@ -94,7 +92,29 @@ docker run -it ^
nextcloud/all-in-one:latest
```
</details>
**Please note:** In order to make the built-in backup solution able to back up to the host system, you need to create a volume with the name `nextcloud_aio_backupdir` beforehand:
```
docker volume create ^
--driver local ^
--name nextcloud_aio_backupdir ^
-o device="/host_mnt/c/your/backup/path" ^
-o type="none" ^
-o o="bind"
```
(The value `/host_mnt/c/your/backup/path` in this example would be equivalent to `C:\your\backup\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!
### How to run it behind a Cloudflare Argo Tunnel?
Although it does not seems like it is the case but from AIO perspective a Cloudflare Argo Tunnel works like a reverse proxy. So please follow the [reverse proxy documentation](./reverse-proxy.md) where is documented how to make it run behind a Cloudflare Argo Tunnel.
### How to resolve firewall problems with Fedora Linux, RHEL OS, CentOS, SUSE Linux and others?
It is known that Linux distros that use [firewalld](https://firewalld.org) as their firewall daemon have problems with docker networks. In case the containers are not able to communicate with each other, you may change your firewalld to use the iptables backend by running:
```
sudo sed -i 's/FirewallBackend=nftables/FirewallBackend=iptables/g' /etc/firewalld/firewalld.conf
sudo systemctl restart firewalld docker
```
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.
@@ -102,6 +122,12 @@ Simply run the following: `sudo docker exec -it nextcloud-aio-nextcloud php occ
### 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
### 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.
### 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.
### How to switch the channel?
You can switch to a different channel like e.g. the beta channel or from the beta channel back to the latest channel by stopping the mastercontainer, removing it (no data will be lost) and recreating the container using the same command that you used initially to create the mastercontainer. For the beta channel on x64 you need to change the last line `nextcloud/all-in-one:latest` to `nextcloud/all-in-one:beta` and vice versa. For arm64 it is `nextcloud/all-in-one:latest-arm64` and `nextcloud/all-in-one:beta-arm64`, respectively.
@@ -115,6 +141,23 @@ Additionally, there is a cronjob that runs once a day that checks for container
### How to easily log in to the AIO interface?
If your Nextcloud is running and you are logged in as admin in your Nextcloud, you can easily log in to the AIO interface by opening `https://yourdomain.tld/settings/admin/overview` which will show a button on top that enables you to log in to the AIO interface by just clicking on this button. **Note:** You can change the domain/ip-address/port of the button by simply stopping the containers, visiting the AIO interface from the correct and desired domain/ip-address/port and clicking once on `Start containers`.
### How to properly reset the instance?
If something goes unexpected routes during the initial installation, you might want to reset the AIO installation to be able to start from scratch.
**Please note**: if you already have it running and have data on your instance, you should not follow these instructions as it will delete all data that is coupled to your AIO instance.
Here is how to reset the AIO instance properly:
1. Stop all containers if they are running from the AIO interface
1. Stop the mastercontainer with `sudo docker stop nextcloud-aio-mastercontainer`
1. If the domaincheck container is still running, stop it with `sudo docker stop nextcloud-aio-domaincheck`
1. Check which containers are stopped: `sudo docker ps --filter "status=exited"`
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. 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!
### Backup solution
Nextcloud AIO provides a local backup solution based on [BorgBackup](https://github.com/borgbackup/borg#what-is-borgbackup). These backups act as a local restore point in case the installation gets corrupted.
@@ -256,11 +299,21 @@ if ! [ -d "$TARGET_DIRECTORY" ]; then
exit 1
fi
if [ -f "$SOURCE_DIRECTORY/aio-lockfile" ]; then
echo "Not continuing because aio-lockfile already exists."
exit 1
fi
touch "$SOURCE_DIRECTORY/aio-lockfile"
if ! rsync --stats --archive --human-readable --delete "$SOURCE_DIRECTORY/" "$TARGET_DIRECTORY"; then
echo "Failed to sync the backup repository to the target directory."
exit 1
fi
rm "$SOURCE_DIRECTORY/aio-lockfile"
rm "$TARGET_DIRECTORY/aio-lockfile"
umount "$DRIVE_MOUNTPOINT"
if docker ps --format "{{.Names}}" | grep "^nextcloud-aio-nextcloud$"; then
@@ -273,15 +326,57 @@ fi
</details>
You can simply copy and past the script into a file e.g. named `backup-script.sh` e.g. here: `/root/backup-script.sh`. Do not forget to modify the variables to your needings though!
You can simply copy and past the script into a file e.g. named `backup-script.sh` e.g. here: `/root/backup-script.sh`. Do not forget to modify the variables to your requirements!
Afterwards apply the correct permissions with `sudo chown root:root /root/backup-script.sh` and `sudo chmod 700 /root/backup-script.sh`. Then you can create a cronjob that runs e.g. at `20:00` each week on sundays like this: `crontab -u root -l | { cat; echo "0 20 * * 7 /root/backup-script.sh"; } | crontab -u root -`. Make sure that it does not collidate with the daily backups from AIO (if configured) since the target backup repository might get into an inconsistent state. (There is no check in place that checks this.)
Afterwards apply the correct permissions with `sudo chown root:root /root/backup-script.sh` and `sudo chmod 700 /root/backup-script.sh`. Then you can create a cronjob that runs e.g. at `20:00` each week on Sundays 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 20 * * 7 /root/backup-script.sh` which will run the script at 20:00 on Sundays each week.
1. save and close the crontab (when using nano are the shortcuts for this `Ctrl + o` -> `Enter` and close the editor with `Ctrl + x`).
### How to change the default location of Nextcloud's Datadir?
You can configure the Nextcloud container to use a specific directory on your host as data directory. You can do so by adding the environmental variable `NEXTCLOUD_DATADIR` to the initial startup of the mastercontainer. Allowed values for that variable are strings that start with `/mnt/`, `/media/` or `/host_mnt/`. An example for Linux and macOS is `-e NEXTCLOUD_DATADIR="/mnt/ncdata"`. On Windows it might be `-e NEXTCLOUD_DATADIR="/host_mnt/c/your/data/path"` (This Windows 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.) 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 would the command for this be: `sudo chown -R 33:0 /mnt/ncdata`. ⚠ **Attention:** It is very important to change the datadir **before** Nextcloud is installed/started the first time and not to change it afterwards!
You can configure the Nextcloud container to use a specific directory on your host as data directory. You can do so by adding the environmental variable `NEXTCLOUD_DATADIR` to the initial startup of the mastercontainer. Allowed values for that variable are strings that start with `/` and are not equal to `/`.
- An example for Linux is `-e NEXTCLOUD_DATADIR="/mnt/ncdata"`.
- On macOS it might be `-e NEXTCLOUD_DATADIR="/var/nextcloud-data"`
- For Synology it may be `-e NEXTCLOUD_DATADIR="/volume1/docker/nextcloud/data"`.
- On Windows it must be `-e NEXTCLOUD_DATADIR="nextcloud_aio_nextcloud_datadir"`. In order to use this, you need to create the `nextcloud_aio_nextcloud_datadir` volume beforehand:
```
docker volume create ^
--driver local ^
--name nextcloud_aio_nextcloud_datadir ^
-o device="/host_mnt/c/your/data/path" ^
-o type="none" ^
-o o="bind"
```
(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.
⚠️ **Attention:** It is very important to change the datadir **before** Nextcloud is installed/started the first time and not to change it afterwards!
### 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 are equal to or start with `/mnt/`, `/media/` or `/host_mnt/` or are equal to `/var/backups` and unequal to `/mnt/ncdata`. Two examples for Linux and macOS are: `-e NEXTCLOUD_MOUNT="/mnt/"` or `-e NEXTCLOUD_MOUNT="/media/"`. On Windows it might be `-e NEXTCLOUD_DATADIR="/host_mnt/c"` (This Windows example would be equivalent to `C:\` on the Windows host. So you need to translate the path that you want to use into the correct format.) After using this option, please make sure to apply the correct permissions to the directories that you want to use in Nextcloud (not needed on Windows). E.g. `sudo chown -R 33:0 /mnt/your-drive-mountpoint` should make it work. You can then navigate to the apps management page, activate the external storage app, navigate to `https://your-nc-domain.com/settings/admin/externalstorages` and add a local external storage directory that will be accessible inside the container at the same place that you've entered. E.g. `/mnt/your-drive-mountpoint` will be mounted to `/mnt/your-drive-mountpoint` inside the container, etc. Be aware though that these locations will not be covered by the built-in backup solution!
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 `/`.
- Two examples for Linux are `-e NEXTCLOUD_MOUNT="/mnt/"` and `-e NEXTCLOUD_MOUNT="/media/"`.
- For Synology it may be `-e NEXTCLOUD_MOUNT="/volume1/"`.
- On Windows is this option not supported.
After using this option, please make sure to apply the correct permissions to the directories that you want to use in Nextcloud. E.g. `sudo chown -R 33:0 /mnt/your-drive-mountpoint` and `sudo chmod -R 750 /mnt/your-drive-mountpoint` should make it work on Linux when you have used `-e NEXTCLOUD_MOUNT="/mnt/"`.
You can then navigate to the apps management page, activate the external storage app, navigate to `https://your-nc-domain.com/settings/admin/externalstorages` and add a local external storage directory that will be accessible inside the container at the same place that you've entered. E.g. `/mnt/your-drive-mountpoint` will be mounted to `/mnt/your-drive-mountpoint` inside the container, etc.
Be aware though that these locations will not be covered by the built-in backup solution!
### 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)
### 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/
@@ -289,7 +384,7 @@ When your containers run for a few days without a restart, the container logs th
### 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 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 -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>
@@ -299,13 +394,32 @@ 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 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 -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`.
### LDAP
It is possible to connect to an existing LDAP server. You need to make sure that the LDAP server is reachable from the Nextcloud container. Then you can enable the LDAP app and configure LDAP in Nextcloud manually. If you don't have a LDAP server yet, recommended is to use this docker container: https://hub.docker.com/r/osixia/openldap/. Make sure here as well that Nextcloud can talk to the LDAP server. The easiest way is by adding the LDAP docker container to the docker network `nextcloud-aio`. Then you can connect to the LDAP container by its name from the Nextcloud container. **Pro-tip**: You will probably find this app useful: https://apps.nextcloud.com/apps/ldap_write_support
### Netdata
Netdata allows you to monitor your server using a GUI. You can install it by following https://learn.netdata.cloud/docs/agent/packaging/docker#create-a-new-netdata-agent-container.
### USER_SQL
If you want to use the user_sql app, the easiest way is to create an additional database container and add it to the docker network `nextcloud-aio`. Then the Nextcloud container should be able to talk to the database container using its name.
### phpMyAdmin, Adminer or pgAdmin
It is possible to install any of these to get a GUI for your AIO database. The pgAdmin container is recommended. You can get some docs on it here: https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html. For the container to connect to the aio-database, you need to connect the container to the docker network `nextcloud-aio` and use `nextcloud-aio-database` as database host, `oc_nextcloud` as database username and the password that you get when running `sudo grep dbpassword /var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/config/config.php` as the password.
### How to migrate from an already existing Nextcloud installation to Nextcloud AIO?
Please see the following documentation on this: [migration.md](https://github.com/nextcloud/all-in-one/blob/main/migration.md)
### Requirements for integrating new containers
For integrating new containers, they must pass specific requirements for being considered to get integrated in AIO itself. Even if not considered, we may add some documentation on it.
What are the requirements?
1. New containers must be related to Nextcloud. Related means that there must be a feature in Nextcloud that gets added by adding this container.
2. It must be optionally installable. Disabling and enabling the container from the AIO interface must work and must not produce any unexpected side-effects.
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.

View File

@@ -1,38 +1,114 @@
## Reverse Proxy Documentation
# Reverse Proxy Documentation
Basically, you need to specify the port that the apache container shall use and modify the startup command a bit.
**Please note:** Publishing the AIO interface with a valid certificate to the public internet is **not** the goal of this documentation! Instead, the main goal is to publish Nextcloud with a valid certificate to the public internet which is **not** running inside the mastercontainer but in a different container! If you need a valid certificate for the AIO interface, see [point 3](#3-optional-get-a-valid-certificate-for-the-aio-interface).
All examples below will use port `11000` as example apache port. Also it is supposed that the reverse proxy runs on the same server like AIO, hence `localhost` is used and not an internal ip-address to point to the AIO instance. Modify both to your needings.
In order to run Nextcloud behind a reverse proxy, you need to specify the port that the Apache container shall use, add a specific config to your reverse proxy and modify the startup command a bit. All examples below will use port `11000` as example Apache port which will be exposed on the host. Modify it to your needings.
**Info:** The instructions below assume that your reverse proxy is installed directly on the host, not inside a separate docker container. If you want to run the reverse proxy inside a docker container, you can do so by using the `--network host` option when starting the reverse proxy container.
**Attention** The process to run Nextcloud behind a reverse proxy consists of at least these 2 steps:
1. **Configure the reverse proxy! See [point 1](#1-add-this-to-your-reverse-proxy-config)**
1. **Use the in this document provided startup command! See [point 2](#2-use-this-startup-command)**
- Optional: get a valid certificate for the AIO interface! See [point 3](#3-optional-get-a-valid-certificate-for-the-aio-interface)
- How to debug things? See [point 4](#4-how-to-debug-things)
### Reverse proxy config examples
## 1. Add this to your reverse proxy config
#### Caddy
**Please note:** Since the Apache container gets spawned by the mastercontainer, there is **NO** way to provide custom docker labels or custom environmental variables for the Apache container. So please do not attempt to do this because you will fail! Only the documented way will work!
### Apache
<details>
<summary>click here to expand</summary>
<br>
**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!
Add this as a new Apache site config:
(The config below assumse that you are using certbot to get your certificates. You need to create them first in order to make it work.)
```
<VirtualHost *:80>
ServerName <your-nc-domain>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{SERVER_NAME} =<your-nc-domain>
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerName <your-nc-domain>
# Reverse proxy
RewriteEngine On
ProxyPreserveHost On
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/
# Enable h2, h2c and http1.1
Protocols h2 h2c http/1.1
# SSL
SSLEngine on
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/<your-nc-domain>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<your-nc-domain>/privkey.pem
# Disable HTTP TRACE method.
TraceEnable off
<Files ".ht*">
Require all denied
</Files>
</VirtualHost>
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` 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)
To make the config work you can run the following command:
`sudo a2enmod rewrite proxy proxy_http proxy_wstunnel ssl headers http2`
</details>
### Caddy (Recommended)
<details>
<summary>click here to expand</summary>
Add this to your Caddyfile:
```
https://<your-nc-domain>:443 {
header Strict-Transport-Security max-age=31536000;
reverse_proxy localhost:11000
}
```
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud.
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` 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
### Cloudflare Argo Tunnel
<details>
<summary>click here to expand</summary>
Although it does not seems like it is the case but from AIO perspective a Cloudflare Argo Tunnel works like a reverse proxy. Here is how to make it work:
1. Install the Cloudflare Argo Tunnel on the same machine where AIO will be running on and point the Argo Tunnel with the domain that you want to use for AIO to `localhost:11000`. If the Argo Tunnel is running on a different machine, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
2. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `-e SKIP_DOMAIN_VALIDATION=true` to the docker run command which will disable the dommain validation (because it is known that the domain validation will not work behind a Cloudflare Argo Tunnel). So you need to ensure yourself that you've configured everything correctly.
</details>
### Nginx
<details>
<summary>click here to expand</summary>
<br>
**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!
@@ -44,6 +120,7 @@ location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 0;
# Websocket
proxy_http_version 1.1;
@@ -52,13 +129,113 @@ location / {
}
```
Of course SSL needs to be set up as well e.g. by using certbot and your domain must be also added inside the nginx config.
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` 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>
### Startup command
### Nginx-Proxy
After adjusting your reverse proxy config, use the following command to start AIO:
<details>
<summary>click here to expand</summary>
Unfortunately it is not possible to configure nginx-proxy in a way that works because it completely relies on environmental variables of the docker containers itself. Providing these variables does not work as stated above.
If you really want to use AIO, we recommend you to switch to caddy. It is simply amazing!<br>
Of course understandable if that is not possible for you.
Apart from that, there is this: [manual-install](https://github.com/nextcloud/all-in-one/tree/main/manual-install)
</details>
### Nginx-Proxy-Manager
<details>
<summary>click here to expand</summary>
See these screenshots for a working config:
![image](https://user-images.githubusercontent.com/75573284/169556183-2999a733-de42-4008-af09-d4151719a474.png)
![image](https://user-images.githubusercontent.com/75573284/169555356-71f32be5-99b5-43ea-8aa7-632c8ef8fad3.png)
![image](https://user-images.githubusercontent.com/75573284/169557664-52db8713-f0ef-42ac-a161-de40280232a3.png)
![image](https://user-images.githubusercontent.com/75573284/169555441-dd9a42f5-aea5-4082-8e26-7adcfa4e6cfa.png)
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also change `<you>@<your-mail-provider-domain>` to a mail address of yours. **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>
<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!
1. Add a `nextcloud.toml` to the Treafik rules folder with the following content:
```toml
[http.routers]
[http.routers.nc-rtr]
entryPoints = ["https"]
rule = "Host(<your-nc-domain>)"
service = "nc-svc"
middlewares = ["chain-no-auth"]
[http.routers.nc-rtr.tls]
certresolver = "le"
[http.services]
[http.services.nc-svc]
[http.services.nc-svc.loadBalancer]
passHostHeader = true
[[http.services.nc-svc.loadBalancer.servers]]
url = "http://localhost:11000"
```
2. Add to the bottom of the `middlewares.toml` file in the Treafik rules folder the following content:
```toml
[http.middlewares.nc-middlewares-secure-headers]
[http.middlewares.nc-middlewares-secure-headers.headers]
hostsProxyHeaders = ["X-Forwarded-Host"]
sslRedirect = true
referrerPolicy = "same-origin"
X-Robots-Tag = "none"
```
3. Add to the bottom of the `middleware-chains.toml` file in the Traefik rules folder the following content:
```toml
[http.middlewares.chain-nc]
[http.middlewares.chain-nc.chain]
middlewares = [ "middlewares-rate-limit", "nc-middlewares-secure-headers"]
```
---
Of course you need to modify `<your-nc-domain>` in the nextcloud.toml to the domain on which you want to run Nextcloud. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` 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>
### Others
<details>
<summary>click here to expand</summary>
Config examples for other reverse proxies are currently not documented. Pull requests are welcome!
</details>
## 2. Use this startup command
After adjusting your reverse proxy config, use the following command to start AIO:<br>
(For an docker-compose example, see the example further [below](#inspiration-for-a-docker-compose-file).)
```
# For x64 CPUs:
@@ -109,9 +286,16 @@ nextcloud/all-in-one:latest
</details>
After doing so, you should be able to access the AIO Interface via `https://internal.ip.of.this.server:8080`. Enter your domain that you've entered in the reverse proxy config and you should be done. Please do not forget to open port `3478/TCP` and `3478/UDP` in your firewall/router for the Talk container!
### Inspiration for a docker-compose file
### Optional
Simply translate the docker run command into a docker-compose file. You can have a look at [this file](https://github.com/nextcloud/all-in-one/blob/main/docker-compose.yml) for some inspiration but you will need to modify it either way. You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
---
### How to continue?
After using the above command, you should be able to access the AIO Interface via `https://ip.address.of.the.host:8080`. Enter your domain that you've entered in the reverse proxy config and you should be done. Please do not forget to open port `3478/TCP` and `3478/UDP` in your firewall/router for the Talk container!
## 3. Optional: get a valid certificate for the AIO interface
If you want to also access your AIO interface publicly with a valid certificate, you can add e.g. the following config to your Caddyfile:
@@ -125,4 +309,16 @@ https://<your-nc-domain>:8443 {
}
```
Of course, you also need to modify `<your-nc-domain>` to the domain that you want to use. Afterwards should the AIO interface be accessible via `https://<your-nc-domain>:8443`. You can alternatively change the domain to a different subdomain by using `https://<your-alternative-domain>:443` in the Caddyfile and use that to access the AIO interface.
Of course you need to modify `<your-nc-domain>` in the nextcloud.toml to the domain on which you want to run Nextcloud. **Please note:** The above configuration will only work if your reverse proxy is running directly on the host that is running the docker daemon. If the reverse proxy is running in a docker container, you can use the `--network host` when starting the reverse proxy container in order to connect the reverse proxy container to the host network. If that is not an option for you, you can alternatively instead of `localhost` use the ip-address that is displayed after running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (the command only works on Linux)
Afterwards should the AIO interface be accessible via `https://ip.address.of.the.host:8443`. You can alternatively change the domain to a different subdomain by using `https://<your-alternative-domain>:443` instead of `https://<your-nc-domain>:8443` in the Caddyfile and use that to access the AIO interface.
## 4. How to debug things?
If something does not work, follow the steps below:
1. Make sure to exactly follow the whole reverse proxy documentation step-for-step from top to bottom!
1. Make sure that the reverse proxy is running on the host OS or if running in a container, connected to the host network. If that is not possible, substitute `localhost` in the default configurations by the ip-address that you can easily get when running the following command on the host OS: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` (The command only works on Linux)
1. Make sure that the mastercontainer is able to spawn other containers. You can do so by checking that the mastercontainer indeed has access to the Docker socket which might not be positioned in one of the suggested directories like `/var/run/docker.sock` but in a different directory, based on your OS and the way how you installed Docker. The mastercontainer logs should help figuring this out. You can have a look at them by running `sudo docker logs nextcloud-aio-mastercontainer` after the container is started the first time.
1. Check if after the mastercontainer was started, the reverse proxy if running inside a container, can reach the provided apache port. You can test this by running `nc -z localhost 11000; echo $?` from inside the reverse proxy container. If the output is `0`, everything works. Alternatively you can of course use instead of `localhost` the ip-address of the host here for the test.
1. Try to configure everything from scratch if it still does not work!
1. As last resort, you may disable the domain validation by adding `-e SKIP_DOMAIN_VALIDATION=true` to the docker run command. But only use this if you are completely sure that you've correctly configured everything!

View File

@@ -0,0 +1,10 @@
# Initial setup
- [ ] Verify that after starting the test container, you can access the AIO interface using https://internal.ip.address:8080
- [ ] After clicking the self-signed-certificate warning away, it should show the setup page with an explanation what AIO is and the initial password and a button that contains a link to the AIO login page
- [ ] After copying the password and clicking on this button, it should open a new tab with the login page
- [ ] The login page should show an input field that allows to enter the AIO password and a `Log in` button
- [ ] After pasting the new password into the input field and clicking on this button button, you should be logged in
- [ ] You should now see the containers page and you should see three sections: one general section which explains what AIO is, one `New AIO instance` section and one section that allows to restore the whole AIO instance from backup.
You can now continue with [002-new-instance.md](./002-new-instance.md) or [010-restore-instance.md](./010-restore-instance.md).

View File

@@ -0,0 +1,31 @@
# New instance
For the below to work, it is important that you have a domain that you point onto your testserver and open port 443 in your router/firewall.
- [ ] The `New AIO instance` section should show an input field that allows to enter a domain that will be used for Nextcloud later on as well as a short explanation regarding dynamic DNS
- [ ] Now test a few examples in the input box:
- [ ] Entering `djfslkklk` should report that DNS config is not set or the domain is not in a valid format
- [ ] Entering `https://sdjflkjk.cpm` should report that this is not a valid domain
- [ ] Entering `10.0.0.1` should report that ip-addresses are not supported
- [ ] Entering `nextcloud.com` should report that the domain does not point to this server
- [ ] Entering the domain that does point to your server e.g. `yourdomain.com` should finally redirect you to the next screen (if you did not configure your domain yet or did not open port 443, it should report that to you)
- [ ] Now you should see a button `Start containers` and an explanation which points out that clicking on the button will start the containers and that this can take a long time.
- [ ] Below that you should see a section `Optional addons` which shows a checkbox list with addons that can be enabled or disabled.
- [ ] Collabora and Nextcloud Talk should be enabled, the rest disabled
- [ ] Unchecking/Checking any of these should insert a button that allows to save the set config
- [ ] Checking OnlyOffice and Collabora at the same time should show a warning that this is not supported and should not saving the new config
- [ ] Recommended is to uncheck all options now
- [ ] Clicking on the save button should reload the page and activate the new config
- [ ] Clickig on the `Start containers` button should finally reveal a big spinning wheel that should block all elements on the side of being clicked.
- [ ] After waiting a few minutes, it should reload and show a new page
- [ ] On top of the page should be shown which channel you are running
- [ ] Below that, it should show that containers are currently starting
- [ ] Below that it should show a section with Containers: Apache, Database, Nextcloud and Redis and that your containers are up-to-date
- [ ] On the bottom should be the Optional addons section shown but with disabled checkboxes (not clickable)
- [ ] A automatic reload every 5s should happen until all Containers are started (as long as this window is focused)
- [ ] After waiting a bit longer it should instead of the advice that your containers are currently running show the initial Nextcloud credentials (username, password) and below that a button that allows to open the Nextcloud interface in a new tab
- [ ] Clicking on that button should open the Nextcloud interface in a new tab and you should be able to log in using the provided credentials
- [ ] Below the Containers section it should show a `Stop containers` button
- [ ] Below the Containers section and above the Optional Addons section, you should see a Backup and restore section and an AIO password change section
You can now continue with [003-automatic-login.md](./003-automatic-login.md).

View File

@@ -0,0 +1,8 @@
# Automatic login
- [ ] After you log in to Nextcloud using the provided initial credentials, open https://yourdomain.com/settings/admin/overview
- [ ] There you should see a Nextcloud AIO section and a button that allows to log into the AIO interface.
- [ ] Clicking on this button should open the AIO interface in a new tab and should automatically log you in
- [ ] All sessions in other tabs that are currently open should be closed (you can verify by reloading all other AIO tabs)
You can now continue with [004-initial-backup.md](./004-initial-backup.md).

View File

@@ -0,0 +1,18 @@
# Initial backup
- [ ] In the Backup and restore section, you should now see and input box where you should type in the path where the backup should get created and some explanation below
- [ ] Enter `/` which should send an error
- [ ] Enter `/mnt/` or `/media/` or `/host_mnt/` or `/var/backups/` should send an error as well
- [ ] Accepted should be `/mnt/backup`, `/media/backup`, `/host_mnt/c/backup` and `/var/backups`.
- [ ] The side should now reload
- [ ] The initial Nextcloud credentials on top of the page that are visible when the containers are running should now be hidden in a details tag
- [ ] In the Backup restore section you should now see a Backup information section with important info like the encryption password, the backup location and more.
- [ ] Also you should see a Backup cretion section that contains a `Create backup` button.
- [ ] Clicking on the `Create backup` button should open a window prompt that allows to cancel the operation.
- [ ] Canceling should return to the website, confirming should reveal the big spinner again which should block the website again.
- [ ] After a while you should see the information that Backup container is currently running
- [ ] Below the Containers section you should see the option to `Start containers` again.
- [ ] After a while and a few automatic reloads (as long as the side is focused), you should be redirected to the usual page and seen in the Backup and restore section that the last backup was successful.
- [ ] Below thhat you should see a details tag that allows to reveal all backup options
You can now continue with [020-backup-and-restore.md](.//020-backup-and-restore.md)

View File

@@ -0,0 +1,19 @@
# Restore instance
For the below to work, you need a backup archive of an AIO instance and the location on the test machine and the password for the backup archive. You can get one here: [backup-archive](./assets/backup-archive/)
- [ ] The section that allows to restore the whole AIO instance from backup should show two input fields: one that allows to enter a location where the backup archive is located and one that allows to enter password of the archive. It should also show a short explanation regarding the path requirements
- [ ] Entering an incorrect path and/or password should let you continue and test your settings in the next step
- [ ] Clicking on the test button should after a reload bring you back to the initial screen where it should say that the test was unsuccessful. Also you should be able to have a look at the backup container logs for investigation what exactly failed.
- [ ] You should also now see the input boxes again where you can change the path and password, confirm it and bring you again to the screen where you can test your settings.
- [ ] Entering the correct path to the backup archive and the correct password here should:
- [ ] Should reload and should hide all options except the option to test the path and password
- [ ] After the test you should see the options to check the integrity of the backup and a list of backup archives that you can choose from to restore your instance
- [ ] Clicking on either option should show a window prompt that lets you cancel the operation
- [ ] Clicking on the integrity check option should check the integrity and report that the backup integrity is good after a while which should then only show the option to choose the backup archive that should be restored
- [ ] Choosing the restore option should finally restore your files.
- [ ] After waiting a while it should reload the page and should show the usual container interface again with the state of your containers (stopped) and the option to start and update the containers again.
- [ ] Clicking on `Start and update containers` should show a window prompt that you should create a backup. Canceling should cancel the operation, confirming should reveal the big spinner again.
- [ ] After waiting a bit, all containers should be green and your instance should be fully functional again
You can now continue with [020-backup-and-restore.md](./020-backup-and-restore.md)

View File

@@ -0,0 +1,11 @@
# Backup and restore
- [ ] Expanding all backup options in the Backup and restore sectioin should reveal a Backup information section, Backup creation section, Backup check section, Backup restore section and a Daily backup section.
- [ ] The backup restore section should list all available backup archives and list them from most recent to least recent.
- [ ] Clicking on either option of Create backup, Check backup integrity or Restore selected backup should run the corresponding action and report after a while in the last check, backup or restore was successful.
- [ ] Daily backup creatio should allow to enter a time in 24h format e.g. `04:00` should be accepted, `24:00` or `dfjlk` not.
- [ ] 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
You can now continue with [030-aio-password-change.md](./030-aio-password-change.md)

View File

@@ -0,0 +1,12 @@
# AIO password change
- [ ] In the AIO password change section you should see two input fields. And below the requirements for a new password
- [ ] When entering nothing it should report that you need to enter your current aio password
- [ ] When entering a false password, it should report that to you
- [ ] After entering your current password and leaving the new password empty it should report that you need to enter a new password
- [ ] After entering a new passwort shorter than 24 characters or not allowed characters, it should report that the password requirements are not met.
- [ ] `sdfjlksj` should not be accepted
- [ ] `jdsfklöjiroewoäsadjkfölk` should not be accepted
- [ ] `sdjlfj SDJFLK 32489 sdjklf` should which should reload the page
You can now continue with [040-login-behavior.md](./040-login-behavior.md)

View File

@@ -0,0 +1,7 @@
# Login behavior
- [ ] When opening the AIO interface in a new tab while the apache container is running, it should report on the login page that Nextcloud is running and you should use the automatic login
- [ ] When the apache container is stopped, you should see here an input field that allows you to enter the AIO password which should log you in
- [ ] Starting and stopping the containers multiple times should every time produce a new token that is used in the admin overview in Nextcloud as link in the button to log you into the AIO interface. (see [003-automatic-login.md](./003-automatic-login.md))
You can now continue with [050-optional-addons.md](./050-optional-addons.md)

View File

@@ -0,0 +1,13 @@
# Optional addons
- [ ] Close to the bottom of the page in the AIO interface, you should see the optional addons section
- [ ] You should be able to change optional addons when containers are stopped and not change them when containers are running
- [ ] Enabling either of the options should start a new container with the same or comparable name and should also list them in the containers section
- [ ] After all containers are started with the new config active, you should verify that the options were automatically activated/deactivated.
- [ ] 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
- [ ] 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

@@ -0,0 +1,11 @@
# Environmental variables
- [ ] When starting the mastercontainer with `-e APACHE_PORT=11000` on a clean instance, the domaincheck container should be started with that same port published. That makes sure that also the Apache container will use that port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `-e TALK_PORT=3479` on a clean instance, the talk container should use this port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly. Also it should stop if apache_port and talk_port are set to the same value.
- [ ] Make also sure that reverse proxies work by following https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#reverse-proxy-documentation and following [001-initial-setup.md](./001-initial-setup.md) and [002-new-instance.md](./002-new-instance.md)
- [ ] When starting the mastercontainer with `-e SKIP_DOMAIN_VALIDATION=true` on a clean instance, it should skip the domain verification. So it should accept any domain that you type in then.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_DATADIR="/mnt/testdata"` it should map that location from `/mnt/testdata` to `/mnt/ncdata` inside the Nextcloud container. Not having adjusted the permissions correctly before starting the Nextcloud container the first time will not allow the Nextcloud container to start correctly. See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir for allowed values.
- [ ] When starting the mastercontainer with `-e NEXTCLOUD_MOUNT="/mnt/"` it should map `/mnt/` to `/mnt/` inside the Nextcloud container. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host for allowed values.
- [ ] When starting the mastercontainer with `-e 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.
You can now continue with [070-timezone-change.md](./070-timezone-change.md)

View File

@@ -0,0 +1,8 @@
# Timezone change
- [ ] At the very bottom of the page you should see the timezone change section
- [ ] When the containers are stopped, you should be able to change it and set/reset it
- [ ] If not already set, it should show an input field where you can enter a timezone
- [ ] `Europe/Berlin` should be accepted, e.g. `Europe Berlin` not
- [ ] When it is set, it should show that it is set to which timezone and display a button that allows to reset it again which does this on a press
- [ ] When it is set, running `date` inside Nextcloud releated containers should return the correct timezone

View File

@@ -0,0 +1,4 @@
# Backup archive
The backup archive was moved here because of Git LFS limitations:
https://github.com/szaimen/AIO-backup-archive

7
tests/QA/readme.md Normal file
View File

@@ -0,0 +1,7 @@
# QA test plans
In this folder are manual test plans for QA located that allow to manually step through certain features and make sure that everything works as expected.
For a test instance, you should make sure that all potentially breaking changes are merged, build new containers by following https://github.com/nextcloud/all-in-one/blob/main/develop.md#how-to-build-new-containers, stop a potential old instance, remove it and delete all volumes. Afterwards start a new clean test instance by following https://github.com/nextcloud/all-in-one/blob/main/develop.md#developer-channel.
Best is to start testing with [001-initial-setup.md](./001-initial-setup.md).