Compare commits

...

59 Commits

Author SHA1 Message Date
Simon L
2407aaf897 adjust docs for stalwart
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-06 16:38:02 +01:00
Simon L
813a73bb63 fix typo in stalwart
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-06 16:13:28 +01:00
Simon L
b8bd8719d4 increase to 7.8.0
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-06 15:34:45 +01:00
Simon L
bc167fcb0f Merge pull request #3887 from nextcloud/enh/noid/allow-28 2023-12-06 15:33:53 +01:00
Simon L
addf019e6e allow to install Nc28 upon initial install
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-06 15:30:07 +01:00
Simon L
174438d4c2 Merge pull request #3844 from nextcloud/enh/noid/exec-commands 2023-12-06 15:26:02 +01:00
Simon L
448268d11d Merge pull request #3843 from nextcloud/enh/3837/notify-push 2023-12-06 15:25:44 +01:00
Simon L
6335a8427e add timeout and sleep to notify-push
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-06 15:25:29 +01:00
Simon L
8c84cca670 Merge pull request #3831 from nextcloud/enh/noid/disable-trace-method 2023-12-06 15:24:37 +01:00
Simon L
7358b6744d Merge pull request #3886 from nextcloud/enh/noid/local-connection 2023-12-06 15:12:17 +01:00
Simon L
2db5adc59b Merge pull request #3885 from nextcloud/dependabot/docker/Containers/imaginary/golang-1.21.5-alpine3.18 2023-12-06 15:10:57 +01:00
Simon L
3a212f4a38 fix local connection
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-06 14:55:00 +01:00
dependabot[bot]
39b79c84c5 Bump golang in /Containers/imaginary
Bumps golang from 1.21.4-alpine3.18 to 1.21.5-alpine3.18.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 12:53:00 +00:00
Simon L
357f48ea3d Merge pull request #3883 from nextcloud/dependabot/docker/Containers/docker-socket-proxy/haproxy-2.9.0-alpine3.18
Bump haproxy from 2.8.4-alpine3.18 to 2.9.0-alpine3.18 in /Containers/docker-socket-proxy
2023-12-06 13:26:20 +01:00
dependabot[bot]
12d5ea1fd1 Bump haproxy in /Containers/docker-socket-proxy
Bumps haproxy from 2.8.4-alpine3.18 to 2.9.0-alpine3.18.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 12:11:05 +00:00
Simon L
8d420c7721 Merge pull request #3873 from nextcloud/automated/noid/psalm-baseline-update
[Automated] Update psalm-baseline.xml
2023-12-05 08:19:09 +01:00
nextcloud-command
5cc15a3d38 Update psalm baseline
Signed-off-by: GitHub <noreply@github.com>
2023-12-05 04:09:01 +00:00
Simon L
c5e5be97fe Merge pull request #3869 from nextcloud/dependabot/docker/Containers/talk/nats-2.10.6-scratch 2023-12-04 13:58:27 +01:00
Simon L
1ac7d88637 Merge pull request #3868 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.2.1-20 2023-12-04 13:58:08 +01:00
dependabot[bot]
ae26696319 Bump nats from 2.10.5-scratch to 2.10.6-scratch in /Containers/talk
Bumps nats from 2.10.5-scratch to 2.10.6-scratch.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 12:56:14 +00:00
dependabot[bot]
7ee0c582ab Bump clamav/clamav from 1.2.1-17 to 1.2.1-20 in /Containers/clamav
Bumps clamav/clamav from 1.2.1-17 to 1.2.1-20.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 12:36:17 +00:00
Simon L
0cf8d66edf Merge pull request #3867 from nextcloud/aio-dependency-update
PHP dependency updates
2023-12-04 13:09:18 +01:00
szaimen
996b7c357c php dependency updates
Signed-off-by: GitHub <noreply@github.com>
2023-12-04 12:02:24 +00:00
Simon L
87d3f371c1 Merge pull request #3866 from nextcloud/enh/356/mail-server
community containers - add stalwart
2023-12-04 11:45:26 +01:00
Simon L
0e3aad3f55 community containers - add stalwart
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-04 11:12:11 +01:00
Simon L
c228e38662 Merge pull request #3855 from nextcloud/dependabot/docker/Containers/notify-push/alpine-3.18.5
Bump alpine from 3.18.4 to 3.18.5 in /Containers/notify-push
2023-12-01 14:25:54 +01:00
Simon L
35990e68dd Merge pull request #3854 from nextcloud/dependabot/docker/Containers/imaginary/alpine-3.18.5
Bump alpine from 3.18.4 to 3.18.5 in /Containers/imaginary
2023-12-01 14:25:33 +01:00
Simon L
890ba86532 Merge pull request #3214 from nextcloud/enh/noid/add-stop-grace-period-nextcloud
nextcloud - add stop_grace_period of 600s and wait for cron to finish during that time
2023-12-01 14:23:42 +01:00
dependabot[bot]
c859dd58a2 Bump alpine from 3.18.4 to 3.18.5 in /Containers/notify-push
Bumps alpine from 3.18.4 to 3.18.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 13:06:14 +00:00
dependabot[bot]
4f4d8c3743 Bump alpine from 3.18.4 to 3.18.5 in /Containers/imaginary
Bumps alpine from 3.18.4 to 3.18.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 13:06:13 +00:00
Simon L
173b3e2499 Merge pull request #3853 from nextcloud/dependabot/docker/Containers/watchtower/alpine-3.18.5 2023-12-01 13:39:28 +01:00
Simon L
ff35253229 Merge pull request #3852 from nextcloud/dependabot/docker/Containers/borgbackup/alpine-3.18.5 2023-12-01 13:39:02 +01:00
Simon L
2c82a96ce7 Merge pull request #3851 from nextcloud/dependabot/docker/Containers/domaincheck/alpine-3.18.5 2023-12-01 13:38:45 +01:00
Simon L
759f1ac4e4 Merge pull request #3850 from nextcloud/dependabot/docker/Containers/talk/alpine-3.18.5 2023-12-01 13:38:23 +01:00
dependabot[bot]
1d62792cf8 Bump alpine from 3.18.4 to 3.18.5 in /Containers/watchtower
Bumps alpine from 3.18.4 to 3.18.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:27:15 +00:00
dependabot[bot]
d45e2d9616 Bump alpine from 3.18.4 to 3.18.5 in /Containers/borgbackup
Bumps alpine from 3.18.4 to 3.18.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:19:50 +00:00
dependabot[bot]
913c2e3f1a Bump alpine from 3.18.4 to 3.18.5 in /Containers/domaincheck
Bumps alpine from 3.18.4 to 3.18.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:12:15 +00:00
dependabot[bot]
70557b7bec Bump alpine from 3.18.4 to 3.18.5 in /Containers/talk
Bumps alpine from 3.18.4 to 3.18.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:10:43 +00:00
Simon L
ecf7aeb92b always run exec commands
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-01 13:03:05 +01:00
Simon L
5a7dc0826c Merge pull request #3827 from asavageiv/patch-2 2023-12-01 12:58:49 +01:00
Simon L
14e8996e90 nextcloud - add stop_grace_period of 600s
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-12-01 12:35:19 +01:00
Simon L
7c448b9989 adjust formatting
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-11-30 12:51:26 +01:00
Simon L
0596c60584 disable trace method and improve apache ssl conf
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-11-30 11:49:03 +01:00
Simon L
5dce03dee8 Merge pull request #3839 from nextcloud/imaginary-container-update 2023-11-30 09:50:16 +01:00
Simon L
8f899c345f Merge pull request #3836 from nextcloud/dependabot/docker/Containers/nextcloud/php-8.1.26-fpm-alpine3.18
Bump php from 8.1.25-fpm-alpine3.18 to 8.1.26-fpm-alpine3.18 in /Containers/nextcloud
2023-11-30 09:20:49 +01:00
Simon L
0b36fbeadf Merge pull request #3835 from nextcloud/dependabot/docker/Containers/mastercontainer/php-8.2.13-fpm-alpine3.18
Bump php from 8.2.12-fpm-alpine3.18 to 8.2.13-fpm-alpine3.18 in /Containers/mastercontainer
2023-11-30 09:20:28 +01:00
Simon L
27a9b4e749 Merge pull request #3828 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.2.1-17
Bump clamav/clamav from 1.2.1-16 to 1.2.1-17 in /Containers/clamav
2023-11-30 09:20:07 +01:00
Simon L
76136f0114 Merge pull request #3815 from nextcloud/aio-helm-update
Helm Chart updates
2023-11-30 09:17:47 +01:00
szaimen
8ac090a091 Helm Chart updates
Signed-off-by: GitHub <noreply@github.com>
2023-11-30 08:16:23 +00:00
szaimen
46b982c338 imaginary-update automated change
Signed-off-by: GitHub <noreply@github.com>
2023-11-29 12:02:29 +00:00
Simon L
20c9c7f0e5 adjust readme for hardware transcoding
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-11-28 14:27:58 +01:00
dependabot[bot]
78dbb4585e Bump php in /Containers/nextcloud
Bumps php from 8.1.25-fpm-alpine3.18 to 8.1.26-fpm-alpine3.18.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-28 12:28:40 +00:00
dependabot[bot]
04ff1189d5 Bump php in /Containers/mastercontainer
Bumps php from 8.2.12-fpm-alpine3.18 to 8.2.13-fpm-alpine3.18.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-28 12:18:10 +00:00
Simon L
4183b35d06 Merge pull request #3826 from asavageiv/patch-1 2023-11-27 17:33:00 +01:00
Simon L
da72e8f883 Merge pull request #3832 from nextcloud/enh/noid/add-backup-hint 2023-11-27 17:31:11 +01:00
Simon L
f05f0defd3 add a hint about what is getting backed up when using aios backup solution
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-11-27 17:30:02 +01:00
dependabot[bot]
5990bbcac4 Bump clamav/clamav from 1.2.1-16 to 1.2.1-17 in /Containers/clamav
Bumps clamav/clamav from 1.2.1-16 to 1.2.1-17.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 12:45:44 +00:00
Alan Savage
08f0986101 Clean up formatting and minor text adjustments to reverse-proxy.md
Signed-off-by: Alan Savage <asavageiv@users.noreply.github.com>
2023-11-26 12:55:35 -06:00
Alan Savage
f93f5c02a5 Minor English grammar fixes in readme.md
Signed-off-by: Alan Savage <asavageiv@users.noreply.github.com>
2023-11-26 12:26:30 -06:00
39 changed files with 223 additions and 95 deletions

