Compare commits

...

49 Commits

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-12 12:58:50 +00:00
Simon L
cf9220c6b7 Merge pull request #2541 from steffenmalisi/feature/imaginary-port
Makes imaginary port configurable
2023-05-12 13:49:58 +02:00
steffenmalisi
7df7ee738c Prevents globbing and word splitting
Signed-off-by: steffenmalisi <steffenmalisi@users.noreply.github.com>
2023-05-12 12:50:59 +02:00
steffenmalisi
d95058ae21 Makes imaginary port configurable
Signed-off-by: steffenmalisi <steffenmalisi@users.noreply.github.com>
2023-05-12 12:50:59 +02:00
Simon L
3973943acd fix imaginary update workflow
Signed-off-by: Simon L <szaimen@e.mail.de>
2023-05-12 12:50:10 +02:00
Simon L
692fd7e487 Merge pull request #2545 from sotnikov-link/patch-1
sudo docker volume prune --filter all=1
2023-05-11 23:33:49 +02:00
Valeriy Sotnikov
6ad9e9eda6 sudo docker volume prune --filter all=1
Signed-off-by: Valeriy Sotnikov <sotnikov.link@mail.ru>
2023-05-11 23:51:21 +03:00
Simon L
f2e4d8284c Merge pull request #2498 from nextcloud/postgres-dockerfile
optimize postgres Dockerfile
2023-05-11 14:22:29 +02:00
Zoey
b9709aa400 change script paths
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-11 14:17:54 +02:00
Zoey
d100bf985e move VOLUME and delete shadow
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-11 14:13:56 +02:00
Zoey
1841733879 optimize postres Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:34:27 +02:00
Zoey
8bbdbd6fa7 optimze mastercontainer Dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:31:32 +02:00
Zoey
4a50fcf5a6 optimze apache dockerfile
Signed-off-by: Zoey <zoey@z0ey.de>
2023-05-03 16:25:03 +02:00
20 changed files with 236 additions and 220 deletions

View File

@@ -19,7 +19,7 @@ jobs:
| cut -f1 \
| tail -1
)"
sed -i "s|go install github.com/h2non/imaginary.*|go install github.com/h2non/imaginary@$imaginary_version|" ./Containers/imaginary/Dockerfile
sed -i "s|go install github.com/h2non/imaginary.*;|go install github.com/h2non/imaginary@$imaginary_version;|" ./Containers/imaginary/Dockerfile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5

View File

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

View File

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

View File

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

View File

@@ -24,6 +24,14 @@ for directory in "${VOLUME_DIRS[@]}"; do
exit 1
fi
done
# Test if default volumes are there
DEFAULT_VOLUMES=(nextcloud_aio_apache nextcloud_aio_nextcloud nextcloud_aio_database nextcloud_aio_database_dump nextcloud_aio_elasticsearch nextcloud_aio_nextcloud_data nextcloud_aio_mastercontainer)
for volume in "${DEFAULT_VOLUMES[@]}"; do
if ! mountpoint -q "/nextcloud_aio_volumes/$volume"; then
echo "$volume is missing which is not intended."
exit 1
fi
done
# Check if target is mountpoint
if ! mountpoint -q /mnt/borgbackup; then

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,8 @@
# IPv6-Support for Docker
Before you can use IPv6 in Docker containers or swarm services, you need to enable IPv6 support in the Docker daemon. Afterward, you can choose to use either IPv4 or IPv6 (or both) with any container, service, or network.
Before enabling IPv6-Support for Docker, please note that there are still some unresolved problems in regards to IPv6-Support in Docker. See https://github.com/nextcloud/all-in-one/discussions/2557 for more details on this.
Now that this was mentioned, see the instructions below on how to enable IPv6 for Docker.
## Docker on Linux and Docker-rootless
1. Edit `/etc/docker/daemon.json` (or `~/.config/docker/daemon.json` in case of docker-rootless), set the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well. If you are using mailcow and enabled IPv6 with the update.sh, you can keep their daemon.json, it will work too.

View File

@@ -15,6 +15,7 @@ OUTPUT="$(cat /tmp/containers.json)"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].internal_port)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].secrets)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].devices)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].backup_volumes)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-watchtower"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-domaincheck"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-borgbackup"))')"

