mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-21 19:00:33 +00:00
Compare commits
199 Commits
helm-chart
...
v8.3.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2edd952289 | ||
|
|
b2cebaffcc | ||
|
|
50fb24f689 | ||
|
|
712d86e796 | ||
|
|
24ed3b9743 | ||
|
|
54dc5387a7 | ||
|
|
ab939dac26 | ||
|
|
3c6b44d1b5 | ||
|
|
524d97b1c9 | ||
|
|
9e7979b00e | ||
|
|
cceb1a8a6c | ||
|
|
9e80bcf322 | ||
|
|
e4a802d7ee | ||
|
|
194e073883 | ||
|
|
3c74c666c4 | ||
|
|
3638910840 | ||
|
|
fa77ccb9f6 | ||
|
|
3bd2e867a1 | ||
|
|
54b6c54aec | ||
|
|
3d419ccd6f | ||
|
|
b18c210f86 | ||
|
|
f988c6a349 | ||
|
|
f000ee6fb7 | ||
|
|
9239569347 | ||
|
|
4b6cbcf805 | ||
|
|
377a9b6cf7 | ||
|
|
c152aa352c | ||
|
|
62242ed247 | ||
|
|
780ba6dd9d | ||
|
|
86509742db | ||
|
|
a6d2b908f5 | ||
|
|
9bd7706ac7 | ||
|
|
b43a5f7e84 | ||
|
|
d14ac5cd1d | ||
|
|
9457af191a | ||
|
|
6d0bee33d3 | ||
|
|
eeccfec0c9 | ||
|
|
8530499e1e | ||
|
|
8c349800c0 | ||
|
|
6f7e95a7c3 | ||
|
|
42e1616010 | ||
|
|
dec9d14fda | ||
|
|
f4334c7ff2 | ||
|
|
e9b6152773 | ||
|
|
47ac5462f9 | ||
|
|
676d5c2e53 | ||
|
|
9207d0f913 | ||
|
|
b40968d989 | ||
|
|
f8f867629d | ||
|
|
ee7868fb58 | ||
|
|
d1be45c359 | ||
|
|
8fd457f62c | ||
|
|
93044dd181 | ||
|
|
d175d88024 | ||
|
|
042c842579 | ||
|
|
06de90a838 | ||
|
|
854f596463 | ||
|
|
4794d5119a | ||
|
|
a5dcc1345c | ||
|
|
bddbd37e3f | ||
|
|
df3935a992 | ||
|
|
2be9c9ef10 | ||
|
|
01f76081df | ||
|
|
e17b1d4f23 | ||
|
|
de5aeb64d4 | ||
|
|
b1ad854de6 | ||
|
|
047c3555ba | ||
|
|
d8a73f8786 | ||
|
|
5ad62bcd2f | ||
|
|
32890a75f3 | ||
|
|
24e66e5323 | ||
|
|
668d4e097f | ||
|
|
2352367a19 | ||
|
|
e78de8a113 | ||
|
|
14153b424b | ||
|
|
000d881fc2 | ||
|
|
63c667cac3 | ||
|
|
5a826222d4 | ||
|
|
26c042fd28 | ||
|
|
560dce906e | ||
|
|
628abc02f6 | ||
|
|
f8603b10fc | ||
|
|
99567d6872 | ||
|
|
46b6992b52 | ||
|
|
b938a6642e | ||
|
|
8ccf87eec2 | ||
|
|
48ec6502d6 | ||
|
|
3ee5278cc6 | ||
|
|
54a07b7b94 | ||
|
|
3c91fa84e3 | ||
|
|
3fa811ef90 | ||
|
|
b30b03aeb6 | ||
|
|
d8a700ab81 | ||
|
|
1e3dd91b43 | ||
|
|
ff4ed0d616 | ||
|
|
5f7e803e00 | ||
|
|
deb89224eb | ||
|
|
2f8b5321bd | ||
|
|
7a27542fa8 | ||
|
|
6cfb0ea09c | ||
|
|
314cd10607 | ||
|
|
c916d80a75 | ||
|
|
3b3bb3a161 | ||
|
|
a5ed5c43fe | ||
|
|
92bbf20d6b | ||
|
|
e2f5b50e37 | ||
|
|
ee15249e1b | ||
|
|
e82191370b | ||
|
|
c364d072ab | ||
|
|
11de79bea4 | ||
|
|
b9c57dc8d9 | ||
|
|
ba7a3f5829 | ||
|
|
a8104183aa | ||
|
|
07a8367181 | ||
|
|
0ad59ef8b1 | ||
|
|
1edcf9ed5b | ||
|
|
689fa2a69b | ||
|
|
dc8250bf83 | ||
|
|
be089e132f | ||
|
|
9347144a19 | ||
|
|
6e923895af | ||
|
|
f8cc35cce9 | ||
|
|
f3ad24d932 | ||
|
|
53836b6231 | ||
|
|
03792a5661 | ||
|
|
4f40890d7d | ||
|
|
a48301f9c1 | ||
|
|
1168c749b0 | ||
|
|
a1037ba72b | ||
|
|
fe947707b0 | ||
|
|
e0e1143b9c | ||
|
|
bab11ed61a | ||
|
|
17ce7cc2b1 | ||
|
|
c4499174d6 | ||
|
|
d2028048e9 | ||
|
|
d87d40c054 | ||
|
|
157ad4701b | ||
|
|
e47e239018 | ||
|
|
61930c8196 | ||
|
|
44e458b8ed | ||
|
|
60a31d860f | ||
|
|
ca29850abb | ||
|
|
22d88a97f9 | ||
|
|
283584fe00 | ||
|
|
35b098cf02 | ||
|
|
a01156d90c | ||
|
|
90b0edd95b | ||
|
|
d976ac2c66 | ||
|
|
1ee74f1d42 | ||
|
|
c671018798 | ||
|
|
17b35a45db | ||
|
|
c0ab585c08 | ||
|
|
75fdb28486 | ||
|
|
c871e3f8af | ||
|
|
67d71d2b6c | ||
|
|
3010ccd0d4 | ||
|
|
07b1021234 | ||
|
|
8d868715c5 | ||
|
|
9be77d2f81 | ||
|
|
25f1cc9e83 | ||
|
|
7e9b130781 | ||
|
|
a2342f02f9 | ||
|
|
5129ec03a3 | ||
|
|
6768013945 | ||
|
|
0d26a81f0e | ||
|
|
52cdc7fe68 | ||
|
|
20bd9ed82e | ||
|
|
577bac5253 | ||
|
|
a5aedd2ba3 | ||
|
|
4fa148a2e9 | ||
|
|
81c432a1a2 | ||
|
|
dd20ffcf4e | ||
|
|
6b0434e47b | ||
|
|
ae67c81526 | ||
|
|
2d8fb5a97e | ||
|
|
88fc99978d | ||
|
|
02a77f5213 | ||
|
|
7fbf385d88 | ||
|
|
d99d0240e0 | ||
|
|
6cd260a99a | ||
|
|
b8285379ba | ||
|
|
7d09c554cf | ||
|
|
261af2087d | ||
|
|
a90bd4af72 | ||
|
|
5dc079077b | ||
|
|
f10bdfd5b3 | ||
|
|
7f6cd8c473 | ||
|
|
0aa4f63244 | ||
|
|
4ad2b20fc8 | ||
|
|
dc4a08ef78 | ||
|
|
77cc4898f9 | ||
|
|
847b6b5158 | ||
|
|
544519994a | ||
|
|
09171e0c4d | ||
|
|
6c6f0e2909 | ||
|
|
ea44de1c48 | ||
|
|
3658ad3bdf | ||
|
|
ac2891289e | ||
|
|
cd81cbd0a3 |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* text=auto
|
||||
2
.github/workflows/helm-release.yml
vendored
2
.github/workflows/helm-release.yml
vendored
@@ -32,7 +32,7 @@ jobs:
|
||||
|
||||
# See https://github.com/helm/chart-releaser-action/issues/6
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v3.5
|
||||
uses: azure/setup-helm@v4
|
||||
with:
|
||||
version: v3.6.3
|
||||
|
||||
|
||||
2
.github/workflows/lint-helm.yml
vendored
2
.github/workflows/lint-helm.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v3.5
|
||||
uses: azure/setup-helm@v4
|
||||
with:
|
||||
version: v3.11.1
|
||||
|
||||
|
||||
@@ -51,13 +51,10 @@ https://{$ADDITIONAL_TRUSTED_DOMAIN}:443,
|
||||
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
|
||||
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
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM caddy:2.7.6-alpine as caddy
|
||||
|
||||
FROM httpd:2.4.58-alpine3.19
|
||||
FROM httpd:2.4.59-alpine3.19
|
||||
|
||||
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
||||
|
||||
@@ -14,6 +14,7 @@ COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
VOLUME /mnt/data
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache shadow; \
|
||||
groupmod -g 333 xfs; \
|
||||
usermod -u 333 -g 333 xfs; \
|
||||
|
||||
@@ -63,15 +63,6 @@ caddy fmt --overwrite /tmp/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
|
||||
|
||||
# Make 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
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ FROM alpine:3.19.1
|
||||
|
||||
RUN set -ex; \
|
||||
\
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
util-linux-misc \
|
||||
bash \
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.1/alpine/Dockerfile
|
||||
FROM clamav/clamav:1.3.0-44
|
||||
FROM clamav/clamav:1.3.1-53
|
||||
|
||||
COPY clamav.conf /tmp/clamav.conf
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache tzdata; \
|
||||
cat /tmp/clamav.conf >> /etc/clamav/clamd.conf; \
|
||||
rm /tmp/clamav.conf; \
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
|
||||
FROM collabora/code:23.05.10.1.1
|
||||
FROM collabora/code:24.04.3.1.1
|
||||
|
||||
USER root
|
||||
ARG DEBIAN_FRONTEND noninteractive
|
||||
|
||||
# hadolint ignore=DL3008
|
||||
RUN set -ex; \
|
||||
\
|
||||
apt-get update; \
|
||||
export DEBIAN_FRONTEND=noninteractive; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
tzdata \
|
||||
netcat-openbsd \
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM haproxy:2.9.6-alpine3.19
|
||||
FROM haproxy:2.9.7-alpine3.19
|
||||
|
||||
# hadolint ignore=DL3002
|
||||
USER root
|
||||
ENV NEXTCLOUD_HOST nextcloud-aio-nextcloud
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
|
||||
@@ -16,6 +16,8 @@ frontend http
|
||||
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/_ping } METH_GET
|
||||
# container inspect: GET containers/%s/json
|
||||
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/nc_app_[a-zA-Z0-9_.-]+/json } METH_GET
|
||||
# container inspect: GET containers/%s/logs
|
||||
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/nc_app_[a-zA-Z0-9_.-]+/logs } METH_GET
|
||||
# container start/stop: POST containers/%s/start containers/%s/stop
|
||||
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/nc_app_[a-zA-Z0-9_.-]+/((start)|(stop)) } METH_POST
|
||||
# container rm: DELETE containers/%s
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM alpine:3.19.1
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache bash lighttpd netcat-openbsd; \
|
||||
adduser -S www-data -G www-data; \
|
||||
rm -rf /etc/lighttpd/lighttpd.conf; \
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
|
||||
FROM elasticsearch:8.13.0
|
||||
FROM elasticsearch:8.13.4
|
||||
|
||||
USER root
|
||||
|
||||
ARG DEBIAN_FRONTEND noninteractive
|
||||
|
||||
# hadolint ignore=DL3008
|
||||
RUN set -ex; \
|
||||
\
|
||||
export DEBIAN_FRONTEND=noninteractive; \
|
||||
apt-get update; \
|
||||
apt-get upgrade -y; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
tzdata \
|
||||
; \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM golang:1.22.1-alpine3.18 as go
|
||||
FROM golang:1.22.3-alpine3.18 as go
|
||||
|
||||
ENV IMAGINARY_HASH 6cd9edd1d3fb151eb773c14552886e4fc8e50138
|
||||
|
||||
@@ -15,6 +15,7 @@ RUN set -ex; \
|
||||
|
||||
FROM alpine:3.18.6
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
tzdata \
|
||||
ca-certificates \
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Docker CLI is a requirement
|
||||
FROM docker:25.0.5-cli as docker
|
||||
FROM docker:26.1.3-cli as docker
|
||||
|
||||
# Caddy is a requirement
|
||||
FROM caddy:2.7.6-alpine as caddy
|
||||
|
||||
# From https://github.com/docker-library/php/blob/master/8.3/alpine3.19/fpm/Dockerfile
|
||||
FROM php:8.3.4-fpm-alpine3.19
|
||||
FROM php:8.3.7-fpm-alpine3.19
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8080
|
||||
@@ -19,6 +19,7 @@ WORKDIR /var/www/docker-aio
|
||||
|
||||
# hadolint ignore=SC2086,DL3047,DL3003,DL3004
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache shadow; \
|
||||
groupmod -g 333 xfs; \
|
||||
usermod -u 333 -g 333 xfs; \
|
||||
|
||||
@@ -76,7 +76,7 @@ if ! sudo -u www-data docker info &>/dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
API_VERSION_FILE="$(find ./ -name DockerActionManager.php | head -1)"
|
||||
API_VERSION="$(grep -oP 'const API_VERSION.*\;' "$API_VERSION_FILE" | grep -oP '[0-9]+.[0-9]+' | head -1)"
|
||||
API_VERSION="$(grep -oP 'const string API_VERSION.*\;' "$API_VERSION_FILE" | grep -oP '[0-9]+.[0-9]+' | head -1)"
|
||||
# shellcheck disable=SC2001
|
||||
API_VERSION_NUMB="$(echo "$API_VERSION" | sed 's/\.//')"
|
||||
LOCAL_API_VERSION_NUMB="$(sudo -u www-data docker version | grep -i "api version" | grep -oP '[0-9]+.[0-9]+' | head -1 | sed 's/\.//')"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM php:8.2.17-fpm-alpine3.19
|
||||
FROM php:8.2.19-fpm-alpine3.19
|
||||
|
||||
ENV PHP_MEMORY_LIMIT 512M
|
||||
ENV PHP_UPLOAD_LIMIT 10G
|
||||
@@ -7,15 +7,15 @@ ENV PHP_MAX_TIME 3600
|
||||
ENV SOURCE_LOCATION /usr/src/nextcloud
|
||||
|
||||
# AIO settings start # Do not remove or change this line!
|
||||
ENV NEXTCLOUD_VERSION 28.0.4
|
||||
ENV NEXTCLOUD_VERSION 28.0.6
|
||||
ENV AIO_TOKEN 123456
|
||||
ENV AIO_URL localhost
|
||||
COPY supervisord.conf /supervisord.conf
|
||||
# AIO settings end # Do not remove or change this line!
|
||||
|
||||
COPY --chmod=775 *.sh /
|
||||
COPY --chmod=774 upgrade.exclude /upgrade.exclude
|
||||
COPY config/*.php /
|
||||
COPY supervisord.conf /supervisord.conf
|
||||
|
||||
VOLUME /mnt/ncdata
|
||||
VOLUME /var/www/html
|
||||
@@ -23,6 +23,7 @@ VOLUME /var/www/html
|
||||
# Custom: change id of www-data user as it needs to be the same like on old installations
|
||||
# hadolint ignore=SC2086,DL3003
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache shadow; \
|
||||
deluser www-data; \
|
||||
groupmod -g 333 xfs; \
|
||||
@@ -44,6 +45,8 @@ RUN set -ex; \
|
||||
icu-dev \
|
||||
imagemagick-dev \
|
||||
imagemagick-svg \
|
||||
imagemagick-heic \
|
||||
imagemagick-tiff \
|
||||
libevent-dev \
|
||||
libjpeg-turbo-dev \
|
||||
libmcrypt-dev \
|
||||
@@ -196,6 +199,8 @@ RUN set -ex; \
|
||||
/var/log/supervisord \
|
||||
/var/run/supervisord \
|
||||
; \
|
||||
chown www-data:root -R /var/log/supervisord; \
|
||||
chown www-data:root -R /var/run/supervisord; \
|
||||
\
|
||||
apk add --no-cache \
|
||||
bash \
|
||||
@@ -211,6 +216,8 @@ RUN set -ex; \
|
||||
bind-tools \
|
||||
imagemagick \
|
||||
imagemagick-svg \
|
||||
imagemagick-heic \
|
||||
imagemagick-tiff \
|
||||
coreutils; \
|
||||
\
|
||||
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
wait_for_cron() {
|
||||
set -x
|
||||
while [ -n "$(pgrep -f /var/www/html/cron.php)" ]; do
|
||||
@@ -8,7 +6,7 @@ wait_for_cron() {
|
||||
sleep 5
|
||||
done
|
||||
echo "Cronjob successfully exited."
|
||||
set +x
|
||||
exit
|
||||
}
|
||||
|
||||
trap wait_for_cron SIGINT SIGTERM
|
||||
|
||||
@@ -19,6 +19,13 @@ run_upgrade_if_needed_due_to_app_update() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Only start container if redis is accessible
|
||||
# shellcheck disable=SC2153
|
||||
while ! nc -z "$REDIS_HOST" "6379"; do
|
||||
echo "Waiting for redis to start..."
|
||||
sleep 5
|
||||
done
|
||||
|
||||
# Check permissions in ncdata
|
||||
touch "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" &>/dev/null
|
||||
if ! [ -f "$NEXTCLOUD_DATA_DIR/this-is-a-test-file" ]; then
|
||||
@@ -212,7 +219,11 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
DATADIR_PERMISSION_CONF
|
||||
|
||||
echo "Installing with PostgreSQL database"
|
||||
INSTALL_OPTIONS+=(--database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST")
|
||||
# Set a default value for POSTGRES_PORT
|
||||
if [ -z "$POSTGRES_PORT" ]; then
|
||||
POSTGRES_PORT=5432
|
||||
fi
|
||||
INSTALL_OPTIONS+=(--database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST" --database-port "$POSTGRES_PORT")
|
||||
|
||||
echo "Starting Nextcloud installation..."
|
||||
if ! php /var/www/html/occ maintenance:install "${INSTALL_OPTIONS[@]}"; then
|
||||
@@ -290,19 +301,19 @@ DATADIR_PERMISSION_CONF
|
||||
# Apply log settings
|
||||
echo "Applying default settings..."
|
||||
mkdir -p /var/www/html/data
|
||||
php /var/www/html/occ config:system:set loglevel --value=2
|
||||
php /var/www/html/occ config:system:set log_type --value=file
|
||||
php /var/www/html/occ config:system:set loglevel --value="2" --type=integer
|
||||
php /var/www/html/occ config:system:set log_type --value="file"
|
||||
php /var/www/html/occ config:system:set logfile --value="/var/www/html/data/nextcloud.log"
|
||||
php /var/www/html/occ config:system:set log_rotate_size --value="10485760"
|
||||
php /var/www/html/occ config:system:set log_rotate_size --value="10485760" --type=integer
|
||||
php /var/www/html/occ app:enable admin_audit
|
||||
php /var/www/html/occ config:app:set admin_audit logfile --value="/var/www/html/data/audit.log"
|
||||
php /var/www/html/occ config:system:set log.condition apps 0 --value="admin_audit"
|
||||
|
||||
# Apply preview settings
|
||||
echo "Applying preview settings..."
|
||||
php /var/www/html/occ config:system:set preview_max_x --value="2048"
|
||||
php /var/www/html/occ config:system:set preview_max_y --value="2048"
|
||||
php /var/www/html/occ config:system:set jpeg_quality --value="60"
|
||||
php /var/www/html/occ config:system:set preview_max_x --value="2048" --type=integer
|
||||
php /var/www/html/occ config:system:set preview_max_y --value="2048" --type=integer
|
||||
php /var/www/html/occ config:system:set jpeg_quality --value="60" --type=integer
|
||||
php /var/www/html/occ config:app:set preview jpeg_quality --value="60"
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 1 --value="OC\\Preview\\Image"
|
||||
@@ -322,7 +333,7 @@ DATADIR_PERMISSION_CONF
|
||||
php /var/www/html/occ config:system:set mail_smtpmode --value="smtp"
|
||||
php /var/www/html/occ config:system:set trashbin_retention_obligation --value="auto, 30"
|
||||
php /var/www/html/occ config:system:set versions_retention_obligation --value="auto, 30"
|
||||
php /var/www/html/occ config:system:set activity_expire_days --value="30"
|
||||
php /var/www/html/occ config:system:set activity_expire_days --value="30" --type=integer
|
||||
php /var/www/html/occ config:system:set simpleSignUpLink.shown --type=bool --value=false
|
||||
php /var/www/html/occ config:system:set share_folder --value="/Shared"
|
||||
# Not needed anymore with the removal of the updatenotification app:
|
||||
@@ -471,6 +482,13 @@ if [ -n "$SUBSCRIPTION_KEY" ] && [ -z "$(php /var/www/html/occ config:app:get su
|
||||
php /var/www/html/occ config:app:set support potential_subscription_key --value="$SUBSCRIPTION_KEY"
|
||||
php /var/www/html/occ config:app:delete support last_check
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_DEFAULT_QUOTA" ]; then
|
||||
if [ "$NEXTCLOUD_DEFAULT_QUOTA" = "unlimited" ]; then
|
||||
php /var/www/html/occ config:app:delete files default_quota
|
||||
else
|
||||
php /var/www/html/occ config:app:set files default_quota --value="$NEXTCLOUD_DEFAULT_QUOTA"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Adjusting log files to be stored on a volume
|
||||
echo "Adjusting log files..."
|
||||
@@ -498,6 +516,14 @@ php /var/www/html/occ maintenance:update:htaccess
|
||||
# Revert dbpersistent setting to check if it fixes too many db connections
|
||||
php /var/www/html/occ config:system:set dbpersistent --value=false --type=bool
|
||||
|
||||
if [ "$DISABLE_BRUTEFORCE_PROTECTION" = yes ]; then
|
||||
php /var/www/html/occ config:system:set auth.bruteforce.protection.enabled --type=bool --value=false
|
||||
php /var/www/html/occ config:system:set ratelimit.protection.enabled --type=bool --value=false
|
||||
else
|
||||
php /var/www/html/occ config:system:set auth.bruteforce.protection.enabled --type=bool --value=true
|
||||
php /var/www/html/occ config:system:set ratelimit.protection.enabled --type=bool --value=true
|
||||
fi
|
||||
|
||||
# Disallow creating local external storages when nothing was mounted
|
||||
if [ -z "$NEXTCLOUD_MOUNT" ]; then
|
||||
php /var/www/html/occ config:system:set files_external_allow_create_new_local --type=bool --value=false
|
||||
@@ -532,6 +558,14 @@ php /var/www/html/occ config:system:set trusted_proxies 1 --value="::1"
|
||||
if [ -n "$ADDITIONAL_TRUSTED_PROXY" ]; then
|
||||
php /var/www/html/occ config:system:set trusted_proxies 2 --value="$ADDITIONAL_TRUSTED_PROXY"
|
||||
fi
|
||||
|
||||
# Get ipv4-address of Nextcloud
|
||||
IPv4_ADDRESS="$(dig nextcloud-aio-nextcloud A +short +search | head -1)"
|
||||
# Bring it in CIDR notation
|
||||
# shellcheck disable=SC2001
|
||||
IPv4_ADDRESS="$(echo "$IPv4_ADDRESS" | sed 's|[0-9]\+$|1/32|')"
|
||||
php /var/www/html/occ config:system:set trusted_proxies 10 --value="$IPv4_ADDRESS"
|
||||
|
||||
if [ -n "$ADDITIONAL_TRUSTED_DOMAIN" ]; then
|
||||
php /var/www/html/occ config:system:set trusted_domains 2 --value="$ADDITIONAL_TRUSTED_DOMAIN"
|
||||
fi
|
||||
@@ -623,6 +657,15 @@ fi
|
||||
|
||||
# Talk
|
||||
if [ "$TALK_ENABLED" = 'yes' ]; then
|
||||
set -x
|
||||
if [ -z "$TALK_HOST" ] || echo "$TALK_HOST" | grep -q "nextcloud-.*-talk"; then
|
||||
TALK_HOST="$NC_DOMAIN"
|
||||
HPB_PATH="/standalone-signaling/"
|
||||
fi
|
||||
if [ -z "$TURN_DOMAIN" ]; then
|
||||
TURN_DOMAIN="$TALK_HOST"
|
||||
fi
|
||||
set +x
|
||||
if ! [ -d "/var/www/html/custom_apps/spreed" ]; then
|
||||
php /var/www/html/occ app:install spreed
|
||||
elif [ "$(php /var/www/html/occ config:app:get spreed enabled)" != "yes" ]; then
|
||||
@@ -632,15 +675,16 @@ if [ "$TALK_ENABLED" = 'yes' ]; then
|
||||
fi
|
||||
# Based on https://github.com/nextcloud/spreed/issues/960#issuecomment-416993435
|
||||
if [ -z "$(php /var/www/html/occ talk:turn:list --output="plain")" ]; then
|
||||
php /var/www/html/occ talk:turn:add turn "$NC_DOMAIN:$TALK_PORT" "udp,tcp" --secret="$TURN_SECRET"
|
||||
# shellcheck disable=SC2153
|
||||
php /var/www/html/occ talk:turn:add turn "$TURN_DOMAIN:$TALK_PORT" "udp,tcp" --secret="$TURN_SECRET"
|
||||
fi
|
||||
STUN_SERVER="$(php /var/www/html/occ talk:stun:list --output="plain")"
|
||||
if [ -z "$STUN_SERVER" ] || echo "$STUN_SERVER" | grep -oP '[a-zA-Z.:0-9]+' | grep -q "^stun.nextcloud.com:443$"; then
|
||||
php /var/www/html/occ talk:stun:add "$NC_DOMAIN:$TALK_PORT"
|
||||
php /var/www/html/occ talk:stun:add "$TURN_DOMAIN:$TALK_PORT"
|
||||
php /var/www/html/occ talk:stun:delete "stun.nextcloud.com:443"
|
||||
fi
|
||||
if ! php /var/www/html/occ talk:signaling:list --output="plain" | grep -q "https://$NC_DOMAIN/standalone-signaling/"; then
|
||||
php /var/www/html/occ talk:signaling:add "https://$NC_DOMAIN/standalone-signaling/" "$SIGNALING_SECRET" --verify
|
||||
if ! php /var/www/html/occ talk:signaling:list --output="plain" | grep -q "https://$TALK_HOST$HPB_PATH"; then
|
||||
php /var/www/html/occ talk:signaling:add "https://$TALK_HOST$HPB_PATH" "$SIGNALING_SECRET" --verify
|
||||
fi
|
||||
else
|
||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/spreed" ]; then
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
nc -z "$POSTGRES_HOST" 5432 || exit 0
|
||||
# Set a default value for POSTGRES_PORT
|
||||
if [ -z "$POSTGRES_PORT" ]; then
|
||||
POSTGRES_PORT=5432
|
||||
fi
|
||||
|
||||
|
||||
# POSTGRES_HOST must be set in the containers env vars and POSTGRES_PORT has a default above
|
||||
# shellcheck disable=SC2153
|
||||
nc -z "$POSTGRES_HOST" "$POSTGRES_PORT" || exit 0
|
||||
|
||||
if ! nc -z localhost 9000; then
|
||||
exit 1
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Set a default value for POSTGRES_PORT
|
||||
if [ -z "$POSTGRES_PORT" ]; then
|
||||
POSTGRES_PORT=5432
|
||||
fi
|
||||
|
||||
# Only start container if database is accessible
|
||||
while ! sudo -u www-data nc -z "$POSTGRES_HOST" 5432; do
|
||||
# POSTGRES_HOST must be set in the containers env vars and POSTGRES_PORT has a default above
|
||||
# shellcheck disable=SC2153
|
||||
while ! sudo -u www-data nc -z "$POSTGRES_HOST" "$POSTGRES_PORT"; do
|
||||
echo "Waiting for database to start..."
|
||||
sleep 5
|
||||
done
|
||||
@@ -13,7 +20,7 @@ export POSTGRES_USER
|
||||
# Fix false database connection on old instances
|
||||
if [ -f "/var/www/html/config/config.php" ]; then
|
||||
sleep 2
|
||||
while ! sudo -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/$POSTGRES_DB" -c "select now()"; do
|
||||
while ! sudo -u www-data psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB" -c "select now()"; do
|
||||
echo "Waiting for the database to start..."
|
||||
sleep 5
|
||||
done
|
||||
@@ -56,7 +63,7 @@ if [ -n "$ADDITIONAL_APKS" ]; then
|
||||
if ! [ -f "/additional-apks-are-installed" ]; then
|
||||
# Allow to disable imagemagick without having to download it each time
|
||||
if ! echo "$ADDITIONAL_APKS" | grep -q imagemagick; then
|
||||
apk del imagemagick imagemagick-svg;
|
||||
apk del imagemagick imagemagick-svg imagemagick-heic imagemagick-tiff;
|
||||
fi
|
||||
read -ra ADDITIONAL_APKS_ARRAY <<< "$ADDITIONAL_APKS"
|
||||
for app in "${ADDITIONAL_APKS_ARRAY[@]}"; do
|
||||
@@ -144,7 +151,7 @@ done
|
||||
|
||||
set -x
|
||||
# shellcheck disable=SC2235
|
||||
if [ "$THIS_IS_AIO" = "true" ] && ([ "$APACHE_PORT" = 443 ] || [ "$APACHE_IP_BINDING" = "127.0.0.1" ] || [ "$APACHE_IP_BINDING" = "::1" ]); then
|
||||
if [ "$THIS_IS_AIO" = "true" ] && [ "$APACHE_PORT" = 443 ]; then
|
||||
IPv4_ADDRESS_APACHE="$(dig nextcloud-aio-apache A +short +search | grep '^[0-9.]\+$' | sort | head -n1)"
|
||||
IPv6_ADDRESS_APACHE="$(dig nextcloud-aio-apache AAAA +short +search | grep '^[0-9a-f:]\+$' | sort | head -n1)"
|
||||
IPv4_ADDRESS_MASTERCONTAINER="$(dig nextcloud-aio-mastercontainer A +short +search | grep '^[0-9.]\+$' | sort | head -n1)"
|
||||
|
||||
@@ -5,6 +5,7 @@ COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
ca-certificates \
|
||||
netcat-openbsd \
|
||||
|
||||
@@ -44,8 +44,12 @@ fi
|
||||
|
||||
echo "notify-push was started"
|
||||
|
||||
# Set a default value for POSTGRES_PORT
|
||||
if [ -z "$POSTGRES_PORT" ]; then
|
||||
POSTGRES_PORT=5432
|
||||
fi
|
||||
# Set sensitive values as env
|
||||
export DATABASE_URL="postgres://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB"
|
||||
export DATABASE_URL="postgres://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB"
|
||||
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST"
|
||||
|
||||
# Run it
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/docker-library/postgres/blob/master/15/alpine/Dockerfile
|
||||
FROM postgres:15.6-alpine
|
||||
FROM postgres:15.7-alpine
|
||||
|
||||
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
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
bash \
|
||||
openssl \
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/docker-library/redis/blob/master/7.0/alpine/Dockerfile
|
||||
FROM redis:7.2.4-alpine
|
||||
FROM redis:7.2.5-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache openssl bash; \
|
||||
\
|
||||
# Give root a random password
|
||||
|
||||
@@ -7,6 +7,7 @@ if [ "$(sysctl -n vm.overcommit_memory)" != "1" ]; then
|
||||
fi
|
||||
|
||||
# Run redis with a password if provided
|
||||
echo "Redis has started"
|
||||
if [ -n "$REDIS_HOST_PASSWORD" ]; then
|
||||
exec redis-server --requirepass "$REDIS_HOST_PASSWORD" --loglevel warning
|
||||
else
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM python:3.12.2-alpine3.19
|
||||
FROM python:3.12.3-alpine3.19
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
@@ -10,6 +10,7 @@ ENV SKIP_VERIFY false
|
||||
ENV HPB_PATH /standalone-signaling/
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM nats:2.10.12-scratch as nats
|
||||
FROM nats:2.10.16-scratch as nats
|
||||
FROM eturnal/eturnal:1.12.0 AS eturnal
|
||||
FROM strukturag/nextcloud-spreed-signaling:1.2.3 as signaling
|
||||
FROM strukturag/nextcloud-spreed-signaling:1.3.1 as signaling
|
||||
FROM alpine:3.19.1 as janus
|
||||
|
||||
ARG JANUS_VERSION=v0.14.1
|
||||
ARG JANUS_VERSION=v0.14.2
|
||||
WORKDIR /src
|
||||
RUN set -ex; \
|
||||
apk add --no-cache \
|
||||
@@ -46,6 +46,7 @@ COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
COPY --chmod=664 supervisord.conf /supervisord.conf
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#readtimeout = 15
|
||||
|
||||
# HTTP socket write timeout in seconds.
|
||||
#writetimeout = 15
|
||||
#writetimeout = 30
|
||||
|
||||
[https]
|
||||
# IP and port to listen on for HTTPS requests.
|
||||
@@ -18,7 +18,7 @@
|
||||
#readtimeout = 15
|
||||
|
||||
# HTTPS socket write timeout in seconds.
|
||||
#writetimeout = 15
|
||||
#writetimeout = 30
|
||||
|
||||
# Certificate / private key to use for the HTTPS server.
|
||||
certificate = /etc/nginx/ssl/server.crt
|
||||
@@ -34,6 +34,12 @@ debug = false
|
||||
# room and call can be subscribed.
|
||||
#allowsubscribeany = false
|
||||
|
||||
# Comma separated list of trusted proxies (IPs or CIDR networks) that may set
|
||||
# the "X-Real-Ip" or "X-Forwarded-For" headers. If both are provided, the
|
||||
# "X-Real-Ip" header will take precedence (if valid).
|
||||
# Leave empty to allow loopback and local addresses.
|
||||
#trustedproxies =
|
||||
|
||||
[sessions]
|
||||
# Secret value used to generate checksums of sessions. This should be a random
|
||||
# string of 32 or 64 bytes.
|
||||
@@ -221,6 +227,8 @@ connectionsperhost = 8
|
||||
# register an account at "https://www.maxmind.com/en/geolite2/signup" for
|
||||
# free. See "https://dev.maxmind.com/geoip/geoip2/geolite2/" for further
|
||||
# information.
|
||||
# You can also get a free GeoIP database from https://db-ip.com/ without
|
||||
# registration. Provide the URL below in this case.
|
||||
# Leave empty to disable GeoIP lookups.
|
||||
#license =
|
||||
|
||||
|
||||
@@ -60,6 +60,10 @@ if [ -z "$TALK_MAX_STREAM_BITRATE" ]; then
|
||||
TALK_MAX_STREAM_BITRATE=1048576
|
||||
fi
|
||||
|
||||
if [ -z "$TALK_MAX_SCREEN_BITRATE" ]; then
|
||||
TALK_MAX_SCREEN_BITRATE=2097152
|
||||
fi
|
||||
|
||||
# Signling
|
||||
cat << SIGNALING_CONF > "/conf/signaling.conf"
|
||||
[http]
|
||||
@@ -85,6 +89,7 @@ connectionsperhost = 8
|
||||
url = https://${NC_DOMAIN}
|
||||
secret = ${SIGNALING_SECRET}
|
||||
maxstreambitrate = ${TALK_MAX_STREAM_BITRATE}
|
||||
maxscreenbitrate = ${TALK_MAX_SCREEN_BITRATE}
|
||||
|
||||
[nats]
|
||||
url = nats://127.0.0.1:4222
|
||||
@@ -93,6 +98,7 @@ url = nats://127.0.0.1:4222
|
||||
type = janus
|
||||
url = ws://127.0.0.1:8188
|
||||
maxstreambitrate = ${TALK_MAX_STREAM_BITRATE}
|
||||
maxscreenbitrate = ${TALK_MAX_SCREEN_BITRATE}
|
||||
SIGNALING_CONF
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -4,7 +4,9 @@ FROM containrrr/watchtower:1.7.1 as watchtower
|
||||
|
||||
FROM alpine:3.19.1
|
||||
|
||||
RUN apk add --no-cache bash
|
||||
RUN apk upgrade --no-cache -a; \
|
||||
apk add --no-cache bash
|
||||
|
||||
COPY --from=watchtower /watchtower /watchtower
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
@@ -1,68 +1,91 @@
|
||||
## Light LDAP server
|
||||
This container bundles LLDAP server and auto-configures your nextcloud instance for you.
|
||||
This container bundles LLDAP server and auto-configures your Nextcloud instance for you.
|
||||
|
||||
### Notes
|
||||
- In order to access your LLDAP web interface outside the local network, you have to set up your own reverse proxy. You can set up a reverse proxy following [these instructions](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md) OR use the [Caddy](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy) community container that will automatically configure `ldap.$NC_DOMAIN` to redirect to your Lldap. You need to point the reverse proxy at port 17170 of this server.
|
||||
- After adding and starting the container, you can log in to the lldap web interface by using the password that you can retrieve via `sudo docker inspect nextcloud-aio-lldap | grep LLDAP_JWT_SECRET`.
|
||||
- Also, you need to run the following script one time in order to activate the ldap config in nextcloud so that Nextcloud uses lldap as user backend. You can see a [nextcloud example configuration provide by LLDAP](https://github.com/lldap/lldap/blob/main/example_configs/nextcloud.md)<br>
|
||||
First, you need to retrieve the LLDAP admin password via `sudo docker inspect nextcloud-aio-lldap | grep LLDAP_LDAP_USER_PASS`. This will be used later on which you need to type in or copy and paste.
|
||||
```bash
|
||||
# Now go into the container
|
||||
sudo docker exec --user www-data -it nextcloud-aio-nextcloud bash
|
||||
```
|
||||
Now inside the container:
|
||||
```bash
|
||||
# Get Base
|
||||
BASE_DN="dc=${NC_DOMAIN//./,dc=}"
|
||||
|
||||
# Create a new empty ldap config
|
||||
CONF_NAME=$(php /var/www/html/occ ldap:create-empty-config -p)
|
||||
|
||||
# Set the ldap password
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapAgentPassword "<your-password>"
|
||||
|
||||
# Set the ldap config
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapAgentName "uid=ro_admin,ou=people,$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapBase "$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapBaseGroups "$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapBaseUsers "$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapCacheTTL 600
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapConfigurationActive 1
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapEmailAttribute "mail"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapExperiencedAdmin 0
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapGidNumber "gidNumber"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapGroupDisplayName "cn"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapGroupFilter "(&(objectclass=groupOfUniqueNames))"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapGroupFilterGroups ""
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapGroupFilterMode 0
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapGroupFilterObjectclass "groupOfUniqueNames"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapGroupMemberAssocAttr "uniqueMember"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapHost "nextcloud-aio-lldap"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapLoginFilterAttributes "uid"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapLoginFilterEmail 0
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapLoginFilterUsername 1
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapMatchingRuleInChainState "unknown"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapNestedGroups 0
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapPagingSize 500
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapPort 3890
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapTLS 0
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapUserAvatarRule "default"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapUserDisplayName "displayname"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapUserFilter "(&(objectClass=person)(uid=%uid))"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapUserFilterMode 1
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapUserFilterObjectclass "person"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapUuidGroupAttribute "auto"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" ldapUuidUserAttribute "auto"
|
||||
php /var/www/html/occ ldap:set-config "$CONF_NAME" turnOnPasswordChange 0
|
||||
|
||||
# Test the ldap config
|
||||
php /var/www/html/occ ldap:test-config "$NAME"
|
||||
|
||||
# Exit the container shell
|
||||
exit
|
||||
```
|
||||
- After adding and starting the container, you can log in to the lldap web interface by using the username `admin` and the password that you can retrieve via `sudo docker inspect nextcloud-aio-lldap | grep LLDAP_JWT_SECRET`.
|
||||
- To configure Nextcloud, you can use the generic configuration proposed below.
|
||||
- For advanced configurations, see how to configure a client with lldap https://github.com/lldap/lldap#client-configuration
|
||||
- Also, see how Nextcloud's LDAP application works https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
### Generic Nextcloud LDAP config
|
||||
Functionality with this configuration:
|
||||
- User and group management.
|
||||
- Login via username (or email) and password.
|
||||
- Profile picture sync.
|
||||
- Synchronization of administrator accounts (via the lldap_admin group).
|
||||
|
||||
> For simplicity, this configuration is done via the command line (don't worry, it's very simple).
|
||||
|
||||
First, you need to retrieve the LLDAP admin password, this will be used later on. Which you need to type in or copy and paste:
|
||||
```bash
|
||||
sudo docker inspect nextcloud-aio-lldap | grep LLDAP_LDAP_USER_PASS
|
||||
```
|
||||
|
||||
Now go into the Nextcloud container:
|
||||
```bash
|
||||
sudo docker exec --user www-data -it nextcloud-aio-nextcloud bash
|
||||
```
|
||||
Now inside the container:
|
||||
```bash
|
||||
# Get Base
|
||||
BASE_DN="dc=${NC_DOMAIN//./,dc=}"
|
||||
|
||||
# Create a new empty ldap config
|
||||
CONF_NAME=$(php /var/www/html/occ ldap:create-empty-config -p)
|
||||
|
||||
# Check that the base DN matches your domain and retrieve your configuration name
|
||||
echo "Base DN: '$BASE_DN', Config name: '$CONF_NAME'"
|
||||
|
||||
# Set the ldap password
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapAgentPassword "<your-password>"
|
||||
|
||||
# Set the ldap config: Host and connection
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapAdminGroup lldap_admin
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapAgentName "cn=admin,ou=people,$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapBase "$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapHost "ldap://nextcloud-aio-lldap"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapPort 3890
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapTLS 0
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME turnOnPasswordChange 0
|
||||
|
||||
# Set the ldap config: Users
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapBaseUsers "ou=people,$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapEmailAttribute mail
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapGidNumber gidNumber
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapLoginFilter "(&(|(objectclass=person))(|(uid=%uid)(|(mailPrimaryAddress=%uid)(mail=%uid))))"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapLoginFilterEmail 1
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapLoginFilterUsername 1
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapUserAvatarRule default
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapUserDisplayName cn
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapUserFilter "(|(objectclass=person))"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapUserFilterMode 0
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapUserFilterObjectclass person
|
||||
|
||||
# Set the ldap config: Groups
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapBaseGroups "ou=groups,$BASE_DN"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapGroupDisplayName cn
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapGroupFilter "(&(|(objectclass=groupOfUniqueNames)))"
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapGroupFilterMode 0
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapGroupFilterObjectclass groupOfUniqueNames
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapGroupMemberAssocAttr uniqueMember
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME useMemberOfToDetectMembership 1
|
||||
|
||||
# Optional : Check the configuration
|
||||
#php /var/www/html/occ ldap:show-config $CONF_NAME
|
||||
|
||||
# Test the ldap config
|
||||
php /var/www/html/occ ldap:test-config $CONF_NAME
|
||||
|
||||
# Enable ldap config
|
||||
php /var/www/html/occ ldap:set-config $CONF_NAME ldapConfigurationActive 1
|
||||
|
||||
# Exit the container shell
|
||||
exit
|
||||
```
|
||||
It's done ! All you have to do is go to the Nextcloud administration interface to see the magic of LDAP.
|
||||
|
||||
### Repository
|
||||
https://github.com/lldap/lldap
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ This container bundles Local AI and auto-configures it for you.
|
||||
```yaml
|
||||
# Stable Diffusion in NCNN with c++, supported txt2img and img2img
|
||||
- url: github:go-skynet/model-gallery/stablediffusion.yaml
|
||||
name: Stable_diffusion
|
||||
|
||||
# Port of OpenAI's Whisper model in C/C++
|
||||
- url: github:go-skynet/model-gallery/whisper-base.yaml
|
||||
@@ -18,6 +19,7 @@ This container bundles Local AI and auto-configures it for you.
|
||||
- url: github:go-skynet/model-gallery/gpt4all-j.yaml
|
||||
name: gpt4all-j
|
||||
```
|
||||
- You need to add gpt4all-j under Text Generation (Default completion model to use) in Connected Accounts in the Administration Settings in Nextcloud, the default does not work.
|
||||
- Additionally after doing so, you might want to enable or disable specific features for your models in the integration_openai settings: `https://your-nc-domain.com/settings/admin/connected-accounts`
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
This directory features containers that are built for AIO which allows to add additional functionality very easily.
|
||||
|
||||
## Disclaimers
|
||||
⚠️ This is currently beta and not stable yet!
|
||||
|
||||
All containers that are in this directory are community maintained so the responsibility is on the community to keep them updated and secure. There is no guarantee that this will be the case in the future.
|
||||
|
||||
## How to use this?
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
> [!WARNING]
|
||||
> The Stalwart server is under development.
|
||||
>
|
||||
> The stability of Stalwart services is not guaranteed.
|
||||
> Do not use this feature as a main mail server without a redundancy system and without knowledge.
|
||||
>
|
||||
> To learn or use as a secondary server enjoy it and please report bugs at [marcoambrosini/aio-stalwart](https://github.com/marcoambrosini/aio-stalwart/issues).
|
||||
|
||||
## Stalwart mail server
|
||||
This container bundles stalwart mail server and auto-configures it for you.
|
||||
|
||||
@@ -7,9 +15,8 @@ This container bundles stalwart mail server and auto-configures it for you.
|
||||
- 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`, Stalwart 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 using Maildir`, 2. choose `No, create a new directory for me` (or select LDAP if you have an LDAP server), 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.
|
||||
- See https://stalw.art/docs/directory/types/memory/ how you can easily create new user accounts. (Alternatively see https://stalw.art/docs/directory/types/ldap if you have an LDAP server). You can edit the config file with `sudo docker exec -it nextcloud-aio-stalwart vi /opt/stalwart-mail/etc/config.toml`. Also, you might want to enable logging to stdout so that you can see the stalwart logs in your container logs via `sudo docker exec -it nextcloud-aio-stalwart vi /opt/stalwart-mail/etc/common/tracing.toml` (you need to restart the container afterwards with `sudo docker restart nextcloud-aio-stalwart` in order to apply the settings).
|
||||
- Afterwards, you can visit the basic admin settings in `https://your-nc-domain.com/settings/admin` and add the your mail server for outgoing mails there.
|
||||
- After adding and starting the container, you need to run `docker logs nextcloud-aio-stalwart` to obtain the system administrator account and password. With this information, you can log in to the web interface at `https://mail.your-domain.com/login`
|
||||
- See https://stalw.art/docs/install/docker/ for next steps.
|
||||
- Additionally, you might want to install and configure [snappymail](https://apps.nextcloud.com/apps/snappymail) or [mail](https://apps.nextcloud.com/apps/mail) inside Nextcloud in order to use your mail accounts for sending and retrieving mails.
|
||||
- See https://stalw.art/docs/faq for further faq and docs on the project
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
"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",
|
||||
"image_tag": "v2",
|
||||
"internal_port": "10003",
|
||||
"restart": "unless-stopped",
|
||||
"ports": [
|
||||
{
|
||||
@@ -38,6 +38,11 @@
|
||||
"ip_binding": "",
|
||||
"port_number": "4190",
|
||||
"protocol": "tcp"
|
||||
},
|
||||
{
|
||||
"ip_binding": "%APACHE_IP_BINDING%",
|
||||
"port_number": "10003",
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"environment": [
|
||||
|
||||
29
community-containers/stalwart/upgrading.md
Normal file
29
community-containers/stalwart/upgrading.md
Normal file
@@ -0,0 +1,29 @@
|
||||
> [!NOTE]
|
||||
> Unless the starting script tells you, you have no action to do to update.
|
||||
|
||||
# UPGRADING
|
||||
|
||||
During a major server update, this message will be displayed:
|
||||
|
||||
> Your data is in an old format.
|
||||
>
|
||||
> Make a backup and see https://github.com/nextcloud/all-in-one/blob/main/community-containers/stalwart/upgrading.md
|
||||
>
|
||||
> To avoid any loss of data, Stalwart will not launch.
|
||||
|
||||
If there is no update, delete the `/opt/stalwart-mail/aio.lock` file from the container. Beware of data loss.
|
||||
|
||||
See https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md
|
||||
|
||||
> [!CAUTION]
|
||||
> Before each update don't forget to make a backup.
|
||||
|
||||
## Upgrading from 0.7.x to 0.8.x
|
||||
|
||||
Before upgrading, do a backup of your data !
|
||||
|
||||
```bash
|
||||
sudo docker run --rm -v nextcloud_aio_stalwart:/opt/stalwart-mail -it --entrypoint /usr/local/bin/stalwart-mail stalwartlabs/mail-server:v0.7.3 --config /opt/stalwart-mail/etc/config.toml --export /opt/stalwart-mail/export
|
||||
sudo docker run --rm -v nextcloud_aio_stalwart:/opt/stalwart-mail -it --entrypoint /usr/local/bin/stalwart-mail stalwartlabs/mail-server:v0.8.0 --config /opt/stalwart-mail/etc/config.toml --import /opt/stalwart-mail/export
|
||||
sudo docker run --rm -v nextcloud_aio_stalwart:/opt/stalwart-mail -it --entrypoint /bin/rm alpine /opt/stalwart-mail/aio.lock
|
||||
```
|
||||
39
compose.yaml
39
compose.yaml
@@ -12,28 +12,27 @@ services:
|
||||
- 8080:8080
|
||||
- 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# environment: # Is needed when using any of the options below
|
||||
# - AIO_DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
|
||||
# - APACHE_PORT=11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# - APACHE_IP_BINDING=127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# - BORG_RETENTION_POLICY=--keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
|
||||
# - COLLABORA_SECCOMP_DISABLED=false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
|
||||
# - NEXTCLOUD_DATADIR=/mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
|
||||
# - NEXTCLOUD_MOUNT=/mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
|
||||
# - NEXTCLOUD_UPLOAD_LIMIT=10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
|
||||
# - NEXTCLOUD_MAX_TIME=3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud
|
||||
# - NEXTCLOUD_MEMORY_LIMIT=512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud
|
||||
# - NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nexcloud container (Useful e.g. for LDAPS) See See https://github.com/nextcloud/all-in-one#how-to-trust-user-defined-certification-authorities-ca
|
||||
# - NEXTCLOUD_STARTUP_APPS=deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup
|
||||
# - NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container
|
||||
# - NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
|
||||
# - NEXTCLOUD_ENABLE_DRI_DEVICE=true # This allows to enable the /dev/dri device in the Nextcloud container. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
|
||||
# - NEXTCLOUD_KEEP_DISABLED_APPS=false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps
|
||||
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port
|
||||
# - WATCHTOWER_DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
|
||||
# AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
|
||||
# APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# APACHE_IP_BINDING: 127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
|
||||
# COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
|
||||
# NEXTCLOUD_DATADIR: /mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
|
||||
# NEXTCLOUD_MOUNT: /mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
|
||||
# NEXTCLOUD_UPLOAD_LIMIT: 10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
|
||||
# NEXTCLOUD_MAX_TIME: 3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud
|
||||
# NEXTCLOUD_MEMORY_LIMIT: 512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud
|
||||
# NEXTCLOUD_TRUSTED_CACERTS_DIR: /path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nexcloud container (Useful e.g. for LDAPS) See See https://github.com/nextcloud/all-in-one#how-to-trust-user-defined-certification-authorities-ca
|
||||
# NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup
|
||||
# NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container
|
||||
# NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
|
||||
# NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the /dev/dri device in the Nextcloud container. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
|
||||
# NEXTCLOUD_KEEP_DISABLED_APPS: false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps
|
||||
# TALK_PORT: 3478 # This allows to adjust the port that the talk container is using. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port
|
||||
# WATCHTOWER_DOCKER_SOCKET_PATH: /var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
|
||||
# networks: # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
|
||||
# - nextcloud-aio # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
|
||||
# # Uncomment the following line when using SELinux
|
||||
# security_opt: ["label:disable"]
|
||||
# security_opt: ["label:disable"] # Is needed when using SELinux
|
||||
|
||||
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
|
||||
|
||||
@@ -3,17 +3,224 @@ It is possible to run multiple instances of AIO on one server.
|
||||
|
||||
There are two ways to achieve this: The normal way is creating multiple VMs, installing AIO in [reverse proxy mode](./reverse-proxy.md) in each of them and having one reverse proxy in front of them that points to each VM (you also need to [use a different `TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each of them). The second and more advanced way is creating multiple users on the server and using docker rootless for each of them in order to install multiple instances on the same server.
|
||||
|
||||
Below is described more in detail how the the second way works.
|
||||
|
||||
## Run multiple AIO instances on the same server with docker rootless
|
||||
1. Create as many linux users as you need first. The easiest way is to use `sudo adduser` and follow the setup for that. Make sure to create a strong unique password for each of them and write it down!
|
||||
1. Log in as each of the users by opening a new SSH connection as the user and install docker rootless for each of them by following step 0-1 and 3-4 of the [docker rootless documentation](./docker-rootless.md) (you can skip step 2 in this case).
|
||||
1. Then install AIO in reverse proxy mode by using the command that is descriebed in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `WATCHTOWER_DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
|
||||
1. Then install AIO in reverse proxy mode by using the command that is described in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `WATCHTOWER_DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
|
||||
**⚠️ Please note:** If you want to adjust the `NEXTCLOUD_DATADIR`, make sure to apply the correct permissions to the chosen path as documented at the bottom of the [docker rootless documentation](./docker-rootless.md). Also for the built-in backup to work, the target path needs to have the correct permissions as documented there, too.
|
||||
1. Now install your webserver of choice on the host system. It is recommended to use caddy for this as it is by far the easiest solution. You can do so by following https://caddyserver.com/docs/install#debian-ubuntu-raspbian or below. (It needs to be installed directly on the host or on a different server in the same network).
|
||||
1. Next create your Caddyfile with multiple entries and domains for the different instances like described in step 1 of the [reverse proxy documentation](./reverse-proxy.md). Obviously each domain needs to point correctly to the chosen `APACHE_PORT` that you've configured before. Then start Caddy which should automatically get the needed certificates for you if your domains are configured correctly and ports 80 and 443 are forwarded to your server.
|
||||
1. Now open each of the AIO interfaces by opening `https://ip.address.of.this.server:8080` or e.g. `https://ip.address.of.this.server:8081` or as chosen during step 3 of this documentation.
|
||||
1. Finally type in the domain that you've configured for each of the instances during step 5 of this documentation and you are done.
|
||||
1. Please also do not forget to open/forward each chosen `TALK_PORT` UPD and TCP in your firewall/router as otherwise Talk will not work correctly!
|
||||
1. Please also do not forget to open/forward each chosen `TALK_PORT` UDP and TCP in your firewall/router as otherwise Talk will not work correctly!
|
||||
|
||||
Now everything should be set up correctly and you should have created multiple working instances of AIO on the same server!
|
||||
|
||||
|
||||
## Run multiple AIO instances on the same server inside their own virtual machines
|
||||
This guide will walk you through creating and configuring two (or more) Debian-based VMs (with "reverse proxy mode" Nextcloud AIO installed in each VM), behind one Caddy reverse proxy, all running on one host physical machine (like a laptop or desktop PC). It's highly recommend to follow the steps in order. Steps 1 through 4 will need to be repeated. Steps 5 through 8 only need to be completed once. All commands are expected to be run as root.
|
||||
|
||||
<details><summary><strong>PLEASE READ: A few expectations about your network</strong></summary>
|
||||
This guide assumes that you have forwarded ports 443 and 8443 to your host physical machine via your router's configuration page, and either set up Dynamic DNS or obtained a static outbound IP address from your ISP. If this is not the case, or if you are brand-new to networking, you probably should not proceed with this guide, unless you are just using it for educational purposes. Proper network setup and security is critical when it comes to keeping your data safe. You may consider hosting using a VPS instead, or choosing one of <a href="https://nextcloud.com/providers/">Nextcloud's trusted providers.</a>
|
||||
</details>
|
||||
|
||||
<details><summary><strong>A note for VPS users</strong></summary>
|
||||
If you want to do this on a VPS, and your VPS is KVM-based and provides a static IP address, you can likely benefit from this guide too! Simply replace the words "host physical machine" with "VPS" and follow along.
|
||||
</details>
|
||||
|
||||
**Before starting:** Make sure your host physical machine has enough resources. A host machine with 8GB RAM and 100GB storage is sufficient for running two fairly minimal VMs, with 2GB RAM and 32GB storage allocated to each VM. This guide assumes you have these resources at the minimum. This is fine for just testing the setup, but you will probably want to allocate more resources to your VMs if you plan to use this for day-to-day use.
|
||||
If your host machine has more than 8GB memory available, and you plan to enable any of the optional containers (Nextcloud Office, Talk, Imaginary, etc.) in any of your instances, then you should definitely allocate more memory to the VM hosting that instance. In other words, before turning on any extra features inside a particular AIO interface, make sure you've first allocated enough resources to the VM that the instance is running inside. If in doubt, the AIO interface itself gives great recommendations for extra CPU and RAM allocation.
|
||||
|
||||
**Additional prerequisites:** Your host physical machine needs to have virtualization enabled in it's UEFI/BIOS. It also needs a few tools installed in order to create VMs. Assuming your host machine is a bare-bones Ubuntu or Debian Linux server without a desktop environment installed, the easiest way to create VMs is to install *QEMU*, *virsh*, *virt-install*, and a few extra packages to support UEFI booting and network config ([more info](https://wiki.debian.org/KVM)). You only need to do this once. To do this, run this command (**on the host physical machine**):
|
||||
<!--
|
||||
```shell
|
||||
# For host machines running Ubuntu Server:
|
||||
apt install --no-install-recommends qemu-system libvirt-clients libvirt-daemon-system virtinst ovmf bridge-utils
|
||||
```
|
||||
```shell
|
||||
# For host machines running Debian:
|
||||
apt install --no-install-recommends qemu-system qemu-utils libvirt-clients libvirt-daemon-system virtinst ovmf bridge-utils dnsmasq-base
|
||||
```
|
||||
-->
|
||||
```shell
|
||||
# For host machines running Ubuntu Server or Debian:
|
||||
apt install --no-install-recommends qemu-system qemu-utils libvirt-clients libvirt-daemon-system virtinst ovmf bridge-utils dnsmasq-base
|
||||
```
|
||||
|
||||
**Let's begin!** This guide assumes that you have two domains where you would like to host two individual AIO instances (one instance per domain). Let's call these domains `example1.com` and `example2.com`. Therefore, we'll create two VMs named `example1-com` and `example2-com` (These are the VM names we'll use below in step 1).
|
||||
|
||||
**Once you're ready, follow steps 1-4 below to set up your VMs. You will configure them one at a time.**
|
||||
|
||||
1. Choose a name for your VM. A good choice is to name each VM the same as the domain name that will be used to access it.
|
||||
2. Choose the distribution you'd like to install within the VM:
|
||||
<details><summary><strong>Ubuntu Server 22.04.4 LTS</strong></summary>
|
||||
<h4>Downloading the .ISO image</h4>
|
||||
You must first download an .ISO image to your host machine, and then provide virt-install with the path to that image.
|
||||
<!-- This step is required because Ubuntu no longer hosts their "Legacy Ubuntu Server Installer" images, meaning we can no longer pass a URL to virt-install to use as a location. -->
|
||||
<pre><code># Skip this part if you've already downloaded this image
|
||||
curl -o /tmp/ubuntu-22.04.4-live-server-amd64.iso https://releases.ubuntu.com/jammy/ubuntu-22.04.4-live-server-amd64.iso
|
||||
</code></pre>
|
||||
<em>Note: You may choose a different place to store the .ISO file, but it needs to be somewhere accessible by QEMU. "/tmp" and "/home" work well, but choosing a location like "/root" will cause the next command to fail.</em>
|
||||
<h4>Creating the VM</h4>
|
||||
Now create the Ubuntu Server VM (Don't forget to replace [VM_NAME]):
|
||||
<pre><code>virt-install \
|
||||
--name [VM_NAME] \
|
||||
--virt-type kvm \
|
||||
--location /tmp/ubuntu-22.04.4-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd \
|
||||
--os-variant ubuntujammy \
|
||||
--disk size=32 \
|
||||
--memory 2048 \
|
||||
--graphics none \
|
||||
--console pty,target_type=serial \
|
||||
--extra-args "console=ttyS0" \
|
||||
--autostart \
|
||||
--boot uefi
|
||||
</code></pre>
|
||||
<h4>Using a different version of Ubuntu Server</h4>
|
||||
To use a different Ubuntu Server release, visit <a href="https://releases.ubuntu.com">this page</a> and find the version you want. You will need to adjust the filename and URL for the curl command, and the location and os-variant for the virt-install command, accordingly.
|
||||
</details>
|
||||
<details><summary><strong>Debian 11</strong></summary>
|
||||
<h4>Creating the VM</h4>
|
||||
Create the Debian VM (Don't forget to replace [VM_NAME]):
|
||||
<pre><code>virt-install \
|
||||
--name [VM_NAME] \
|
||||
--virt-type kvm \
|
||||
--location http://deb.debian.org/debian/dists/bullseye/main/installer-amd64/ \
|
||||
--os-variant debian11 \
|
||||
--disk size=32 \
|
||||
--memory 2048 \
|
||||
--graphics none \
|
||||
--console pty,target_type=serial \
|
||||
--extra-args "console=ttyS0" \
|
||||
--autostart \
|
||||
--boot uefi
|
||||
</code></pre>
|
||||
</details>
|
||||
<details><summary><strong>Debian 12</strong></summary>
|
||||
<h4>Creating the VM</h4>
|
||||
Create the Debian VM (Don't forget to replace [VM_NAME]):
|
||||
<pre><code># If the os-variant "debian12" is unknown, try "debiantesting" instead
|
||||
virt-install \
|
||||
--name [VM_NAME] \
|
||||
--virt-type kvm \
|
||||
--location http://deb.debian.org/debian/dists/bookworm/main/installer-amd64/ \
|
||||
--os-variant debian12 \
|
||||
--disk size=32 \
|
||||
--memory 2048 \
|
||||
--graphics none \
|
||||
--console pty,target_type=serial \
|
||||
--extra-args "console=ttyS0" \
|
||||
--autostart \
|
||||
--boot uefi
|
||||
</code></pre>
|
||||
</details>
|
||||
<!--To learn more about virt-install or automating this process, see <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-guest_virtual_machine_installation_overview-creating_guests_with_virt_install">this guide</a>.-->
|
||||
3. Navigate through the text-based installer. Most options can remain as default, but here are some tips:
|
||||
<details><summary><strong>For the Ubuntu Server installer</strong></summary>
|
||||
When asked about the "type of installation", you can leave the default "Ubuntu Server" without third-party drivers. You can leave the HTTP proxy information blank. In the "Profile Configuration" section, you can set "Your servers name" (hostname) to the same value as the name you gave to your VM (for example, "example1-com"). The installer will only let you create a non-root user. Note down the password you use here! You may skip enabling Ubuntu Pro. You can allow the partitioner to use the entire disk, this only uses the virtual disk that you defined above in step 2. You'll eventually be given the option to install additional software. Although "Nextcloud" is listed here, you almost certainly do <strong>not</strong> want to select this option, since you are setting up Nextcloud AIO. You'll be asked about installing "SSH server", this is entirely optional (This lets you easily SSH into the VM in the future in case you have to perform any maintenance, but even if you do not install an SSH server, you can still log in using the "virsh console" command). Finally, disregard the "[FAILED] Failed unmounting /cdrom." message, and press return.
|
||||
</details>
|
||||
<details><summary><strong>For the Debian installer</strong></summary>
|
||||
When asked, you can set the hostname to the same value as the name you gave to your VM (for example, "example1-com"). You can leave the domain name and HTTP proxy information blank. Allow the installer to create both a root and a non-root user. Note down the password(s) you use here! You can allow the partitioner to use the entire disk, this only uses the virtual disk that you defined above in step 2. When tasksel (Software selection) runs and asks if you want to install additional software, use spacebar and your arrow keys to un-check the "Debian desktop environment" and "GNOME" options. The "SSH server" option is entirely optional (This lets you easily SSH into the VM in the future in case you have to perform any maintenance, but even if you do not install an SSH server, you can still log in using the "virsh console" command). Make sure "standard system utilities" is also checked. Hit tab to select "Continue". Finally, disregard the warning about GRUB, allow it to install to your "primary drive" (again, it's only virtual, and this only applies to the VM- this will not affect the boot configuration of your host physical machine) and select "/dev/vda" for the bootable device.
|
||||
</details>
|
||||
4. Configure your new VM:
|
||||
|
||||
After it has finished installing, the VM will have rebooted and presented you with a login prompt. For Debian, just use `root` as the username, and enter the password you chose during the installation process. Ubuntu restricts root account access, so you'll need to first login with your non-root user, and then run `sudo su -` to elevate your privileges.
|
||||
|
||||
We will now run a few commands to install docker and AIO in reverse proxy mode! As with any other commands, carefully read and try your best to understand them before running them.
|
||||
|
||||
**Each time you reach this step and run the `docker run` command below, you'll need to increment the `TALK_PORT` value. For example: 3478, 3479, etc... You may use other values as long as they don't conflict, and make sure they are [greater than 1024](https://github.com/nextcloud/all-in-one/discussions/2517). Be sure to note down the Talk port number you've assigned to this VM/AIO instance. You will need it later if you decide to enable Nextcloud Talk.**
|
||||
|
||||
Run these commands (**on the VM**):
|
||||
```shell
|
||||
apt install -y curl
|
||||
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
|
||||
# Make sure you increment the TALK_PORT value every time you run this!
|
||||
docker run \
|
||||
--init \
|
||||
--sig-proxy=false \
|
||||
--name nextcloud-aio-mastercontainer \
|
||||
--restart always \
|
||||
--publish 8080:8080 \
|
||||
--env APACHE_PORT=11000 \
|
||||
--env APACHE_IP_BINDING=0.0.0.0 \
|
||||
--env TALK_PORT=3478 \
|
||||
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||
nextcloud/all-in-one:latest
|
||||
```
|
||||
The last command may take a few minutes. When it's finished, you should see a success message, saying "Initial startup of Nextcloud All-in-One complete!". Now exit the console session with `Ctrl + [c]`. This concludes the setup for this particular VM.
|
||||
|
||||
|
||||
---
|
||||
6. Go ahead and run through steps 1-4 again in order to set up your second VM. When you're finished, proceed down to step 6. *(Note: If you downloaded the Ubuntu .ISO image and no longer need it, you may delete it now.)*
|
||||
7. Almost done! All that's left is configuring your reverse proxy. To do this, you first need to [install it](https://caddyserver.com/docs/install#debian-ubuntu-raspbian). Run (**on the host physical machine**):
|
||||
```shell
|
||||
apt update -y
|
||||
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
apt update -y
|
||||
apt install -y caddy
|
||||
```
|
||||
These commands will ensure that your system is up-to-date and install the latest stable version of Caddy via it's official binary source.
|
||||
8. To configure Caddy, you need to know the IP address assigned to each VM. Run (**on the host physical machine**):
|
||||
```shell
|
||||
virsh net-dhcp-leases default
|
||||
```
|
||||
This will show you the VMs you set up, and the IP address corresponding to each of them. Note down each IP and corresponding hostname.
|
||||
Finally, you will configure Caddy using this information. Open the default Caddyfile with a text editor:
|
||||
```shell
|
||||
nano /etc/caddy/Caddyfile
|
||||
```
|
||||
Replace everything in this file with the following configuration. Don't forget to edit this sample configuration and substitute in your own domain names and IP addresses. `[DOMAIN_NAME_*]` should be a domain name like `example1.com`, and `[IP_ADDRESS_*]` should be a local IPv4 address like `192.168.122.225`.
|
||||
```shell
|
||||
# Virtual machine #1 - "example1-com"
|
||||
https://[DOMAIN_NAME_1]:8443 {
|
||||
reverse_proxy https://[IP_ADDRESS_1]:8080 {
|
||||
transport http {
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
}
|
||||
https://[DOMAIN_NAME_1]:443 {
|
||||
reverse_proxy [IP_ADDRESS_1]:11000
|
||||
}
|
||||
|
||||
# Virtual machine #2 - "example2-com"
|
||||
https://[DOMAIN_NAME_2]:8443 {
|
||||
reverse_proxy https://[IP_ADDRESS_2]:8080 {
|
||||
transport http {
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
}
|
||||
https://[DOMAIN_NAME_2]:443 {
|
||||
reverse_proxy [IP_ADDRESS_2]:11000
|
||||
}
|
||||
|
||||
# (Add more configurations here if you set up more than two VMs!)
|
||||
```
|
||||
After making this change, you'll need to restart Caddy:
|
||||
```shell
|
||||
systemctl restart caddy
|
||||
```
|
||||
9. That's it! Now, all that's left is to set up your instances through the AIO interface as usual by visiting `https://example1.com:8443` and `https://example2.com:8443` in a browser. Once you're finished going through each setup, you can access your new instances simply through their domain names. You can host as many instances with as many domain names as you want this way, as long as you have enough system resources. Enjoy!
|
||||
|
||||
<details><summary><strong>A few extra tips for managing this setup</strong></summary>
|
||||
<ul>
|
||||
<li>You can easily connect to a VM to perform maintenance using this command (<strong>on the host physical machine</strong>): <pre><code>virsh console --domain [VM_NAME]</code></pre></li>
|
||||
<li>If you chose to install an SSH Server, you can SSH in using this command (<strong>on the host physical machine</strong>): <pre><code>ssh [NONROOT_USER]@[IP_ADDRESS] # By default, OpenSSH does not allow logging in as root</code></pre></li>
|
||||
<li>If you mess up the configuration of a VM, you may wish to completely delete it and start fresh with a new one. <strong>THIS WILL DELETE ALL DATA ASSOCIATED WITH THE VM INCLUDING ANYTHING IN YOUR AIO DATADIR!</strong> If you are sure you would like to do this, run (<strong>on the host physical machine</strong>): <pre><code>virsh destroy --domain [VM_NAME] ; virsh undefine --nvram --domain [VM_NAME] && rm -rfi /var/lib/libvirt/images/[VM_NAME].qcow2</code></pre></li>
|
||||
<li>Using Nextcloud Talk will require some extra configuration. Back when you set up your VMs, they were (by default) configured with NAT, meaning they are in their own subnet. The VMs must each instead be bridged, so that your router may directly "see" them (as if they were real, physical devices on your network), and each AIO instance inside each VM must be configured with a different Talk port (like 3478, 3479, etc.). You should have already set these port numbers (back when you first configured the VM in step 4 above), but if you still need to set (or want to change) these values, you can remove the mastercontainer and re-run the initial "docker run" command with a modified Talk port <a href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port">like so</a>. Then, the Talk port for EACH instance needs to be forwarded in your router's settings DIRECTLY to the VM hosting the instance (completely bypassing your host physical machine/reverse proxy). And finally, inside an admin-privileged account (such as the default "admin" account) in each instance, you must visit <strong>https://[DOMAIN_NAME]/settings/admin/talk</strong> then find the STUN/TURN Settings, and from there set the proper values. If this is too complicated, it may be easier to use public STUN/TURN servers, but I have not tested any of this, rather I'm just sharing what I have found so far (more info available <a href="https://github.com/nextcloud/all-in-one/discussions/2517">here</a>). If you have figured this out or if any of this information is incorrect, please edit this section!</li>
|
||||
<li>Configuring daily automatic backups is a bit more involved with this setup. But for the occasional manual borg backup, you can connect a physical SSD/HDD via a cheap USB SATA adapter/dock to a free USB port on your host physical machine, and then use these commands to pass the disk through to a VM of your choosing (<strong>on the host physical machine and on the VM</strong>): <pre><code>virsh attach-device --live --domain [VM_NAME] --file [USB_DEVICE_DEFINITION.xml]
|
||||
virsh console --domain [VM_NAME]
|
||||
# (Login to the VM with root privileges)
|
||||
mkdir -p /mnt/[MOUNT_NAME]
|
||||
mount /dev/disk/by-label/[DISK_NAME] /mnt/[MOUNT_NAME]</code></pre></li>
|
||||
To create the XML device definition file, see <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_administration_guide/sect-managing_guest_virtual_machines_with_virsh-attaching_and_updating_a_device_with_virsh">this short guide</a>. An SSD/HDD is recommended, but nothing is stopping you from using something as simple as a flash drive for testing if you really want. Finally, to actually perform a manual backup, make sure your disk is properly mounted and then simply use the AIO interface to perform the backup.
|
||||
<li>If you want to shave off around 8-10 seconds of total boot time when you reboot your host physical machine, a simple trick is to lower the GRUB_TIMEOUT from the default five seconds to one second, on both the host physical machine and each of the VMs. You can also remove the delay, but it's generally safer to leave at least one second. (Always be extremely careful when editing GRUB config, especially on the host physical machine, as an incorrect configuration can prevent your device from booting!)</li>
|
||||
</ul>
|
||||
</details>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: nextcloud-aio-helm-chart
|
||||
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
|
||||
version: 8.2.0-dev
|
||||
version: 8.2.1
|
||||
apiVersion: v2
|
||||
keywords:
|
||||
- latest
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-apache
|
||||
name: nextcloud-aio-apache
|
||||
@@ -19,7 +19,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-apache
|
||||
@@ -65,7 +65,7 @@ spec:
|
||||
value: nextcloud-aio-talk
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-apache:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-apache:20240502_104630-latest"
|
||||
name: nextcloud-aio-apache
|
||||
ports:
|
||||
- containerPort: {{ .Values.APACHE_PORT }}
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-apache
|
||||
name: nextcloud-aio-apache
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-clamav
|
||||
name: nextcloud-aio-clamav
|
||||
@@ -20,7 +20,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-clamav
|
||||
@@ -60,7 +60,7 @@ spec:
|
||||
value: "90"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-clamav:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-clamav:20240502_104630-latest"
|
||||
name: nextcloud-aio-clamav
|
||||
ports:
|
||||
- containerPort: 3310
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-clamav
|
||||
name: nextcloud-aio-clamav
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-collabora
|
||||
name: nextcloud-aio-collabora
|
||||
@@ -18,7 +18,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-collabora
|
||||
@@ -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: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-collabora:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-collabora:20240502_104630-latest"
|
||||
name: nextcloud-aio-collabora
|
||||
ports:
|
||||
- containerPort: 9980
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-collabora
|
||||
name: nextcloud-aio-collabora
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-database
|
||||
name: nextcloud-aio-database
|
||||
@@ -19,7 +19,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-database
|
||||
@@ -71,7 +71,7 @@ spec:
|
||||
value: nextcloud
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-postgresql:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-postgresql:20240502_104630-latest"
|
||||
name: nextcloud-aio-database
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-database
|
||||
name: nextcloud-aio-database
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||
name: nextcloud-aio-fulltextsearch
|
||||
@@ -20,7 +20,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||
@@ -61,7 +61,7 @@ spec:
|
||||
value: basic
|
||||
- name: xpack.security.enabled
|
||||
value: "false"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-fulltextsearch:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-fulltextsearch:20240502_104630-latest"
|
||||
name: nextcloud-aio-fulltextsearch
|
||||
ports:
|
||||
- containerPort: 9200
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||
name: nextcloud-aio-fulltextsearch
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-imaginary
|
||||
name: nextcloud-aio-imaginary
|
||||
@@ -18,7 +18,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-imaginary
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
value: "{{ .Values.IMAGINARY_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-imaginary:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-imaginary:20240502_104630-latest"
|
||||
name: nextcloud-aio-imaginary
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-imaginary
|
||||
name: nextcloud-aio-imaginary
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-nextcloud
|
||||
name: nextcloud-aio-nextcloud
|
||||
@@ -19,7 +19,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-nextcloud
|
||||
@@ -84,6 +84,8 @@ spec:
|
||||
value: "{{ .Values.ADDITIONAL_TRUSTED_DOMAIN }}"
|
||||
- name: SERVERINFO_TOKEN
|
||||
value: "{{ .Values.SERVERINFO_TOKEN }}"
|
||||
- name: NEXTCLOUD_DEFAULT_QUOTA
|
||||
value: "{{ .Values.NEXTCLOUD_DEFAULT_QUOTA }}"
|
||||
- name: ADDITIONAL_APKS
|
||||
value: "{{ .Values.NEXTCLOUD_ADDITIONAL_APKS }}"
|
||||
- name: ADDITIONAL_PHP_EXTENSIONS
|
||||
@@ -170,7 +172,7 @@ spec:
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
- name: UPDATE_NEXTCLOUD_APPS
|
||||
value: "{{ .Values.UPDATE_NEXTCLOUD_APPS }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-nextcloud:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-nextcloud:20240502_104630-latest"
|
||||
name: nextcloud-aio-nextcloud
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-nextcloud
|
||||
name: nextcloud-aio-nextcloud
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-notify-push
|
||||
name: nextcloud-aio-notify-push
|
||||
@@ -19,7 +19,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-notify-push
|
||||
@@ -56,7 +56,7 @@ spec:
|
||||
value: nextcloud-aio-redis
|
||||
- name: REDIS_HOST_PASSWORD
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-notify-push:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-notify-push:20240502_104630-latest"
|
||||
name: nextcloud-aio-notify-push
|
||||
ports:
|
||||
- containerPort: 7867
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-notify-push
|
||||
name: nextcloud-aio-notify-push
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-onlyoffice
|
||||
name: nextcloud-aio-onlyoffice
|
||||
@@ -20,7 +20,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-onlyoffice
|
||||
@@ -49,7 +49,7 @@ spec:
|
||||
value: "{{ .Values.ONLYOFFICE_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-onlyoffice:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-onlyoffice:20240502_104630-latest"
|
||||
name: nextcloud-aio-onlyoffice
|
||||
ports:
|
||||
- containerPort: 80
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-onlyoffice
|
||||
name: nextcloud-aio-onlyoffice
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-redis
|
||||
name: nextcloud-aio-redis
|
||||
@@ -19,7 +19,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-redis
|
||||
@@ -44,7 +44,7 @@ spec:
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-redis:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-redis:20240502_104630-latest"
|
||||
name: nextcloud-aio-redis
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-redis
|
||||
name: nextcloud-aio-redis
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-talk
|
||||
name: nextcloud-aio-talk
|
||||
@@ -18,7 +18,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-talk
|
||||
@@ -27,6 +27,8 @@ spec:
|
||||
- env:
|
||||
- name: TALK_MAX_STREAM_BITRATE
|
||||
value: "{{ .Values.TALK_MAX_STREAM_BITRATE }}"
|
||||
- name: TALK_MAX_SCREEN_BITRATE
|
||||
value: "{{ .Values.TALK_MAX_SCREEN_BITRATE }}"
|
||||
- name: INTERNAL_SECRET
|
||||
value: "{{ .Values.TALK_INTERNAL_SECRET }}"
|
||||
- name: NC_DOMAIN
|
||||
@@ -39,8 +41,7 @@ spec:
|
||||
value: "{{ .Values.TURN_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk:develop"
|
||||
imagePullPolicy: Always
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk:20240502_104630-latest"
|
||||
name: nextcloud-aio-talk
|
||||
ports:
|
||||
- containerPort: {{ .Values.TALK_PORT }}
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-talk-recording
|
||||
name: nextcloud-aio-talk-recording
|
||||
@@ -18,7 +18,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.network/nextcloud-aio: "true"
|
||||
io.kompose.service: nextcloud-aio-talk-recording
|
||||
@@ -33,7 +33,7 @@ spec:
|
||||
value: "{{ .Values.RECORDING_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk-recording:20240404_082330-latest"
|
||||
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk-recording:20240502_104630-latest"
|
||||
name: nextcloud-aio-talk-recording
|
||||
ports:
|
||||
- containerPort: 1234
|
||||
|
||||
@@ -4,7 +4,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-talk-recording
|
||||
name: nextcloud-aio-talk-recording
|
||||
|
||||
@@ -5,7 +5,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-talk
|
||||
name: nextcloud-aio-talk-public
|
||||
@@ -30,7 +30,7 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml --namespace "{{ .Values.NAMESPACE }}"
|
||||
kompose.version: 1.32.0 (765fde254)
|
||||
kompose.version: 1.33.0 (3ce457399)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-talk
|
||||
name: nextcloud-aio-talk
|
||||
|
||||
@@ -288,6 +288,8 @@ cat << EOL > /tmp/additional.config
|
||||
value: "{{ .Values.ADDITIONAL_TRUSTED_DOMAIN }}"
|
||||
- name: SERVERINFO_TOKEN
|
||||
value: "{{ .Values.SERVERINFO_TOKEN }}"
|
||||
- name: NEXTCLOUD_DEFAULT_QUOTA
|
||||
value: "{{ .Values.NEXTCLOUD_DEFAULT_QUOTA }}"
|
||||
EOL
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*nextcloud-deployment.yaml' -exec sed -i "/^.*\- env:/r /tmp/additional.config" \{} \;
|
||||
@@ -304,6 +306,8 @@ find ./ -name '*apache-deployment.yaml' -exec sed -i "/^.*\- env:/r /tmp/additio
|
||||
cat << EOL > /tmp/additional-talk.config
|
||||
- name: TALK_MAX_STREAM_BITRATE
|
||||
value: "{{ .Values.TALK_MAX_STREAM_BITRATE }}"
|
||||
- name: TALK_MAX_SCREEN_BITRATE
|
||||
value: "{{ .Values.TALK_MAX_SCREEN_BITRATE }}"
|
||||
EOL
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*talk-deployment.yaml' -exec sed -i "/^.*\- env:/r /tmp/additional-talk.config" \{} \;
|
||||
@@ -356,6 +360,7 @@ SERVERINFO_TOKEN: # This allows to set the serverinfo app token for monit
|
||||
APPS_ALLOWLIST: # This allows to configure allowed apps that will be shown in Nextcloud's Appstore. You need to enter the app-IDs of the apps here and separate them with spaces. E.g. 'files richdocuments'
|
||||
ADDITIONAL_TRUSTED_PROXY: # Allows to add one additional ip-address to Nextcloud's trusted proxies and to the Office WOPI-allowlist automatically. Set it e.g. like this: 'your.public.ip-address'. You can also use an ip-range here.
|
||||
ADDITIONAL_TRUSTED_DOMAIN: # Allows to add one domain to Nextcloud's trusted domains and also generates a certificate automatically for it
|
||||
NEXTCLOUD_DEFAULT_QUOTA: "10 GB" # Allows to adjust the default quota that will be taken into account in Nextcloud for new users. Setting it to "unlimited" will set it to unlimited
|
||||
SMTP_HOST: # (empty by default): The hostname of the SMTP server.
|
||||
SMTP_SECURE: # (empty by default): Set to 'ssl' to use SSL, or 'tls' to use STARTTLS.
|
||||
SMTP_PORT: # (default: '465' for SSL and '25' for non-secure connections): Optional port for the SMTP connection. Use '587' for an alternative port for STARTTLS.
|
||||
@@ -365,6 +370,7 @@ SMTP_PASSWORD: # (empty by default): The password for the authentication
|
||||
MAIL_FROM_ADDRESS: # (not set by default): Set the local-part for the 'from' field in the emails sent by Nextcloud.
|
||||
MAIL_DOMAIN: # (not set by default): Set a different domain for the emails than the domain where Nextcloud is installed.
|
||||
TALK_MAX_STREAM_BITRATE: "1048576" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
TALK_MAX_SCREEN_BITRATE: "2097152" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
|
||||
IMAGE_MIRROR_PREFIX: # Setting this allows you to pull Nextcloud images through a mirror registry.
|
||||
NEXTCLOUD_IMAGE_ORG: nextcloud # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons.
|
||||
|
||||
@@ -53,6 +53,7 @@ SERVERINFO_TOKEN: # This allows to set the serverinfo app token for monit
|
||||
APPS_ALLOWLIST: # This allows to configure allowed apps that will be shown in Nextcloud's Appstore. You need to enter the app-IDs of the apps here and separate them with spaces. E.g. 'files richdocuments'
|
||||
ADDITIONAL_TRUSTED_PROXY: # Allows to add one additional ip-address to Nextcloud's trusted proxies and to the Office WOPI-allowlist automatically. Set it e.g. like this: 'your.public.ip-address'. You can also use an ip-range here.
|
||||
ADDITIONAL_TRUSTED_DOMAIN: # Allows to add one domain to Nextcloud's trusted domains and also generates a certificate automatically for it
|
||||
NEXTCLOUD_DEFAULT_QUOTA: "10 GB" # Allows to adjust the default quota that will be taken into account in Nextcloud for new users. Setting it to "unlimited" will set it to unlimited
|
||||
SMTP_HOST: # (empty by default): The hostname of the SMTP server.
|
||||
SMTP_SECURE: # (empty by default): Set to 'ssl' to use SSL, or 'tls' to use STARTTLS.
|
||||
SMTP_PORT: # (default: '465' for SSL and '25' for non-secure connections): Optional port for the SMTP connection. Use '587' for an alternative port for STARTTLS.
|
||||
@@ -62,6 +63,7 @@ SMTP_PASSWORD: # (empty by default): The password for the authentication
|
||||
MAIL_FROM_ADDRESS: # (not set by default): Set the local-part for the 'from' field in the emails sent by Nextcloud.
|
||||
MAIL_DOMAIN: # (not set by default): Set a different domain for the emails than the domain where Nextcloud is installed.
|
||||
TALK_MAX_STREAM_BITRATE: "1048576" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
TALK_MAX_SCREEN_BITRATE: "2097152" # This allows to adjust the max stream bitrate of the talk hpb
|
||||
|
||||
IMAGE_MIRROR_PREFIX: # Setting this allows you to pull Nextcloud images through a mirror registry.
|
||||
NEXTCLOUD_IMAGE_ORG: nextcloud # Setting this allows you to change the image's org name in case a different image needs to be used e.g. for compliance reasons.
|
||||
|
||||
77
php/composer.lock
generated
77
php/composer.lock
generated
@@ -775,20 +775,20 @@
|
||||
},
|
||||
{
|
||||
"name": "psr/http-factory",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-factory.git",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35"
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0.0",
|
||||
"php": ">=7.1",
|
||||
"psr/http-message": "^1.0 || ^2.0"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -812,7 +812,7 @@
|
||||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interfaces for PSR-7 HTTP message factories",
|
||||
"description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
|
||||
"keywords": [
|
||||
"factory",
|
||||
"http",
|
||||
@@ -824,9 +824,9 @@
|
||||
"response"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-factory/tree/1.0.2"
|
||||
"source": "https://github.com/php-fig/http-factory"
|
||||
},
|
||||
"time": "2023-04-10T20:10:41+00:00"
|
||||
"time": "2024-04-15T12:06:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
@@ -1263,31 +1263,31 @@
|
||||
},
|
||||
{
|
||||
"name": "slim/twig-view",
|
||||
"version": "3.3.0",
|
||||
"version": "3.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/slimphp/Twig-View.git",
|
||||
"reference": "df6dd6af6bbe28041be49c9fb8470c2e9b70cd98"
|
||||
"reference": "1b351536b9a07ed90a3563ee9d71a987c5d74610"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/slimphp/Twig-View/zipball/df6dd6af6bbe28041be49c9fb8470c2e9b70cd98",
|
||||
"reference": "df6dd6af6bbe28041be49c9fb8470c2e9b70cd98",
|
||||
"url": "https://api.github.com/repos/slimphp/Twig-View/zipball/1b351536b9a07ed90a3563ee9d71a987c5d74610",
|
||||
"reference": "1b351536b9a07ed90a3563ee9d71a987c5d74610",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4 || ^8.0",
|
||||
"psr/http-message": "^1.0",
|
||||
"slim/slim": "^4.9",
|
||||
"symfony/polyfill-php81": "^1.23",
|
||||
"twig/twig": "^3.3"
|
||||
"psr/http-message": "^1.1 || ^2.0",
|
||||
"slim/slim": "^4.12",
|
||||
"symfony/polyfill-php81": "^1.29",
|
||||
"twig/twig": "^3.8"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpspec/prophecy-phpunit": "^2.0",
|
||||
"phpstan/phpstan": "^1.3.0",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"phpstan/phpstan": "^1.10.59",
|
||||
"phpunit/phpunit": "^9.6",
|
||||
"psr/http-factory": "^1.0",
|
||||
"squizlabs/php_codesniffer": "^3.6"
|
||||
"squizlabs/php_codesniffer": "^3.9"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@@ -1322,22 +1322,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/slimphp/Twig-View/issues",
|
||||
"source": "https://github.com/slimphp/Twig-View/tree/3.3.0"
|
||||
"source": "https://github.com/slimphp/Twig-View/tree/3.4.0"
|
||||
},
|
||||
"time": "2022-01-02T05:14:45+00:00"
|
||||
"time": "2024-04-28T20:36:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
"version": "v3.4.0",
|
||||
"version": "v3.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
|
||||
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1346,7 +1346,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.4-dev"
|
||||
"dev-main": "3.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
@@ -1375,7 +1375,7 @@
|
||||
"description": "A generic function and convention to trigger deprecation notices",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1391,7 +1391,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-23T14:45:45+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
@@ -1710,30 +1710,37 @@
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v3.8.0",
|
||||
"version": "v3.10.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d"
|
||||
"reference": "67f29781ffafa520b0bbfbd8384674b42db04572"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
|
||||
"reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572",
|
||||
"reference": "67f29781ffafa520b0bbfbd8384674b42db04572",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "^1.8",
|
||||
"symfony/polyfill-mbstring": "^1.3",
|
||||
"symfony/polyfill-php80": "^1.22"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/container": "^1.0|^2.0",
|
||||
"symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0"
|
||||
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/Resources/core.php",
|
||||
"src/Resources/debug.php",
|
||||
"src/Resources/escaper.php",
|
||||
"src/Resources/string_loader.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Twig\\": "src/"
|
||||
}
|
||||
@@ -1766,7 +1773,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.8.0"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.10.3"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1778,7 +1785,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-11-21T18:54:41+00:00"
|
||||
"time": "2024-05-16T10:04:27+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
|
||||
@@ -173,6 +173,7 @@
|
||||
],
|
||||
"environment": [
|
||||
"POSTGRES_HOST=nextcloud-aio-database",
|
||||
"POSTGRES_PORT=5432",
|
||||
"POSTGRES_PASSWORD=%DATABASE_PASSWORD%",
|
||||
"POSTGRES_DB=nextcloud_database",
|
||||
"POSTGRES_USER=nextcloud",
|
||||
@@ -266,6 +267,7 @@
|
||||
"REDIS_HOST=nextcloud-aio-redis",
|
||||
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%",
|
||||
"POSTGRES_HOST=nextcloud-aio-database",
|
||||
"POSTGRES_PORT=5432",
|
||||
"POSTGRES_PASSWORD=%DATABASE_PASSWORD%",
|
||||
"POSTGRES_DB=nextcloud_database",
|
||||
"POSTGRES_USER=nextcloud"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<files psalm-version="5.23.1@8471a896ccea3526b26d082f4461eeea467f10a4"/>
|
||||
<files psalm-version="5.24.0@462c80e31c34e58cc4f750c656be3927e80e550e"/>
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
if (document.hasFocus()) {
|
||||
// hide reload button if the site reloads automatically
|
||||
let list = document.getElementsByClassName("reload button");
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
// list[i] is a node with the desired class name
|
||||
list[i].style.display = 'none';
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
if (document.hasFocus()) {
|
||||
// hide reload button if the site reloads automatically
|
||||
let list = document.getElementsByClassName("reload button");
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
// list[i] is a node with the desired class name
|
||||
list[i].style.display = 'none';
|
||||
}
|
||||
|
||||
// set timeout for reload
|
||||
setTimeout(function(){
|
||||
window.location.reload(1);
|
||||
}, 5000);
|
||||
} else {
|
||||
window.addEventListener("beforeunload", function() {
|
||||
document.getElementById('overlay').classList.add('loading')
|
||||
});
|
||||
}
|
||||
// set timeout for reload
|
||||
setTimeout(function(){
|
||||
window.location.reload(1);
|
||||
}, 5000);
|
||||
} else {
|
||||
window.addEventListener("beforeunload", function() {
|
||||
document.getElementById('overlay').classList.add('loading')
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -6,6 +6,7 @@ html, body {
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #0082c9;
|
||||
}
|
||||
|
||||
.button {
|
||||
@@ -197,7 +198,7 @@ header {
|
||||
.loader {
|
||||
border: 16px solid #f3f3f3;
|
||||
border-radius: 50%;
|
||||
border-top: 16px solid #3498db;
|
||||
border-top: 16px solid #0082c9;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
-webkit-animation: spin 2s linear infinite; /* Safari */
|
||||
|
||||
7
php/public/timezone.js
Normal file
7
php/public/timezone.js
Normal file
@@ -0,0 +1,7 @@
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
// timezone
|
||||
let timezone = document.getElementById("timezone");
|
||||
if (timezone) {
|
||||
timezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone
|
||||
}
|
||||
});
|
||||
@@ -7,7 +7,7 @@ use AIO\Data\DataConst;
|
||||
use \DateTime;
|
||||
|
||||
class AuthManager {
|
||||
private const SESSION_KEY = 'aio_authenticated';
|
||||
private const string SESSION_KEY = 'aio_authenticated';
|
||||
private ConfigurationManager $configurationManager;
|
||||
|
||||
public function __construct(ConfigurationManager $configurationManager) {
|
||||
|
||||
@@ -13,7 +13,7 @@ class DockerController
|
||||
{
|
||||
private DockerActionManager $dockerActionManager;
|
||||
private ContainerDefinitionFetcher $containerDefinitionFetcher;
|
||||
private const TOP_CONTAINER = 'nextcloud-aio-apache';
|
||||
private const string TOP_CONTAINER = 'nextcloud-aio-apache';
|
||||
private ConfigurationManager $configurationManager;
|
||||
|
||||
public function __construct(
|
||||
@@ -173,7 +173,7 @@ class DockerController
|
||||
}
|
||||
|
||||
if (isset($request->getParsedBody()['install_latest_major'])) {
|
||||
$installLatestMajor = 28;
|
||||
$installLatestMajor = 29;
|
||||
} else {
|
||||
$installLatestMajor = "";
|
||||
}
|
||||
|
||||
@@ -305,7 +305,7 @@ class ConfigurationManager
|
||||
|
||||
if (empty($dnsRecordIP)) {
|
||||
$record = dns_get_record($domain, DNS_AAAA);
|
||||
if (!empty($record[0]['ipv6'])) {
|
||||
if (isset($record[0]['ipv6']) && !empty($record[0]['ipv6'])) {
|
||||
$dnsRecordIP = $record[0]['ipv6'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ use http\Env\Response;
|
||||
|
||||
class DockerActionManager
|
||||
{
|
||||
private const API_VERSION = 'v1.41';
|
||||
private const string API_VERSION = 'v1.41';
|
||||
private \GuzzleHttp\Client $guzzleClient;
|
||||
private ConfigurationManager $configurationManager;
|
||||
private ContainerDefinitionFetcher $containerDefinitionFetcher;
|
||||
|
||||
@@ -16,11 +16,14 @@
|
||||
</header>
|
||||
|
||||
<div class="content">
|
||||
<h1>Nextcloud AIO v8.1.0</h1>
|
||||
<h1>Nextcloud AIO v8.3.0</h1>
|
||||
|
||||
{# Add 2nd tab warning #}
|
||||
<script type="text/javascript" src="second-tab-warning.js"></script>
|
||||
|
||||
{# timezone-prefill #}
|
||||
<script type="text/javascript" src="timezone.js"></script>
|
||||
|
||||
{% set isAnyRunning = false %}
|
||||
{% set isAnyRestarting = false %}
|
||||
{% set isWatchtowerRunning = false %}
|
||||
@@ -28,7 +31,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 = 29 %}
|
||||
|
||||
{% if is_backup_container_running == true %}
|
||||
{% if borg_backup_mode == 'backup' or borg_backup_mode == 'restore' %}
|
||||
@@ -57,25 +60,25 @@
|
||||
{% if is_daily_backup_running == true %}
|
||||
<span class="status running"></span> Daily backup currently running. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
{% if automatic_updates == true %}
|
||||
It will update your containers, the mastercontainer and on saturdays your Nextcloud apps if the backup is successful.<br /><br />
|
||||
This will update your containers, the mastercontainer and, on Saturdays, your Nextcloud apps if the backup is successful.<br /><br />
|
||||
{% if is_mastercontainer_update_available == true %}
|
||||
Since the mastercontainer gets updated, it will restart the container which will make it unavailable for a moment. (<a href="/api/docker/logs?id=nextcloud-aio-watchtower" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
When the mastercontainer is updated it will restart, making it unavailable for a moment. (<a href="/api/docker/logs?id=nextcloud-aio-watchtower" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if has_update_available == false %}
|
||||
The whole process should not take more than a few minutes.<br /><br />
|
||||
{% elseif automatic_updates == true %}
|
||||
The whole process can take a while because your containers get updated.<br /><br />
|
||||
The whole process can take a while as your containers will be updated.<br /><br />
|
||||
{% endif %}
|
||||
<a href="" class="button reload">Reload ↻</a><br/>
|
||||
{% elseif isWatchtowerRunning == true %}
|
||||
<span class="status running"></span> Mastercontainer update currently running. It will restart the mastercontainer soon which will make it unavailable for a moment. Please wait until that's done. (<a href="/api/docker/logs?id=nextcloud-aio-watchtower" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
<span class="status running"></span> Mastercontainer update currently running. Once the update is complete the mastercontainer will restart, making it unavailable for a moment. Please wait until it's done. (<a href="/api/docker/logs?id=nextcloud-aio-watchtower" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
<a href="" class="button reload">Reload ↻</a><br/>
|
||||
{% else %}
|
||||
{% if is_backup_container_running == false and domain == "" %}
|
||||
{% if isDomaincheckRunning == false %}
|
||||
<h2>Domaincheck container is not running</h2>
|
||||
This is not expected. Most likely this happened because port {{ apache_port }} is already in use on your server. You can check the mastercontainer logs and domaincheck container logs for further clues. You should be able to resolve this by adjusting the APACHE_PORT by following the <b><a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md">reverse proxy documentation</a></b>. Advice: have a detailed look at the changed docker run command for AIO.
|
||||
This is not expected. Most likely this happened because port {{ apache_port }} is already in use on your server. You can check the mastercontainer logs and domaincheck container logs for further clues. You should be able to resolve this by adjusting the APACHE_PORT by following the <strong><a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md">reverse proxy documentation</a></strong>. Advice: have a detailed look at the changed docker run command for AIO.
|
||||
{% elseif is_mastercontainer_update_available == true %}
|
||||
<h2>Mastercontainer update</h2>
|
||||
⚠️ A mastercontainer update is available. Please click on the button below to update it. Afterwards, you will be able to proceed with the setup.<br><br>
|
||||
@@ -91,13 +94,13 @@
|
||||
{{ include('includes/aio-config.twig') }}
|
||||
<h2>New AIO instance</h2>
|
||||
{% if apache_port == '443' %}
|
||||
AIO is currently in "normal mode" which means that it handles the TLS proxying itself. This also means that it cannot be installed behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else), see the <b><a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md">reverse proxy documentation</a></b>. Advice: have a detailed look at the changed docker run command for AIO.<br><br>
|
||||
AIO is currently in "normal mode" which means that it handles the TLS proxying itself. This also means that it cannot be installed behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else), see the <strong><a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md">reverse proxy documentation</a></strong>. Advice: have a detailed look at the changed docker run command for AIO.<br><br>
|
||||
{% else %}
|
||||
AIO is currently in "reverse proxy mode" which means that it can be installed behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else) and does not do the TLS proxying itself.<br><br>
|
||||
{% endif %}
|
||||
Please type in the domain into the input field below that will be used for Nextcloud in order to create a new AIO instance.<br><br />
|
||||
Please type the domain that will be used for Nextcloud below in order to create a new AIO instance.<br><br />
|
||||
{% if skip_domain_validation == true %}
|
||||
<b>Please note:</b> The domain validation is disabled so any domain will be accepted here! So make sure that you do not make a typo here as you will not be able to change it afterwards!<br><br>
|
||||
<strong>Please note:</strong> The domain validation is disabled so any domain will be accepted here! Make sure you do not make a typo here as you will not be able to change it afterwards!<br><br>
|
||||
{% endif %}
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" name="domain" value="{{ domain }}" placeholder="nextcloud.yourdomain.com"/>
|
||||
@@ -106,17 +109,17 @@
|
||||
<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 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>
|
||||
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 is, of course, also possible). You should see hints on what went wrong in the top right corner if your domain is not accepted.<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>
|
||||
If you do not have a domain yet, you can get one for free e.g. from duckdns.org and others.<br><br>
|
||||
If you have a dynamic public IP-address, you can use e.g. <a href="https://ddclient.net/">DDclient</a> with a compatible domain provider for DNS updates.<br /><br/>
|
||||
If you only want to install AIO locally without exposing it to the public internet or if you cannot do so, feel free to follow <a href="https://github.com/nextcloud/all-in-one/blob/main/local-instance.md">this documentation</a>.<br><br>
|
||||
If you should be using Cloudflare Proxy for your domain, make sure to disable the Proxy feature temporarily as it might block the domain validation attempts.<br /><br/>
|
||||
{% if apache_port != '443' %}
|
||||
If you run into issues getting your domain accepted, see <a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#6-how-to-debug-things">these steps</a> for how to debug things. <br /><br/>
|
||||
If you run into issues with your domain being accepted, see <a href="https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#6-how-to-debug-things">these steps</a> for how to debug things. <br /><br/>
|
||||
{% endif %}
|
||||
<b>Hint:</b> If the domain validation fails but you are completely sure that you've configured everything correctly, you may skip the domain validation by following <a href="https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation">this documentation</a>.<br />
|
||||
<strong>Hint:</strong> If the domain validation fails but you are completely sure that you've configured everything correctly, you may skip the domain validation by following <a href="https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation">this documentation</a>.<br />
|
||||
</details>
|
||||
{% endif %}
|
||||
|
||||
@@ -130,12 +133,12 @@
|
||||
{% if backup_exit_code > 0 %}
|
||||
<span class="status error"></span> Last {{ borg_backup_mode }} failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
{% if borg_backup_mode == 'test' %}
|
||||
Please adjust the path and/or the password in order to make it work!<br><br>
|
||||
Please adjust the path and/or the encryption password in order to make it work!<br><br>
|
||||
{% elseif borg_backup_mode == 'check' %}
|
||||
The backup archive seems to be corrupt. Please try to use a different intact backup archive or try to fix it by following <a href="https://borgbackup.readthedocs.io/en/stable/faq.html#i-get-an-integrityerror-or-similar-what-now"><b>this documentation</b></a><br><br>
|
||||
The backup archive seems to be corrupt. Please try to use a different intact backup archive or try to fix it by following <a href="https://borgbackup.readthedocs.io/en/stable/faq.html#i-get-an-integrityerror-or-similar-what-now"><strong>this documentation</strong></a><br><br>
|
||||
<details>
|
||||
<summary>Reveal repair option</summary><br />
|
||||
Below is the option to repair the integrity of your backup. <b>Please note:</b> Please only use this after you have read the documentation above! (It will run the command 'borg check --repair' for you.)<br><br>
|
||||
Below is the option to repair the integrity of your backup. <strong>Please note:</strong> Please only use this after you have read the documentation above! (It will run the command 'borg check --repair' for you.)<br><br>
|
||||
<form method="POST" action="/api/docker/backup-check-repair" class="xhr">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
@@ -146,14 +149,15 @@
|
||||
{% elseif backup_exit_code == 0 %}
|
||||
<span class="status success"></span> Last {{ borg_backup_mode }} successful! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
{% if borg_backup_mode == 'test' %}
|
||||
Feel free to check the integrity of the backup archive below before starting the restore process in order to make double-sure that the restore will work. This can take a long time though depending on the size of the backup archive and is thus not required.<br><br>
|
||||
Feel free to check the integrity of the backup archive below before starting the restore process in order to make ensure that the restore will work. This can take a long time though depending on the size of the backup archive and is thus not required.<br><br>
|
||||
<form method="POST" action="/api/docker/backup-check" class="xhr">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input class="button" type="submit" value="Check backup integrity"/><br/>
|
||||
</form>
|
||||
{% endif %}
|
||||
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance from backup. Please note that the current AIO password will be kept and the previous AIO password will not be restored from backup!<br><br>
|
||||
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance. Please note that the current AIO passphrase will be kept and the previous AIO passphrase will not be restored from backup!<br><br>
|
||||
<strong>Please note:</strong> If the backup that you want to restore contained any <a href="https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers">community container</a>, but you did not specify the same community containers via environmental variable while creating this new AIO instance, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.<br><br>
|
||||
<form method="POST" action="/api/docker/restore" class="xhr" id="restore_selection">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
@@ -168,44 +172,46 @@
|
||||
{% elseif borg_backup_mode == 'restore' %}
|
||||
{% if backup_exit_code > 0 %}
|
||||
<span class="status error"></span> Last restore failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
Somehow the restore failed which is unexpected! Please adjust the path and password, test it and try to restore again!
|
||||
The restore process has unexpectedly failed! Please adjust the path and encryption password, test it and try to restore again!
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if borg_backup_host_location == '' or borg_restore_password == '' or borg_backup_mode not in ['test', 'check', ''] or backup_exit_code > 0 %}
|
||||
Please enter the location of the backup archive on your host and the password of the backup archive below:<br><br>
|
||||
Please enter the location of the backup archive on your host and the encryption password of the backup archive below:<br><br>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" name="borg_restore_host_location" value="{{borg_backup_host_location}}" placeholder="/mnt/backup"/>
|
||||
<input type="text" name="borg_restore_password" value="{{borg_restore_password}}" placeholder="enter the borg password"/>
|
||||
<input type="text" name="borg_restore_password" value="{{borg_restore_password}}" placeholder="encryption 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 location and password" />
|
||||
<input class="button" type="submit" value="Submit location and encryption password" />
|
||||
</form>
|
||||
{{ include('includes/backup-dirs.twig') }}
|
||||
⚠️ Please note that the backup archive must be located in a subfolder of the folder that you enter here and the subfolder which contains the archive must be named 'borg'. Otherwise will the backup container not find the backup archive!<br><br>
|
||||
⚠️ Please note that the backup archive must be located in a subfolder of the folder that you enter here and the subfolder which contains the archive must be named 'borg', or the backup container will not be able to find the backup archive!<br><br>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<b>Everything set!</b> Click on the button below to test the path and password:<br/><br/>
|
||||
<strong>Everything set!</strong> Click on the button below to test the path and encryption password:<br/><br/>
|
||||
<form method="POST" action="/api/docker/backup-test" class="xhr">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input class="button" type="submit" value="Test path and password"/><br/>
|
||||
<input class="button" type="submit" value="Test path and encryption password"/><br/>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<h2>How to reset the AIO instance?</h2>
|
||||
If something should be going wrong, for example during the initial installation, you can reset the instance by following <a href="https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance">this documentation</a>.<br><br>
|
||||
{% endif %}
|
||||
|
||||
{% if was_start_button_clicked == true %}
|
||||
{% if current_channel starts with 'latest' or current_channel starts with 'beta' or current_channel starts with 'develop' %}
|
||||
You are running the <a href="https://github.com/nextcloud/all-in-one#how-to-switch-the-channel"><b>{{ current_channel }}</b></a> channel. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer" target="_blank" rel="noopener">Logs</a>)<br><br>
|
||||
You are running the <a href="https://github.com/nextcloud/all-in-one#how-to-switch-the-channel"><strong>{{ current_channel }}</strong></a> channel. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer" target="_blank" rel="noopener">Logs</a>)<br><br>
|
||||
{% else %}
|
||||
No channel was found. This means that AIO is not able to update itself and its component and will also not be able to report about updates. Updates need to be done externally.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if is_backup_container_running == true %}
|
||||
<span class="status running"></span> Backup container is currently running. (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
<span class="status running"></span> Backup container is currently running: {{ borg_backup_mode }} (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
<a href="" class="button reload">Reload ↻</a><br/><br>
|
||||
{% endif %}
|
||||
|
||||
@@ -216,25 +222,25 @@
|
||||
<details>
|
||||
<summary>Click here to reveal the initial Nextcloud credentials</summary><br />
|
||||
{% endif %}
|
||||
Initial Nextcloud username: <b>admin</b><br />
|
||||
Initial Nextcloud username: <strong>admin</strong><br />
|
||||
Initial Nextcloud password:
|
||||
{% if borg_backup_host_location != '' %}
|
||||
{# nextcloud_password needs to be duplicated due to a bug in Firefox. See https://github.com/nextcloud/all-in-one/issues/638. #}
|
||||
<b>{{ nextcloud_password }}</b><br /></details><br />
|
||||
<strong>{{ nextcloud_password }}</strong><br /></details><br />
|
||||
{% else %}
|
||||
<b>{{ nextcloud_password }}</b><br><br>
|
||||
<strong>{{ nextcloud_password }}</strong><br><br>
|
||||
{% endif %}
|
||||
<a href="https://{{ domain }}" class="button" target="_blank" rel="noopener">Open your Nextcloud ↗</a><br/><br>
|
||||
{% if borg_backup_host_location == '' %}
|
||||
If your Nextcloud does not open when clicking the button above, see <b><a href="https://github.com/nextcloud/all-in-one/discussions/2105">this documentation</a></b><br><br>
|
||||
If your Nextcloud does not open when clicking the button above, see <strong><a href="https://github.com/nextcloud/all-in-one/discussions/2105">this documentation</a></strong><br><br>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if isAnyRestarting == false %}
|
||||
<span class="status running"></span> Containers are currently starting.<br /><br />
|
||||
<span class="status running"></span> Containers are currently starting. You might inspect the container logs by clicking on <strong>Starting</strong> next to each container for further details.<br /><br />
|
||||
<a href="" class="button reload">Reload ↻</a><br/><br>
|
||||
{% else %}
|
||||
It seems like at least one container is currently restarting which means it is not able to start correctly.<br><br>
|
||||
To break out this endless loop, you can stop the containers below and investigate the issue by having a look at the container logs before starting them again.<br><br>
|
||||
It seems at least one container was not able to start correctly and is currently restarting.<br><br>
|
||||
To break this endless loop, you can stop the containers below and investigate the issue in the container logs before starting the containers again.<br><br>
|
||||
<form method="POST" action="/api/docker/stop" class="xhr">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
@@ -284,15 +290,15 @@
|
||||
|
||||
{% if has_update_available == true %}
|
||||
{% if is_mastercontainer_update_available == false %}
|
||||
⚠️ Container updates are available. Click on <b>Stop containers</b> and <b>Start and update containers</b> to update them. You should consider creating a backup first.<br><br>
|
||||
⚠️ Container updates are available. Click on <strong>Stop containers</strong> and <strong>Start and update containers</strong> to update them. You should consider creating a backup first.<br><br>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if is_mastercontainer_update_available == false %}
|
||||
Your containers are up-to-date.<br><br>
|
||||
{% if newMajorVersion != '' and isAnyRunning == true and isApacheStarting != true %}
|
||||
<details>
|
||||
<summary>Note about <b>Nextcloud {{ newMajorVersion }}</b></summary><br>
|
||||
If you haven't upgraded to Nextcloud {{ newMajorVersion }} yet and want to do that now, feel free to follow <b><a href="https://github.com/nextcloud/all-in-one/discussions/2692">this documentation</a></b><br/>
|
||||
<summary>Note about <strong>Nextcloud {{ newMajorVersion }}</strong></summary><br>
|
||||
If you haven't upgraded to Nextcloud {{ newMajorVersion }} yet and want to do that now, feel free to follow <strong><a href="https://github.com/nextcloud/all-in-one/discussions/4542">this documentation</a></strong><br/>
|
||||
</details><br>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -302,13 +308,13 @@
|
||||
{% if isAnyRunning == true %}
|
||||
{% if isApacheStarting != true %}
|
||||
{% if is_mastercontainer_update_available == true %}
|
||||
⚠️ A mastercontainer update is available. Please click on the button below to stop your containers in order to be able to update the mastercontainer.<br /><br />
|
||||
⚠️ A mastercontainer update is available. Please click on the button below to stop your containers in order to update the mastercontainer.<br /><br />
|
||||
{% if current_channel starts with 'latest' %}
|
||||
You can find the changelog <a href="https://github.com/nextcloud/all-in-one/releases/latest"><b>here</b></a><br><br>
|
||||
You can find the changelog <a href="https://github.com/nextcloud/all-in-one/releases/latest"><strong>here</strong></a><br><br>
|
||||
{% elseif current_channel starts with 'beta' %}
|
||||
You can find the changelog <a href="https://github.com/nextcloud/all-in-one/releases"><b>here</b></a><br><br>
|
||||
You can find the changelog <a href="https://github.com/nextcloud/all-in-one/releases"><strong>here</strong></a><br><br>
|
||||
{% elseif current_channel starts with 'develop' %}
|
||||
You can find all changes <a href="https://github.com/nextcloud-releases/all-in-one/commits/main"><b>here</b></a><br><br>
|
||||
You can find all changes <a href="https://github.com/nextcloud-releases/all-in-one/commits/main"><strong>here</strong></a><br><br>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<form method="POST" action="/api/docker/stop" class="xhr">
|
||||
@@ -319,10 +325,10 @@
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if isBackupOrRestoreRunning == true %}
|
||||
Restore or Backup currently running. Cannot start the containers until that's done.<br /><br />
|
||||
Restore or Backup currently running. Cannot start the containers until Restore or Backup is complete.<br /><br />
|
||||
{% else %}
|
||||
{% if was_start_button_clicked == false %}
|
||||
<br>Clicking on the button below will download all docker containers and start them. This can take a lot of time depending on your internet connection. Since the overall size is a few GB, this will take around 5-10 min or more. So be aware and patient!<br><br>
|
||||
<br>Clicking on the button below will download all docker containers and start them. This can take a long time depending on your internet connection. Since the overall size is a few GB, this can take around 5-10 min or more. Please be patient!<br><br>
|
||||
{% endif %}
|
||||
{% if is_mastercontainer_update_available == true %}
|
||||
⚠️ A mastercontainer update is available. Please click on the button below to update it.<br><br>
|
||||
@@ -366,7 +372,7 @@
|
||||
{% else %}
|
||||
{% if is_backup_container_running == false and borg_backup_host_location == "" and isApacheStarting != true %}
|
||||
<h2>Backup and restore</h2>
|
||||
Please type in the directory where backups will get created on the host system below. In best case make sure that you choose a location on a separate drive and not on your root drive.<br><br>
|
||||
Please enter the directory path below where backups will be created on the host system. It's best to choose a location on a separate drive and not on your root drive.<br><br>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" name="borg_backup_host_location" placeholder="/mnt/backup"/>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
@@ -385,10 +391,10 @@
|
||||
{% if backup_exit_code > 0 %}
|
||||
<span class="status error"></span> Last {{ borg_backup_mode }} failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)<br /><br />
|
||||
{% if borg_backup_mode == "check" %}
|
||||
The backup check was not successful which might points towards a corrupt archive (look at the logs). If that should be the case, you can try to fix it by following <a href="https://borgbackup.readthedocs.io/en/stable/faq.html#i-get-an-integrityerror-or-similar-what-now"><b>this documentation</b></a><br /><br />
|
||||
The backup check was not successful. This might indicate a corrupt archive (look at the logs). If that should be the case, you can try to fix it by following <a href="https://borgbackup.readthedocs.io/en/stable/faq.html#i-get-an-integrityerror-or-similar-what-now"><strong>this documentation</strong></a><br /><br />
|
||||
<details>
|
||||
<summary>Reveal repair option</summary><br />
|
||||
Below is the option to repair the integrity of your backup. <b>Please note:</b> Please only use this after you have read the documentation above! (It will run the command 'borg check --repair' for you.)<br><br>
|
||||
Below is the option to repair the integrity of your backup. <strong>Please note:</strong> Please only use this after you have read the documentation above! (It will run the command 'borg check --repair' for you.)<br><br>
|
||||
<form method="POST" action="/api/docker/backup-check-repair" class="xhr">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
@@ -397,7 +403,7 @@
|
||||
</details><br />
|
||||
{% endif %}
|
||||
{% if has_backup_run_once == false %}
|
||||
You may change the backup path again since the initial backup was not successful. After submitting the new value, you need to click on <b>Create Backup</b> for testing the new value.<br /><br />
|
||||
You may change the backup path again since the initial backup was not successful. After submitting the new value, you need to click on <strong>Create Backup</strong> to test the new value.<br /><br />
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" value="{{borg_backup_host_location}}" name="borg_backup_host_location" placeholder="/mnt/backup" />
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
@@ -417,19 +423,19 @@
|
||||
{% if is_backup_container_running == false and isApacheStarting == false %}
|
||||
{% if has_backup_run_once == true %}
|
||||
<details>
|
||||
<summary>Click here to reveal all backup options (it also includes an option for automatic updates)</summary><br />
|
||||
<summary>Click here to reveal all backup options (including an option for automatic updates)</summary><br />
|
||||
{% endif %}
|
||||
<h3>Backup information</h3>
|
||||
This is your encryption password for backups: <b>{{ borgbackup_password }}</b><br /><br/>
|
||||
Please save it at a safe place since you won't be able to restore from backup if you lose this password! <br /><br/>
|
||||
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. <br /><br/>
|
||||
The backup itself uses a tool that is called <a href="https://github.com/borgbackup/borg#what-is-borgbackup"><b>BorgBackup</b></a> which is a well-known server backup tool that efficiently backs up your files and encrypts them on the fly. <br /><br/>
|
||||
This is your encryption password for backups: <strong>{{ borgbackup_password }}</strong><br /><br/>
|
||||
Please save this password in a safe place. You won't be able to restore from backup if you lose this password! <br /><br/>
|
||||
All important data from your Nextcloud AIO instance such as the database, your files and the mastercontainer's configuration files, will be backed up.<br /><br/>
|
||||
The backup uses a tool called <a href="https://github.com/borgbackup/borg#what-is-borgbackup"><strong>BorgBackup</strong></a>, a well-known server backup tool that efficiently backs up your files and encrypts them on the fly. <br /><br/>
|
||||
By using this tool, backups are incremental, differential, compressed and encrypted – so only the first backup will take a while. Further backups should be fast as only changes are taken into account.<br /><br/>
|
||||
Backups get created in the following directory on the host: <b>{{ borg_backup_host_location }}/borg</b> <br /><br/>
|
||||
Be aware that this solution does not back up files and folders that are mounted into Nextcloud using the external storage app - but you can add further Docker volumes and host paths that you want to back up after the initial backup is done.<br><br>
|
||||
Regarding backup retention, see <b><a href="https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy">this</a></b>.<br><br>
|
||||
Daily backups can get enabled after the initial backup is done. Enabling this also allows to enable an option that allows to update all containers, Nextcloud and its apps automatically.<br><br>
|
||||
For further documentation and options on this backup solution refer to <b><a href="https://github.com/nextcloud/all-in-one#backup-solution">this section</a></b> and below.<br>
|
||||
Backups will be created in the following directory on the host: <strong>{{ borg_backup_host_location }}/borg</strong> <br /><br/>
|
||||
Be aware that this solution does not backup files and folders that are mounted into Nextcloud using the external storage app, but you can add further Docker volumes and host paths that you want to back up after the initial backup is done.<br><br>
|
||||
For information about backup retention, see <strong><a href="https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy">this</a></strong>.<br><br>
|
||||
Daily backups can be enabled after the initial backup is done. Enabling this also allows you to enable an option to update all containers, Nextcloud, and its apps automatically.<br><br>
|
||||
For further documentation and options on this backup solution refer to <strong><a href="https://github.com/nextcloud/all-in-one#backup-solution">this section</a></strong> and below.<br>
|
||||
|
||||
{% if isApacheStarting != true %}
|
||||
<h3>Backup creation</h3>
|
||||
@@ -442,7 +448,7 @@
|
||||
|
||||
{% if has_backup_run_once == false %}
|
||||
<h3>Reset backup host location</h3>
|
||||
If the configured backup host location <b>{{ borg_backup_host_location }}</b> is wrong, you can reset it by clicking on the button below.<br><br/>
|
||||
If the configured backup host location <strong>{{ borg_backup_host_location }}</strong> is wrong, you can reset it by clicking on the button below.<br><br/>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="hidden" name="delete_borg_backup_host_location" value="yes"/>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
@@ -453,7 +459,7 @@
|
||||
|
||||
{% if has_backup_run_once == true %}
|
||||
<h3>Backup check</h3>
|
||||
Click on the button below to perform a backup integrity check. This is an option that verifies that your backup is intact but it shouldn't be needed in most situations.<br><br/>
|
||||
Click on the button below to perform a backup integrity check. This is an option that verifies that your backup is intact. It shouldn't be needed in most situations.<br><br/>
|
||||
<form method="POST" action="/api/docker/backup-check" class="xhr">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
@@ -461,7 +467,7 @@
|
||||
</form>
|
||||
|
||||
<h3>Backup restore</h3>
|
||||
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will overwrite all your files with the state of the backup so you should consider creating a backup first. It also makes sense to run an integrity check before restoring your files but is not mandatory since it shouldn't be needed in most situations. Please note that this will not restore additionally chosen backup directories! The restore process should be pretty fast as rsync is used to restore the chosen backup which only transfers changed files and deletes additional ones.<br><br>
|
||||
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will overwrite all your files with the chosen backup so you should consider creating a backup first. You can run an integrity check before restoring your files but this shouldn't be needed in most situations. Please note that this will not restore additionally chosen backup directories! The restore process should be pretty fast as rsync, which only transfers changed files, is used to restore the chosen backup.<br><br>
|
||||
<form method="POST" action="/api/docker/restore" class="xhr" id="restore_selection">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
@@ -475,7 +481,7 @@
|
||||
|
||||
<h3>Daily backup and automatic updates</h3>
|
||||
{% if daily_backup_time == "" %}
|
||||
By entering a time below, you can enable daily backups. It will create them at the entered time in 24h format. E.g. <b>04:00</b> will create backups at 4 am UTC and <b>16:00</b> at 4 pm UTC. For creating the backup, it will stop the containers and start them back up after the backup is done.<br><br/>
|
||||
By entering a time below, you can enable daily backups. It will create them at the entered time in 24h format. E.g. <strong>04:00</strong> will create backups at 4 am UTC and <strong>16:00</strong> at 4 pm UTC. When creating the backup, containers will be stopped and restarted after the backup is complete.<br><br/>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" name="daily_backup_time" value="04:00" placeholder="04:00"/>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
@@ -485,11 +491,11 @@
|
||||
<input type="checkbox" id="success_notification" name="success_notification" checked="checked"><label for="success_notification">Send notifications about successful backups (notifications about unsuccessful backups will always be sent)</label><br>
|
||||
</form>
|
||||
{% else %}
|
||||
Daily backups will be created at <b>{{ daily_backup_time }} UTC</b> which includes a notification about the result of the backup.
|
||||
Daily backups will be created at <strong>{{ daily_backup_time }} UTC</strong>. A notification about the result of the backup will be sent.
|
||||
{% if automatic_updates == true %}
|
||||
Also your containers, the mastercontainer and on saturdays your Nextcloud apps will be automatically updated.
|
||||
Also your containers, the mastercontainer and, on Saturdays, your Nextcloud apps will be automatically updated.
|
||||
{% endif %}
|
||||
To change your backup time, first disable Daily Backups and then re-enable them with your new backup time.<br><br/>
|
||||
To change your backup time first disable Daily Backups, then enter your new backup time, and then re-enable them.<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}}">
|
||||
@@ -499,15 +505,15 @@
|
||||
{% endif %}
|
||||
|
||||
<h3>Back up additional directories and docker volumes of your host</h3>
|
||||
Below, you can enter directories and docker volumes of your host that will backed up additionally into the same borg backup archive.<br><br>
|
||||
Below you can enter directories and docker volumes of your host that will be backed up into the same borg backup archive.<br><br>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<textarea id="additional_backup_directories" name="additional_backup_directories" rows="4" cols="50" placeholder="/directory/on/the/host my_custom_docker_volume">{{ additional_backup_directories }}</textarea>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input class="button" type="submit" value="Submit additional backup locations" /><br>
|
||||
</form>
|
||||
Each line and entry needs to start with a slash or letter/digit. Allowed are only <b>a-z</b>, <b>A-Z</b>, <b>.</b>, <b>0-9</b>, <b>_</b>, <b>-</b>, and <b>/</b>. If the entry begins with a letter/digit are slashes not supported. Two valid entries are <b>/directory/on/the/host</b> and <b>my_custom_docker_volume</b>. You need to make sure yourself that all given directories exist. Otherwise the backup container will fail starting!<br><br/>
|
||||
Make sure to specify all storages that you want to back up separately since storages will not be mounted recursively. E.g. providing <b>/</b> as additional backup directory will only back up files and folders that are stored on the root partition and not on the EFI partition or any other. Excluded by the backup will be caches and a few other directories. You should make sure to stop all services before the backup can run correctly if you want to back up the root partition. For automating this see <a href="https://github.com/nextcloud/all-in-one#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally">this documentation</a><br><br/>
|
||||
Each line and entry needs to start with a slash or letter/digit. Only <strong>a-z</strong>, <strong>A-Z</strong>, <strong>.</strong>, <strong>0-9</strong>, <strong>_</strong>, <strong>-</strong>, and <strong>/</strong> are allowed. If the entry begins with a letter/digit slashes are not supported. Two valid entries are <strong>/directory/on/the/host</strong> and <strong>my_custom_docker_volume</strong>. You need to make sure that all given directories exist or the backup container will fail to start!<br><br/>
|
||||
Be sure to individually specify all storage that you want to back up as storage will not be mounted recursively. E.g. providing <strong>/</strong> as additional backup directory will only back up files and folders that are stored on the root partition and not on the EFI partition or any other. Excluded by the backup will be caches and a few other directories. If you want to back up the root partition you should make sure to stop all services before the backup so it can run correctly. For automating this see <a href="https://github.com/nextcloud/all-in-one#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally">this documentation</a><br><br/>
|
||||
Please note that the chosen directories/volumes will not be restored when you restore your instance, so this would need to be done manually. <br><br>
|
||||
{% if additional_backup_directories != "" %}
|
||||
This option is currently set. You can disable it again by clearing the field and submitting your changes.<br><br>
|
||||
@@ -525,29 +531,29 @@
|
||||
|
||||
{% if is_backup_container_running == false %}
|
||||
{% if isApacheStarting == false %}
|
||||
<h2>AIO password change</h2>
|
||||
<h2>AIO passphrase change</h2>
|
||||
<details>
|
||||
<summary>Click here to change your AIO password</summary><br />
|
||||
You can change your AIO password below:<br><br />
|
||||
<summary>Click here to change your AIO passphrase</summary><br />
|
||||
You can change your AIO passphrase below:<br><br />
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<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="password" autocomplete="current-password" name="current-master-password" placeholder="Your current AIO passphrase" id="current-master-password" oninput="showPassword('current-master-password')">
|
||||
<input type="password" autocomplete="new-password" name="new-master-password" placeholder="Your new AIO passphrase" 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" />
|
||||
<input class="button" type="submit" value="Submit passphrase change" />
|
||||
</form>
|
||||
The new password needs to be at least 24 characters long. Allowed characters are the <a href="https://en.wikipedia.org/wiki/Latin_alphabet#/media/File:Abecedarium.png"><b>latin characters</b></a> <b>a-z</b>, <b>A-Z</b>, <b>0-9</b> and <b>spaces</b>.<br>
|
||||
The new passphrase needs to be at least 24 characters long. Allowed characters are the <a href="https://en.wikipedia.org/wiki/Latin_alphabet#/media/File:Abecedarium.png"><strong>latin characters</strong></a> <strong>a-z</strong>, <strong>A-Z</strong>, <strong>0-9</strong> and <strong>spaces</strong>.<br>
|
||||
</details>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if is_backup_container_running == false %}
|
||||
<h2>Optional containers</h2>
|
||||
In this section you can enable or disable optional containers. There are further community containers available that are not listed below. See <b><a href="https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers">this documentation</a></b> how to add them.<br><br>
|
||||
In this section you can enable or disable optional containers. There are further community containers available that are not listed below. See <strong><a href="https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers">this documentation</a></strong> how to add them.<br><br>
|
||||
{% if isAnyRunning == true %}
|
||||
<b>Please note:</b> You can enable or disable them when your containers are stopped.<br><br>
|
||||
<strong>Please note:</strong> You can enable or disable the options below only when your containers are stopped.<br><br>
|
||||
{% else %}
|
||||
<b>Please note:</b> Make sure to save your changes by clicking on the button <b>Save changes</b> that is positioned below the list of optional containers. The changes will not be auto-saved.<br><br>
|
||||
<strong>Please note:</strong> Make sure to save your changes by clicking <strong>Save changes</strong> below the list of optional containers. The changes will not be auto-saved.<br><br>
|
||||
{% endif %}
|
||||
<form id="options-form" method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
@@ -566,7 +572,7 @@
|
||||
{% if is_fulltextsearch_enabled == true %}
|
||||
<input type="checkbox" id="fulltextsearch" name="fulltextsearch" checked="checked"><label for="fulltextsearch">Fulltextsearch (needs ~1GB additional RAM)</label><br>
|
||||
{% else %}
|
||||
<input type="checkbox" id="fulltextsearch" name="fulltextsearch"><label for="fulltextsearch">Fulltextsearch (needs ~1GB additional RAM. <b>Please note:</b> the initial indexing can take a long time during which Nextcloud will be unavailable)</label><br><br>
|
||||
<input type="checkbox" id="fulltextsearch" name="fulltextsearch"><label for="fulltextsearch">Fulltextsearch (needs ~1GB additional RAM. <strong>Please note:</strong> the initial indexing can take a long time during which Nextcloud will be unavailable)</label><br><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. Imaginary is currently <a href="https://github.com/nextcloud/server/issues/34262">incompatible with server-side-encryption</a>)</label><br><br>
|
||||
@@ -596,7 +602,7 @@
|
||||
<input id="options-form-submit" class="button" type="submit" value="Save changes" />
|
||||
<script type="text/javascript" src="options-form-submit.js"></script>
|
||||
</form>
|
||||
<b>Minimal system requirements:</b> When any optional container is enabled, at least 2GB RAM, a dual-core CPU and 40GB system storage are required. When enabling ClamAV, Nextcloud Talk Recording-server or Fulltextsearch, at least 3GB RAM are required. For Talk Recording-server additional 2 vCPUs are required. When enabling everything, at least 5GB RAM and a quad-core CPU are required. Recommended are at least 1GB more RAM than the minimal requirement. For further advices and recommendations see <b><a href="https://github.com/nextcloud/all-in-one/discussions/1335">this documentation</a></b><br>
|
||||
<strong>Minimal system requirements:</strong> When any optional container is enabled, at least 2GB RAM, a dual-core CPU and 40GB system storage are required. When enabling ClamAV, Nextcloud Talk Recording-server or Fulltextsearch, at least 3GB RAM are required. For Talk Recording-server additional 2 vCPUs are required. When enabling everything, at least 5GB RAM and a quad-core CPU are required. Recommended are at least 1GB more RAM than the minimal requirement. For further advices and recommendations see <strong><a href="https://github.com/nextcloud/all-in-one/discussions/1335">this documentation</a></strong><br>
|
||||
{% if isAnyRunning == true or is_x64_platform == false %}
|
||||
<script type="text/javascript" src="disable-clamav.js"></script>
|
||||
{% endif %}
|
||||
@@ -621,9 +627,9 @@
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input class="button" type="submit" value="Submit collabora dictionaries" />
|
||||
</form>
|
||||
You need to make sure that the dictionaries that you enter are valid. An example is <b>de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru</b>.<br><br>
|
||||
You need to make sure that the dictionaries that you enter are valid. An example is <strong>de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru</strong>.<br><br>
|
||||
{% else %}
|
||||
The dictionaries for Collabora are currently set to <b>{{ collabora_dictionaries }}</b>. You can reset them again by clicking on the button below.<br><br/>
|
||||
The dictionaries for Collabora are currently set to <strong>{{ collabora_dictionaries }}</strong>. You can reset them again by clicking on the button below.<br><br/>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="hidden" name="delete_collabora_dictionaries" value="yes"/>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
@@ -636,22 +642,22 @@
|
||||
<h2>Timezone change</h2>
|
||||
{% if isAnyRunning == true %}
|
||||
{% if timezone != "" %}
|
||||
The timezone for Nextcloud is currently set to <b>{{ timezone }}</b>.<br><br>
|
||||
The timezone for Nextcloud is currently set to <strong>{{ timezone }}</strong>.<br><br>
|
||||
{% endif %}
|
||||
<b>Please note:</b> You can change the timezone when your containers are stopped.<br><br>
|
||||
<strong>Please note:</strong> You can change the timezone when your containers are stopped.<br><br>
|
||||
{% else %}
|
||||
{% if timezone == "" %}
|
||||
In order to get the correct time values for certain Nextcloud features, it makes sense to set the timezone for Nextcloud to the one that your users mainly use. Please note that this setting does not apply to the mastercontainer and any backup option.<br><br>
|
||||
To get the correct time values for certain Nextcloud features, set the timezone for Nextcloud to the one that your users mainly use. Please note that this setting does not apply to the mastercontainer and any backup option.<br><br>
|
||||
You can configure the timezone for Nextcloud below:<br><br>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" name="timezone" placeholder="Europe/Berlin" />
|
||||
<input type="text" id="timezone" name="timezone" placeholder="Europe/Berlin" />
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input class="button" type="submit" value="Submit timezone" onclick="return confirm('Are you sure that this is a valid timezone? Please double check by following the wikipedia article and checking the correct column since if not, it will break the startup since the database will not get correctly initialized and you will end in a startup loop.')" />
|
||||
<input class="button" type="submit" value="Submit timezone" onclick="return confirm('Are you sure that this is a valid timezone? Please double check by following the wikipedia article and checking the correct column. If the timezone is not valid, it will break the startup since the database will not be correctly initialized and you will end up in a startup loop.')" />
|
||||
</form>
|
||||
You need to make sure that the timezone that you enter is valid. An example is <b>Europe/Berlin</b>. You can get valid values by looking at the 'TZ identifier' column of this list: <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List"><b>click here</b></a>. The default is <b>Etc/UTC</b> if nothing is entered.<br><br>
|
||||
You need to make sure that the timezone that you enter is valid. An example is <strong>Europe/Berlin</strong>. You can get valid values by looking at the 'TZ identifier' column of this list: <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List"><strong>click here</strong></a>. The default is <strong>Etc/UTC</strong> if nothing is entered.<br><br>
|
||||
{% else %}
|
||||
The timezone for Nextcloud is currently set to <b>{{ timezone }}</b>. You can reset the timezone again by clicking on the button below.<br><br/>
|
||||
The timezone for Nextcloud is currently set to <strong>{{ timezone }}</strong>. You can change the timezone by clicking on the button below.<br><br/>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="hidden" name="delete_timezone" value="yes"/>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<summary>Click here to view the current AIO config and documentation links</summary><br />
|
||||
{% if was_start_button_clicked == true %}
|
||||
Nextclouds config.php file is stored in the nextcloud_aio_nextcloud Docker volume and can be edited by following the <a href="https://github.com/nextcloud/all-in-one#how-to-edit-nextclouds-configphp-file-with-a-texteditor">config.php documentation</a>.<br><br>
|
||||
You can run Nextcloud's usual occ commands by following the <a href="https://github.com/nextcloud/all-in-one#how-to-run-occ-commands">occ documentation</a></b>.<br><br>
|
||||
You can run Nextcloud's usual occ commands by following the <a href="https://github.com/nextcloud/all-in-one#how-to-run-occ-commands">occ documentation</a></strong>.<br><br>
|
||||
{% endif %}
|
||||
|
||||
{% if nextcloud_datadir starts with '/' %}
|
||||
@@ -32,5 +32,5 @@
|
||||
{% endif %}
|
||||
See the <a href="https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud">NEXTCLOUD_ENABLE_DRI_DEVICE documentation</a> on how to change this.<br><br>
|
||||
|
||||
For further documentation on AIO, refer to <b><a href="https://github.com/nextcloud/all-in-one#nextcloud-all-in-one">this page</a></b>. You can use the browser search [CTRL]+[F] to search through the documentation. Additional documentation can be found <b><a href="https://github.com/nextcloud/all-in-one/discussions/categories/wiki">here</a></b>.<br>
|
||||
For further documentation on AIO, refer to <strong><a href="https://github.com/nextcloud/all-in-one#nextcloud-all-in-one">this page</a></strong>. You can use the browser search [CTRL]+[F] to search through the documentation. Additional documentation can be found <strong><a href="https://github.com/nextcloud/all-in-one/discussions/categories/wiki">here</a></strong>.<br>
|
||||
</details>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The folder path that you enter must start with <b>/</b> and must <b>not</b> end with <b>/</b>.<br><br>
|
||||
An example for Linux is <b>/mnt/backup</b>.<br><br>
|
||||
On Synology it could be <b>/volume1/docker/nextcloud/backup</b>.<br><br>
|
||||
For macOS it may be <b>/var/backup</b>.<br><br>
|
||||
On Windows it might be <b>/run/desktop/mnt/host/c/backup</b>. (This path is equivalent to 'C:\backup' on your Windows host so you need to translate the path accordingly. Hint: the path that you enter needs to start with '/run/desktop/mnt/host/'. Append to that the exact location on your windows host, e.g. 'c/backup' which is equivalent to 'C:\backup'.) ⚠️ <b>Please note</b>: This does not work with external drives like USB or network drives and only with internal drives like SATA or NVME drives.<br><br>
|
||||
Another option is to enter a specific volume name here: <b>nextcloud_aio_backupdir</b>. This volume needs to be created beforehand manually by you in order to be able to use it. See <a href="https://github.com/nextcloud/all-in-one#how-to-create-the-backup-volume-on-windows">this documentation</a> for an example.<br><br>
|
||||
The folder path that you enter must start with <strong>/</strong> and must <strong>not</strong> end with <strong>/</strong>.<br><br>
|
||||
An example for Linux is <strong>/mnt/backup</strong>.<br><br>
|
||||
On Synology it could be <strong>/volume1/docker/nextcloud/backup</strong>.<br><br>
|
||||
For macOS it may be <strong>/var/backup</strong>.<br><br>
|
||||
On Windows it might be <strong>/run/desktop/mnt/host/c/backup</strong>. (This path is equivalent to 'C:\backup' on your Windows host so you need to translate the path accordingly. Hint: the path that you enter needs to start with '/run/desktop/mnt/host/'. Append to that the exact location on your windows host, e.g. 'c/backup' which is equivalent to 'C:\backup'.) ⚠️ <strong>Please note</strong>: This does not work with external drives like USB or network drives and only with internal drives like SATA or NVME drives.<br><br>
|
||||
Another option is to enter a specific volume name here: <strong>nextcloud_aio_backupdir</strong>. This volume needs to be created beforehand manually by you in order to be able to use it. See <a href="https://github.com/nextcloud/all-in-one#how-to-create-the-backup-volume-on-windows">this documentation</a> for an example.<br><br>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<img src="/img/logo-blue.svg" style="margin-left: auto;margin-right: auto;display: block;">
|
||||
<h1>Nextcloud AIO Login</h1>
|
||||
{% if is_login_allowed == true %}
|
||||
<p>Log in using your Nextcloud AIO password:</p>
|
||||
<p>Log in using your Nextcloud AIO passphrase:</p>
|
||||
<form method="POST" action="/api/auth/login" class="xhr">
|
||||
<input type="password" autocomplete="current-password" name="password" placeholder="Password" id="master-password" oninput="showPassword('master-password')">
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
<input type="submit" class="button" value="Log in" />
|
||||
</form>
|
||||
{% else %}
|
||||
<p>The login is blocked since Nextcloud is running.<br>Please use the <a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface"><b>automatic login</b></a> from your Nextcloud.<br><br>
|
||||
If that is not possible, you can unblock the login by running<br><b>sudo docker stop nextcloud-aio-apache</b></p>
|
||||
<p>The login is blocked since Nextcloud is running.<br>Please use the <a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface"><strong>automatic login</strong></a> from your Nextcloud.<br><br>
|
||||
If that is not possible, you can unblock the login by running<br><strong>sudo docker stop nextcloud-aio-apache</strong></p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
<div class="login-wrapper">
|
||||
<div class="login">
|
||||
<img src="/img/logo-blue.svg" style="margin-left: auto;margin-right: auto;display: block;">
|
||||
<h1>Nextcloud AIO setup</h1>
|
||||
<h1>All-in-One setup</h1>
|
||||
<p>The official Nextcloud installation method. Nextcloud All-in-One provides easy deployment and maintenance with most features included in this one Nextcloud instance.</p>
|
||||
<p>Please note down the password to access the AIO interface and don't lose it!</p>
|
||||
<strong>Password</strong><br/> <span class="monospace">{{ password }}</span><br>
|
||||
<p>⚠️ <strong>Please note down the passphrase to access the AIO interface and don't lose it!</strong></p>
|
||||
<strong>Passphrase</strong><br/> <span class="monospace">{{ password }}</span><br>
|
||||
<a href="/" class="button" target="_blank" rel="noopener">Open Nextcloud AIO login ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -323,6 +323,11 @@ If your Nextcloud is running and you are logged in as admin in your Nextcloud, y
|
||||
If you set up a new AIO instance, you need to enter a domain. Currently there is no way to change this domain afterwards from the AIO interface. So in order to change it, you need to edit the configuration.json manually using `sudo docker run -it --rm --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config:rw alpine sh -c "apk add --no-cache nano && nano /mnt/docker-aio-config/data/configuration.json"`, substitute each occurrence of your old domain with your new domain and save and write out the file. Afterwards restart your containers from the AIO interface and everything should work as expected if the new domain is correctly configured.<br>
|
||||
If you are running AIO behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else), you need to obviously also change the domain in your reverse proxy config.
|
||||
|
||||
Additionally, after restarting the containers, you need to open the admin settings and update some values manually that cannot be changed automatically. Here is a list of some known places:
|
||||
- `https://your-nc-domain.com/settings/admin/talk` for Turn/Stun server and Signaling Server if you enabled Talk via the AIO interface
|
||||
- `https://your-nc-domain.com/settings/admin/theming` for the theming URL
|
||||
- `https://your-nc-domain.com/settings/admin/app_api` for the deploy daemon if you enabled the App API via the AIO interface
|
||||
|
||||
### How to properly reset the instance?
|
||||
If something goes unexpected routes during the initial installation, you might want to reset the AIO installation to be able to start from scratch.
|
||||
|
||||
|
||||
@@ -82,6 +82,7 @@ Add this as a new Apache site config:
|
||||
# Reverse proxy based on https://httpd.apache.org/docs/current/mod/mod_proxy_wstunnel.html
|
||||
RewriteEngine On
|
||||
ProxyPreserveHost On
|
||||
RequestHeader set X-Real-IP %{REMOTE_ADDR}s
|
||||
AllowEncodedSlashes NoDecode
|
||||
|
||||
ProxyPass / http://localhost:11000/ nocanon
|
||||
@@ -301,7 +302,7 @@ backend Nextcloud
|
||||
|
||||
</details>
|
||||
|
||||
### Nginx
|
||||
### Nginx, Freenginx, Openresty
|
||||
|
||||
<details>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user