View File

@@ -49,4 +49,7 @@ Listen 8000
# See https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxytimeout
ProxyTimeout ${APACHE_MAX_TIME}
# See https://httpd.apache.org/docs/trunk/mod/core.html#traceenable
TraceEnable Off
</VirtualHost>

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18.4
FROM alpine:3.18.5
RUN set -ex; \
\

View File

@@ -1,5 +1,5 @@
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.1/alpine/Dockerfile
FROM clamav/clamav:1.2.1-16
FROM clamav/clamav:1.2.1-20
COPY clamav.conf /tmp/clamav.conf

View File

@@ -1,4 +1,4 @@
FROM haproxy:2.8.4-alpine3.18
FROM haproxy:2.9.0-alpine3.18
# hadolint ignore=DL3002
USER root

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18.4
FROM alpine:3.18.5
RUN set -ex; \
apk add --no-cache bash lighttpd netcat-openbsd; \
adduser -S www-data -G www-data; \

View File

@@ -1,6 +1,6 @@
FROM golang:1.21.4-alpine3.18 as go
FROM golang:1.21.5-alpine3.18 as go
ENV IMAGINARY_HASH 7efb66c243056e5b3b65215e101be7915983e364
ENV IMAGINARY_HASH 6cd9edd1d3fb151eb773c14552886e4fc8e50138
RUN set -ex; \
apk add --no-cache \
@@ -12,7 +12,7 @@ RUN set -ex; \
build-base; \
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
FROM alpine:3.18.4
FROM alpine:3.18.5
RUN set -ex; \
apk add --no-cache \
tzdata \