15
php/composer.lock generated
View File

@@ -8,16 +8,16 @@
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "7.5.1",
"version": "7.6.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9"
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b964ca597e86b752cd994f27293e9fa6b6a95ed9",
"reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
"shasum": ""
},
"require": {
@@ -48,9 +48,6 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "7.5-dev"
}
},
"autoload": {
@@ -116,7 +113,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.5.1"
"source": "https://github.com/guzzle/guzzle/tree/7.6.1"
},
"funding": [
{
@@ -132,7 +129,7 @@
"type": "tidelift"
}
],
"time": "2023-04-17T16:30:08+00:00"
"time": "2023-05-15T20:43:01+00:00"
},
{
"name": "guzzlehttp/promises",

View File

@@ -106,6 +106,13 @@
"apparmor_unconfined": {
"type": "boolean"
},
"backup_volumes": {
"type": "array",
"items": {
"type": "string",
"pattern": "^nextcloud_aio_[a-z_]+$"
}
},
"volumes": {
"type": "array",
"items": {
@@ -119,7 +126,8 @@
},
"source": {
"type": "string",
"pattern": "^(([a-z_]+)|(%[A-Z_]+%))$" },
"pattern": "^((nextcloud_aio_[a-z_]+)|(%[A-Z_]+%))$"
},
"writeable": {
"type": "boolean"
}

View File

@@ -41,7 +41,11 @@
"writeable": true
}
],
"restart": "unless-stopped"
"restart": "unless-stopped",
"backup_volumes": [
"nextcloud_aio_nextcloud",
"nextcloud_aio_apache"
]
},
{
"container_name": "nextcloud-aio-database",
@@ -75,7 +79,11 @@
],
"stop_grace_period": 1800,
"restart": "unless-stopped",
"shm_size": 268435456
"shm_size": 268435456,
"backup_volumes": [
"nextcloud_aio_database",
"nextcloud_aio_database_dump"
]
},
{
"container_name": "nextcloud-aio-nextcloud",
@@ -167,6 +175,9 @@
"restart": "unless-stopped",
"devices": [
"/dev/dri"
],
"backup_volumes": [
"nextcloud_aio_nextcloud"
]
},
{
@@ -270,31 +281,11 @@
"destination": "/root",
"writeable": true
},
{
"source": "nextcloud_aio_nextcloud",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud",
"writeable": true
},
{
"source": "%NEXTCLOUD_DATADIR%",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
"writeable": true
},
{
"source": "nextcloud_aio_database",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database",
"writeable": true
},
{
"source": "nextcloud_aio_database_dump",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_database_dump",
"writeable": true
},
{
"source": "nextcloud_aio_apache",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_apache",
"writeable": true
},
{
"source": "nextcloud_aio_mastercontainer",
"destination": "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer",

View File

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

View File

@@ -27,6 +27,8 @@ class Container {
private array $capAdd;
private int $shmSize;
private bool $apparmorUnconfined;
/** @var string[] */
private array $backupVolumes;
private DockerActionManager $dockerActionManager;
public function __construct(
@@ -45,6 +47,7 @@ class Container {
array $capAdd,
int $shmSize,
bool $apparmorUnconfined,
array $backupVolumes,
DockerActionManager $dockerActionManager
) {
$this->identifier = $identifier;
@@ -62,6 +65,7 @@ class Container {
$this->capAdd = $capAdd;
$this->shmSize = $shmSize;
$this->apparmorUnconfined = $apparmorUnconfined;
$this->backupVolumes = $backupVolumes;
$this->dockerActionManager = $dockerActionManager;
}
@@ -105,6 +109,10 @@ class Container {
return $this->capAdd;
}
public function GetBackupVolumes() : array {
return $this->backupVolumes;
}
public function GetPorts() : ContainerPorts {
return $this->ports;
}

View File

@@ -228,6 +228,11 @@ class ContainerDefinitionFetcher
$apparmorUnconfined = $entry['apparmor_unconfined'];
}
$backupVolumes = [];
if (isset($entry['backup_volumes'])) {
$backupVolumes = $entry['backup_volumes'];
}
$containers[] = new Container(
$entry['container_name'],
$displayName,
@@ -244,6 +249,7 @@ class ContainerDefinitionFetcher
$capAdd,
$shmSize,
$apparmorUnconfined,
$backupVolumes,
$this->container->get(DockerActionManager::class)
);
}

View File

@@ -429,6 +429,11 @@ class DockerActionManager
if ($container->GetIdentifier() === 'nextcloud-aio-borgbackup') {
// Additional backup directories
$mounts = [];
foreach ($this->getAllBackupVolumes() as $additionalBackupVolumes) {
if ($additionalBackupVolumes !== '') {
$mounts[] = ["Type" => "volume", "Source" => $additionalBackupVolumes, "Target" => "/nextcloud_aio_volumes/" . $additionalBackupVolumes, "ReadOnly" => false];
}
}
foreach ($this->configurationManager->GetAdditionalBackupDirectoriesArray() as $additionalBackupDirectories) {
if ($additionalBackupDirectories !== '') {
if (!str_starts_with($additionalBackupDirectories, '/')) {
@@ -503,6 +508,31 @@ class DockerActionManager
}
}
private function getBackupVolumes(string $id) : array
{
$container = $this->containerDefinitionFetcher->GetContainerById($id);
$backupVolumes = $container->GetBackupVolumes();
foreach ($container->GetDependsOn() as $dependency) {
$backupVolumes[] = $this->getBackupVolumes($dependency);
}
return $backupVolumes;
}
private function getAllBackupVolumes() : array {
$id = 'nextcloud-aio-apache';
$backupVolumesArray = $this->getBackupVolumes($id);
// Flatten array
$backupVolumesArrayFlat = iterator_to_array(
new \RecursiveIteratorIterator(
new \RecursiveArrayIterator($backupVolumesArray)
),
$use_keys = false
);
return array_unique($backupVolumesArrayFlat);
}
private function GetRepoDigestsOfContainer(string $containerName) : ?array {
try {
$containerUrl = $this->BuildApiUrl(sprintf('containers/%s/json', $containerName));

View File

@@ -16,7 +16,7 @@
</header>
<div class="content">
<h1>Nextcloud AIO v5.1.0</h1>
<h1>Nextcloud AIO v5.2.2</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>

View File

@@ -239,7 +239,7 @@ No and it will not be added. Please use a dedicated domain for Nextcloud and set
The recommended way is to set up a local dns-server like a pi-hole and set up a custom dns-record for that domain that points to the internal ip-adddress of your server that runs Nextcloud AIO. Below are some guides:
- https://www.howtogeek.com/devops/how-to-run-your-own-dns-server-on-your-local-network/
- https://help.nextcloud.com/t/need-help-to-configure-internal-access/156075/6
- https://howchoo.com/pi/pi-hole-setup together with https://docs.callitkarma.me/posts/PiHole-Local-DNS/
- https://howchoo.com/pi/pi-hole-setup together with https://web.archive.org/web/20221203223505/https://docs.callitkarma.me/posts/PiHole-Local-DNS/
- https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html
### How to skip the domain validation?
@@ -303,7 +303,7 @@ Here is how to reset the AIO instance properly:
1. Now remove all these stopped containers with `sudo docker container prune`
1. Delete the docker network with `sudo docker network rm nextcloud-aio`
1. Check which volumes are dangling with `sudo docker volume ls --filter "dangling=true"`
1. Now remove all these dangling volumes: `sudo docker volume prune docker --filter all=1` (on Windows you might need to remove some volumes afterwards manually with `docker volume rm nextcloud_aio_backupdir`, `docker volume rm nextcloud_aio_nextcloud_datadir`).
1. Now remove all these dangling volumes: `sudo docker volume prune --filter all=1` (on Windows you might need to remove some volumes afterwards manually with `docker volume rm nextcloud_aio_backupdir`, `docker volume rm nextcloud_aio_nextcloud_datadir`).
1. If you've configured `NEXTCLOUD_DATADIR` to a path on your host instead of the default volume, you need to clean that up as well. (E.g. by simply deleting the directory).
1. Make sure that no volumes are remaining with `sudo docker volume ls --format {{.Name}}`. If no `nextcloud-aio` volumes are listed, you can proceed with the steps below. If there should be some, you will need to stop them with `sudo docker volume rm <volume_name>` until no one is listed anymore.
1. Optional: You can remove all docker images with `sudo docker image prune -a`.