mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-22 11:20:13 +00:00
Compare commits
107 Commits
helm-chart
...
v6.3.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c5697a8637 | ||
|
|
71481cd731 | ||
|
|
8bf8e3f562 | ||
|
|
b1b96a5d8c | ||
|
|
7c55c449b8 | ||
|
|
3e3dbf26b5 | ||
|
|
9a1de583c6 | ||
|
|
4a60b4d004 | ||
|
|
6bab59c5f9 | ||
|
|
1d67da4bd5 | ||
|
|
2d0b92db77 | ||
|
|
6272d8d223 | ||
|
|
d5f309df3a | ||
|
|
bb63abd8a6 | ||
|
|
581456b450 | ||
|
|
554cb34d74 | ||
|
|
ea46ed4095 | ||
|
|
9f77ac6c78 | ||
|
|
2c913a676a | ||
|
|
2e0a741575 | ||
|
|
16c60f1530 | ||
|
|
69a3b365e5 | ||
|
|
4e201c0dab | ||
|
|
6550e012c3 | ||
|
|
113a00d2d2 | ||
|
|
17b01980f4 | ||
|
|
8993da2632 | ||
|
|
04e2872669 | ||
|
|
48239ef9fa | ||
|
|
c8e2bfd7ba | ||
|
|
86bb1f6a7c | ||
|
|
f10b5baee9 | ||
|
|
37ebc38b19 | ||
|
|
6f3f87b24c | ||
|
|
3794140e71 | ||
|
|
527c6410df | ||
|
|
dc34c8dff0 | ||
|
|
893814724f | ||
|
|
2097a4b8c0 | ||
|
|
b5a1e74693 | ||
|
|
0d92844449 | ||
|
|
dc3bf6f7ed | ||
|
|
382593d553 | ||
|
|
0cc222fc0c | ||
|
|
ad6be7c914 | ||
|
|
8dde61eb89 | ||
|
|
25f9f99ed9 | ||
|
|
5cb1d88238 | ||
|
|
fbeb120d0f | ||
|
|
8b55ed5826 | ||
|
|
ac2d639bd8 | ||
|
|
47661ec3ea | ||
|
|
6ec853a3d5 | ||
|
|
84ad270e45 | ||
|
|
0c2905b658 | ||
|
|
5189f0cd51 | ||
|
|
ab5449f835 | ||
|
|
6747613a34 | ||
|
|
182f24bb4c | ||
|
|
671edeb1d1 | ||
|
|
a5a1ea504a | ||
|
|
dd02dc82a5 | ||
|
|
1354243f09 | ||
|
|
b3d0b99383 | ||
|
|
e02a16c680 | ||
|
|
9fddad59b5 | ||
|
|
cc9dbc9590 | ||
|
|
48ee5774b7 | ||
|
|
134905c028 | ||
|
|
dfe6bd5ff0 | ||
|
|
559101a308 | ||
|
|
1ba0f1b7a3 | ||
|
|
fce23622e9 | ||
|
|
405b9bd7bc | ||
|
|
8da2a51282 | ||
|
|
4d2d66a7d1 | ||
|
|
581b125ea6 | ||
|
|
2b5d3de48e | ||
|
|
620c72de23 | ||
|
|
203b7cb3fc | ||
|
|
13a9b9beaf | ||
|
|
f8d02440c1 | ||
|
|
a77df43dff | ||
|
|
e8ed7aa236 | ||
|
|
ae1d14dbc5 | ||
|
|
9e26e24820 | ||
|
|
53ef726114 | ||
|
|
161c967679 | ||
|
|
2a83c57425 | ||
|
|
addb52fd8c | ||
|
|
27b482f75d | ||
|
|
24dc09ce94 | ||
|
|
8452addc1f | ||
|
|
a145979c7f | ||
|
|
06c9ba5ac9 | ||
|
|
d30a9efcd6 | ||
|
|
78ae2d174d | ||
|
|
4e8ce65e02 | ||
|
|
463a695326 | ||
|
|
66452b40ff | ||
|
|
3f3811bd3e | ||
|
|
efa9b096ce | ||
|
|
cff1e5a070 | ||
|
|
9777f70294 | ||
|
|
01ec0cb0c2 | ||
|
|
4492f17809 | ||
|
|
f520018ce3 |
1
.github/workflows/helm-release.yml
vendored
1
.github/workflows/helm-release.yml
vendored
@@ -46,3 +46,4 @@ jobs:
|
||||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
CR_RELEASE_NAME_TEMPLATE: "helm-chart-{{ .Version }}"
|
||||
CR_SKIP_EXISTING: true
|
||||
CR_GENERATE_RELEASE_NOTES: true
|
||||
|
||||
@@ -22,6 +22,7 @@ RUN set -ex; \
|
||||
\
|
||||
mkdir -p /mnt/data; \
|
||||
chown -R www-data:www-data /mnt/data; \
|
||||
chown -R 777 /tmp; \
|
||||
\
|
||||
apk add --no-cache \
|
||||
bash \
|
||||
@@ -59,9 +60,14 @@ RUN set -ex; \
|
||||
mkdir /var/run/supervisord; \
|
||||
chown www-data:www-data /var/run/supervisord; \
|
||||
chown www-data:www-data /var/log/supervisord; \
|
||||
chmod 777 /var/run/supervisord; \
|
||||
chmod 777 /var/log/supervisord; \
|
||||
\
|
||||
chown -R www-data:www-data /usr/local/apache2; \
|
||||
chmod +r -R /usr/local/apache2; \
|
||||
mkdir -p /usr/local/apache2/logs; \
|
||||
chmod 777 -R /home/www-data; \
|
||||
chmod 777 -R /usr/local/apache2/logs; \
|
||||
\
|
||||
echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
|
||||
|
||||
@@ -35,18 +35,18 @@ if [ "$APACHE_PORT" != '443' ]; then
|
||||
else
|
||||
CADDYFILE="$(sed 's|auto_https.*|auto_https disable_redirects|' /Caddyfile)"
|
||||
fi
|
||||
echo "$CADDYFILE" > /Caddyfile
|
||||
echo "$CADDYFILE" > /tmp/Caddyfile
|
||||
|
||||
# Change the trusted_proxies in case of reverse proxies
|
||||
if [ "$APACHE_PORT" != '443' ]; then
|
||||
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies static private_ranges|' /Caddyfile)"
|
||||
CADDYFILE="$(sed 's|# trusted_proxies placeholder|trusted_proxies static private_ranges|' /tmp/Caddyfile)"
|
||||
else
|
||||
CADDYFILE="$(sed 's|trusted_proxies.*private_ranges|# trusted_proxies placeholder|' /Caddyfile)"
|
||||
CADDYFILE="$(sed 's|trusted_proxies.*private_ranges|# trusted_proxies placeholder|' /tmp/Caddyfile)"
|
||||
fi
|
||||
echo "$CADDYFILE" > /Caddyfile
|
||||
echo "$CADDYFILE" > /tmp/Caddyfile
|
||||
|
||||
# Fix the Caddyfile format
|
||||
caddy fmt --overwrite /Caddyfile
|
||||
caddy fmt --overwrite /tmp/Caddyfile
|
||||
|
||||
# Add caddy path
|
||||
mkdir -p /mnt/data/caddy/
|
||||
|
||||
@@ -20,4 +20,4 @@ stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=/usr/bin/caddy run --config /Caddyfile
|
||||
command=/usr/bin/caddy run --config /tmp/Caddyfile
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
|
||||
FROM collabora/code:23.05.0.5.1
|
||||
FROM collabora/code:23.05.1.3.1
|
||||
|
||||
USER root
|
||||
|
||||
@@ -11,7 +11,7 @@ RUN set -ex; \
|
||||
tzdata \
|
||||
netcat-openbsd \
|
||||
; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
rm -rf /var/lib/apt/lists/*;
|
||||
|
||||
USER 100
|
||||
|
||||
|
||||
@@ -3,10 +3,11 @@ RUN set -ex; \
|
||||
apk add --no-cache bash lighttpd netcat-openbsd; \
|
||||
adduser -S www-data -G www-data; \
|
||||
rm -rf /etc/lighttpd/lighttpd.conf; \
|
||||
chmod +r -R /etc/lighttpd; \
|
||||
chmod 777 -R /etc/lighttpd; \
|
||||
mkdir -p /var/www/domaincheck; \
|
||||
chown www-data:www-data -R /var/www
|
||||
COPY --chown=www-data:www-data lighttpd.conf /etc/lighttpd/lighttpd.conf
|
||||
chown www-data:www-data -R /var/www; \
|
||||
chmod 777 -R /var/www/domaincheck
|
||||
COPY --chown=www-data:www-data lighttpd.conf /lighttpd.conf
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ if [ -z "$APACHE_PORT" ]; then
|
||||
export APACHE_PORT="443"
|
||||
fi
|
||||
|
||||
CONF_FILE="$(sed "s|ipv6-placeholder|\[::\]:$APACHE_PORT|" /etc/lighttpd/lighttpd.conf)"
|
||||
CONF_FILE="$(sed "s|ipv6-placeholder|\[::\]:$APACHE_PORT|" /lighttpd.conf)"
|
||||
echo "$CONF_FILE" > /etc/lighttpd/lighttpd.conf
|
||||
|
||||
# Check config file
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM golang:1.20.5-alpine3.18 as go
|
||||
FROM golang:1.20.6-alpine3.18 as go
|
||||
|
||||
ENV IMAGINARY_HASH b632dae8cc321452c3f85bcae79c580b1ae1ed84
|
||||
ENV IMAGINARY_HASH b632dae8cc321452c3f85bcae79c580b1ae1ed84
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache \
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
log {
|
||||
level ERROR
|
||||
}
|
||||
|
||||
servers {
|
||||
protocols h1 h2 h2c
|
||||
}
|
||||
}
|
||||
|
||||
http://:80 {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Docker CLI is a requirement
|
||||
FROM docker:24.0.2-cli as docker
|
||||
FROM docker:24.0.4-cli as docker
|
||||
|
||||
# Caddy is a requirement
|
||||
FROM caddy:2.6.4-alpine as caddy
|
||||
|
||||
# From https://github.com/docker-library/php/blob/master/8.2/alpine3.18/fpm/Dockerfile
|
||||
FROM php:8.2.7-fpm-alpine3.18
|
||||
FROM php:8.2.8-fpm-alpine3.18
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8080
|
||||
|
||||
@@ -57,6 +57,9 @@ while true; do
|
||||
# Remove dangling images
|
||||
sudo -u www-data docker image prune --force
|
||||
|
||||
# Check for available free space
|
||||
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CheckFreeDiskSpace.php
|
||||
|
||||
# Remove mastercontainer from default bridge network
|
||||
if sudo -u www-data docker inspect nextcloud-aio-mastercontainer --format "{{.NetworkSettings.Networks}}" | grep -q "bridge"; then
|
||||
sudo -u www-data docker network disconnect bridge nextcloud-aio-mastercontainer
|
||||
|
||||
@@ -64,7 +64,6 @@ fi
|
||||
# Check if api version is supported
|
||||
if ! sudo -u www-data docker info &>/dev/null; then
|
||||
print_red "Cannot connect to the docker socket. Cannot proceed."
|
||||
echo "If you are on Docker Desktop v4.19 or higher, see https://github.com/nextcloud/all-in-one/issues/2450"
|
||||
echo "If SELinux is enabled on your host, see https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled"
|
||||
echo "If you are on TrueNas SCALE, see https://github.com/nextcloud/all-in-one#can-i-run-aio-on-truenas-scale"
|
||||
exit 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM php:8.1.20-fpm-alpine3.18
|
||||
FROM php:8.1.21-fpm-alpine3.18
|
||||
|
||||
ENV PHP_MEMORY_LIMIT 512M
|
||||
ENV PHP_UPLOAD_LIMIT 10G
|
||||
|
||||
@@ -444,12 +444,14 @@ if [ -z "$OBJECTSTORE_S3_BUCKET" ] && [ -z "$OBJECTSTORE_SWIFT_URL" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configure tempdirectory
|
||||
mkdir -p "$NEXTCLOUD_DATA_DIR/tmp/"
|
||||
if ! grep -q upload_tmp_dir /usr/local/etc/php/conf.d/nextcloud.ini; then
|
||||
echo "upload_tmp_dir = $NEXTCLOUD_DATA_DIR/tmp/" >> /usr/local/etc/php/conf.d/nextcloud.ini
|
||||
# Delete formerly configured tempdirectory as the default is usually faster (if the datadir is on a HDD or network FS)
|
||||
if [ "$(php /var/www/html/occ config:system:get tempdirectory)" = "$NEXTCLOUD_DATA_DIR/tmp/" ]; then
|
||||
php /var/www/html/occ config:system:delete tempdirectory
|
||||
if [ -d "$NEXTCLOUD_DATA_DIR/tmp/" ]; then
|
||||
rm -r "$NEXTCLOUD_DATA_DIR/tmp/"
|
||||
fi
|
||||
fi
|
||||
php /var/www/html/occ config:system:set tempdirectory --value="$NEXTCLOUD_DATA_DIR/tmp/"
|
||||
|
||||
fi
|
||||
|
||||
# Perform fingerprint update if instance was restored
|
||||
@@ -648,7 +650,7 @@ if [ "$CLAMAV_ENABLED" = 'yes' ]; then
|
||||
php /var/www/html/occ config:app:set files_antivirus av_port --value="3310"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_host --value="$CLAMAV_HOST"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_stream_max_length --value="104857600"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="-1"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="104857600"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_infected_action --value="only_log"
|
||||
fi
|
||||
else
|
||||
|
||||
@@ -27,12 +27,14 @@ elif [ "$CPU_ARCH" != "x86_64" ]; then
|
||||
export CPU_ARCH="aarch64"
|
||||
fi
|
||||
|
||||
# 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"
|
||||
|
||||
# Run it
|
||||
/nextcloud/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push \
|
||||
--database-prefix="oc_" \
|
||||
--nextcloud-url "https://$NC_DOMAIN" \
|
||||
--port 7867 \
|
||||
--redis-url "redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST" \
|
||||
--database-url "postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB"
|
||||
--port 7867
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -22,6 +22,7 @@ RUN set -ex; \
|
||||
# Fix default permissions
|
||||
chown -R postgres:postgres /var/lib/postgresql; \
|
||||
chown -R postgres:postgres /var/run/postgresql; \
|
||||
chmod -R 777 /var/run/postgresql; \
|
||||
chown -R postgres:postgres "$PGDATA"; \
|
||||
\
|
||||
mkdir /mnt/data; \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# From https://github.com/docker-library/redis/blob/master/7.0/alpine/Dockerfile
|
||||
FROM redis:7.0.11-alpine
|
||||
FROM redis:7.0.12-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ FROM python:3.11.4-alpine3.18
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
ENV RECORDING_VERSION v17.0.0
|
||||
ENV RECORDING_VERSION v17.0.1
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache \
|
||||
@@ -31,6 +31,9 @@ RUN set -ex; \
|
||||
touch /etc/recording.conf; \
|
||||
chown recording:recording -R \
|
||||
/tmp /etc/recording.conf; \
|
||||
mkdir -p /conf; \
|
||||
chmod 777 /conf; \
|
||||
chmod 777 /tmp; \
|
||||
apk del --no-cache \
|
||||
git \
|
||||
wget \
|
||||
@@ -40,7 +43,7 @@ RUN set -ex; \
|
||||
WORKDIR /tmp
|
||||
USER recording
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
CMD ["python", "-m", "nextcloud.talk.recording", "--config", "/etc/recording.conf"]
|
||||
CMD ["python", "-m", "nextcloud.talk.recording", "--config", "/conf/recording.conf"]
|
||||
|
||||
HEALTHCHECK CMD nc -z localhost 1234 || exit 1
|
||||
LABEL com.centurylinklabs.watchtower.enable="false"
|
||||
|
||||
@@ -12,7 +12,7 @@ elif [ -z "$INTERNAL_SECRET" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat << RECORDING_CONF > "/etc/recording.conf"
|
||||
cat << RECORDING_CONF > "/conf/recording.conf"
|
||||
[logs]
|
||||
# 30 means Warning
|
||||
level = 30
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
FROM nats:2.9.18-scratch as nats
|
||||
FROM strukturag/nextcloud-spreed-signaling:1.1.2 as signaling
|
||||
FROM coturn/coturn:4.6.2-r3-alpine
|
||||
FROM nats:2.9.19-scratch as nats
|
||||
FROM strukturag/nextcloud-spreed-signaling:1.1.3 as signaling
|
||||
FROM coturn/coturn:4.6.2-alpine3.18
|
||||
USER root
|
||||
# Pin alpine version manually as long as https://github.com/coturn/coturn/issues/1226 is not done
|
||||
ENV ALPINE_VERSION=3.18
|
||||
|
||||
COPY --from=nats /nats-server /usr/local/bin/nats-server
|
||||
COPY --from=signaling /usr/bin/nextcloud-spreed-signaling /usr/local/bin/nextcloud-spreed-signaling
|
||||
@@ -12,7 +10,6 @@ COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=664 supervisord.conf /supervisord.conf
|
||||
|
||||
RUN set -ex; \
|
||||
grep VERSION_ID /etc/os-release | grep -q "$ALPINE_VERSION.[0-9]\+$"; \
|
||||
apk add --no-cache \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
@@ -44,24 +41,28 @@ RUN set -ex; \
|
||||
echo "root:$(openssl rand -base64 12)" | chpasswd; \
|
||||
\
|
||||
touch \
|
||||
/etc/nats.conf \
|
||||
/etc/signaling.conf \
|
||||
/etc/turnserver.conf; \
|
||||
/etc/nats.conf; \
|
||||
echo "listen: 127.0.0.1:4222" | tee /etc/nats.conf; \
|
||||
mkdir -p \
|
||||
/var/tmp \
|
||||
/conf \
|
||||
/var/lib/turn \
|
||||
/var/log/supervisord \
|
||||
/var/lib/turn \
|
||||
/var/run/supervisord; \
|
||||
chown talk:talk -R \
|
||||
/usr \
|
||||
/etc/janus \
|
||||
/etc/nats.conf \
|
||||
/etc/signaling.conf \
|
||||
/etc/turnserver.conf \
|
||||
/var/lib/turn \
|
||||
/var/log/supervisord \
|
||||
/var/run/supervisord;
|
||||
/var/run/supervisord; \
|
||||
chmod 777 -R \
|
||||
/tmp \
|
||||
/conf \
|
||||
/var/run/supervisord \
|
||||
/var/lib/turn \
|
||||
/var/log/supervisord;
|
||||
|
||||
# Set default talk port https://github.com/nextcloud/all-in-one/issues/1011
|
||||
ENV TALK_PORT=3478
|
||||
|
||||
@@ -89,7 +89,7 @@ allowall = false
|
||||
# Common shared secret for requests from and to the backend servers if
|
||||
# "allowall" is enabled. This must be the same value as configured in the
|
||||
# Nextcloud admin ui.
|
||||
#secret = the-shared-secret
|
||||
#secret = the-shared-secret-for-allowall
|
||||
|
||||
# Timeout in seconds for requests to the backend.
|
||||
timeout = 10
|
||||
|
||||
@@ -20,7 +20,7 @@ IPv4_ADDRESS_TALK="$(dig nextcloud-aio-talk A +short)"
|
||||
set +x
|
||||
|
||||
# Turn
|
||||
cat << TURN_CONF > "/etc/turnserver.conf"
|
||||
cat << TURN_CONF > "/conf/turnserver.conf"
|
||||
listening-port=$TALK_PORT
|
||||
fingerprint
|
||||
use-auth-secret
|
||||
@@ -54,7 +54,7 @@ denied-peer-ip=240.0.0.0-255.255.255.255
|
||||
TURN_CONF
|
||||
|
||||
# Signling
|
||||
cat << SIGNALING_CONF > "/etc/signaling.conf"
|
||||
cat << SIGNALING_CONF > "/conf/signaling.conf"
|
||||
[http]
|
||||
listen = 0.0.0.0:8081
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=turnserver -c /etc/turnserver.conf
|
||||
command=turnserver -c /conf/turnserver.conf
|
||||
|
||||
[program:nats-server]
|
||||
stdout_logfile=/dev/stdout
|
||||
@@ -35,4 +35,4 @@ stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=nextcloud-spreed-signaling -config /etc/signaling.conf
|
||||
command=nextcloud-spreed-signaling -config /conf/signaling.conf
|
||||
|
||||
@@ -9,6 +9,7 @@ services:
|
||||
image: nextcloud/aio-apache:latest
|
||||
ports:
|
||||
- ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/tcp
|
||||
- ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/udp
|
||||
environment:
|
||||
- NC_DOMAIN=${NC_DOMAIN}
|
||||
- NEXTCLOUD_HOST=nextcloud-aio-nextcloud
|
||||
|
||||
@@ -14,7 +14,7 @@ The procedure for migrating only the files works like this:
|
||||
1. Install Nextcloud AIO on a new server/linux installation, enter your domain and wait until all containers are running
|
||||
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: for `/path/to/nextcloud/data/` run `sudo docker cp --follow-link /path/to/nextcloud/data/ nextcloud-aio-nextcloud:/mnt/ncdata/` Note: the `/` at the end are necessary.
|
||||
1. Restore the datadirectory of your former instance: for `/path/to/nextcloud/data/` run `sudo docker cp --follow-link /path/to/nextcloud/data/. nextcloud-aio-nextcloud:/mnt/ncdata/` Note: the `/.` and `/` at the end are necessary.
|
||||
1. Next, run `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chown -R 33:0 /mnt/ncdata/` and `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chmod -R 750 /mnt/ncdata/` to apply the correct permissions. (Or if `NEXTCLOUD_DATADIR` was provided, apply `chown -R 33:0` and `chmod -R 750` to the chosen path.)
|
||||
1. Start the containers again and wait until all containers are running
|
||||
1. Run `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan-app-data && sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all` in order to scan all files in the datadirectory.
|
||||
@@ -24,7 +24,7 @@ The procedure for migrating only the files works like this:
|
||||
|
||||
The procedure for migrating the files and the database works like this:
|
||||
1. Make sure that your old instance is on exactly the same version like the version used in Nextcloud AIO. (e.g. 23.0.0) You can find the used version here: [click here](https://github.com/nextcloud/all-in-one/search?l=Dockerfile&q=NEXTCLOUD_VERSION&type=). If not, simply upgrade your former installation to that version or wait until the version used in Nextcloud AIO got updated to the same version of your former installation or the other way around.
|
||||
1. Take a backup of your former instance (especially from your datadirectory and database)
|
||||
1. First, on the old instance, update all Nextcloud apps to its latest version via the app management site (important for the restore later on). Then 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:
|
||||
```
|
||||
@@ -56,7 +56,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 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. 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`. Also install all apps via the apps management site that were installed on the old Nextcloud installation. Otherwise they will show as installed, but will not work.
|
||||
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`.
|
||||
@@ -75,7 +75,7 @@ The procedure for migrating the files and the database works like this:
|
||||
sudo docker run --rm --volume nextcloud_aio_database_dump:/mnt/data:rw alpine chmod 777 /mnt/data/database-dump.sql
|
||||
sudo docker run --rm --volume nextcloud_aio_database_dump:/mnt/data:rw alpine rm /mnt/data/initial-cleanup-done
|
||||
```
|
||||
1. If the commands above were executed successfully, restore the datadirectory of your former instance into your datadirectory: `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine sh -c "rm -rf /mnt/ncdata/*"` and `sudo docker cp --follow-link /path/to/nextcloud/data/ nextcloud-aio-nextcloud:/mnt/ncdata/` Note: the `/` at the end are necessary. (Or if `NEXTCLOUD_DATADIR` was provided, first delete the files in there and then copy the files to the chosen path.)
|
||||
1. If the commands above were executed successfully, restore the datadirectory of your former instance into your datadirectory: `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine sh -c "rm -rf /mnt/ncdata/*"` and `sudo docker cp --follow-link /path/to/nextcloud/data/. nextcloud-aio-nextcloud:/mnt/ncdata/` Note: the `/.` and `/` at the end are necessary. (Or if `NEXTCLOUD_DATADIR` was provided, first delete the files in there and then copy the files to the chosen path.)
|
||||
1. Next, run `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chown -R 33:0 /mnt/ncdata/` and `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chmod -R 750 /mnt/ncdata/` to apply the correct permissions on the datadirectory. (Or if `NEXTCLOUD_DATADIR` was provided, apply `chown -R 33:0` and `chmod -R 750` to the chosen path.)
|
||||
1. Edit the Nextcloud AIO config.php file using `sudo docker run -it --rm --volume nextcloud_aio_nextcloud:/var/www/html:rw alpine sh -c "apk add --no-cache nano && nano /var/www/html/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.
|
||||
|
||||
12
php/composer.lock
generated
12
php/composer.lock
generated
@@ -699,16 +699,16 @@
|
||||
},
|
||||
{
|
||||
"name": "php-di/slim-bridge",
|
||||
"version": "3.3.0",
|
||||
"version": "3.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHP-DI/Slim-Bridge.git",
|
||||
"reference": "9374b67ebf2f135b32c34907b7891b02b935d845"
|
||||
"reference": "d14c95b34b3c5ba2e8c40020dd93fdcc8f3ba875"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHP-DI/Slim-Bridge/zipball/9374b67ebf2f135b32c34907b7891b02b935d845",
|
||||
"reference": "9374b67ebf2f135b32c34907b7891b02b935d845",
|
||||
"url": "https://api.github.com/repos/PHP-DI/Slim-Bridge/zipball/d14c95b34b3c5ba2e8c40020dd93fdcc8f3ba875",
|
||||
"reference": "d14c95b34b3c5ba2e8c40020dd93fdcc8f3ba875",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -734,9 +734,9 @@
|
||||
"description": "PHP-DI integration in Slim",
|
||||
"support": {
|
||||
"issues": "https://github.com/PHP-DI/Slim-Bridge/issues",
|
||||
"source": "https://github.com/PHP-DI/Slim-Bridge/tree/3.3.0"
|
||||
"source": "https://github.com/PHP-DI/Slim-Bridge/tree/3.4.0"
|
||||
},
|
||||
"time": "2023-01-13T15:49:44+00:00"
|
||||
"time": "2023-06-29T14:08:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^/[a-z/_]+$"
|
||||
"pattern": "^/[a-z/_0-9-]+$"
|
||||
}
|
||||
},
|
||||
"volumes": {
|
||||
|
||||
@@ -16,6 +16,11 @@
|
||||
"ip_binding": "%APACHE_IP_BINDING%",
|
||||
"port_number": "%APACHE_PORT%",
|
||||
"protocol": "tcp"
|
||||
},
|
||||
{
|
||||
"ip_binding": "%APACHE_IP_BINDING%",
|
||||
"port_number": "%APACHE_PORT%",
|
||||
"protocol": "udp"
|
||||
}
|
||||
],
|
||||
"internal_port": "%APACHE_PORT%",
|
||||
@@ -50,6 +55,14 @@
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/var/log/supervisord",
|
||||
"/var/run/supervisord",
|
||||
"/usr/local/apache2/logs",
|
||||
"/tmp",
|
||||
"/home/www-data"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -91,6 +104,10 @@
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/var/run/postgresql"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -327,6 +344,14 @@
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/var/log/supervisord",
|
||||
"/var/run/supervisord",
|
||||
"/conf",
|
||||
"/var/lib/turn",
|
||||
"/tmp"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -354,6 +379,11 @@
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/tmp",
|
||||
"/conf"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -449,7 +479,12 @@
|
||||
"secrets": [
|
||||
"INSTANCE_ID"
|
||||
],
|
||||
"stop_grace_period": 1
|
||||
"stop_grace_period": 1,
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/etc/lighttpd",
|
||||
"/var/www/domaincheck"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-clamav",
|
||||
@@ -537,7 +572,10 @@
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/tmp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-fulltextsearch",
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<files psalm-version="5.12.0@f90118cdeacd0088e7215e64c0c99ceca819e176"/>
|
||||
<files psalm-version="5.13.1@086b94371304750d1c673315321a55d15fc59015"/>
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
function showPassword(id) {
|
||||
let passwordField = document.getElementById(id);
|
||||
if (passwordField.type === "password" && passwordField.value !== "") {
|
||||
passwordField.type = "text";
|
||||
} else if (passwordField.type === "text" && passwordField.value === "") {
|
||||
passwordField.type = "password";
|
||||
}
|
||||
}
|
||||
|
||||
(function (){
|
||||
let lastError;
|
||||
|
||||
|
||||
@@ -28,6 +28,12 @@ class AuthManager {
|
||||
$date = new DateTime();
|
||||
$dateTime = $date->getTimestamp();
|
||||
$_SESSION['date_time'] = $dateTime;
|
||||
|
||||
$df = disk_free_space(DataConst::GetSessionDirectory());
|
||||
if ($df !== false && (int)$df < 10240) {
|
||||
error_log(DataConst::GetSessionDirectory() . " has only less than 10KB free space. The login might not succeed because of that!");
|
||||
}
|
||||
|
||||
file_put_contents(DataConst::GetSessionDateFile(), (string)$dateTime);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ class ContainerDefinitionFetcher
|
||||
if (!$validator->isValid()) {
|
||||
error_log("JSON does not validate. Violations:");
|
||||
foreach ($validator->getErrors() as $error) {
|
||||
error_log(printf("[%s] %s\n", $error['property'], $error['message']));
|
||||
error_log((string)printf("[%s] %s\n", $error['property'], $error['message']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +173,8 @@ class DockerController
|
||||
$this->startTopContainer(true);
|
||||
|
||||
// Clear apcu cache in order to check if container updates are available
|
||||
apcu_clear_cache();
|
||||
// Temporarily disabled as it leads much faster to docker rate limits
|
||||
// apcu_clear_cache();
|
||||
|
||||
return $response->withStatus(201)->withHeader('Location', '/');
|
||||
}
|
||||
|
||||
26
php/src/Cron/CheckFreeDiskSpace.php
Normal file
26
php/src/Cron/CheckFreeDiskSpace.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
// increase memory limit to 2GB
|
||||
ini_set('memory_limit', '2048M');
|
||||
|
||||
use DI\Container;
|
||||
use AIO\Data\DataConst;
|
||||
|
||||
require __DIR__ . '/../../vendor/autoload.php';
|
||||
|
||||
$container = \AIO\DependencyInjection::GetContainer();
|
||||
|
||||
/** @var \AIO\Docker\DockerActionManager $dockerActionManger */
|
||||
$dockerActionManger = $container->get(\AIO\Docker\DockerActionManager::class);
|
||||
/** @var \AIO\ContainerDefinitionFetcher $containerDefinitionFetcher */
|
||||
$containerDefinitionFetcher = $container->get(\AIO\ContainerDefinitionFetcher::class);
|
||||
|
||||
$id = 'nextcloud-aio-nextcloud';
|
||||
$nextcloudContainer = $containerDefinitionFetcher->GetContainerById($id);
|
||||
|
||||
$df = disk_free_space(DataConst::GetDataDirectory());
|
||||
if ($df !== false && (int)$df < 1024 * 1024 * 1024 * 5) {
|
||||
error_log("The drive that hosts the mastercontainer volume has less than 5 GB free space. Container updates and backups might not succeed due to that!");
|
||||
$dockerActionManger->sendNotification($nextcloudContainer, 'Low on space!', 'The drive that hosts the mastercontainer volume has less than 5 GB free space. Container updates and backups might not succeed due to that!');
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
</header>
|
||||
|
||||
<div class="content">
|
||||
<h1>Nextcloud AIO v6.2.1</h1>
|
||||
<h1>Nextcloud AIO v6.3.0</h1>
|
||||
|
||||
{# Add 2nd tab warning #}
|
||||
<script type="text/javascript" src="second-tab-warning.js"></script>
|
||||
@@ -99,7 +99,7 @@
|
||||
<input class="button" type="submit" value="Submit domain" />
|
||||
</form>
|
||||
{% if skip_domain_validation == false %}
|
||||
Make sure that this server is reachable on port 443 (port 443/tcp is open/forwarded in your firewall/router) and that you've correctly set up the DNS config for the domain that you enter (set the A record to your public ipv4-address and if you need ipv6, set the AAAA record to your public ipv6-address. A CNAME record if of course also possible). You should see hints on what went wrong if your domain does not get accepted in the top right corner.<br><br>
|
||||
Make sure that this server is reachable on port 443 (port 443/tcp is open/forwarded in your firewall/router and 443/udp as well if you want to enable http3) and that you've correctly set up the DNS config for the domain that you enter (set the A record to your public ipv4-address and if you need ipv6, set the AAAA record to your public ipv6-address. A CNAME record if of course also possible). You should see hints on what went wrong if your domain does not get accepted in the top right corner.<br><br>
|
||||
<details>
|
||||
<summary>Click here for further hints</summary><br />
|
||||
If you should not have a domain yet, you can get one for free e.g. from duckdns.org and others.<br><br>
|
||||
@@ -468,7 +468,7 @@
|
||||
{% if automatic_updates == true %}
|
||||
Also your containers, the mastercontainer and on saturdays your Nextcloud apps will be automatically updated.
|
||||
{% endif %}
|
||||
You can disable this option again by clicking on the button below.<br><br/>
|
||||
To change your backup time, first disable Daily Backups and then re-enable them with your new backup time.<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}}">
|
||||
@@ -509,8 +509,8 @@
|
||||
<summary>Click here to change your AIO password</summary><br />
|
||||
You can change your AIO password below:<br><br />
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" autocomplete="current-password" name="current-master-password" placeholder="Your current AIO password"/>
|
||||
<input type="text" autocomplete="new-password" name="new-master-password" placeholder="Your new AIO password"/>
|
||||
<input type="password" autocomplete="current-password" name="current-master-password" placeholder="Your current AIO password" id="current-master-password" oninput="showPassword('current-master-password')">
|
||||
<input type="password" autocomplete="new-password" name="new-master-password" placeholder="Your new AIO password" id="new-master-password" oninput="showPassword('new-master-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 password change" />
|
||||
@@ -548,9 +548,9 @@
|
||||
<input type="checkbox" id="fulltextsearch" name="fulltextsearch"><label for="fulltextsearch">Fulltextsearch (needs ~1GB additional RAM)</label><br>
|
||||
{% endif %}
|
||||
{% if is_imaginary_enabled == true %}
|
||||
<input type="checkbox" id="imaginary" name="imaginary" checked="checked"><label for="imaginary">Imaginary (for previews of heic, heif, illustrator, pdf, svg, tiff and webp)</label><br><br>
|
||||
<input type="checkbox" id="imaginary" name="imaginary" checked="checked"><label for="imaginary">Imaginary (for previews of heic, heif, illustrator, pdf, svg, tiff and webp. Imaginary is currently <a href="https://github.com/nextcloud/server/issues/34262">incompatible with server-side-encryption</a>)</label><br><br>
|
||||
{% else %}
|
||||
<input type="checkbox" id="imaginary" name="imaginary"><label for="imaginary">Imaginary (for previews of heic, heif, illustrator, pdf, svg, tiff and webp)</label><br><br>
|
||||
<input type="checkbox" id="imaginary" name="imaginary"><label for="imaginary">Imaginary (for previews of heic, heif, illustrator, pdf, svg, tiff and webp. Imaginary is currently <a href="https://github.com/nextcloud/server/issues/34262">incompatible with server-side-encryption</a>)</label><br><br>
|
||||
{% endif %}
|
||||
{% if is_talk_enabled == true %}
|
||||
<input type="checkbox" id="talk" name="talk" checked="checked"><label for="talk">Nextcloud Talk (needs ports {{ talk_port }}/TCP and {{ talk_port }}/UDP open/forwarded in your firewall/router)</label><br><br>
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
{% if is_login_allowed == true %}
|
||||
<p>Log in using your Nextcloud AIO password:</p>
|
||||
<form method="POST" action="/api/auth/login" class="xhr">
|
||||
<input type="text" autocomplete="off" name="password" placeholder="Password" />
|
||||
<input type="password" autocomplete="current-password" name="password" placeholder="Password" id="master-password" oninput="showPassword('master-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="Log in" />
|
||||
|
||||
@@ -136,6 +136,7 @@ You can check this on Linux by running: `uname -m`
|
||||
### Which ports are mandatory to be open in your firewall/router?
|
||||
Only those (if you access the Mastercontainer Interface internally via port 8080):
|
||||
- `443/TCP` for the Apache container
|
||||
- `443/UDP` if you want to enable http3 for the Apache container
|
||||
- `3478/TCP` and `3478/UDP` for the Talk container
|
||||
|
||||
### Explanation of used ports:
|
||||
@@ -143,6 +144,7 @@ Only those (if you access the Mastercontainer Interface internally via port 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/forwarded in your firewall/router and you point a domain to your server. It generates a valid certificate then automatically and access via e.g. `https://public.domain.com:8443/` is possible.)
|
||||
- `443/TCP`: will be used by the Apache container later on and needs to be open/forwarded in your firewall/router
|
||||
- `443/UDP`: will be used by the Apache container later on and needs to be open/forwarded in your firewall/router if you want to enable http3
|
||||
- `3478/TCP` and `3478/UDP`: will be used by the Turnserver inside the Talk container and needs to be open/forwarded in your firewall/router
|
||||
|
||||
### How to run AIO on macOS?
|
||||
|
||||
@@ -642,7 +642,7 @@ Simply translate the docker run command into a docker-compose file. You can have
|
||||
|
||||
## 3. Limit the access to the apache container
|
||||
|
||||
Use this envorinmental variable during the initial startup of the mastercontainer to make the apache container only listen on localhost: `--env APACHE_IP_BINDING=127.0.0.1`. **Attention:** This is only recommended to be set if you use `localhost` in your reverse proxy config to connect to your AIO instance. If you use an ip-address instead of localhost, you should set it to `0.0.0.0`.
|
||||
Use this environment variable during the initial startup of the mastercontainer to make the apache container only listen on localhost: `--env APACHE_IP_BINDING=127.0.0.1`. **Attention:** This is only recommended to be set if you use `localhost` in your reverse proxy config to connect to your AIO instance. If you use an ip-address instead of localhost, you should set it to `0.0.0.0`.
|
||||
|
||||
## 4. Open the AIO interface.
|
||||
After starting AIO, you should be able to access the AIO Interface via `https://ip.address.of.the.host:8080`. Enter your domain that you've entered in the reverse proxy config and you should be done. Please do not forget to open/forward port `3478/TCP` and `3478/UDP` in your firewall/router for the Talk container!
|
||||
|
||||
Reference in New Issue
Block a user