View File

@@ -5,7 +5,7 @@ FROM docker:24.0.7-cli as docker
FROM caddy:2.7.5-alpine as caddy
# From https://github.com/docker-library/php/blob/master/8.2/alpine3.18/fpm/Dockerfile
FROM php:8.2.12-fpm-alpine3.18
FROM php:8.2.13-fpm-alpine3.18
EXPOSE 80
EXPOSE 8080

View File

@@ -49,8 +49,14 @@ Listen 8080
SSLCertificateFile /etc/apache2/certs/ssl.crt
SSLEngine on
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder off
SSLSessionTickets off
</VirtualHost>
# Increase timeout in case e.g. the initial download takes a long time
Timeout 7200
ProxyTimeout 7200
# See https://httpd.apache.org/docs/trunk/mod/core.html#traceenable
TraceEnable Off

View File

@@ -1,4 +1,4 @@
FROM php:8.1.25-fpm-alpine3.18
FROM php:8.1.26-fpm-alpine3.18
ENV PHP_MEMORY_LIMIT 512M
ENV PHP_UPLOAD_LIMIT 10G

View File

@@ -1,7 +1,20 @@
#!/bin/bash
set -eu
wait_for_cron() {
set -x
while [ -n "$(pgrep -f /var/www/html/cron.php)" ]; do
echo "Waiting for cron to stop..."
sleep 5
done
echo "Cronjob successfully exited."
set +x
}
trap wait_for_cron SIGINT SIGTERM
while true; do
php -f /var/www/html/cron.php &
sleep 5m
sleep 5m &
wait $!
done

View File

@@ -478,6 +478,7 @@ php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
# Apply network settings
echo "Applying network settings..."
php /var/www/html/occ config:system:set allow_local_remote_servers --type=bool --value=true
php /var/www/html/occ config:system:set davstorage.request_timeout --value="$PHP_MAX_TIME" --type=int
php /var/www/html/occ config:system:set trusted_domains 1 --value="$NC_DOMAIN"
php /var/www/html/occ config:system:set overwrite.cli.url --value="https://$NC_DOMAIN/"
@@ -531,8 +532,6 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:update richdocuments
fi
php /var/www/html/occ config:app:set richdocuments wopi_url --value="https://$NC_DOMAIN/"
# Fix https://github.com/nextcloud/all-in-one/issues/188:
php /var/www/html/occ config:system:set allow_local_remote_servers --type=bool --value=true
# Make collabora more save
COLLABORA_IPv4_ADDRESS="$(dig "$NC_DOMAIN" A +short +search | grep '^[0-9.]\+$' | sort | head -n1)"
COLLABORA_IPv6_ADDRESS="$(dig "$NC_DOMAIN" AAAA +short +search | grep '^[0-9a-f:]\+$' | sort | head -n1)"
@@ -596,7 +595,6 @@ if [ "$ONLYOFFICE_ENABLED" = 'yes' ]; then
php /var/www/html/occ config:app: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 [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/onlyoffice" ] && [ -n "$ONLYOFFICE_SECRET" ] && [ "$(php /var/www/html/occ config:system:get onlyoffice jwt_secret)" = "$ONLYOFFICE_SECRET" ]; then
php /var/www/html/occ app:remove onlyoffice

View File

@@ -1,9 +1,7 @@
#!/bin/bash
while ! nc -z "$NC_DOMAIN" 443; do
sleep 5
done
sleep 10
# Wait 15s for domain to be reachable
sleep 15
if [ -n "$NEXTCLOUD_EXEC_COMMANDS" ]; then
echo "#!/bin/bash" > /tmp/nextcloud-exec-commands

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18.4
FROM alpine:3.18.5
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh

View File

@@ -42,6 +42,11 @@ if ! [ -f /nextcloud/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
exit 1
fi
# Add a timeout of 15s to hopefully get rid of the first error that is logged if apache is not there yet
sleep 15
echo "notify-push was started"
# Set sensitive values as env
export DATABASE_URL="postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB"
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST"

View File

@@ -1,7 +1,7 @@
FROM nats:2.10.5-scratch as nats
FROM nats:2.10.6-scratch as nats
FROM eturnal/eturnal:1.12.0 AS eturnal
FROM strukturag/nextcloud-spreed-signaling:1.2.1 as signaling
FROM alpine:3.18.4 as janus
FROM alpine:3.18.5 as janus
ARG JANUS_VERSION=v0.14.0
WORKDIR /src
@@ -33,7 +33,7 @@ RUN set -ex; \
make configs; \
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
FROM alpine:3.18.4
FROM alpine:3.18.5
ENV ETURNAL_ETC_DIR="/conf"
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
COPY --from=eturnal --chmod=777 --chown=1000:1000 /opt/eturnal /opt/eturnal

View File

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

View File

@@ -1,10 +1,11 @@
## Caddy with geoblocking
This container bundles caddy and auto-configures it for you. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden by listening on `bw.$NC_DOMAIN`, if installed.
This container bundles caddy and auto-configures it for you. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden by listening on `bw.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart by listening on `mail.$NC_DOMAIN`, if installed.
### Notes
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
- Make sure that no other service is using port 443 on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep 443` before installing AIO.
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, make sure that you point `bw.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for vaultwarden.
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart, make sure that you point `mail.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for stalwart.
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack

View File

@@ -0,0 +1,18 @@
## Stalwart mail server
This container bundles stalwart mail server and auto-configures it for you.
### Notes
- This is only intended to run on a VPS with static ip-address.
- Check with `sudo netstat -tulpn` that no other service is using port 25, 143, 465, 578, 993 nor 4190 yet as otherwise the container will fail to start.
- You need to configure a reverse proxy in order to run this container since stalwart needs a dedicated (sub)domain! For that, you might have a look at https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy.
- Currently, only `mail.$NC_DOMAIN` is supported as subdomain! So if Nextcloud is using `your-domain.com`, vaultwarden will use `mail.your-domain.com`.
- The data of Stalwart will be automatically included in AIOs backup solution!
- After adding and starting the container, you need to run `sudo docker exec -it nextcloud-aio-stalwart configure.sh` and follow https://stalw.art/docs/install/docker/#choose-where-to-store-your-data (1. choose `Local disk`, 2. choose `No, create a new directory for me`, 3. type in your `$NC_DOMAIN` as `domain name` and `mail.$NC_DOMAIN` as `server hostname`. 4. add `DKIM, SPF and DMARC` as advised to your DNS config, 5. Take note of the administrator credentials, 6. Now the config script should exit and automatically restart the container and enable your config.
- Afterwards, you can visit the basic admin settings in `https://your-nc-domain.com/settings/admin` and add the your mail server there.
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://github.com/marcoambrosini/aio-stalwart
### Maintainer
https://github.com/marcoambrosini

View File

@@ -0,0 +1,64 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-stalwart",
"display_name": "Stalwart",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart",
"image": "marcoambrosini/aio-stalwart",
"image_tag": "v1",
"internal_port": "587",
"restart": "unless-stopped",
"ports": [
{
"ip_binding": "",
"port_number": "25",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "143",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "465",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "587",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "993",
"protocol": "tcp"
},
{
"ip_binding": "",
"port_number": "4190",
"protocol": "tcp"
}
],
"environment": [
"TZ=%TIMEZONE%",
"NC_DOMAIN=%NC_DOMAIN%"
],
"volumes": [
{
"source": "nextcloud_aio_stalwart",
"destination": "/opt/stalwart-mail",
"writeable": true
},
{
"source": "nextcloud_aio_caddy",
"destination": "/caddy",
"writeable": false
}
],
"backup_volumes": [
"nextcloud_aio_stalwart"
]
}
]
}

View File

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

View File

@@ -57,7 +57,7 @@ spec:
value: nextcloud-aio-talk
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-apache:20231123_084113-latest
image: nextcloud/aio-apache:20231130_081302-latest
name: nextcloud-aio-apache
ports:
- containerPort: {{ .Values.APACHE_PORT }}

View File

@@ -50,7 +50,7 @@ spec:
value: "90"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-clamav:20231123_084113-latest
image: nextcloud/aio-clamav:20231130_081302-latest
name: nextcloud-aio-clamav
ports:
- containerPort: 3310

View File

@@ -37,7 +37,7 @@ spec:
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true {{ .Values.COLLABORA_SECCOMP_POLICY }} --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
image: nextcloud/aio-collabora:20231123_084113-latest
image: nextcloud/aio-collabora:20231130_081302-latest
name: nextcloud-aio-collabora
ports:
- containerPort: 9980

View File

@@ -61,7 +61,7 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-postgresql:20231123_084113-latest
image: nextcloud/aio-postgresql:20231130_081302-latest
name: nextcloud-aio-database
ports:
- containerPort: 5432

View File

@@ -55,7 +55,7 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
image: nextcloud/aio-fulltextsearch:20231123_084113-latest
image: nextcloud/aio-fulltextsearch:20231130_081302-latest
name: nextcloud-aio-fulltextsearch
ports:
- containerPort: 9200

View File

@@ -27,7 +27,7 @@ spec:
- env:
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-imaginary:20231123_084113-latest
image: nextcloud/aio-imaginary:20231130_081302-latest
name: nextcloud-aio-imaginary
ports:
- containerPort: 9000

View File

@@ -156,8 +156,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: UPDATE_NEXTCLOUD_APPS
value: "{{ .Values.UPDATE_NEXTCLOUD_APPS }}"
image: nextcloud/aio-nextcloud:develop
imagePullPolicy: Always
image: nextcloud/aio-nextcloud:20231130_081302-latest
name: nextcloud-aio-nextcloud
ports:
- containerPort: 9000

View File

@@ -50,7 +50,7 @@ spec:
value: nextcloud-aio-redis
- name: REDIS_HOST_PASSWORD
value: "{{ .Values.REDIS_PASSWORD }}"
image: nextcloud/aio-notify-push:20231123_084113-latest
image: nextcloud/aio-notify-push:20231130_081302-latest
name: nextcloud-aio-notify-push
ports:
- containerPort: 7867

View File

@@ -43,7 +43,7 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-onlyoffice:20231123_084113-latest
image: nextcloud/aio-onlyoffice:20231130_081302-latest
name: nextcloud-aio-onlyoffice
ports:
- containerPort: 80

View File

@@ -38,7 +38,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-redis:20231123_084113-latest
image: nextcloud/aio-redis:20231130_081302-latest
name: nextcloud-aio-redis
ports:
- containerPort: 6379

View File

@@ -37,7 +37,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk:20231123_084113-latest
image: nextcloud/aio-talk:20231130_081302-latest
name: nextcloud-aio-talk
ports:
- containerPort: {{ .Values.TALK_PORT }}

View File

@@ -33,7 +33,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: nextcloud/aio-talk-recording:20231123_084113-latest
image: nextcloud/aio-talk-recording:20231130_081302-latest
name: nextcloud-aio-talk-recording
ports:
- containerPort: 1234

48
php/composer.lock generated
View File

@@ -8,16 +8,16 @@
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.8.0",
"version": "7.8.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9"
"reference": "41042bc7ab002487b876a0683fc8dce04ddce104"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9",
"reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104",
"reference": "41042bc7ab002487b876a0683fc8dce04ddce104",
"shasum": ""
},
"require": {
@@ -32,11 +32,11 @@
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.1",
"bamarni/composer-bin-plugin": "^1.8.2",
"ext-curl": "*",
"php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
"php-http/message-factory": "^1.1",
"phpunit/phpunit": "^8.5.29 || ^9.5.23",
"phpunit/phpunit": "^8.5.36 || ^9.6.15",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -114,7 +114,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.8.0"
"source": "https://github.com/guzzle/guzzle/tree/7.8.1"
},
"funding": [
{
@@ -130,28 +130,28 @@
"type": "tidelift"
}
],
"time": "2023-08-27T10:20:53+00:00"
"time": "2023-12-03T20:35:24+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.0.1",
"version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "111166291a0f8130081195ac4556a5587d7f1b5d"
"reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d",
"reference": "111166291a0f8130081195ac4556a5587d7f1b5d",
"url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
"reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.1",
"phpunit/phpunit": "^8.5.29 || ^9.5.23"
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.36 || ^9.6.15"
},
"type": "library",
"extra": {
@@ -197,7 +197,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.0.1"
"source": "https://github.com/guzzle/promises/tree/2.0.2"
},
"funding": [
{
@@ -213,20 +213,20 @@
"type": "tidelift"
}
],
"time": "2023-08-03T15:11:55+00:00"
"time": "2023-12-03T20:19:20+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.6.1",
"version": "2.6.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727"
"reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727",
"reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221",
"reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221",
"shasum": ""
},
"require": {
@@ -240,9 +240,9 @@
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.1",
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "^0.9",
"phpunit/phpunit": "^8.5.29 || ^9.5.23"
"phpunit/phpunit": "^8.5.36 || ^9.6.15"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -313,7 +313,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.6.1"
"source": "https://github.com/guzzle/psr7/tree/2.6.2"
},
"funding": [
{
@@ -329,7 +329,7 @@
"type": "tidelift"
}
],
"time": "2023-08-27T10:13:57+00:00"
"time": "2023-12-03T20:05:35+00:00"
},
{
"name": "http-interop/http-factory-guzzle",

View File

@@ -215,6 +215,7 @@
"APACHE_IP_BINDING=%APACHE_IP_BINDING%",
"THIS_IS_AIO=true"
],
"stop_grace_period": 600,
"restart": "unless-stopped",
"devices": [
"/dev/dri"

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="5.16.0@2897ba636551a8cb61601cc26f6ccfbba6c36591"/>
<files psalm-version="5.17.0@c620f6e80d0abfca532b00bda366062aaedf6e5d"/>

View File

@@ -164,7 +164,7 @@ class DockerController
}
if (isset($request->getParsedBody()['install_latest_major'])) {
$installLatestMajor = 27;
$installLatestMajor = 28;
} else {
$installLatestMajor = "";
}

View File

@@ -16,7 +16,7 @@
</header>
<div class="content">
<h1>Nextcloud AIO v7.7.1</h1>
<h1>Nextcloud AIO v7.8.0</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>
@@ -28,7 +28,7 @@
{% set isBackupOrRestoreRunning = false %}
{% set isApacheStarting = false %}
{# Setting newMajorVersion to '' will hide corresponding options/elements, can be set to an integer like 26 in order to show corresponding elements. If set, also increase installLatestMajor in https://github.com/nextcloud/all-in-one/blob/main/php/src/Controller/DockerController.php #}
{% set newMajorVersion = '' %}
{% set newMajorVersion = 28 %}
{% if is_backup_container_running == true %}
{% if borg_backup_mode == 'backup' or borg_backup_mode == 'restore' %}

View File

@@ -16,7 +16,7 @@ Included are:
- Simple web interface included that enables easy installation and maintenance
- [Easy updates included](https://github.com/nextcloud/all-in-one#how-to-update-the-containers)
- Update and backup notifications included
- Daily backups can get enabled from the AIO interface which also allows to update all containers, Nextcloud and its apps afterwards automatically
- Daily backups can be enabled from the AIO interface which also allows updating all containers, Nextcloud and its apps afterwards automatically
- Instance restore from backup archive via the AIO interface included (you only need the archive and the password in order to restore the whole instance on a new AIO instance)
- APCu as local cache
- Redis as distributed cache and for file locking
@@ -258,9 +258,9 @@ No and they will not be. Please use a dedicated domain for Nextcloud and set it
No and it will not be added. Please use a dedicated domain for Nextcloud and set it up correctly by following the [reverse proxy documentation](./reverse-proxy.md).
### How can I access Nextcloud locally?
Please note that local access is not possible if you should be running AIO behind Cloudflare Tunnel since TLS proxying is in that case offloaded to Cloudflares infrastructure. You can fix this by setting up your own reverse proxy that handles TLS proxying locally and will make the steps below work.
Please note that local access is not possible if you are running AIO behind Cloudflare Tunnel since TLS proxying is in that case offloaded to Cloudflares infrastructure. You can fix this by setting up your own reverse proxy that handles TLS proxying locally and will make the steps below work.
Please make sure that if you should be running AIO behind a reverse proxy, that the reverse proxy is configured to use port 443 on the server that runs it. Otherwise the steps below will not work.
Please make sure that if you are running AIO behind a reverse proxy, that the reverse proxy is configured to use port 443 on the server that runs it. Otherwise the steps below will not work.
Now that this is out of the way, the recommended way how to access Nextcloud locally, is to set up a local dns-server like a pi-hole and set up a custom dns-record for that domain that points to the internal ip-adddress of your server that runs Nextcloud AIO. Below are some guides:
- https://www.howtogeek.com/devops/how-to-run-your-own-dns-server-on-your-local-network/
@@ -371,6 +371,9 @@ Be aware that this solution does not back up files and folders that are mounted
---
#### What is getting backed up by AIO's backup solution?
Backed up will get all important data of your Nextcloud AIO instance like the database, your files and configuration files of the mastercontainer and else. Files and folders that are mounted into Nextcloud using the external storage app are not getting backed up. There is currently no way to exclude the data directory because it would require hacks like running files:scan and would make the backup solution much more unreliable (since the database and your files/folders need to stay in sync). If you still don't want your datadirectory to be backed up, see https://github.com/nextcloud/all-in-one#how-to-enable-automatic-updates-without-creating-a-backup-beforehand for options (there is a hint what needs to be backed up in which order).
#### How to adjust borgs retention policy?
The built-in borg-based backup solution has by default a retention policy of `--keep-within=7d --keep-weekly=4 --keep-monthly=6`. See https://borgbackup.readthedocs.io/en/stable/usage/prune.html for what these values mean. You can adjust the retention policy by providing `--env BORG_RETENTION_POLICY="--keep-within=7d --keep-weekly=4 --keep-monthly=6"` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. ⚠️ Please make sure that this value is valid, otherwise backup pruning will bug out!
@@ -665,7 +668,7 @@ The [facerecognition app](https://apps.nextcloud.com/apps/facerecognition) requi
### How to enable hardware-transcoding for Nextcloud?
⚠️⚠️⚠️ Warning: this only works if the `/dev/dri` device is present on the host! If it does not exists on your host, don't proceed as otherwise the Nextcloud container will fail to start! If you are unsure about this, better do not proceed with the instructions below.
The [memories app](https://apps.nextcloud.com/apps/memories) allows to enable hardware transcoding for videos. In order to use that, you need to add `--env NEXTCLOUD_ENABLE_DRI_DEVICE=true` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) which will mount the `/dev/dri` device into the container. Additionally, you need to add required packets to the Nextcloud container by using [this feature](https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container) and adding the required Alpine packages that are documented [here](https://memories.gallery/hw-transcoding/#va-api).
The [memories app](https://apps.nextcloud.com/apps/memories) allows to enable hardware transcoding for videos. In order to use that, you need to add `--env NEXTCLOUD_ENABLE_DRI_DEVICE=true` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) which will mount the `/dev/dri` device into the container. There is now a community container which allows to easily add the transcoding container of Memories to AIO: https://github.com/nextcloud/all-in-one/tree/main/community-containers/memories
### How to keep disabled apps?
In certain situations you might want to keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed in Nextcloud. You can do so by adding `--env NEXTCLOUD_KEEP_DISABLED_APPS=true` to the docker run command of the mastercontainer (but before the last line `nextcloud/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used). ⚠️⚠️⚠️ **Warning** doing this might cause unintended problems in Nextcloud if an app that requires an external dependency is still installed but the external dependency not for example.

View File

@@ -7,30 +7,49 @@ A [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy) is basically a we
In order to run Nextcloud behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else), you need to specify the port that AIO's Apache container shall use, add a specific config to your web server or 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 to receive unencrypted HTTP traffic from the reverse proxy. **Advice:** If you need https between Nextcloud and the reverse proxy because it is running on a different server in the same network, simply add another reverse proxy to the chain that runs on the same server like AIO and takes care of https proxying (most likely via self-signed cert). Another option is to create a VPN between the server that runs AIO and the server that runs the reverse proxy which takes care of encrypting the connection.
**Attention:** The process to run Nextcloud behind a reverse proxy consists of at least steps 1, 2 and 4:
1. **Configure the reverse proxy! See [point 1](#1-add-this-to-your-reverse-proxy-config)**
1. **Configure the reverse proxy! See [point 1](#1-configure-the-reverse-proxy)**
1. **Use this startup command! See [point 2](#2-use-this-startup-command)**
1. Optional: If the reverse proxy is installed on the same host and in the host network, you should limit the apache container to only listen on localhost. See [point 3](#3-limit-the-access-to-the-apache-container)
1. **Open the AIO interface. See [point 4](#4-open-the-aio-interface)**
1. Optional: Get a valid certificate for the AIO interface! See [point 5](#5-optional-get-a-valid-certificate-for-the-aio-interface)
1. Optional: How to debug things? See [point 6](#6-how-to-debug-things)
## 1. Add this to your reverse proxy config
**Please note:** Since the Apache container gets created 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!
### Adaptation of the respective sample configuration
Of course you need to modify `<your-nc-domain>` to the domain on which you want to run Nextcloud. Also make sure to adjust the port `11000` to match the chosen `APACHE_PORT`. Additionally, you might need to adjust `localhost` or `127.0.0.1` based on your setup. See below.
**Running the Reverse Proxy on the same server, not in a container**<br>
For this setup, the default sample configurations with `localhost:$APACHE_PORT` should work.
## 1. Configure the reverse proxy
**Running the Reverse Proxy in a Docker container on the same server**<br>
For this setup, you can use as target `host.docker.internal:$APACHE_PORT` instead of `localhost:$APACHE_PORT`. **⚠️ Important:** In order to make this work on Docker for Linux, you need to add `--add-host=host.docker.internal:host-gateway` to the docker run command of your reverse proxy container or `extra_hosts: ["host.docker.internal:host-gateway"]` in docker compose (it works on Docker Desktop by default).<br>
Another option and actually the recommended way in this case is to use `--network host` option (or `network_mode: host` for docker-compose) as setting for the reverse proxy container to connect it to the host network. If you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy manually. By doing so, the default sample configurations that point at `localhost:$APACHE_PORT` should work without having to modify them.
### Adapting the sample web server configurations below
1. Replace `<your-nc-domain>` with the domain on which you want to run Nextcloud.
1. Adjust the port `11000` to match your chosen `APACHE_PORT`.
1. Adjust `localhost` or `127.0.0.1` to point to the Nextcloud server IP or domain depending on where the reverse proxy is running. See the following options.
**Running the Reverse Proxy on a different server (no matter if in container or not)**<br>
For this setup, you need to use as target the private ip-address of the host that shall be running AIO. So e.g. `private.ip.address.of.aio.server:$APACHE_PORT` instead of `localhost:$APACHE_PORT`.<br>
If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` on the server that shall be running AIO (the commands only work on Linux).
<details>
<summary>On the same server without a container</summary>
For this setup, the default sample configurations with `localhost:$APACHE_PORT` should work.
</details>
<details>
<summary>On the same server in a Docker container</summary>
For this setup, you can use as target `host.docker.internal:$APACHE_PORT` instead of `localhost:$APACHE_PORT`. **⚠️ Important:** In order to make this work on Docker for Linux, you need to add `--add-host=host.docker.internal:host-gateway` to the docker run command of your reverse proxy container or `extra_hosts: ["host.docker.internal:host-gateway"]` in docker compose (it works on Docker Desktop by default).
Another option and actually the recommended way in this case is to use `--network host` option (or `network_mode: host` for docker-compose) as setting for the reverse proxy container to connect it to the host network. If you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy manually. By doing so, the default sample configurations that point at `localhost:$APACHE_PORT` should work without having to modify them.
</details>
<details>
<summary>On a different server (in container or not)</summary>
Use the private ip-address of the host that shall be running AIO. So e.g. `private.ip.address.of.aio.server:$APACHE_PORT` instead of `localhost:$APACHE_PORT`.
If you are not sure how to retrieve that, you can run: `ip a | grep "scope global" | head -1 | awk '{print $2}' | sed 's|/.*||'` on the server that shall be running AIO (the commands only work on Linux).
</details>
### Apache
@@ -97,7 +116,7 @@ Add this as a new Apache site config:
</VirtualHost>
```
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
To make the config work you can run the following command:
`sudo a2enmod rewrite proxy proxy_http proxy_wstunnel ssl headers http2`
@@ -119,7 +138,7 @@ https://<your-nc-domain>:443 {
```
The Caddyfile is a text file called `Caddyfile` (no extension) which if you should be running Caddy inside a container should usually be created in the same location as your `compose.yaml` file prior to starting the container.
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/575#discussion-4055615) for a more complete example.
@@ -143,7 +162,7 @@ You can get AIO running using the ACME DNS-challenge. Here is how to do it.
}
}
```
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
You also need to adjust `<provider>` and `<key>` to match your case.
@@ -172,7 +191,7 @@ For a reverse proxy example guide for Citrix ADC VPX / Citrix Netscaler, see thi
Although it does not seem like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. Please see the [caveats](https://github.com/nextcloud/all-in-one#notes-on-cloudflare-proxytunnel) before proceeding. Here is then how to make it work:
1. Install the Cloudflare Tunnel on the same machine where AIO will be running on and point the Tunnel with the domain that you want to use for AIO to `http://localhost:11000`.<br>
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
1. Now continue with [point 2](#2-use-this-startup-command) but additionally, add `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command which will disable the domain validation (because it is known that the domain validation will not work behind a Cloudflare Tunnel). So you need to ensure yourself that you've configured everything correctly.
**Advice:** Make sure to [disable Cloudflares Rocket Loader feature](https://help.nextcloud.com/t/login-page-not-working-solved/149417/8) as otherwise Nextcloud's login prompt will not be shown.
@@ -272,7 +291,7 @@ backend Nextcloud
server Nextcloud localhost:11000
```
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
</details>
@@ -362,7 +381,7 @@ server {
```
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
**Advice:** You may have a look at [this](https://github.com/nextcloud/all-in-one/discussions/588#discussioncomment-2811152) for a more complete example.
@@ -393,7 +412,7 @@ proxy_read_timeout 86400s;
client_max_body_size 0;
```
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
Also change `<you>@<your-mail-provider-domain>` to a mail address of yours.
@@ -497,7 +516,7 @@ httpServer.on('upgrade', (req, socket, head) => {
});
```
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
</details>
@@ -515,7 +534,7 @@ See these screenshots for a working config:
![image](https://user-images.githubusercontent.com/70434961/213193789-fa936edc-e307-4e6a-9a53-ae26d1bf2f42.jpg)
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
</details>
@@ -596,7 +615,7 @@ The examples below define the dynamic configuration in YAML files. If you rather
---
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
**Hint**: see https://www.youtube.com/watch?v=VLPSRrLMDmA for a video on configuring Traefik.
@@ -689,7 +708,7 @@ https://<your-nc-domain>:8443 {
}
}
```
⚠️ **Please note:** Look into [this](#adaptation-of-the-respective-sample-configuration) to adapt the above example configuration.
⚠️ **Please note:** Look into [this](#adapting-the-sample-web-server-configurations-below) to adapt the above example configuration.
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.
@@ -699,7 +718,7 @@ If something does not work, follow the steps below:
1. Make sure that you used the docker run command that is described in this reverse proxy documentation. **Hint:** make sure that you have set the `APACHE_PORT` via e.g. `--env APACHE_PORT=11000` during the docker run command!
1. Make sure to set the `APACHE_IP_BINDING` variable correctly. If in doubt, set it to `--env APACHE_IP_BINDING=0.0.0.0`
1. Make sure that all ports to which your reverse proxy is pointing match the chosen `APACHE_PORT`.
1. Make sure to follow [this](#adaptation-of-the-respective-sample-configuration) to adapt the example configurations to your specific setup
1. Make sure to follow [this](#adapting-the-sample-web-server-configurations-below) to adapt the example configurations to your specific setup
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. Make sure that you are not behind CGNAT. If that is the case, you will not be able to open ports properly. In that case you might use a Cloudflare Tunnel.