mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-22 03:10:16 +00:00
Compare commits
328 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ca49f8962 | ||
|
|
de053c9b7d | ||
|
|
2942af2a22 | ||
|
|
68ffa35d6f | ||
|
|
ace709c485 | ||
|
|
91aeae9825 | ||
|
|
7e3b07e782 | ||
|
|
6ae4263654 | ||
|
|
c5c19129ba | ||
|
|
d01dc6ad8a | ||
|
|
1759f14c37 | ||
|
|
4e84080f56 | ||
|
|
d74614cba9 | ||
|
|
eda345865e | ||
|
|
44bbdd8cc5 | ||
|
|
f40c39722e | ||
|
|
29fb9f6378 | ||
|
|
147630df6d | ||
|
|
6a22a986a4 | ||
|
|
221cf9efbd | ||
|
|
9eeeac66a9 | ||
|
|
19d6352b35 | ||
|
|
6764b03eeb | ||
|
|
2631b3922a | ||
|
|
4efaddb0ad | ||
|
|
d74b0da0ee | ||
|
|
4837de43e0 | ||
|
|
647c2ca93d | ||
|
|
c509118457 | ||
|
|
1325393805 | ||
|
|
68e278d651 | ||
|
|
4e56d89ea6 | ||
|
|
64cd9acbce | ||
|
|
072010467f | ||
|
|
8f047c5841 | ||
|
|
cea7b11d49 | ||
|
|
61b1576c92 | ||
|
|
77a44ee7ff | ||
|
|
efe9aac94d | ||
|
|
c531f516d3 | ||
|
|
0663c01c29 | ||
|
|
61749514a1 | ||
|
|
577b22192d | ||
|
|
1fea550764 | ||
|
|
c684ce206c | ||
|
|
62c4cd4188 | ||
|
|
c9a0cd4f7e | ||
|
|
b60db87321 | ||
|
|
37b7e22851 | ||
|
|
dd4031c761 | ||
|
|
cca7eef06b | ||
|
|
7849d06b3e | ||
|
|
c41ed2b31f | ||
|
|
b83a772060 | ||
|
|
e3984f87a1 | ||
|
|
a817b8b903 | ||
|
|
da2d6f9a16 | ||
|
|
280114b7c1 | ||
|
|
8db30147ab | ||
|
|
5533ea7d13 | ||
|
|
50050574c7 | ||
|
|
dd74c9b3af | ||
|
|
c58c789f58 | ||
|
|
c4a332eab1 | ||
|
|
07bfea3b6c | ||
|
|
7cf6486c52 | ||
|
|
847fe97e47 | ||
|
|
da23586441 | ||
|
|
db77606f55 | ||
|
|
ddf90f8b1d | ||
|
|
f68dbb678e | ||
|
|
52b8f7bccb | ||
|
|
afba1368ea | ||
|
|
0b3d0d7ca3 | ||
|
|
aa94662aa7 | ||
|
|
ff7fdb5864 | ||
|
|
b1f14ea187 | ||
|
|
cfca4f6ad7 | ||
|
|
db1b0189c5 | ||
|
|
1ea7f48f9f | ||
|
|
4f86b0ad0a | ||
|
|
2112916255 | ||
|
|
f9fe028f77 | ||
|
|
12efc88bc8 | ||
|
|
37c299188c | ||
|
|
b87b3f7efe | ||
|
|
9397f12a75 | ||
|
|
b3d8cf78fb | ||
|
|
41ca74b2f6 | ||
|
|
d8d40c0026 | ||
|
|
0d29399e46 | ||
|
|
4b219fa692 | ||
|
|
6170e699c5 | ||
|
|
abec1ef102 | ||
|
|
b340152d80 | ||
|
|
ee5db17004 | ||
|
|
3c83570360 | ||
|
|
db81abed09 | ||
|
|
3a19de9e65 | ||
|
|
75f00d4e7e | ||
|
|
965f8611a1 | ||
|
|
4a00eb9347 | ||
|
|
13afcd944a | ||
|
|
69ea9d1a72 | ||
|
|
d0374e4b47 | ||
|
|
7b65109126 | ||
|
|
32dc801885 | ||
|
|
f87f8187ee | ||
|
|
2c71c2307b | ||
|
|
88fd732743 | ||
|
|
eb1753b2a2 | ||
|
|
953cf4437d | ||
|
|
a0752a22f6 | ||
|
|
cefdec414e | ||
|
|
f2987232da | ||
|
|
67d294ced7 | ||
|
|
033c8b6798 | ||
|
|
13da99fa91 | ||
|
|
844dcd068b | ||
|
|
1b3b385238 | ||
|
|
8bac3fd2fe | ||
|
|
ee3d2a4db7 | ||
|
|
f3ed548add | ||
|
|
3a2b1a2efe | ||
|
|
768545a1d8 | ||
|
|
bd09fc02b8 | ||
|
|
f039901993 | ||
|
|
417d36644f | ||
|
|
92f0f2bc44 | ||
|
|
39595d632c | ||
|
|
365e8f6f79 | ||
|
|
a87d7b3aa9 | ||
|
|
1542c894c1 | ||
|
|
21dfc131ad | ||
|
|
6f2ae6258f | ||
|
|
1eebe6fd60 | ||
|
|
0a1fba8c3b | ||
|
|
63aee30ed4 | ||
|
|
f3dff2f780 | ||
|
|
4cd8ac0ab7 | ||
|
|
ae261cbb17 | ||
|
|
0f15fb194d | ||
|
|
28aecab211 | ||
|
|
de49af4806 | ||
|
|
a07b3b8ccb | ||
|
|
ac54fce522 | ||
|
|
cc171c4c9e | ||
|
|
4aef95a87a | ||
|
|
2efeff2b96 | ||
|
|
25e597a123 | ||
|
|
f8f32a9a5d | ||
|
|
8f8a37c38f | ||
|
|
955908cc83 | ||
|
|
2b4f65a0aa | ||
|
|
85821b467b | ||
|
|
afab39dca9 | ||
|
|
dee3773bf3 | ||
|
|
04ef45667f | ||
|
|
bc358f32b1 | ||
|
|
1fb631cc51 | ||
|
|
00a2e88c22 | ||
|
|
5ff6292e24 | ||
|
|
e7bb4be145 | ||
|
|
96a577b093 | ||
|
|
16a5c1c04f | ||
|
|
0e10cfd20b | ||
|
|
895f4b82e3 | ||
|
|
d1b37c1216 | ||
|
|
4def229eea | ||
|
|
28cc905db1 | ||
|
|
1e55e776b4 | ||
|
|
7468386397 | ||
|
|
bfc5f40448 | ||
|
|
499c51add1 | ||
|
|
6333b59d2d | ||
|
|
3e4133da82 | ||
|
|
7bd36f9999 | ||
|
|
f4f9c3630a | ||
|
|
42898dbf7a | ||
|
|
521f9fd0e0 | ||
|
|
0d86e36ff6 | ||
|
|
c238e815fa | ||
|
|
f8e55119dd | ||
|
|
0b0322bec0 | ||
|
|
b0a3b8b9a7 | ||
|
|
f9b324cae1 | ||
|
|
468197172c | ||
|
|
431ee81083 | ||
|
|
7c7170c079 | ||
|
|
56304aae46 | ||
|
|
3fb8ae5b91 | ||
|
|
a9cf1e960c | ||
|
|
278d449bc2 | ||
|
|
e6c42f0bf8 | ||
|
|
03b846b3f4 | ||
|
|
d6a9f92aee | ||
|
|
c578a6e3f3 | ||
|
|
35ff787d77 | ||
|
|
666b5ef341 | ||
|
|
282588169a | ||
|
|
db5bfa7936 | ||
|
|
ec3895beef | ||
|
|
1be5749102 | ||
|
|
572dfd634f | ||
|
|
497d6d1191 | ||
|
|
2992198d9b | ||
|
|
da07aaa887 | ||
|
|
a8e9f6f91e | ||
|
|
b16dfd83ce | ||
|
|
a425f5b49b | ||
|
|
1ad0fcf1b6 | ||
|
|
1630867fb3 | ||
|
|
23755a0371 | ||
|
|
c19ba34cdf | ||
|
|
784da23323 | ||
|
|
5d2cc65aa0 | ||
|
|
02cc5f04ca | ||
|
|
22fdaa57ce | ||
|
|
276cd7d9d8 | ||
|
|
bdff564e2e | ||
|
|
409777cb7a | ||
|
|
96ea32405d | ||
|
|
a8f6e7a336 | ||
|
|
b6ad2782e4 | ||
|
|
b786415cfb | ||
|
|
4acc9d8f41 | ||
|
|
d2242b2eba | ||
|
|
2148b60fc0 | ||
|
|
d971f86f0c | ||
|
|
baa653d711 | ||
|
|
f658318df0 | ||
|
|
ce7a10e4c0 | ||
|
|
4f5d257af5 | ||
|
|
93fcf2783c | ||
|
|
3199b84934 | ||
|
|
cdf39556c1 | ||
|
|
fd38942b2b | ||
|
|
b0058954a1 | ||
|
|
560674d3f0 | ||
|
|
3a6b54057b | ||
|
|
9408d145c9 | ||
|
|
8d51f16d38 | ||
|
|
63e971c32b | ||
|
|
f152b41037 | ||
|
|
70136188b9 | ||
|
|
2fc2be363a | ||
|
|
76ccf69a05 | ||
|
|
b046294801 | ||
|
|
41a867e7f2 | ||
|
|
75ea7c4f27 | ||
|
|
4b8dd232c5 | ||
|
|
0e1eb9d1a8 | ||
|
|
16f764941e | ||
|
|
d6d0086a66 | ||
|
|
c06a52e2be | ||
|
|
1ec07aeabd | ||
|
|
c4f6c89b67 | ||
|
|
ea789d2dca | ||
|
|
f2a5b2bdc7 | ||
|
|
c1f1207a0e | ||
|
|
1ef6769941 | ||
|
|
28e2cc49b4 | ||
|
|
671dad5d6a | ||
|
|
fc5e581c50 | ||
|
|
3f9aa2b164 | ||
|
|
14eb8b5ab6 | ||
|
|
ab77b91a2b | ||
|
|
a060503744 | ||
|
|
e0c5682ce6 | ||
|
|
5904adfeb2 | ||
|
|
368b26766d | ||
|
|
68055bf303 | ||
|
|
a70ccef849 | ||
|
|
30994e1074 | ||
|
|
2a05f9df1e | ||
|
|
e7f5747026 | ||
|
|
8904349e5d | ||
|
|
ca4386bef9 | ||
|
|
8613079e60 | ||
|
|
87143bc7bd | ||
|
|
aec2b7904c | ||
|
|
fdf43612f1 | ||
|
|
3d7194ddad | ||
|
|
9200fa51bf | ||
|
|
986130bb1b | ||
|
|
f5cc4b014c | ||
|
|
6c3c5cf981 | ||
|
|
60d3df712e | ||
|
|
4d38c5b8f7 | ||
|
|
25cf173b18 | ||
|
|
81dd6bbc72 | ||
|
|
54985a8b65 | ||
|
|
febfd57448 | ||
|
|
2aad2c8b4c | ||
|
|
42113d4ed3 | ||
|
|
5e7a2005e5 | ||
|
|
744cace2a8 | ||
|
|
ce577c5769 | ||
|
|
8ce1b2615b | ||
|
|
58b25dfac2 | ||
|
|
bf71985343 | ||
|
|
4da7b8dee8 | ||
|
|
d4a8048cd4 | ||
|
|
d64e111fc5 | ||
|
|
350c4a8d0f | ||
|
|
5f657151c6 | ||
|
|
36f575d8a7 | ||
|
|
99c5ae8336 | ||
|
|
d4a3bbe104 | ||
|
|
b6aa1e9c60 | ||
|
|
124be702da | ||
|
|
8a79940005 | ||
|
|
78b1464977 | ||
|
|
dc761e259a | ||
|
|
38e2d51aa0 | ||
|
|
c59112192a | ||
|
|
76f2ae7dc9 | ||
|
|
44a86d664c | ||
|
|
e3f551c2a4 | ||
|
|
12fddf1787 | ||
|
|
34690eee02 | ||
|
|
2de24563c7 | ||
|
|
e81edfd930 | ||
|
|
f3e47e62f3 | ||
|
|
31896ae68e | ||
|
|
109b9dc019 | ||
|
|
41a3ef13c3 | ||
|
|
ddc1bce1c5 |
3
.github/dependabot.yml
vendored
3
.github/dependabot.yml
vendored
@@ -7,6 +7,9 @@ updates:
|
||||
time: "12:00"
|
||||
open-pull-requests-limit: 10
|
||||
rebase-strategy: "disabled"
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
- package-ecosystem: composer
|
||||
directory: "/php/"
|
||||
schedule:
|
||||
|
||||
2
.github/workflows/helm-release.yml
vendored
2
.github/workflows/helm-release.yml
vendored
@@ -41,7 +41,7 @@ jobs:
|
||||
helm lint ./nextcloud-aio-helm-chart
|
||||
|
||||
- name: Run chart-releaser
|
||||
uses: helm/chart-releaser-action@v1.6.0
|
||||
uses: helm/chart-releaser-action@v1.7.0
|
||||
with:
|
||||
mark_as_latest: false
|
||||
charts_dir: .
|
||||
|
||||
@@ -40,7 +40,7 @@ https://{$ADDITIONAL_TRUSTED_DOMAIN}:443,
|
||||
route /onlyoffice/* {
|
||||
uri strip_prefix /onlyoffice
|
||||
reverse_proxy {$ONLYOFFICE_HOST}:80 {
|
||||
header_up X-Forwarded-Host {http.request.host}/onlyoffice
|
||||
header_up X-Forwarded-Host {http.request.hostport}/onlyoffice
|
||||
header_up X-Forwarded-Proto https
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM caddy:2.8.4-alpine AS caddy
|
||||
FROM caddy:2.9.1-alpine AS caddy
|
||||
|
||||
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
|
||||
FROM httpd:2.4.62-alpine3.21
|
||||
FROM httpd:2.4.63-alpine3.21
|
||||
|
||||
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
||||
|
||||
|
||||
@@ -3,7 +3,3 @@
|
||||
nc -z "$NEXTCLOUD_HOST" 9000 || exit 0
|
||||
nc -z 127.0.0.1 8000 || exit 1
|
||||
nc -z 127.0.0.1 "$APACHE_PORT" || exit 1
|
||||
if ! nc -z "$NC_DOMAIN" 443; then
|
||||
echo "Could not reach $NC_DOMAIN on port 443."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM alpine:3.21.0
|
||||
FROM alpine:3.21.3
|
||||
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
||||
@@ -185,13 +185,27 @@ if [ "$BORG_MODE" = backup ]; then
|
||||
# Borg options
|
||||
# auto,zstd compression seems to has the best ratio based on:
|
||||
# https://forum.level1techs.com/t/optimal-compression-for-borg-backups/145870/6
|
||||
BORG_OPTS=(-v --stats --compression "auto,zstd" --exclude-caches)
|
||||
BORG_OPTS=(-v --stats --compression "auto,zstd")
|
||||
if [ "$NEW_REPOSITORY" = 1 ]; then
|
||||
BORG_OPTS+=(--progress)
|
||||
fi
|
||||
|
||||
# Exclude the nextcloud log and audit log for GDPR reasons
|
||||
BORG_EXCLUDE=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/nextcloud.log*" --exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/audit.log")
|
||||
BORG_INCLUDE=()
|
||||
|
||||
# Exclude datadir if .noaiobackup file was found
|
||||
# shellcheck disable=SC2144
|
||||
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup" ]; then
|
||||
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/")
|
||||
BORG_INCLUDE+=(--pattern="+/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup")
|
||||
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextclouds data directory. Excluding the data directory from backup!"
|
||||
# Exclude preview folder if .noaiobackup file was found
|
||||
elif [ -f /nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/.noaiobackup ]; then
|
||||
BORG_EXCLUDE+=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/")
|
||||
BORG_INCLUDE+=(--pattern="+/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/.noaiobackup")
|
||||
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in the preview directory. Excluding the preview directory from backup!"
|
||||
fi
|
||||
|
||||
# Make sure that there is always a borg.config file before creating a new backup
|
||||
if ! [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
|
||||
@@ -203,7 +217,7 @@ if [ "$BORG_MODE" = backup ]; then
|
||||
# Create the backup
|
||||
echo "Starting the backup..."
|
||||
get_start_time
|
||||
if ! borg create "${BORG_OPTS[@]}" "${BORG_EXCLUDE[@]}" "::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/" --exclude-from /borg_excludes; then
|
||||
if ! borg create "${BORG_OPTS[@]}" "${BORG_INCLUDE[@]}" "${BORG_EXCLUDE[@]}" "::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/" --exclude-from /borg_excludes; then
|
||||
echo "Deleting the failed backup archive..."
|
||||
borg delete --stats "::$CURRENT_DATE-nextcloud-aio"
|
||||
echo "Backup failed!"
|
||||
@@ -320,16 +334,30 @@ if [ "$BORG_MODE" = restore ]; then
|
||||
fi
|
||||
echo "Restoring '$SELECTED_ARCHIVE'..."
|
||||
|
||||
# Exclude previews from restore if selected to speed up process
|
||||
ADDITIONAL_RSYNC_EXCLUDES=()
|
||||
ADDITIONAL_BORG_EXCLUDES=()
|
||||
ADDITIONAL_FIND_EXCLUDES=()
|
||||
if [ -n "$RESTORE_EXCLUDE_PREVIEWS" ]; then
|
||||
# Exclude datadir if .noaiobackup file was found
|
||||
# shellcheck disable=SC2144
|
||||
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/.noaiobackup" ]; then
|
||||
# Keep these 3 in sync. Beware, the pattern syntax and the paths differ
|
||||
ADDITIONAL_RSYNC_EXCLUDES=(--exclude "nextcloud_aio_nextcloud_data/**")
|
||||
ADDITIONAL_BORG_EXCLUDES=(--exclude "sh:nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/**")
|
||||
ADDITIONAL_FIND_EXCLUDES=(-o -regex 'nextcloud_aio_volumes/nextcloud_aio_nextcloud_data\(/.*\)?')
|
||||
echo "⚠️⚠️⚠️ '.noaiobackup' file was found in Nextclouds data directory. Excluding the data directory from restore!"
|
||||
echo "You might run into problems due to this afterwards as potentially this makes the directory go out of sync with the database."
|
||||
echo "You might be able to fix this by running 'occ files:scan --all' and 'occ maintenance:repair' and 'occ files:scan-app-data' after the restore."
|
||||
echo "See https://github.com/nextcloud/all-in-one#how-to-run-occ-commands"
|
||||
# Exclude previews from restore if selected to speed up process or exclude preview folder if .noaiobackup file was found
|
||||
elif [ -n "$RESTORE_EXCLUDE_PREVIEWS" ] || [ -f /nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/.noaiobackup ]; then
|
||||
# Keep these 3 in sync. Beware, the pattern syntax and the paths differ
|
||||
ADDITIONAL_RSYNC_EXCLUDES=(--exclude "nextcloud_aio_nextcloud_data/appdata_*/preview/**")
|
||||
ADDITIONAL_BORG_EXCLUDES=(--exclude "sh:nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_*/preview/**")
|
||||
ADDITIONAL_FIND_EXCLUDES=(-o -regex 'nextcloud_aio_volumes/nextcloud_aio_nextcloud_data/appdata_[^/]*/preview\(/.*\)?')
|
||||
echo "Excluding previews from restore"
|
||||
echo "⚠️⚠️⚠️ Excluding previews from restore!"
|
||||
echo "You might run into problems due to this afterwards as potentially this makes the directory go out of sync with the database."
|
||||
echo "You might be able to fix this by running 'occ files:scan-app-data preview' after the restore."
|
||||
echo "See https://github.com/nextcloud/all-in-one#how-to-run-occ-commands"
|
||||
fi
|
||||
|
||||
# Save Additional Backup dirs
|
||||
@@ -521,7 +549,7 @@ if [ "$BORG_MODE" = check ]; then
|
||||
# Perform the check
|
||||
if ! borg check -v --verify-data; then
|
||||
echo "Some errors were found while checking the backup integrity!"
|
||||
echo "Check the AIO interface for advices on how to proceed now!"
|
||||
echo "Check the AIO interface for advice on how to proceed now!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.3/alpine/Dockerfile
|
||||
FROM clamav/clamav:1.4.1-17
|
||||
FROM clamav/clamav:1.4.2-28
|
||||
|
||||
COPY clamav.conf /clamav.conf
|
||||
COPY --chmod=775 start.script /start.script
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
|
||||
FROM collabora/code:24.04.10.2.1
|
||||
FROM collabora/code:24.04.12.4.1
|
||||
|
||||
USER root
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM haproxy:3.1.1-alpine
|
||||
FROM haproxy:3.1.5-alpine
|
||||
|
||||
# hadolint ignore=DL3002
|
||||
USER root
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM alpine:3.21.0
|
||||
FROM alpine:3.21.3
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache bash lighttpd netcat-openbsd; \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
|
||||
FROM elasticsearch:8.17.0
|
||||
FROM elasticsearch:8.17.2
|
||||
|
||||
USER root
|
||||
|
||||
@@ -22,3 +22,4 @@ USER 1000:0
|
||||
|
||||
HEALTHCHECK --interval=10s --timeout=5s --start-period=1m --retries=5 CMD /healthcheck.sh
|
||||
LABEL com.centurylinklabs.watchtower.enable="false"
|
||||
ENV ES_JAVA_OPTS="-Xms512M -Xmx512M"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM golang:1.23.4-alpine3.21 AS go
|
||||
FROM golang:1.24.0-alpine3.21 AS go
|
||||
|
||||
ENV IMAGINARY_HASH=8f36a26c448be8c151a3878404b75fcd1cd3cf0c
|
||||
ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache \
|
||||
@@ -13,7 +13,7 @@ RUN set -ex; \
|
||||
build-base; \
|
||||
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
|
||||
|
||||
FROM alpine:3.21.0
|
||||
FROM alpine:3.21.3
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
apk add --no-cache \
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Docker CLI is a requirement
|
||||
FROM docker:27.4.1-cli AS docker
|
||||
FROM docker:28.0.1-cli AS docker
|
||||
|
||||
# Caddy is a requirement
|
||||
FROM caddy:2.8.4-alpine AS caddy
|
||||
FROM caddy:2.9.1-alpine AS caddy
|
||||
|
||||
# From https://github.com/docker-library/php/blob/master/8.3/alpine3.21/fpm/Dockerfile
|
||||
FROM php:8.3.14-fpm-alpine3.21
|
||||
FROM php:8.3.17-fpm-alpine3.21
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8080
|
||||
|
||||
@@ -283,6 +283,15 @@ if [ "$?" = 6 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if auth.docker.io is reachable
|
||||
# Solves issues like https://github.com/nextcloud/all-in-one/discussions/5268
|
||||
if ! curl https://auth.docker.io/token 2>&1 | grep -q token; then
|
||||
print_red "Could not reach https://auth.docker.io."
|
||||
echo "Most likely is something blocking access to it."
|
||||
echo "You should be able to fix this by using https://github.com/nextcloud/all-in-one/tree/main/manual-install"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check that no changes have been made to timezone settings since AIO only supports running in Etc/UTC timezone
|
||||
if [ -n "$TZ" ]; then
|
||||
print_red "The environmental variable TZ has been set which is not supported by AIO since it only supports running in the default Etc/UTC timezone!"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM php:8.3.14-fpm-alpine3.21
|
||||
FROM php:8.3.17-fpm-alpine3.21
|
||||
|
||||
ENV PHP_MEMORY_LIMIT=512M
|
||||
ENV PHP_UPLOAD_LIMIT=16G
|
||||
@@ -8,7 +8,7 @@ ENV SOURCE_LOCATION=/usr/src/nextcloud
|
||||
ENV REDIS_DB_INDEX=0
|
||||
|
||||
# AIO settings start # Do not remove or change this line!
|
||||
ENV NEXTCLOUD_VERSION=30.0.4
|
||||
ENV NEXTCLOUD_VERSION=30.0.6
|
||||
ENV AIO_TOKEN=123456
|
||||
ENV AIO_URL=localhost
|
||||
# AIO settings end # Do not remove or change this line!
|
||||
@@ -125,6 +125,7 @@ RUN set -ex; \
|
||||
# set recommended PHP.ini settings
|
||||
# see https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/server_tuning.html#enable-php-opcache
|
||||
{ \
|
||||
echo 'opcache.max_accelerated_files=10000'; \
|
||||
echo 'opcache.memory_consumption=256'; \
|
||||
echo 'opcache.interned_strings_buffer=64'; \
|
||||
echo 'opcache.save_comments=1'; \
|
||||
@@ -146,7 +147,7 @@ RUN set -ex; \
|
||||
\
|
||||
{ \
|
||||
echo 'session.save_handler = redis'; \
|
||||
echo 'session.save_path = "tcp://${REDIS_HOST}:6379/${REDIS_DB_INDEX}?auth=${REDIS_HOST_PASSWORD}"'; \
|
||||
echo 'session.save_path = "tcp://${REDIS_HOST}:6379?database=${REDIS_DB_INDEX}${REDIS_USER_AUTH}&auth[]=${REDIS_HOST_PASSWORD}"'; \
|
||||
echo 'redis.session.locking_enabled = 1'; \
|
||||
echo 'redis.session.lock_retries = -1'; \
|
||||
echo 'redis.session.lock_wait_time = 10000'; \
|
||||
|
||||
@@ -18,4 +18,8 @@ if (getenv('REDIS_HOST')) {
|
||||
if (getenv('REDIS_DB_INDEX')) {
|
||||
$CONFIG['redis']['dbindex'] = (int) getenv('REDIS_DB_INDEX');
|
||||
}
|
||||
|
||||
if (getenv('REDIS_USER_AUTH') !== false) {
|
||||
$CONFIG['redis']['user'] = str_replace("&auth[]=", "", getenv('REDIS_USER_AUTH'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
|
||||
'bucket' => getenv('OBJECTSTORE_S3_BUCKET'),
|
||||
'key' => getenv('OBJECTSTORE_S3_KEY') ?: '',
|
||||
'secret' => getenv('OBJECTSTORE_S3_SECRET') ?: '',
|
||||
'sse_c_key' => getenv('OBJECTSTORE_S3_SSE_C_KEY') ?: '',
|
||||
'region' => getenv('OBJECTSTORE_S3_REGION') ?: '',
|
||||
'hostname' => getenv('OBJECTSTORE_S3_HOST') ?: '',
|
||||
'port' => getenv('OBJECTSTORE_S3_PORT') ?: '',
|
||||
@@ -26,4 +25,9 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$sse_c_key = getenv('OBJECTSTORE_S3_SSE_C_KEY');
|
||||
if ($sse_c_key) {
|
||||
$CONFIG['objectstore']['arguments']['sse_c_key'] = $sse_c_key;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,7 +158,13 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
# Check connection to appstore start # Do not remove or change this line!
|
||||
while true; do
|
||||
echo -e "Checking connection to appstore"
|
||||
CURL_STATUS="$(curl -LI "https://apps.nextcloud.com/" -o /dev/null -w '%{http_code}\n' -s)"
|
||||
APPSTORE_URL="https://apps.nextcloud.com/"
|
||||
if grep -q appstoreurl /var/www/html/config/config.php; then
|
||||
set -x
|
||||
APPSTORE_URL="$(grep appstoreurl /var/www/html/config/config.php | grep -oP 'https://.*v[0-9]+')"
|
||||
set +x
|
||||
fi
|
||||
CURL_STATUS="$(curl -LI "$APPSTORE_URL" -o /dev/null -w '%{http_code}\n' -s)"
|
||||
if [[ "$CURL_STATUS" = "200" ]]
|
||||
then
|
||||
echo "Appstore is reachable"
|
||||
@@ -858,17 +864,20 @@ else
|
||||
fi
|
||||
|
||||
# Docker socket proxy
|
||||
# app_api is a shipped app
|
||||
if [ -d "/var/www/html/custom_apps/app_api" ]; then
|
||||
php /var/www/html/occ app:disable app_api
|
||||
rm -r "/var/www/html/custom_apps/app_api"
|
||||
fi
|
||||
if [ "$DOCKER_SOCKET_PROXY_ENABLED" = 'yes' ]; then
|
||||
if ! [ -d "/var/www/html/custom_apps/app_api" ]; then
|
||||
php /var/www/html/occ app:install app_api
|
||||
elif [ "$(php /var/www/html/occ config:app:get app_api enabled)" != "yes" ]; then
|
||||
if [ "$(php /var/www/html/occ config:app:get app_api enabled)" != "yes" ]; then
|
||||
php /var/www/html/occ app:enable app_api
|
||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||
php /var/www/html/occ app:update app_api
|
||||
fi
|
||||
else
|
||||
if [ "$REMOVE_DISABLED_APPS" = yes ] && [ -d "/var/www/html/custom_apps/app_api" ]; then
|
||||
php /var/www/html/occ app:remove app_api
|
||||
if [ "$REMOVE_DISABLED_APPS" = yes ]; then
|
||||
if [ "$(php /var/www/html/occ config:app:get app_api enabled)" != "no" ]; then
|
||||
php /var/www/html/occ app:disable app_api
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# Wait until the apache container is ready
|
||||
while ! nc -z "$APACHE_HOST" "$APACHE_PORT"; do
|
||||
echo "Waiting for Apache to become available..."
|
||||
echo "Waiting for $APACHE_HOST to become available..."
|
||||
sleep 15
|
||||
done
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM alpine:3.21.0
|
||||
FROM alpine:3.21.3
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
@@ -62,7 +62,7 @@ fi
|
||||
|
||||
# Set sensitive values as env
|
||||
export DATABASE_URL="$DATABASE_TYPE://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB"
|
||||
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
||||
export REDIS_URL="redis://$REDIS_USER:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
||||
|
||||
# Run it
|
||||
/nextcloud/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
|
||||
FROM onlyoffice/documentserver:8.2.2.1
|
||||
FROM onlyoffice/documentserver:8.3.1.1
|
||||
|
||||
# USER root is probably used
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/docker-library/postgres/blob/master/16/alpine3.21/Dockerfile
|
||||
FROM postgres:16.6-alpine
|
||||
FROM postgres:16.8-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/docker-library/redis/blob/master/7.2/alpine/Dockerfile
|
||||
FROM redis:7.2.6-alpine
|
||||
FROM redis:7.2.7-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM python:3.13.1-alpine3.21
|
||||
FROM python:3.13.2-alpine3.21
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM nats:2.10.24-scratch AS nats
|
||||
FROM nats:2.10.26-scratch AS nats
|
||||
FROM eturnal/eturnal:1.12.1 AS eturnal
|
||||
FROM strukturag/nextcloud-spreed-signaling:2.0.1 AS signaling
|
||||
FROM alpine:3.21.0 AS janus
|
||||
FROM strukturag/nextcloud-spreed-signaling:2.0.2 AS signaling
|
||||
FROM alpine:3.21.3 AS janus
|
||||
|
||||
ARG JANUS_VERSION=v1.3.0
|
||||
WORKDIR /src
|
||||
@@ -34,7 +34,7 @@ RUN set -ex; \
|
||||
make configs; \
|
||||
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
|
||||
|
||||
FROM alpine:3.21.0
|
||||
FROM alpine:3.21.3
|
||||
ENV ETURNAL_ETC_DIR="/conf"
|
||||
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
|
||||
COPY --from=eturnal --chmod=777 --chown=1000:1000 /opt/eturnal /opt/eturnal
|
||||
|
||||
@@ -30,14 +30,23 @@ if [ -n "$IPv4_ADDRESS_TALK" ] && [ "$IPv4_ADDRESS_TALK_RELAY" = "$IPv4_ADDRESS_
|
||||
IPv4_ADDRESS_TALK=""
|
||||
fi
|
||||
|
||||
set -x
|
||||
IP_BINDING="::"
|
||||
if grep -q "1" /sys/module/ipv6/parameters/disable \
|
||||
|| grep -q "1" /proc/sys/net/ipv6/conf/all/disable_ipv6 \
|
||||
|| grep -q "1" /proc/sys/net/ipv6/conf/default/disable_ipv6; then
|
||||
IP_BINDING="0.0.0.0"
|
||||
fi
|
||||
set +x
|
||||
|
||||
# Turn
|
||||
cat << TURN_CONF > "/conf/eturnal.yml"
|
||||
eturnal:
|
||||
listen:
|
||||
- ip: "::"
|
||||
- ip: "$IP_BINDING"
|
||||
port: $TALK_PORT
|
||||
transport: udp
|
||||
- ip: "::"
|
||||
- ip: "$IP_BINDING"
|
||||
port: $TALK_PORT
|
||||
transport: tcp
|
||||
log_dir: stdout
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
|
||||
FROM containrrr/watchtower:1.7.1 AS watchtower
|
||||
|
||||
FROM alpine:3.21.0
|
||||
FROM alpine:3.21.3
|
||||
|
||||
RUN set -ex; \
|
||||
apk upgrade --no-cache -a; \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Probably from this file: https://github.com/nextcloud/whiteboard/blob/main/Dockerfile
|
||||
FROM ghcr.io/nextcloud-releases/whiteboard:v1.0.4
|
||||
FROM ghcr.io/nextcloud-releases/whiteboard:v1.0.5
|
||||
|
||||
USER root
|
||||
RUN set -ex; \
|
||||
@@ -13,6 +13,8 @@ COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
HEALTHCHECK CMD /healthcheck.sh
|
||||
|
||||
WORKDIR /tmp
|
||||
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
|
||||
LABEL com.centurylinklabs.watchtower.enable="false"
|
||||
|
||||
@@ -11,7 +11,7 @@ if [ -z "$REDIS_DB_INDEX" ]; then
|
||||
REDIS_DB_INDEX=0
|
||||
fi
|
||||
|
||||
export REDIS_URL="redis://:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
||||
export REDIS_URL="redis://$REDIS_USER:$REDIS_HOST_PASSWORD@$REDIS_HOST/$REDIS_DB_INDEX"
|
||||
|
||||
# Run it
|
||||
exec npm run server:start
|
||||
exec npm --prefix /app run server:start
|
||||
|
||||
@@ -11,6 +11,6 @@ declare(strict_types=1);
|
||||
/** @var array $_ */ ?>
|
||||
<div id="allinone" class="section">
|
||||
<h2><?php p($l->t('Nextcloud All-in-One'));?></h2>
|
||||
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank" rel="noopener">Open Nextcloud AIO Interface ↗</a><br><br>
|
||||
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank">Open Nextcloud AIO Interface ↗</a><br><br>
|
||||
<p><a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface">Click here for more infos on this feature (e.g. also on how to change the link in the button)</a></p>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"aio_services_v1": [
|
||||
{
|
||||
"container_name": "nextcloud-aio-borgbackup-viewer",
|
||||
"image_tag": "v1",
|
||||
"display_name": "Borg Backup Viewer",
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/borgbackup-viewer",
|
||||
"image": "szaimen/aio-borgbackup-viewer",
|
||||
"internal_port": "5801",
|
||||
"ports": [
|
||||
{
|
||||
"ip_binding": "",
|
||||
"port_number": "5801",
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"environment": [
|
||||
"BORG_HOST_ID=nextcloud-aio-borgbackup-viewer",
|
||||
"WEB_AUTHENTICATION_USERNAME=nextcloud",
|
||||
"WEB_AUTHENTICATION_PASSWORD=%BORGBACKUP_VIEWER_PASSWORD%",
|
||||
"WEB_LISTENING_PORT=5801",
|
||||
"BORG_PASSPHRASE=%BORGBACKUP_PASSWORD%",
|
||||
"BORG_REPO=/mnt/borgbackup/borg"
|
||||
],
|
||||
"secrets": [
|
||||
"BORGBACKUP_VIEWER_PASSWORD",
|
||||
"BORGBACKUP_PASSWORD"
|
||||
],
|
||||
"ui_secret": "BORGBACKUP_VIEWER_PASSWORD",
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_backup_cache",
|
||||
"destination": "/root",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "%NEXTCLOUD_DATADIR%",
|
||||
"destination": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_mastercontainer",
|
||||
"destination": "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "%BORGBACKUP_HOST_LOCATION%",
|
||||
"destination": "/mnt/borgbackup",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_elasticsearch",
|
||||
"destination": "/nextcloud_aio_volumes/nextcloud_aio_elasticsearch",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_redis",
|
||||
"destination": "/mnt/redis",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"devices": [
|
||||
"/dev/fuse"
|
||||
],
|
||||
"cap_add": [
|
||||
"SYS_ADMIN"
|
||||
],
|
||||
"apparmor_unconfined": true
|
||||
}
|
||||
]
|
||||
}
|
||||
17
community-containers/borgbackup-viewer/readme.md
Normal file
17
community-containers/borgbackup-viewer/readme.md
Normal file
@@ -0,0 +1,17 @@
|
||||
## Borgbackup Viewer
|
||||
This container allows to view the local borg repository in a web session. It also allows you to restore files and folders from the backup by using desktop programs in a web browser.
|
||||
|
||||
### Notes
|
||||
- After adding and starting the container, you need to visit `https://ip.address.of.this.server:5801` in order to log in with the user `nextcloud` and the password that you can see next to the container in the AIO interface. (The web page uses a self-signed certificate, so you need to accept the warning).
|
||||
- Then, you should see a terminal. There type in `borg mount /mnt/borgbackup/borg /tmp/borg` to mount the backup archive at `/tmp/borg` inside the container. Afterwards type in `nautilus /tmp/borg` which will show a file explorer and allows you to see all the files. You can then copy files and folders back to their initial mountpoints inside `/nextcloud_aio_volumes/`, `/host_mounts/` and `/docker_volumes/`. ⚠️ Be very carefully while doing that as can break your instance!
|
||||
- After you are done with the operation, click on the terminal in the background and press `[CTRL]+[c]` multiple times to close any open application. Then run `umount /tmp/borg` to unmount the mountpoint correctly.
|
||||
- You can also delete specific archives by running `borg list`, delete a specific archive e.g. via `borg delete --stats --progress "::20220223_174237-nextcloud-aio"` and compact the archives via `borg compact`. After doing so, make sure to update the backup archives list in the AIO interface! You can do so by clicking on the `Check backup integrity` button or `Create backup` button.
|
||||
- ⚠️ After you are done doing your operations, remove the container for better security again from the stack: https://github.com/nextcloud/all-in-one/tree/main/community-containers#how-to-remove-containers-from-aios-stack
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
### Repository
|
||||
https://github.com/szaimen/aio-borgbackup-viewer
|
||||
|
||||
### Maintainer
|
||||
https://github.com/szaimen
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
## Caddy with geoblocking
|
||||
This container bundles caddy and auto-configures it for you. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden by listening on `bw.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart by listening on `mail.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin by listening on `media.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap by listening on `ldap.$NC_DOMAIN`, if installed. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb by listening on `tables.$NC_DOMAIN`, if installed.
|
||||
This container bundles caddy and auto-configures it for you. It also covers [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden) by listening on `bw.$NC_DOMAIN`, if installed. It also covers [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart) by listening on `mail.$NC_DOMAIN`, if installed. It also covers [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin) by listening on `media.$NC_DOMAIN`, if installed. It also covers [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap) by listening on `ldap.$NC_DOMAIN`, if installed. It also covers [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb) by listening on `tables.$NC_DOMAIN`, if installed. It also covers [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr) by listening on `requests.$NC_DOMAIN`, if installed.
|
||||
|
||||
### Notes
|
||||
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
|
||||
- Make sure that no other service is using port 443 on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep 443` before installing AIO.
|
||||
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, make sure that you point `bw.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for vaultwarden.
|
||||
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart, make sure that you point `mail.your-nc-domain.com` to your server using an A, AAAA or CNAME record so that caddy can get a certificate automatically for stalwart.
|
||||
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin, make sure that you point `media.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyfin.
|
||||
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap, make sure that you point `ldap.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for lldap.
|
||||
- If you want to use this with https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb, make sure that you point `tables.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nocodb.
|
||||
- If you want to use this with [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden), make sure that you point `bw.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for vaultwarden.
|
||||
- If you want to use this with [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart), make sure that you point `mail.your-nc-domain.com` to your server using an A, AAAA or CNAME record so that caddy can get a certificate automatically for stalwart.
|
||||
- If you want to use this with [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin), make sure that you point `media.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyfin.
|
||||
- If you want to use this with [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap), make sure that you point `ldap.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for lldap.
|
||||
- If you want to use this with [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb), make sure that you point `tables.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nocodb.
|
||||
- If you want to use this with [jellyseerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr), make sure that you point `requests.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for jellyseerr.
|
||||
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
|
||||
- You can add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup.
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
37
community-containers/calcardbackup/calcardbackup.json
Normal file
37
community-containers/calcardbackup/calcardbackup.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"aio_services_v1": [
|
||||
{
|
||||
"container_name": "nextcloud-aio-calcardbackup",
|
||||
"display_name": "Calendar and contacts backup",
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/calcardbackup",
|
||||
"image": "waja/calcardbackup",
|
||||
"image_tag": "latest",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"CRON_TIME=0 0 * * *",
|
||||
"INIT_BACKUP=yes",
|
||||
"BACKUP_DIR=/backup",
|
||||
"NC_DIR=/nextcloud",
|
||||
"NC_HOST=%NC_DOMAIN%",
|
||||
"DB_HOST=nextcloud-aio-database",
|
||||
"DB_PORT=5432",
|
||||
"CALCARD_OPTS=-ltm 5"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_calcardbackup",
|
||||
"destination": "/backup",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_nextcloud",
|
||||
"destination": "/nextcloud",
|
||||
"writeable": false
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_calcardbackup"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
15
community-containers/calcardbackup/readme.md
Normal file
15
community-containers/calcardbackup/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
## calcardbackup
|
||||
This container packages calcardbackup which is a tool that exports calendars and addressbooks from Nextcloud to .ics and .vcf files and saves them to a compressed file.
|
||||
|
||||
### Notes
|
||||
- Backups will be created at 00:00 CEST every day. Make sure that this does not conflict with the configured daily backups inside AIO.
|
||||
- All the exports will be included in AIOs backup solution
|
||||
- You can find the exports in the nextcloud_aio_calcardbackup volume
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
### Repository
|
||||
https://github.com/waja/docker-calcardbackup
|
||||
|
||||
### Maintainer
|
||||
https://github.com/pailloM
|
||||
|
||||
@@ -16,10 +16,7 @@
|
||||
"aio_variables": [
|
||||
"nextcloud_memory_limit=2048M"
|
||||
],
|
||||
"devices": [
|
||||
"/dev/dri"
|
||||
],
|
||||
"enable_nvidia_gpu": true,
|
||||
"enable_nvidia_gpu": false,
|
||||
"nextcloud_exec_commands": [
|
||||
"php /var/www/html/occ app:install facerecognition",
|
||||
"php /var/www/html/occ app:enable facerecognition",
|
||||
|
||||
@@ -3,6 +3,7 @@ This container bundles the external model of facerecognition and auto-configures
|
||||
|
||||
### Notes
|
||||
- This container needs imaginary in order to analyze modern file format images. Make sure to enable imaginary in the AIO interface before adding this container.
|
||||
- The image analysis is currently set to fixed value of `1G`. See [this](https://github.com/search?q=repo%3Anextcloud%2Fall-in-one+1G+path%3A%2F%5Ecommunity-containers%5C%2Ffacerecognition%5C%2F%2F&type=code)
|
||||
- Facerecognition is by default disabled for all users, if you want to enable facerecognition for all users, you can run the following before adding this container:
|
||||
```bash
|
||||
# Go into the container
|
||||
|
||||
@@ -25,6 +25,16 @@
|
||||
"source": "nextcloud_aio_vaultwarden_logs",
|
||||
"destination": "/vaultwarden",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_jellyfin",
|
||||
"destination": "/jellyfin",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_jellyseerr",
|
||||
"destination": "/jellyseerr",
|
||||
"writeable": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
## Fail2ban
|
||||
This container bundles fail2ban and auto-configures it for you in order to block ip-addresses automatically. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, if installed.
|
||||
This container bundles fail2ban and auto-configures it for you in order to block ip-addresses automatically. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin, and https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr, if installed.
|
||||
|
||||
### Notes
|
||||
- If you get an error like `"ip6tables v1.8.9 (legacy): can't initialize ip6tables table filter': Table does not exist (do you need to insmod?)"`, you need to enable ip6tables on your host via `sudo modprobe ip6table_filter`.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
{
|
||||
"source": "%NEXTCLOUD_MOUNT%",
|
||||
"destination": "%NEXTCLOUD_MOUNT%",
|
||||
"writeable": false
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"devices": [
|
||||
|
||||
@@ -8,6 +8,7 @@ This container bundles Jellyfin and auto-configures it for you.
|
||||
- In order to access your Jellyfin 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) and [Jellyfin's networking documentation](https://jellyfin.org/docs/general/networking/#running-jellyfin-behind-a-reverse-proxy), OR use the [Caddy](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy) community container that will automatically configure `media.$NC_DOMAIN` to redirect to your Jellyfin.
|
||||
- ⚠️ After the initial start, Jellyfin shows a configuration page to set up the root password, etc. **Be careful to initialize your Jellyfin before adding the DNS record.**
|
||||
- If you have a firewall like ufw configured, you might need to open all Jellyfin ports in there first in order to make it work. Especially port 8096 is important!
|
||||
- If you want to secure the installation with fail2ban, you might want to check out https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban
|
||||
- The data of Jellyfin will be automatically included in AIO's backup solution!
|
||||
- See [here](https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers) how to add it to the AIO stack.
|
||||
|
||||
|
||||
35
community-containers/jellyseerr/jellyseerr.json
Normal file
35
community-containers/jellyseerr/jellyseerr.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"aio_services_v1": [
|
||||
{
|
||||
"container_name": "nextcloud-aio-jellyseerr",
|
||||
"display_name": "Jellyseerr",
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr",
|
||||
"image": "fallenbagel/jellyseerr",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "5055",
|
||||
"restart": "unless-stopped",
|
||||
"init": false,
|
||||
"ports": [
|
||||
{
|
||||
"ip_binding": "%APACHE_IP_BINDING%",
|
||||
"port_number": "5055",
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"environment": [
|
||||
"PORT=5055",
|
||||
"TZ=%TIMEZONE%"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_jellyseerr",
|
||||
"destination": "/app/config",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_jellyseerr"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
16
community-containers/jellyseerr/readme.md
Normal file
16
community-containers/jellyseerr/readme.md
Normal file
@@ -0,0 +1,16 @@
|
||||
## Jellyseerr
|
||||
This container bundles Jellyseerr and auto-configures it for you.
|
||||
|
||||
### Notes
|
||||
- This container is only intended to be used inside home networks as it uses http for its management page by default.
|
||||
- After adding and starting the container, you can directly visit `http://ip.address.of.server:5055` and access your new Jellyseerr instance, which can be used to manage Plex, Jellyfin, and Emby.
|
||||
- In order to access your Jellyseerr 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) and [Jellyseerr's reverse proxy documentation.](https://docs.jellyseerr.dev/extending-jellyseerr/reverse-proxy), OR use the Caddy community container that will automatically configure requests.$NC_DOMAIN to redirect to your Jellyseerr. Note that it is recommended to [enable CSRF protection in Jellyseerr](https://docs.jellyseerr.dev/using-jellyseerr/settings/general#enable-csrf-protection) for added security if you plan to use Jellyseerr outside the local network, but make sure to read up on it and understand the caveats first.
|
||||
- If you want to secure the installation with fail2ban, you might want to check out https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban. Note that [enabling the proxy support option in Jellyseerr](https://docs.jellyseerr.dev/using-jellyseerr/settings/general#enable-proxy-support) is required for this to work properly.
|
||||
- The config of Jellyseerr will be automatically included in AIO's backup solution!
|
||||
- See [here](https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers) how to add it to the AIO stack.
|
||||
|
||||
### Repository
|
||||
https://github.com/Fallenbagel/jellyseerr
|
||||
|
||||
### Maintainer
|
||||
https://github.com/Anvil5465
|
||||
@@ -27,6 +27,7 @@
|
||||
"LLDAP_JWT_SECRET",
|
||||
"LLDAP_LDAP_USER_PASS"
|
||||
],
|
||||
"ui_secret": "LLDAP_JWT_SECRET",
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_lldap",
|
||||
|
||||
@@ -3,7 +3,7 @@ This container bundles LLDAP server and auto-configures your Nextcloud instance
|
||||
|
||||
### 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 username `admin` and the password that you can retrieve via `sudo docker inspect nextcloud-aio-lldap | grep LLDAP_JWT_SECRET`.
|
||||
- After adding and starting the container, you can log in to the lldap web interface by using the username `admin` and the secret that you can see next to the container in the AIO interface.
|
||||
- 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
|
||||
|
||||
@@ -29,10 +29,7 @@
|
||||
"writeable": false
|
||||
}
|
||||
],
|
||||
"devices": [
|
||||
"/dev/dri"
|
||||
],
|
||||
"enable_nvidia_gpu": true,
|
||||
"enable_nvidia_gpu": false,
|
||||
"nextcloud_exec_commands": [
|
||||
"mkdir '/mnt/ncdata/admin/files/nextcloud-aio-local-ai'",
|
||||
"touch '/mnt/ncdata/admin/files/nextcloud-aio-local-ai/models.yaml'",
|
||||
|
||||
@@ -7,7 +7,7 @@ This container bundles Local AI and auto-configures it for you.
|
||||
- Example for content of `models.yaml` (if you add all of them, it takes around 10GB additional space):
|
||||
```yaml
|
||||
# Stable Diffusion in NCNN with c++, supported txt2img and img2img
|
||||
- url: github:mudler/LocalAI/gallery/stablediffusion.yaml
|
||||
- url: github:mudler/LocalAI/blob/master/gallery/stablediffusion.yaml
|
||||
name: Stable_diffusion
|
||||
```
|
||||
- To make it work, you first need to browse `https://your-nc-domain.com/settings/admin/ai` and enable or disable specific features for your models in the openAI settings. Afterwards using the Nextcloud Assistant should work.
|
||||
|
||||
59
community-containers/makemkv/makemkv.json
Normal file
59
community-containers/makemkv/makemkv.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"aio_services_v1": [
|
||||
{
|
||||
"container_name": "nextcloud-aio-makekv",
|
||||
"display_name": "MakeMKV",
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/makemkv",
|
||||
"image": "jlesage/makemkv",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "5802",
|
||||
"restart": "unless-stopped",
|
||||
"ports": [
|
||||
{
|
||||
"ip_binding": "",
|
||||
"port_number": "5802",
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_makemkv",
|
||||
"destination": "/config",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "%NEXTCLOUD_DATADIR%",
|
||||
"destination": "/storage",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "%NEXTCLOUD_MOUNT%",
|
||||
"destination": "/output",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "/dev",
|
||||
"destination": "/dev",
|
||||
"writeable": false
|
||||
}
|
||||
],
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"SECURE_CONNECTION=1",
|
||||
"WEB_AUTHENTICATION=1",
|
||||
"USER_ID=33",
|
||||
"GROUP_ID=33",
|
||||
"WEB_AUTHENTICATION_USERNAME=makemkv",
|
||||
"WEB_AUTHENTICATION_PASSWORD=%MAKEMKV_PASSWORD%",
|
||||
"WEB_LISTENING_PORT=5802"
|
||||
],
|
||||
"secrets": [
|
||||
"MAKEMKV_PASSWORD"
|
||||
],
|
||||
"ui_secret": "MAKEMKV_PASSWORD",
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_makemkv"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
20
community-containers/makemkv/readme.md
Normal file
20
community-containers/makemkv/readme.md
Normal file
@@ -0,0 +1,20 @@
|
||||
## MakeMKV
|
||||
This container bundles MakeMKV and auto-configures it for you.
|
||||
|
||||
### Notes
|
||||
- This container should only be run in home networks
|
||||
- ⚠️ This container mounts all devices from the host inside the container in order to be able to access the external DVD/Blu-ray drives which is a security issue. However no better solution was found for the time being.
|
||||
- This container only works on Linux and not on Docker-Desktop.
|
||||
- This container requires the [`NEXTCLOUD_MOUNT` variable in AIO to be set](https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host). Otherwise the output will not be saved correctly..
|
||||
- After adding and starting the container, you need to visit `https://internal.ip.of.server:5802` in order to log in with the `makemkv` user and the password that you can see next to the container in the AIO interface. (The web page uses a self-signed certificate, so you need to accept the warning).
|
||||
- After the first login, you can adjust the `/output` directory in the MakeMKV settings to a subdirectory of the root of your chosen `NEXTCLOUD_MOUNT`. (by default `NEXTCLOUD_MOUNT` is mounted to `/output` inside the container. Thus all data is written to the root of it)
|
||||
- The configured `NEXTCLOUD_DATADIR` is getting mounted to `/storage` inside the container.
|
||||
- The config data of MakeMKV will be automatically included in AIOs backup solution!
|
||||
- ⚠️ After you are done doing your operations, remove the container for better security again from the stack: https://github.com/nextcloud/all-in-one/tree/main/community-containers#how-to-remove-containers-from-aios-stack
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
### Repository
|
||||
https://github.com/jlesage/docker-makemkv
|
||||
|
||||
### Maintainer
|
||||
https://github.com/szaimen
|
||||
@@ -28,6 +28,7 @@
|
||||
"NOCODB_JWT_SECRET",
|
||||
"NOCODB_USER_PASS"
|
||||
],
|
||||
"ui_secret": "NOCODB_USER_PASS",
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_nocodb",
|
||||
|
||||
@@ -17,7 +17,7 @@ This is an alternative of **Airtable**.
|
||||
- You need to configure a reverse proxy in order to run this container since nocodb 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 `tables.$NC_DOMAIN` is supported as subdomain! So if Nextcloud is using `your-domain.com`, nocodb will use `tables.your-domain.com`.
|
||||
- The data of NocoDb will be automatically included in AIOs backup solution!
|
||||
- After adding and starting the container, you need to run `docker inspect nextcloud-aio-nocodb | grep NC_ADMIN_PASS` to obtain the system administrator password (username: `admin@noco.db`). With this information, you can log in to the web interface at `https://tables.$NC_DOMAIN/#/signin`
|
||||
- After adding and starting the container, you can log in to the web interface at `https://tables.$NC_DOMAIN/#/signin` with the username `admin@noco.db` and the password that you can see in the AIO interface next to the container.
|
||||
- See https://docs.nocodb.com/ for usage of NocoDb
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ This container contains a fork of the Nginx Proxy Manager, which is a WebUI for
|
||||
|
||||
### Notes
|
||||
- This container is incompatible with the [caddy](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy) community container. So make sure that you do not enable both at the same time!
|
||||
- You can ignore the NPM configuration of the reverse-proxy.md. The NPMplus fork already contains the changes of the advanced tab.
|
||||
- Make sure that no other service is using port `443 (tcp/upd)` or `81 (tcp)` on your host as otherwise the containers will fail to start. You can check this with `sudo netstat -tulpn | grep "443\|81"` before installing AIO.
|
||||
- Please change the default login data first, after you can read inside the logs that the default config for AIO is created and there are no errors.
|
||||
- After the container was started the first time, please check the logs for errors. Then you can open NPMplus on `https://<ip>:81` and change the password.
|
||||
@@ -11,7 +10,7 @@ This container contains a fork of the Nginx Proxy Manager, which is a WebUI for
|
||||
- If you want to use NPMplus behind a domain and outside localhost just create a new proxy host inside the NPMplus which proxies to `https`, `127.0.0.1` and port `81` - all other settings should be the same as for the AIO host.
|
||||
- If you want to set env options from this [compose.yaml](https://github.com/ZoeyVid/NPMplus/blob/develop/compose.yaml), please set them inside the `.env` file which you can find in the `nextcloud_aio_npmplus` volume
|
||||
- The data (certs, configs, etc.) of NPMplus will be automatically included in AIOs backup solution!
|
||||
- **Important:** you always need to enable https for your hosts, since `DISABLE_HTTP` is set to true
|
||||
- **Important:** you always need to enable https for your hosts, since `DISABLE_HTTP` is set to true by default
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
### Repository and Documentation
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
],
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"WEBPASSWORD=%PIHOLE_WEBPASSWORD%",
|
||||
"DNSMASQ_LISTENING=all",
|
||||
"WEB_PORT=8573"
|
||||
"FTLCONF_webserver_api_password=%PIHOLE_WEBPASSWORD%",
|
||||
"FTLCONF_dns_listeningMode=all",
|
||||
"FTLCONF_webserver_port=8573"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
@@ -48,6 +48,7 @@
|
||||
"nextcloud_aio_pihole",
|
||||
"nextcloud_aio_pihole_dnsmasq"
|
||||
],
|
||||
"ui_secret": "PIHOLE_WEBPASSWORD",
|
||||
"secrets": [
|
||||
"PIHOLE_WEBPASSWORD"
|
||||
]
|
||||
|
||||
@@ -6,7 +6,7 @@ This container bundles pi-hole and auto-configures it for you.
|
||||
- Make sure that no dns server is already running by checking with `sudo netstat -tulpn | grep 53`. Otherwise the container will not be able to start!
|
||||
- The DHCP functionality of Pi-hole has been disabled!
|
||||
- The data of pi-hole will be automatically included in AIOs backup solution!
|
||||
- After adding and starting the container, you can visit `http://ip.address.of.this.server:8573/admin` in order to log in with the admin key that you can retrieve when running `sudo docker inspect nextcloud-aio-pihole | grep WEBPASSWORD`. There you can configure the pi-hole setup. Also you can add local dns records.
|
||||
- After adding and starting the container, you can visit `http://ip.address.of.this.server:8573/admin` in order to log in with the admin key that you can see next to the container in the AIO interface. There you can configure the pi-hole setup. Also you can add local dns records.
|
||||
- You can configure your home network now to use pi-hole as its dns server by configuring your router.
|
||||
- Additionally, you can configure the docker daemon to use that by editing `/etc/docker/daemon.json` and adding ` { "dns" : [ "ip.address.of.this.server" , "8.8.8.8" ] } `.
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
16
community-containers/scrutiny/readme.md
Normal file
16
community-containers/scrutiny/readme.md
Normal file
@@ -0,0 +1,16 @@
|
||||
## Scrutiny
|
||||
This container bundles Scrutiny which is a frontend for SMART stats and auto-configures it for you.
|
||||
|
||||
### Notes
|
||||
- This container should only be run in home networks
|
||||
- ⚠️ This container mounts all devices from the host inside the container in order to be able to access the drives and smartctl stats which is a security issue. However no better solution was found for the time being.
|
||||
- This container only works on Linux and not on Docker-Desktop.
|
||||
- After adding and starting the container, you need to visit `http://internal.ip.of.server:8000` which will show the dashboard for your drives.
|
||||
- It currently does not support sending notifications as no good solution was found yet that makes this possible. See https://github.com/szaimen/aio-scrutiny/issues/3
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
### Repository
|
||||
https://github.com/szaimen/aio-scrutiny
|
||||
|
||||
### Maintainer
|
||||
https://github.com/szaimen
|
||||
56
community-containers/scrutiny/scrutiny.json
Normal file
56
community-containers/scrutiny/scrutiny.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"aio_services_v1": [
|
||||
{
|
||||
"container_name": "nextcloud-aio-scrutiny",
|
||||
"display_name": "Scrutiny",
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/scrutiny",
|
||||
"image": "szaimen/aio-scrutiny",
|
||||
"image_tag": "v1",
|
||||
"internal_port": "8000",
|
||||
"init": false,
|
||||
"restart": "unless-stopped",
|
||||
"ports": [
|
||||
{
|
||||
"ip_binding": "",
|
||||
"port_number": "8000",
|
||||
"protocol": "tcp"
|
||||
}
|
||||
],
|
||||
"cap_add": [
|
||||
"SYS_RAWIO",
|
||||
"SYS_ADMIN"
|
||||
],
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"SCRUTINY_WEB_LISTEN_PORT=8000",
|
||||
"COLLECTOR_API_ENDPOINT=http://127.0.0.1:8000"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_scrutiny",
|
||||
"destination": "/opt/scrutiny/config",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_scrutiny_db",
|
||||
"destination": "/opt/scrutiny/influxdb",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "/run/udev",
|
||||
"destination": "/run/udev",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "/dev",
|
||||
"destination": "/dev",
|
||||
"writeable": false
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_scrutiny",
|
||||
"nextcloud_aio_scrutiny_db"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -53,6 +53,7 @@
|
||||
"secrets": [
|
||||
"STALWART_USER_PASS"
|
||||
],
|
||||
"ui_secret": "STALWART_USER_PASS",
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_stalwart",
|
||||
|
||||
@@ -6,7 +6,7 @@ This container bundles vaultwarden and auto-configures it for you.
|
||||
- Currently, only `bw.$NC_DOMAIN` is supported as subdomain! So if Nextcloud is using `your-domain.com`, vaultwarden will use `bw.your-domain.com`. The reverse proxy and domain must be configured accordingly!
|
||||
- If you want to secure the installation with fail2ban, you might want to check out https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban
|
||||
- The data of Vaultwarden will be automatically included in AIOs backup solution!
|
||||
- After adding and starting the container, you need to visit `https://bw.your-domain.com/admin` in order to log in with the admin key that you can retrieve when running `sudo docker inspect nextcloud-aio-vaultwarden | grep ADMIN_TOKEN`. There you can configure smtp first and then invite users via mail. After this is done, you might disable the admin panel via the reverse proxy by blocking connections to the subdirectory.
|
||||
- After adding and starting the container, you need to visit `https://bw.your-domain.com/admin` in order to log in with the admin key that you can see next to the container in the AIO interface. There you can configure smtp first and then invite users via mail. After this is done, you might disable the admin panel via the reverse proxy by blocking connections to the subdirectory.
|
||||
- If using the caddy community container, the vaultwarden admin interface can be disabled by creating a `block-vaultwarden-admin` file in the `nextcloud-aio-caddy` folder when you open the Nextcloud files app with the default `admin` user. Afterwards restart all containers from the AIO interface and the admin interface should be disabled! You can unlock the admin interface by removing the file again and afterwards restarting the containers via the AIO interface.
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_vaultwarden"
|
||||
],
|
||||
"ui_secret": "VAULTWARDEN_ADMIN_TOKEN",
|
||||
"secrets": [
|
||||
"VAULTWARDEN_ADMIN_TOKEN"
|
||||
]
|
||||
|
||||
@@ -20,6 +20,7 @@ services:
|
||||
# APACHE_ADDITIONAL_NETWORK: frontend_net # (Optional) Connect the apache container to an additional docker network. Needed when behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) running in a different docker network on same server. 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
|
||||
# FULLTEXTSEARCH_JAVA_OPTIONS: "-Xms1024M -Xmx1024M" # Allows to adjust the fulltextsearch java options. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-fulltextsearch-java-options
|
||||
# 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: 16G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
|
||||
@@ -29,15 +30,16 @@ services:
|
||||
# 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-acceleration-for-nextcloud
|
||||
# ENABLE_NVIDIA_GPU: true # This allows to enable the NVIDIA runtime and GPU access for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if an NVIDIA gpu is installed on the server. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud.
|
||||
# NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the /dev/dri device for containers that profit from it. ⚠️⚠️⚠️ 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-acceleration-for-nextcloud
|
||||
# NEXTCLOUD_ENABLE_NVIDIA_GPU: true # This allows to enable the NVIDIA runtime and GPU access for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if an NVIDIA gpu is installed on the server. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-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
|
||||
# SKIP_DOMAIN_VALIDATION: false # This should only be set to true if things are correctly configured. See https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-skip-the-domain-validation
|
||||
# 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
|
||||
# TALK_PORT: 3478 # This allows to adjust the port that the talk container is using which is exposed on the host. 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'
|
||||
# security_opt: ["label:disable"] # Is needed when using SELinux
|
||||
|
||||
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/discussions/575
|
||||
# # Alternatively, use Tailscale if you don't have a domain yet. See https://github.com/nextcloud/all-in-one/discussions/5439
|
||||
# # Hint: You need to uncomment APACHE_PORT: 11000 above, adjust cloud.example.com to your domain and uncomment the necessary docker volumes at the bottom of this file in order to make it work
|
||||
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
|
||||
# caddy:
|
||||
|
||||
@@ -2,14 +2,17 @@
|
||||
It is possible due to several reasons that you do not want or cannot open Nextcloud to the public internet. Perhaps you were hoping to access AIO directly from an `ip.add.r.ess` (unsupported) or without a valid domain. However, AIO requires a valid certificate to work correctly. Below is discussed how you can achieve both: Having a valid certificate for Nextcloud and only using it locally.
|
||||
|
||||
### Content
|
||||
- [1. The recommended way](#1-the-recommended-way)
|
||||
- [2. Use the ACME DNS-challenge](#2-use-the-acme-dns-challenge)
|
||||
- [3. Use Cloudflare](#3-use-cloudflare)
|
||||
- [4. Buy a certificate and use that](#4-buy-a-certificate-and-use-that)
|
||||
- [5. Tailscale network](#5-tailscale-network)
|
||||
- [1. Tailscale](#1-tailscale)
|
||||
- [2. The normal way](#2-the-normal-way)
|
||||
- [3. Use the ACME DNS-challenge](#3-use-the-acme-dns-challenge)
|
||||
- [4. Use Cloudflare](#4-use-cloudflare)
|
||||
- [5. Buy a certificate and use that](#5-buy-a-certificate-and-use-that)
|
||||
|
||||
## 1. The recommended way
|
||||
The recommended way is the following:
|
||||
## 1. Tailscale
|
||||
This is the recommended way. For a reverse proxy example guide for Tailscale, see this guide by @flll: https://github.com/nextcloud/all-in-one/discussions/5439
|
||||
|
||||
## 2. The normal way
|
||||
The normal way is the following:
|
||||
1. Set up your domain correctly to point to your home network
|
||||
1. Set up a reverse proxy by following the [reverse proxy documentation](./reverse-proxy.md) but only open port 80 (which is needed for the ACME challenge to work - however no real traffic will use this port).
|
||||
1. Set up a local DNS-server like a pi-hole and configure it to be your local DNS-server for the whole network. Then in the Pi-hole interface, add a custom DNS-record for your domain and overwrite the A-record (and possibly the AAAA-record, too) to point to the private ip-address of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
|
||||
@@ -18,14 +21,11 @@ The recommended way is the following:
|
||||
|
||||
**Hint:** You may have a look at [this video](https://youtu.be/zk-y2wVkY4c) for a more complete but possibly outdated example.
|
||||
|
||||
## 2. Use the ACME DNS-challenge
|
||||
## 3. Use the ACME DNS-challenge
|
||||
You can alternatively use the ACME DNS-challenge to get a valid certificate for Nextcloud. Here is described how to set it up: https://github.com/nextcloud/all-in-one#how-to-get-nextcloud-running-using-the-acme-dns-challenge
|
||||
|
||||
## 3. Use Cloudflare
|
||||
## 4. Use Cloudflare
|
||||
If you do not have any control over the network, you may think about using Cloudflare Tunnel to get a valid certificate for your Nextcloud. However it will be opened to the public internet then. See https://github.com/nextcloud/all-in-one#how-to-run-nextcloud-behind-a-cloudflare-tunnel how to set this up.
|
||||
|
||||
## 4. Buy a certificate and use that
|
||||
## 5. Buy a certificate and use that
|
||||
If none of the above ways work for you, you may simply buy a certificate from an issuer for your domain. You then download the certificate onto your server, configure AIO in [reverse proxy mode](./reverse-proxy.md) and use the certificate for your domain in your reverse proxy config.
|
||||
|
||||
## 5. Tailscale network
|
||||
For a reverse proxy example guide for Tailscale, see this guide by @flll: https://github.com/nextcloud/all-in-one/discussions/5439
|
||||
|
||||
@@ -202,6 +202,7 @@ services:
|
||||
environment:
|
||||
- NC_DOMAIN
|
||||
- NEXTCLOUD_HOST=nextcloud-aio-nextcloud
|
||||
- TZ=${TIMEZONE}
|
||||
- REDIS_HOST=nextcloud-aio-redis
|
||||
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
|
||||
- POSTGRES_HOST=nextcloud-aio-database
|
||||
@@ -238,6 +239,7 @@ services:
|
||||
- NET_RAW
|
||||
|
||||
nextcloud-aio-collabora:
|
||||
command: ${ADDITIONAL_COLLABORA_OPTIONS}
|
||||
image: nextcloud/aio-collabora:latest
|
||||
init: true
|
||||
healthcheck:
|
||||
@@ -251,7 +253,7 @@ services:
|
||||
- "9980"
|
||||
environment:
|
||||
- aliasgroup1=https://${NC_DOMAIN}:443
|
||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true ${COLLABORA_SECCOMP_POLICY} --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow_host[0]=0.0.0.0/0 --o:net.post_allow_host[1]=::/0
|
||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
|
||||
- dictionaries=${COLLABORA_DICTIONARIES}
|
||||
- TZ=${TIMEZONE}
|
||||
- server_name=${NC_DOMAIN}
|
||||
@@ -429,7 +431,7 @@ services:
|
||||
- "9200"
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- ES_JAVA_OPTS=-Xms512M -Xmx512M
|
||||
- ES_JAVA_OPTS=${FULLTEXTSEARCH_JAVA_OPTIONS}
|
||||
- bootstrap.memory_lock=true
|
||||
- cluster.name=nextcloud-aio
|
||||
- discovery.type=single-node
|
||||
@@ -459,6 +461,8 @@ services:
|
||||
retries: 3
|
||||
expose:
|
||||
- "3002"
|
||||
tmpfs:
|
||||
- /tmp
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- NEXTCLOUD_URL=https://${NC_DOMAIN}
|
||||
@@ -466,6 +470,7 @@ services:
|
||||
- STORAGE_STRATEGY=redis
|
||||
- REDIS_HOST=nextcloud-aio-redis
|
||||
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
|
||||
- BACKUP_DIR=/tmp
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- whiteboard
|
||||
|
||||
@@ -6,11 +6,13 @@ You can run the containers that are build for AIO with docker-compose. This come
|
||||
- You can run it without a container having access to the docker socket
|
||||
- You can modify all values on your own
|
||||
- You can run the containers with docker swarm
|
||||
- You can run this in environments where access to docker.io is not possible. See [this issue](https://github.com/nextcloud/all-in-one/discussions/5268).
|
||||
|
||||
### Disadvantages
|
||||
- You lose the AIO interface
|
||||
- You lose update notifications and automatic updates
|
||||
- You lose all AIO backup and restore features
|
||||
- You lose the built-in [Docker Socket Proxy container](https://github.com/nextcloud/docker-socket-proxy#readme) (needed for [Nextcloud App API](https://github.com/nextcloud/app_api#nextcloud-appapi))
|
||||
- You lose all community containers: https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers
|
||||
- **You need to know what you are doing, especially when modifying the compose.yaml file**
|
||||
- For updating, you need to strictly follow the at the bottom described update routine
|
||||
@@ -23,7 +25,7 @@ git clone https://github.com/nextcloud/all-in-one.git
|
||||
cd all-in-one/manual-install
|
||||
```
|
||||
Then copy the sample.conf to default environment file, e.g. `cp sample.conf .env`, open the new conf file, e.g. with `nano .env`, edit all values that are marked with `# TODO!`, close and save the file. (Note: there is no clamav image for arm64).<br>
|
||||
⚠️ **Warning**: Do not use the symbols `@` and `:` in your passwords. These symbols are used to build database connection strings. You will experience issues when using these symbols!
|
||||
⚠️ **Warning**: Do not use the symbols `@` and `:` in your passwords. These symbols are used to build database connection strings. You will experience issues when using these symbols! Also please note that values inside the latest.yaml that are not exposed as variables are not officially supported to be changed. See for example [this report](https://github.com/nextcloud/all-in-one/issues/5612).
|
||||
|
||||
Now copy the provided yaml file to a compose.yaml file by running `cp latest.yml compose.yaml`.
|
||||
|
||||
|
||||
@@ -24,8 +24,9 @@ WHITEBOARD_ENABLED="no" # Setting this to "yes" (with quotes) enables t
|
||||
APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and if that is running on the same host and using localhost to connect
|
||||
APACHE_MAX_SIZE=17179869184 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
|
||||
APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).
|
||||
ADDITIONAL_COLLABORA_OPTIONS=['--o:security.seccomp=true'] # You can add additional collabora options here by using the array syntax.
|
||||
COLLABORA_DICTIONARIES="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" # You can change this in order to enable other dictionaries for collabora
|
||||
COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
|
||||
FULLTEXTSEARCH_JAVA_OPTIONS="-Xms512M -Xmx512M" # Allows to adjust the fulltextsearch java options.
|
||||
INSTALL_LATEST_MAJOR=no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
|
||||
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.
|
||||
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.
|
||||
@@ -37,5 +38,5 @@ NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts notes"
|
||||
NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.
|
||||
NEXTCLOUD_UPLOAD_LIMIT=16G # This allows to change the upload limit of the Nextcloud container
|
||||
REMOVE_DISABLED_APPS=yes # Setting this to no keep Nextcloud apps that are disabled via their switch and not uninstall them if they should be installed in Nextcloud.
|
||||
TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
|
||||
TALK_PORT=3478 # This allows to adjust the port that the talk container is using. It should be set to something higher than 1024! Otherwise it might not work!
|
||||
UPDATE_NEXTCLOUD_APPS="no" # When setting to "yes" (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.
|
||||
|
||||
@@ -14,6 +14,7 @@ cat /tmp/containers.json
|
||||
OUTPUT="$(cat /tmp/containers.json)"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].internal_port)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].secrets)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].ui_secrets)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].devices)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].enable_nvidia_gpu)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].backup_volumes)')"
|
||||
@@ -36,6 +37,7 @@ cd manual-install || exit
|
||||
sed -i "s|'||g" containers.yml
|
||||
sed -i '/display_name:/d' containers.yml
|
||||
sed -i '/THIS_IS_AIO/d' containers.yml
|
||||
sed -i "s|%COLLABORA_SECCOMP_POLICY% ||g" containers.yml
|
||||
sed -i '/stop_grace_period:/s/$/s/' containers.yml
|
||||
sed -i '/: \[\]/d' containers.yml
|
||||
sed -i 's|- source: |- |' containers.yml
|
||||
@@ -87,11 +89,12 @@ sed -i 's|NEXTCLOUD_TRUSTED_CACERTS_DIR=|NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/loca
|
||||
sed -i 's|UPDATE_NEXTCLOUD_APPS=|UPDATE_NEXTCLOUD_APPS="no" # When setting to "yes" (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.|' sample.conf
|
||||
sed -i 's|APACHE_PORT=|APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).|' sample.conf
|
||||
sed -i 's|APACHE_IP_BINDING=|APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and if that is running on the same host and using localhost to connect|' sample.conf
|
||||
sed -i 's|TALK_PORT=|TALK_PORT=3478 # This allows to adjust the port that the talk container is using.|' sample.conf
|
||||
sed -i 's|TALK_PORT=|TALK_PORT=3478 # This allows to adjust the port that the talk container is using. It should be set to something higher than 1024! Otherwise it might not work!|' sample.conf
|
||||
sed -i 's|NC_DOMAIN=|NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_PASSWORD=|NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially created Nextcloud admin with username "admin".|' sample.conf
|
||||
sed -i 's|TIMEZONE=|TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.|' sample.conf
|
||||
sed -i 's|COLLABORA_SECCOMP_POLICY=|COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.|' sample.conf
|
||||
sed -i 's|FULLTEXTSEARCH_JAVA_OPTIONS=|FULLTEXTSEARCH_JAVA_OPTIONS="-Xms512M -Xmx512M" # Allows to adjust the fulltextsearch java options.|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_STARTUP_APPS=|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|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_ADDITIONAL_APKS=|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.|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=|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.|' sample.conf
|
||||
@@ -127,6 +130,13 @@ echo "$OUTPUT" > containers.yml
|
||||
sed -i '/container_name/d' containers.yml
|
||||
sed -i 's|^ $||' containers.yml
|
||||
|
||||
# Additional config for collabora
|
||||
cat << EOL > /tmp/additional-collabora.config
|
||||
command: \${ADDITIONAL_COLLABORA_OPTIONS}
|
||||
EOL
|
||||
sed -i "/^ nextcloud-aio-collabora:/r /tmp/additional-collabora.config" containers.yml
|
||||
sed -i "/^COLLABORA_DICTIONARIES.*/i ADDITIONAL_COLLABORA_OPTIONS=['--o:security.seccomp=true'] # You can add additional collabora options here by using the array syntax." sample.conf
|
||||
|
||||
VOLUMES="$(grep -oP 'nextcloud_aio_[a-z_]+' containers.yml | sort -u)"
|
||||
mapfile -t VOLUMES <<< "$VOLUMES"
|
||||
echo "" >> containers.yml
|
||||
|
||||
@@ -7,7 +7,11 @@ The only way to fix this on your side is upgrading regularly (e.g. by enabling d
|
||||
|
||||
---
|
||||
|
||||
## Method 1
|
||||
## Method 1 using `assaflavie/runlike`
|
||||
|
||||
> [!Warning]
|
||||
> Please note that this method is apparently currently broken. See https://help.nextcloud.com/t/manual-upgrade-keeps-failing/217164/10
|
||||
> So please refer to method 2 using Portainer.
|
||||
|
||||
1. Start all containers from the AIO interface
|
||||
- Now, it will report that Nextcloud is restarting because it is not able to start due to the above mentioned problem
|
||||
@@ -54,14 +58,11 @@ The only way to fix this on your side is upgrading regularly (e.g. by enabling d
|
||||
|
||||
---
|
||||
|
||||
## Method 2
|
||||
## Method 2 using Portainer
|
||||
#### *Approach using portainer if method 1 does not work for you*
|
||||
|
||||
Prerequisite: have all containers from AIO interface running.
|
||||
|
||||
<details>
|
||||
<summary>Click to expand</summary>
|
||||
|
||||
##### 1. Install portainer if not installed:
|
||||
```bash
|
||||
docker volume create portainer_data
|
||||
@@ -119,5 +120,3 @@ docker rm portainer
|
||||
docker volume rm portainer_data
|
||||
```
|
||||
- Make sure you close port 9443 on your firewall and delete any necessary reverse proxy hosts.
|
||||
|
||||
</details>
|
||||
|
||||
@@ -14,7 +14,7 @@ The procedure for migrating only the files works like this:
|
||||
1. Install Nextcloud AIO on a new server/linux installation, enter your domain and wait until all containers are running
|
||||
1. Recreate all users that were present on your former installation
|
||||
1. Take a backup using Nextcloud AIO's built-in backup solution (so that you can easily restore to this state again) (Note: this will stop all containers and is expected: don't start the container again at this point!)
|
||||
1. Restore the datadirectory of your former instance: for `/path/to/nextcloud/data/` run `sudo docker cp --follow-link /path/to/nextcloud/data/. nextcloud-aio-nextcloud:/mnt/ncdata/` Note: the `/.` and `/` at the end are necessary.
|
||||
1. Restore the datadirectory of your former instance: for `/path/to/old/nextcloud/data/` run `sudo docker cp --follow-link /path/to/old/nextcloud/data/. nextcloud-aio-nextcloud:/mnt/ncdata/` Note: the `/.` and `/` at the end are necessary.
|
||||
1. Next, run `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chown -R 33:0 /mnt/ncdata/` and `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chmod -R 750 /mnt/ncdata/` to apply the correct permissions. (Or if `NEXTCLOUD_DATADIR` was provided, apply `chown -R 33:0` and `chmod -R 750` to the chosen path.)
|
||||
1. Start the containers again and wait until all containers are running
|
||||
1. Run `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan-app-data && sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all` in order to scan all files in the datadirectory.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: nextcloud-aio-helm-chart
|
||||
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
|
||||
version: 10.1.1
|
||||
version: 10.6.1
|
||||
apiVersion: v2
|
||||
keywords:
|
||||
- latest
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# Nextcloud AIO Helm-chart
|
||||
|
||||
> [!NOTE]
|
||||
> For an enterprise-ready and scalable deployment method based on Helm Charts (also available for Podman), please [contact Nextcloud GmbH](https://nextcloud.com/enterprise/).
|
||||
|
||||
You can run the containers that are build for AIO with Kubernetes using this Helm chart. This comes with a few downsides, that are discussed below.
|
||||
|
||||
### Advantages
|
||||
|
||||
@@ -61,7 +61,7 @@ spec:
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
- name: WHITEBOARD_HOST
|
||||
value: nextcloud-aio-whiteboard
|
||||
image: nextcloud/aio-apache:20241216_102930
|
||||
image: nextcloud/aio-apache:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
|
||||
@@ -53,7 +53,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
containers:
|
||||
- env:
|
||||
- name: CLAMD_STARTUP_TIMEOUT
|
||||
@@ -62,7 +61,7 @@ spec:
|
||||
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-clamav:20241216_102930
|
||||
image: nextcloud/aio-clamav:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -92,7 +91,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/clamav
|
||||
subPath: data
|
||||
|
||||
@@ -21,7 +21,8 @@ spec:
|
||||
io.kompose.service: nextcloud-aio-collabora
|
||||
spec:
|
||||
containers:
|
||||
- env:
|
||||
- args: {{ .Values.ADDITIONAL_COLLABORA_OPTIONS | default list | toJson }}
|
||||
env:
|
||||
- name: DONT_GEN_SSL_CERT
|
||||
value: "1"
|
||||
- name: TZ
|
||||
@@ -31,10 +32,10 @@ spec:
|
||||
- name: dictionaries
|
||||
value: "{{ .Values.COLLABORA_DICTIONARIES }}"
|
||||
- name: extra_params
|
||||
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 --o:net.post_allow_host[0]=0.0.0.0/0 --o:net.post_allow_host[1]=::/0
|
||||
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
|
||||
- name: server_name
|
||||
value: "{{ .Values.NC_DOMAIN }}"
|
||||
image: nextcloud/aio-collabora:20241216_102930
|
||||
image: nextcloud/aio-collabora:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
|
||||
@@ -52,7 +52,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
containers:
|
||||
- env:
|
||||
- name: PGTZ
|
||||
@@ -65,7 +64,7 @@ spec:
|
||||
value: nextcloud
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-postgresql:20241216_102930
|
||||
image: nextcloud/aio-postgresql:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -93,7 +92,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/postgresql/data
|
||||
subPath: data
|
||||
|
||||
@@ -35,7 +35,7 @@ spec:
|
||||
containers:
|
||||
- env:
|
||||
- name: ES_JAVA_OPTS
|
||||
value: -Xms512M -Xmx512M
|
||||
value: "{{ .Values.FULLTEXTSEARCH_JAVA_OPTIONS | default "-Xms512M -Xmx512M" }}"
|
||||
- name: FULLTEXTSEARCH_PASSWORD
|
||||
value: "{{ .Values.FULLTEXTSEARCH_PASSWORD }}"
|
||||
- name: TZ
|
||||
@@ -54,7 +54,7 @@ spec:
|
||||
value: basic
|
||||
- name: xpack.security.enabled
|
||||
value: "false"
|
||||
image: nextcloud/aio-fulltextsearch:20241216_102930
|
||||
image: nextcloud/aio-fulltextsearch:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
|
||||
@@ -38,7 +38,7 @@ spec:
|
||||
value: "{{ .Values.IMAGINARY_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-imaginary:20241216_102930
|
||||
image: nextcloud/aio-imaginary:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -66,6 +66,4 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add:
|
||||
- NET_BIND_SERVICE
|
||||
{{- end }}
|
||||
|
||||
@@ -90,6 +90,8 @@ spec:
|
||||
value: "{{ .Values.NEXTCLOUD_PASSWORD }}"
|
||||
- name: ADMIN_USER
|
||||
value: admin
|
||||
- name: APACHE_HOST
|
||||
value: nextcloud-aio-apache
|
||||
- name: APACHE_PORT
|
||||
value: "{{ .Values.APACHE_PORT }}"
|
||||
- name: CLAMAV_ENABLED
|
||||
@@ -178,7 +180,7 @@ spec:
|
||||
value: "{{ .Values.WHITEBOARD_ENABLED }}"
|
||||
- name: WHITEBOARD_SECRET
|
||||
value: "{{ .Values.WHITEBOARD_SECRET }}"
|
||||
image: nextcloud/aio-nextcloud:20241216_102930
|
||||
image: nextcloud/aio-nextcloud:20250225_125724
|
||||
{{- if eq (.Values.RPSS_ENABLED | default "no") "yes" }} # AIO-config - do not change this comment!
|
||||
securityContext:
|
||||
# The items below only work in container context
|
||||
@@ -189,7 +191,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
{{- end }} # AIO-config - do not change this comment!
|
||||
readinessProbe:
|
||||
exec:
|
||||
|
||||
@@ -53,7 +53,9 @@ spec:
|
||||
value: nextcloud-aio-redis
|
||||
- name: REDIS_HOST_PASSWORD
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
image: nextcloud/aio-notify-push:20241216_102930
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-notify-push:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -81,7 +83,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
volumeMounts:
|
||||
- mountPath: /nextcloud
|
||||
name: nextcloud-aio-nextcloud
|
||||
|
||||
@@ -42,7 +42,7 @@ spec:
|
||||
value: "{{ .Values.ONLYOFFICE_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-onlyoffice:20241216_102930
|
||||
image: nextcloud/aio-onlyoffice:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
|
||||
@@ -39,7 +39,7 @@ spec:
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-redis:20241216_102930
|
||||
image: nextcloud/aio-redis:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -67,7 +67,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: nextcloud-aio-redis
|
||||
|
||||
@@ -52,7 +52,7 @@ spec:
|
||||
value: "{{ .Values.TURN_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-talk:20241216_102930
|
||||
image: nextcloud/aio-talk:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -84,5 +84,4 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
{{- end }}
|
||||
|
||||
@@ -44,7 +44,7 @@ spec:
|
||||
value: "{{ .Values.RECORDING_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-talk-recording:20241216_102930
|
||||
image: nextcloud/aio-talk-recording:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -72,7 +72,6 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
volumeMounts:
|
||||
- mountPath: /tmp
|
||||
name: nextcloud-aio-talk-recording
|
||||
|
||||
@@ -34,6 +34,8 @@ spec:
|
||||
{{- end }}
|
||||
containers:
|
||||
- env:
|
||||
- name: BACKUP_DIR
|
||||
value: /tmp
|
||||
- name: JWT_SECRET_KEY
|
||||
value: "{{ .Values.WHITEBOARD_SECRET }}"
|
||||
- name: NEXTCLOUD_URL
|
||||
@@ -46,7 +48,7 @@ spec:
|
||||
value: redis
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-whiteboard:20241216_102930
|
||||
image: nextcloud/aio-whiteboard:20250225_125724
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
@@ -74,5 +76,4 @@ spec:
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
{{- end }}
|
||||
|
||||
@@ -42,6 +42,7 @@ sed -i "s|\${TALK_PORT}:\${TALK_PORT}/|$TALK_PORT:$TALK_PORT/|g" latest.yml
|
||||
sed -i "s|- \${APACHE_PORT}|- $APACHE_PORT|" latest.yml
|
||||
sed -i "s|- \${TALK_PORT}|- $TALK_PORT|" latest.yml
|
||||
sed -i "s|\${NEXTCLOUD_DATADIR}|$NEXTCLOUD_DATADIR|" latest.yml
|
||||
sed -i "s|\${ADDITIONAL_COLLABORA_OPTIONS}|ADDITIONAL_COLLABORA_OPTIONS_PLACEHOLDER|" latest.yml
|
||||
sed -i "/name: nextcloud-aio/,$ d" latest.yml
|
||||
sed -i "/NEXTCLOUD_DATADIR/d" latest.yml
|
||||
sed -i "/\${NEXTCLOUD_MOUNT}/d" latest.yml
|
||||
@@ -55,7 +56,7 @@ yq -i 'del(.services.[].tmpfs)' latest.yml
|
||||
# Remove cap_drop in order to add it later again easier
|
||||
yq -i 'del(.services.[].cap_drop)' latest.yml
|
||||
# Remove SYS_NICE for imaginary as it is not supported with RPSS
|
||||
sed -i "s|- SYS_NICE$|- NET_BIND_SERVICE|" latest.yml
|
||||
yq -i 'del(.services."nextcloud-aio-imaginary".cap_add)' latest.yml
|
||||
# cap SYS_ADMIN is called CAP_SYS_ADMIN in k8s
|
||||
sed -i "s|- SYS_ADMIN$|- CAP_SYS_ADMIN|" latest.yml
|
||||
|
||||
@@ -306,6 +307,8 @@ cat << EOL > /tmp/additional.config
|
||||
EOL
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*nextcloud-deployment.yaml' -exec sed -i "/^.*\- env:/r /tmp/additional.config" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*fulltextsearch-deployment.yaml' -exec sed -i 's/{{ .Values.FULLTEXTSEARCH_JAVA_OPTIONS }}/{{ .Values.FULLTEXTSEARCH_JAVA_OPTIONS | default "-Xms512M -Xmx512M" }}/' \{} \;
|
||||
|
||||
# Additional config
|
||||
cat << EOL > /tmp/additional-apache.config
|
||||
@@ -461,10 +464,14 @@ cat << EOL > /tmp/security.conf
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
EOL
|
||||
# shellcheck disable=SC1083
|
||||
find ./ \( -not -name '*collabora-deployment.yaml*' -not -name '*imaginary-deployment.yaml*' -not -name '*onlyoffice-deployment.yaml*' -name "*deployment.yaml" \) -exec sed -i "/^ securityContext:$/r /tmp/security.conf" \{} \;
|
||||
find ./ \( -not -name '*collabora-deployment.yaml*' -not -name '*apache-deployment.yaml*' -not -name '*onlyoffice-deployment.yaml*' -name "*deployment.yaml" \) -exec sed -i "/^ securityContext:$/r /tmp/security.conf" \{} \;
|
||||
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*collabora-deployment.yaml*' -exec sed -i "/ADDITIONAL_COLLABORA_OPTIONS_PLACEHOLDER/d" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*collabora-deployment.yaml*' -exec sed -i "s/- args:/- args: \{\{ .Values.ADDITIONAL_COLLABORA_OPTIONS | default list | toJson \}\}/" \{} \;
|
||||
|
||||
cat << EOL > /tmp/security.conf
|
||||
# The items below only work in container context
|
||||
@@ -475,9 +482,11 @@ cat << EOL > /tmp/security.conf
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
EOL
|
||||
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*imaginary-deployment.yaml*' -exec sed -i "/^ securityContext:$/r /tmp/security.conf" \{} \;
|
||||
find ./ -name '*apache-deployment.yaml*' -exec sed -i "/^ securityContext:$/r /tmp/security.conf" \{} \;
|
||||
|
||||
cat << EOL > /tmp/security.conf
|
||||
{{- if eq (.Values.RPSS_ENABLED | default "no") "yes" }} # AIO-config - do not change this comment!
|
||||
@@ -490,7 +499,6 @@ cat << EOL > /tmp/security.conf
|
||||
{{- else }}
|
||||
drop: ["NET_RAW"]
|
||||
{{- end }}
|
||||
add: ["NET_BIND_SERVICE"]
|
||||
{{- end }} # AIO-config - do not change this comment!
|
||||
EOL
|
||||
# shellcheck disable=SC1083
|
||||
|
||||
@@ -23,8 +23,9 @@ WHITEBOARD_ENABLED: "no" # Setting this to "yes" (with quotes) enables
|
||||
|
||||
APACHE_MAX_SIZE: "17179869184" # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
|
||||
APACHE_PORT: 443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else).
|
||||
ADDITIONAL_COLLABORA_OPTIONS: ['--o:security.seccomp=true'] # You can add additional collabora options here by using the array syntax.
|
||||
COLLABORA_DICTIONARIES: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru # You can change this in order to enable other dictionaries for collabora
|
||||
COLLABORA_SECCOMP_POLICY: --o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
|
||||
FULLTEXTSEARCH_JAVA_OPTIONS: -Xms512M -Xmx512M # Allows to adjust the fulltextsearch java options.
|
||||
INSTALL_LATEST_MAJOR: no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
|
||||
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.
|
||||
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.
|
||||
@@ -34,7 +35,7 @@ NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes
|
||||
NEXTCLOUD_TRUSTED_CACERTS_DIR: # Setting this to any value allows to automatically import root certificates into the Nextcloud container
|
||||
NEXTCLOUD_UPLOAD_LIMIT: 16G # This allows to change the upload limit of the Nextcloud container
|
||||
REMOVE_DISABLED_APPS: yes # Setting this to no keep Nextcloud apps that are disabled via their switch and not uninstall them if they should be installed in Nextcloud.
|
||||
TALK_PORT: 3478 # This allows to adjust the port that the talk container is using.
|
||||
TALK_PORT: 3478 # This allows to adjust the port that the talk container is using. It should be set to something higher than 1024! Otherwise it might not work!
|
||||
UPDATE_NEXTCLOUD_APPS: no # When setting to yes (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.
|
||||
|
||||
STORAGE_CLASS: # By setting this, you can adjust the storage class for your volumes
|
||||
|
||||
127
php/composer.lock
generated
127
php/composer.lock
generated
@@ -391,32 +391,32 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/serializable-closure",
|
||||
"version": "v1.3.7",
|
||||
"version": "v2.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/serializable-closure.git",
|
||||
"reference": "4f48ade902b94323ca3be7646db16209ec76be3d"
|
||||
"reference": "f379c13663245f7aa4512a7869f62eb14095f23f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d",
|
||||
"reference": "4f48ade902b94323ca3be7646db16209ec76be3d",
|
||||
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f",
|
||||
"reference": "f379c13663245f7aa4512a7869f62eb14095f23f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.3|^8.0"
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"illuminate/support": "^8.0|^9.0|^10.0|^11.0",
|
||||
"nesbot/carbon": "^2.61|^3.0",
|
||||
"pestphp/pest": "^1.21.3",
|
||||
"phpstan/phpstan": "^1.8.2",
|
||||
"symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0"
|
||||
"illuminate/support": "^10.0|^11.0|^12.0",
|
||||
"nesbot/carbon": "^2.67|^3.0",
|
||||
"pestphp/pest": "^2.36|^3.0",
|
||||
"phpstan/phpstan": "^2.0",
|
||||
"symfony/var-dumper": "^6.2.0|^7.0.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.x-dev"
|
||||
"dev-master": "2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -448,7 +448,7 @@
|
||||
"issues": "https://github.com/laravel/serializable-closure/issues",
|
||||
"source": "https://github.com/laravel/serializable-closure"
|
||||
},
|
||||
"time": "2024-11-14T18:34:49+00:00"
|
||||
"time": "2025-02-11T15:03:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/fast-route",
|
||||
@@ -502,16 +502,16 @@
|
||||
},
|
||||
{
|
||||
"name": "php-di/invoker",
|
||||
"version": "2.3.4",
|
||||
"version": "2.3.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHP-DI/Invoker.git",
|
||||
"reference": "33234b32dafa8eb69202f950a1fc92055ed76a86"
|
||||
"reference": "59f15608528d8a8838d69b422a919fd6b16aa576"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86",
|
||||
"reference": "33234b32dafa8eb69202f950a1fc92055ed76a86",
|
||||
"url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/59f15608528d8a8838d69b422a919fd6b16aa576",
|
||||
"reference": "59f15608528d8a8838d69b422a919fd6b16aa576",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -545,7 +545,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/PHP-DI/Invoker/issues",
|
||||
"source": "https://github.com/PHP-DI/Invoker/tree/2.3.4"
|
||||
"source": "https://github.com/PHP-DI/Invoker/tree/2.3.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -553,24 +553,24 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-09-08T09:24:21+00:00"
|
||||
"time": "2025-01-17T12:49:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-di/php-di",
|
||||
"version": "7.0.7",
|
||||
"version": "7.0.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHP-DI/PHP-DI.git",
|
||||
"reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1"
|
||||
"reference": "98ddc81f8f768a2ad39e4cbe737285eaeabe577a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/e87435e3c0e8f22977adc5af0d5cdcc467e15cf1",
|
||||
"reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1",
|
||||
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/98ddc81f8f768a2ad39e4cbe737285eaeabe577a",
|
||||
"reference": "98ddc81f8f768a2ad39e4cbe737285eaeabe577a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"laravel/serializable-closure": "^1.0",
|
||||
"laravel/serializable-closure": "^1.0 || ^2.0",
|
||||
"php": ">=8.0",
|
||||
"php-di/invoker": "^2.0",
|
||||
"psr/container": "^1.1 || ^2.0"
|
||||
@@ -582,7 +582,7 @@
|
||||
"friendsofphp/php-cs-fixer": "^3",
|
||||
"friendsofphp/proxy-manager-lts": "^1",
|
||||
"mnapoli/phpunit-easymock": "^1.3",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"phpunit/phpunit": "^9.6",
|
||||
"vimeo/psalm": "^4.6"
|
||||
},
|
||||
"suggest": {
|
||||
@@ -614,7 +614,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/PHP-DI/PHP-DI/issues",
|
||||
"source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.7"
|
||||
"source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.8"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -626,7 +626,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-07-21T15:55:45+00:00"
|
||||
"time": "2025-01-28T21:02:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-di/slim-bridge",
|
||||
@@ -1348,12 +1348,12 @@
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1633,24 +1633,23 @@
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v3.17.1",
|
||||
"version": "v3.20.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "677ef8da6497a03048192aeeb5aa3018e379ac71"
|
||||
"reference": "3468920399451a384bef53cf7996965f7cd40183"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/677ef8da6497a03048192aeeb5aa3018e379ac71",
|
||||
"reference": "677ef8da6497a03048192aeeb5aa3018e379ac71",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3468920399451a384bef53cf7996965f7cd40183",
|
||||
"reference": "3468920399451a384bef53cf7996965f7cd40183",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.0.2",
|
||||
"php": ">=8.1.0",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "^1.8",
|
||||
"symfony/polyfill-mbstring": "^1.3",
|
||||
"symfony/polyfill-php81": "^1.29"
|
||||
"symfony/polyfill-mbstring": "^1.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^2.0",
|
||||
@@ -1697,7 +1696,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.17.1"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.20.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1709,7 +1708,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-12-12T09:58:10+00:00"
|
||||
"time": "2025-02-13T08:34:43+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@@ -1973,13 +1972,13 @@
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.x-dev"
|
||||
},
|
||||
"phpstan": {
|
||||
"includes": [
|
||||
"extension.neon"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -2700,16 +2699,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "2.0.0",
|
||||
"version": "2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "c00d78fb6b29658347f9d37ebe104bffadf36299"
|
||||
"reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299",
|
||||
"reference": "c00d78fb6b29658347f9d37ebe104bffadf36299",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
|
||||
"reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2741,9 +2740,9 @@
|
||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0"
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0"
|
||||
},
|
||||
"time": "2024-10-13T11:29:49+00:00"
|
||||
"time": "2025-02-19T13:28:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/diff",
|
||||
@@ -2940,16 +2939,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v6.4.15",
|
||||
"version": "v6.4.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "f1fc6f47283e27336e7cebb9e8946c8de7bff9bd"
|
||||
"reference": "799445db3f15768ecc382ac5699e6da0520a0a04"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/f1fc6f47283e27336e7cebb9e8946c8de7bff9bd",
|
||||
"reference": "f1fc6f47283e27336e7cebb9e8946c8de7bff9bd",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04",
|
||||
"reference": "799445db3f15768ecc382ac5699e6da0520a0a04",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3014,7 +3013,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v6.4.15"
|
||||
"source": "https://github.com/symfony/console/tree/v6.4.17"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3030,7 +3029,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-06T14:19:14+00:00"
|
||||
"time": "2024-12-07T12:07:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
@@ -3100,16 +3099,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v6.4.13",
|
||||
"version": "v6.4.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958"
|
||||
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/daea9eca0b08d0ed1dc9ab702a46128fd1be4958",
|
||||
"reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
|
||||
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3144,7 +3143,7 @@
|
||||
"description": "Finds files and directories via an intuitive fluent interface",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/finder/tree/v6.4.13"
|
||||
"source": "https://github.com/symfony/finder/tree/v6.4.17"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3160,7 +3159,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-10-01T08:30:56+00:00"
|
||||
"time": "2024-12-29T13:51:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-grapheme",
|
||||
@@ -3345,12 +3344,12 @@
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
||||
@@ -145,6 +145,10 @@
|
||||
"pattern": "^[A-Z_]+$"
|
||||
}
|
||||
},
|
||||
"ui_secret": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Z_]+$"
|
||||
},
|
||||
"image_tag": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9.-]+|%AIO_CHANNEL%)$"
|
||||
@@ -187,13 +191,6 @@
|
||||
"pattern": "^[a-z-]+$"
|
||||
}
|
||||
},
|
||||
"networks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^nextcloud-aio$"
|
||||
}
|
||||
},
|
||||
"read_only": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -220,7 +217,7 @@
|
||||
},
|
||||
"source": {
|
||||
"type": "string",
|
||||
"pattern": "^((nextcloud_aio_[a-z_]+)|(%[A-Z_]+%))$"
|
||||
"pattern": "^((nextcloud_aio_[a-z_]+)|(%[A-Z_]+%)|(/dev)|(/run/udev))$"
|
||||
},
|
||||
"writeable": {
|
||||
"type": "boolean"
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
{
|
||||
"container_name": "nextcloud-aio-apache",
|
||||
"image_tag": "%AIO_CHANNEL%",
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/discussions/2105",
|
||||
"depends_on": [
|
||||
"nextcloud-aio-onlyoffice",
|
||||
"nextcloud-aio-collabora",
|
||||
@@ -67,9 +68,6 @@
|
||||
"nextcloud_aio_nextcloud",
|
||||
"nextcloud_aio_apache"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/var/log/supervisord",
|
||||
@@ -130,9 +128,6 @@
|
||||
"nextcloud_aio_database",
|
||||
"nextcloud_aio_database_dump"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/var/run/postgresql"
|
||||
@@ -268,9 +263,6 @@
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_nextcloud"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
]
|
||||
@@ -308,6 +300,7 @@
|
||||
"environment": [
|
||||
"NC_DOMAIN=%NC_DOMAIN%",
|
||||
"NEXTCLOUD_HOST=nextcloud-aio-nextcloud",
|
||||
"TZ=%TIMEZONE%",
|
||||
"REDIS_HOST=nextcloud-aio-redis",
|
||||
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%",
|
||||
"POSTGRES_HOST=nextcloud-aio-database",
|
||||
@@ -317,9 +310,6 @@
|
||||
"POSTGRES_USER=nextcloud"
|
||||
],
|
||||
"restart": "unless-stopped",
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
@@ -361,9 +351,6 @@
|
||||
"RECORDING_SECRET"
|
||||
],
|
||||
"restart": "unless-stopped",
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
@@ -404,9 +391,6 @@
|
||||
"profiles": [
|
||||
"collabora"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"cap_add": [
|
||||
"MKNOD",
|
||||
"SYS_ADMIN"
|
||||
@@ -466,9 +450,6 @@
|
||||
"talk",
|
||||
"talk-recording"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/var/log/supervisord",
|
||||
@@ -526,9 +507,6 @@
|
||||
"/dev/dri"
|
||||
],
|
||||
"enable_nvidia_gpu": true,
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/conf"
|
||||
@@ -690,9 +668,6 @@
|
||||
"profiles": [
|
||||
"clamav"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/var/lock",
|
||||
@@ -745,9 +720,6 @@
|
||||
"profiles": [
|
||||
"onlyoffice"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
]
|
||||
@@ -785,9 +757,6 @@
|
||||
"profiles": [
|
||||
"imaginary"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"read_only": true,
|
||||
"tmpfs": [
|
||||
"/tmp"
|
||||
@@ -817,7 +786,7 @@
|
||||
"internal_port": "9200",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"ES_JAVA_OPTS=-Xms512M -Xmx512M",
|
||||
"ES_JAVA_OPTS=%FULLTEXTSEARCH_JAVA_OPTIONS%",
|
||||
"bootstrap.memory_lock=true",
|
||||
"cluster.name=nextcloud-aio",
|
||||
"discovery.type=single-node",
|
||||
@@ -838,9 +807,6 @@
|
||||
"profiles": [
|
||||
"fulltextsearch"
|
||||
],
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"secrets": [
|
||||
"FULLTEXTSEARCH_PASSWORD"
|
||||
],
|
||||
@@ -892,6 +858,9 @@
|
||||
"expose": [
|
||||
"3002"
|
||||
],
|
||||
"tmpfs": [
|
||||
"/tmp"
|
||||
],
|
||||
"internal_port": "3002",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
@@ -899,7 +868,8 @@
|
||||
"JWT_SECRET_KEY=%WHITEBOARD_SECRET%",
|
||||
"STORAGE_STRATEGY=redis",
|
||||
"REDIS_HOST=nextcloud-aio-redis",
|
||||
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%"
|
||||
"REDIS_HOST_PASSWORD=%REDIS_PASSWORD%",
|
||||
"BACKUP_DIR=/tmp"
|
||||
],
|
||||
"secrets": [
|
||||
"WHITEBOARD_SECRET",
|
||||
@@ -910,9 +880,6 @@
|
||||
"whiteboard"
|
||||
],
|
||||
"read_only": true,
|
||||
"networks": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
]
|
||||
|
||||
@@ -114,6 +114,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
|
||||
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped(),
|
||||
'talk_port' => $configurationManager->GetTalkPort(),
|
||||
'collabora_dictionaries' => $configurationManager->GetCollaboraDictionaries(),
|
||||
'collabora_additional_options' => $configurationManager->GetAdditionalCollaboraOptions(),
|
||||
'automatic_updates' => $configurationManager->areAutomaticUpdatesEnabled(),
|
||||
'is_backup_section_enabled' => $configurationManager->isBackupSectionEnabled(),
|
||||
'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled(),
|
||||
|
||||
@@ -21,9 +21,10 @@ readonly class Container {
|
||||
private array $dependsOn,
|
||||
/** @var string[] */
|
||||
private array $secrets,
|
||||
private string $uiSecret,
|
||||
/** @var string[] */
|
||||
private array $devices,
|
||||
private bool $enable_nvidia_gpu,
|
||||
private bool $enableNvidiaGpu,
|
||||
/** @var string[] */
|
||||
private array $capAdd,
|
||||
private int $shmSize,
|
||||
@@ -85,6 +86,10 @@ readonly class Container {
|
||||
return $this->secrets;
|
||||
}
|
||||
|
||||
public function GetUiSecret() : string {
|
||||
return $this->dockerActionManager->GetAndGenerateSecretWrapper($this->uiSecret);
|
||||
}
|
||||
|
||||
public function GetTmpfs() : array {
|
||||
return $this->tmpfs;
|
||||
}
|
||||
@@ -94,7 +99,7 @@ readonly class Container {
|
||||
}
|
||||
|
||||
public function isNvidiaGpuEnabled() : bool {
|
||||
return $this->enable_nvidia_gpu;
|
||||
return $this->enableNvidiaGpu;
|
||||
}
|
||||
|
||||
public function GetCapAdds() : array {
|
||||
|
||||
@@ -244,6 +244,11 @@ readonly class ContainerDefinitionFetcher {
|
||||
$secrets = $entry['secrets'];
|
||||
}
|
||||
|
||||
$uiSecret = '';
|
||||
if (isset($entry['ui_secret'])) {
|
||||
$uiSecret = $entry['ui_secret'];
|
||||
}
|
||||
|
||||
$devices = [];
|
||||
if (isset($entry['devices'])) {
|
||||
$devices = $entry['devices'];
|
||||
@@ -316,6 +321,7 @@ readonly class ContainerDefinitionFetcher {
|
||||
$variables,
|
||||
$dependsOn,
|
||||
$secrets,
|
||||
$uiSecret,
|
||||
$devices,
|
||||
$enableNvidiaGpu,
|
||||
$capAdd,
|
||||
|
||||
@@ -134,6 +134,15 @@ readonly class ConfigurationController {
|
||||
$this->configurationManager->SetCollaboraDictionaries($collaboraDictionaries);
|
||||
}
|
||||
|
||||
if (isset($request->getParsedBody()['delete_collabora_additional_options'])) {
|
||||
$this->configurationManager->DeleteAdditionalCollaboraOptions();
|
||||
}
|
||||
|
||||
if (isset($request->getParsedBody()['collabora_additional_options'])) {
|
||||
$additionalCollaboraOptions = $request->getParsedBody()['collabora_additional_options'] ?? '';
|
||||
$this->configurationManager->SetAdditionalCollaboraOptions($additionalCollaboraOptions);
|
||||
}
|
||||
|
||||
if (isset($request->getParsedBody()['delete_borg_backup_location_vars'])) {
|
||||
$this->configurationManager->DeleteBorgBackupLocationVars();
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ readonly class DockerController {
|
||||
if ($pullImage) {
|
||||
if (!$this->dockerActionManager->isDockerHubReachable($container)) {
|
||||
$pullImage = false;
|
||||
error_log('Not pulling the image for the ' . $container->GetContainerName() . ' container because docker hub does not seem to be reachable.');
|
||||
error_log('Not pulling the ' . $container->GetContainerName() . ' image for the ' . $container->GetIdentifier() . ' container because docker hub does not seem to be reachable.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ readonly class DockerController {
|
||||
}
|
||||
|
||||
if (isset($request->getParsedBody()['install_latest_major'])) {
|
||||
$installLatestMajor = 30;
|
||||
$installLatestMajor = 31;
|
||||
} else {
|
||||
$installLatestMajor = "";
|
||||
}
|
||||
|
||||
@@ -33,6 +33,10 @@ class ConfigurationManager
|
||||
}
|
||||
|
||||
public function GetAndGenerateSecret(string $secretId) : string {
|
||||
if ($secretId === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
$config = $this->GetConfig();
|
||||
if(!isset($config['secrets'][$secretId])) {
|
||||
$config['secrets'][$secretId] = bin2hex(random_bytes(24));
|
||||
@@ -166,10 +170,10 @@ class ConfigurationManager
|
||||
|
||||
public function isWhiteboardEnabled() : bool {
|
||||
$config = $this->GetConfig();
|
||||
if (isset($config['isWhiteboardEnabled']) && $config['isWhiteboardEnabled'] === 1) {
|
||||
return true;
|
||||
} else {
|
||||
if (isset($config['isWhiteboardEnabled']) && $config['isWhiteboardEnabled'] === 0) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +214,7 @@ class ConfigurationManager
|
||||
}
|
||||
|
||||
public function SetFulltextsearchEnabledState(int $value) : void {
|
||||
# Elasticsearch does not work on kernels without seccomp anymore. See https://github.com/nextcloud/all-in-one/discussions/5768
|
||||
// Elasticsearch does not work on kernels without seccomp anymore. See https://github.com/nextcloud/all-in-one/discussions/5768
|
||||
if ($this->GetCollaboraSeccompDisabledState() === 'true') {
|
||||
$value = 0;
|
||||
}
|
||||
@@ -281,6 +285,12 @@ class ConfigurationManager
|
||||
if (!$this->isTalkEnabled()) {
|
||||
$value = 0;
|
||||
}
|
||||
|
||||
// Currently only works on x64. See https://github.com/nextcloud/nextcloud-talk-recording/issues/17
|
||||
if (!$this->isx64Platform()) {
|
||||
$value = 0;
|
||||
}
|
||||
|
||||
$config = $this->GetConfig();
|
||||
$config['isTalkRecordingEnabled'] = $value;
|
||||
$this->WriteConfig($config);
|
||||
@@ -340,9 +350,9 @@ class ConfigurationManager
|
||||
|
||||
if (!filter_var($dnsRecordIP, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
|
||||
if ($port === '443') {
|
||||
throw new InvalidSettingConfigurationException("It seems like the ip-address of the domain is set to an internal or reserved ip-address. This is not supported. (It was found to be set to '" . $dnsRecordIP . "'). Please set it to a public ip-address so that the domain validation can work!");
|
||||
throw new InvalidSettingConfigurationException("It seems like the ip-address of the domain is set to an internal or reserved ip-address. This is not supported by the domain validation. (It was found to be set to '" . $dnsRecordIP . "'). Please set it to a public ip-address so that the domain validation can work or skip the domain validation!");
|
||||
} else {
|
||||
error_log("It seems like the ip-address of " . $domain . " is set to an internal or reserved ip-address. (It was found to be set to '" . $dnsRecordIP . "')");
|
||||
error_log("Info: It seems like the ip-address of " . $domain . " is set to an internal or reserved ip-address. (It was found to be set to '" . $dnsRecordIP . "')");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -704,6 +714,13 @@ class ConfigurationManager
|
||||
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
|
||||
}
|
||||
|
||||
public function GetFulltextsearchJavaOptions() : string {
|
||||
$envVariableName = 'FULLTEXTSEARCH_JAVA_OPTIONS';
|
||||
$configName = 'fulltextsearch_java_options';
|
||||
$defaultValue = '-Xms512M -Xmx512M';
|
||||
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
|
||||
}
|
||||
|
||||
public function GetDockerSocketPath() : string {
|
||||
$envVariableName = 'WATCHTOWER_DOCKER_SOCKET_PATH';
|
||||
$configName = 'docker_socket_path';
|
||||
@@ -933,6 +950,38 @@ class ConfigurationManager
|
||||
$this->WriteConfig($config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws InvalidSettingConfigurationException
|
||||
*/
|
||||
public function SetAdditionalCollaboraOptions(string $additionalCollaboraOptions) : void {
|
||||
if ($additionalCollaboraOptions === "") {
|
||||
throw new InvalidSettingConfigurationException("The additional options must not be empty!");
|
||||
}
|
||||
|
||||
if (!preg_match("#^--o:#", $additionalCollaboraOptions)) {
|
||||
throw new InvalidSettingConfigurationException("The entered options must start with '--o:'. So the config does not seem to be a valid!");
|
||||
}
|
||||
|
||||
$config = $this->GetConfig();
|
||||
$config['collabora_additional_options'] = $additionalCollaboraOptions;
|
||||
$this->WriteConfig($config);
|
||||
}
|
||||
|
||||
public function GetAdditionalCollaboraOptions() : string {
|
||||
$config = $this->GetConfig();
|
||||
if(!isset($config['collabora_additional_options'])) {
|
||||
$config['collabora_additional_options'] = '';
|
||||
}
|
||||
|
||||
return $config['collabora_additional_options'];
|
||||
}
|
||||
|
||||
public function DeleteAdditionalCollaboraOptions() : void {
|
||||
$config = $this->GetConfig();
|
||||
$config['collabora_additional_options'] = '';
|
||||
$this->WriteConfig($config);
|
||||
}
|
||||
|
||||
public function GetApacheAdditionalNetwork() : string {
|
||||
$envVariableName = 'APACHE_ADDITIONAL_NETWORK';
|
||||
$configName = 'apache_additional_network';
|
||||
@@ -989,7 +1038,7 @@ class ConfigurationManager
|
||||
}
|
||||
|
||||
private function GetEnabledNvidiaGpu() : string {
|
||||
$envVariableName = 'ENABLE_NVIDIA_GPU';
|
||||
$envVariableName = 'NEXTCLOUD_ENABLE_NVIDIA_GPU';
|
||||
$configName = 'enable_nvidia_gpu';
|
||||
$defaultValue = '';
|
||||
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
|
||||
|
||||
@@ -167,7 +167,7 @@ readonly class DockerActionManager {
|
||||
try {
|
||||
$this->guzzleClient->post($url);
|
||||
} catch (RequestException $e) {
|
||||
throw new \Exception("Could not start container " . $container->GetIdentifier() . ": " . $e->getMessage());
|
||||
throw new \Exception("Could not start container " . $container->GetIdentifier() . ": " . $e->getResponse()?->getBody()->getContents());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,6 +357,8 @@ readonly class DockerActionManager {
|
||||
$replacements[1] = $this->configurationManager->GetNextcloudMaxTime();
|
||||
} elseif ($out[1] === 'BORG_RETENTION_POLICY') {
|
||||
$replacements[1] = $this->configurationManager->GetBorgRetentionPolicy();
|
||||
} elseif ($out[1] === 'FULLTEXTSEARCH_JAVA_OPTIONS') {
|
||||
$replacements[1] = $this->configurationManager->GetFulltextsearchJavaOptions();
|
||||
} elseif ($out[1] === 'NEXTCLOUD_TRUSTED_CACERTS_DIR') {
|
||||
$replacements[1] = $this->configurationManager->GetTrustedCacertsDir();
|
||||
} elseif ($out[1] === 'ADDITIONAL_DIRECTORIES_BACKUP') {
|
||||
@@ -541,19 +543,23 @@ readonly class DockerActionManager {
|
||||
$mounts = [];
|
||||
|
||||
// Special things for the backup container which should not be exposed in the containers.json
|
||||
if ($container->GetIdentifier() === 'nextcloud-aio-borgbackup') {
|
||||
if (str_starts_with($container->GetIdentifier(), 'nextcloud-aio-borgbackup')) {
|
||||
// Additional backup directories
|
||||
foreach ($this->getAllBackupVolumes() as $additionalBackupVolumes) {
|
||||
if ($additionalBackupVolumes !== '') {
|
||||
$mounts[] = ["Type" => "volume", "Source" => $additionalBackupVolumes, "Target" => "/nextcloud_aio_volumes/" . $additionalBackupVolumes, "ReadOnly" => false];
|
||||
}
|
||||
}
|
||||
|
||||
// Make volumes read only in case of borgbackup container. The viewer makes them writeable
|
||||
$isReadOnly = $container->GetIdentifier() === 'nextcloud-aio-borgbackup';
|
||||
|
||||
foreach ($this->configurationManager->GetAdditionalBackupDirectoriesArray() as $additionalBackupDirectories) {
|
||||
if ($additionalBackupDirectories !== '') {
|
||||
if (!str_starts_with($additionalBackupDirectories, '/')) {
|
||||
$mounts[] = ["Type" => "volume", "Source" => $additionalBackupDirectories, "Target" => "/docker_volumes/" . $additionalBackupDirectories, "ReadOnly" => true];
|
||||
$mounts[] = ["Type" => "volume", "Source" => $additionalBackupDirectories, "Target" => "/docker_volumes/" . $additionalBackupDirectories, "ReadOnly" => $isReadOnly];
|
||||
} else {
|
||||
$mounts[] = ["Type" => "bind", "Source" => $additionalBackupDirectories, "Target" => "/host_mounts" . $additionalBackupDirectories, "ReadOnly" => true, "BindOptions" => ["NonRecursive" => true]];
|
||||
$mounts[] = ["Type" => "bind", "Source" => $additionalBackupDirectories, "Target" => "/host_mounts" . $additionalBackupDirectories, "ReadOnly" => $isReadOnly, "BindOptions" => ["NonRecursive" => true]];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -572,6 +578,11 @@ readonly class DockerActionManager {
|
||||
// Special things for the caddy community container
|
||||
} elseif ($container->GetIdentifier() === 'nextcloud-aio-caddy') {
|
||||
$requestBody['HostConfig']['ExtraHosts'] = ['host.docker.internal:host-gateway'];
|
||||
// Special things for the collabora container which should not be exposed in the containers.json
|
||||
} elseif ($container->GetIdentifier() === 'nextcloud-aio-collabora') {
|
||||
if ($this->configurationManager->GetAdditionalCollaboraOptions() !== '') {
|
||||
$requestBody['Cmd'] = [$this->configurationManager->GetAdditionalCollaboraOptions()];
|
||||
}
|
||||
}
|
||||
|
||||
if (count($mounts) > 0) {
|
||||
@@ -588,7 +599,7 @@ readonly class DockerActionManager {
|
||||
]
|
||||
);
|
||||
} catch (RequestException $e) {
|
||||
throw new \Exception("Could not create container " . $container->GetIdentifier() . ": " . $e->getMessage());
|
||||
throw new \Exception("Could not create container " . $container->GetIdentifier() . ": " . $e->getResponse()?->getBody()->getContents());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -623,7 +634,7 @@ readonly class DockerActionManager {
|
||||
try {
|
||||
$this->guzzleClient->post($url);
|
||||
} catch (RequestException $e) {
|
||||
$message = "Could not pull image " . $imageName . ". Please run 'sudo docker exec -it nextcloud-aio-mastercontainer docker pull " . $imageName . "' in order to find out why it failed.";
|
||||
$message = "Could not pull image " . $imageName . ": " . $e->getResponse()?->getBody()->getContents();
|
||||
if ($imageIsThere === false) {
|
||||
throw new \Exception($message);
|
||||
} else {
|
||||
@@ -883,7 +894,7 @@ readonly class DockerActionManager {
|
||||
} catch (RequestException $e) {
|
||||
// 409 is undocumented and gets thrown if the network already exists.
|
||||
if ($e->getCode() !== 409) {
|
||||
throw new \Exception("Could not create the nextcloud-aio network: " . $e->getMessage());
|
||||
throw new \Exception("Could not create the nextcloud-aio network: " . $e->getResponse()?->getBody()->getContents());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1028,6 +1039,10 @@ readonly class DockerActionManager {
|
||||
}
|
||||
}
|
||||
|
||||
public function GetAndGenerateSecretWrapper(string $secretId) : string {
|
||||
return $this->configurationManager->GetAndGenerateSecret($secretId);
|
||||
}
|
||||
|
||||
public function isNextcloudImageOutdated() : bool {
|
||||
$createdTime = $this->GetCreatedTimeOfNextcloudImage();
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
<div class="container">
|
||||
<main>
|
||||
<h1>Nextcloud AIO v10.2.0</h1>
|
||||
<h1>Nextcloud AIO v10.7.0</h1>
|
||||
|
||||
{# Add 2nd tab warning #}
|
||||
<script type="text/javascript" src="second-tab-warning.js"></script>
|
||||
@@ -33,7 +33,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 = 31 %}
|
||||
|
||||
{% if is_backup_container_running == true %}
|
||||
{% if borg_backup_mode == 'backup' or borg_backup_mode == 'restore' %}
|
||||
@@ -60,11 +60,11 @@
|
||||
{% endfor %}
|
||||
|
||||
{% if is_daily_backup_running == true %}
|
||||
<p><span class="status running"></span> Daily backup currently running. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer" target="_blank" rel="noopener">Logs</a>)</p>
|
||||
<p><span class="status running"></span> Daily backup currently running. (<a href="/api/docker/logs?id=nextcloud-aio-mastercontainer" target="_blank">Logs</a>)</p>
|
||||
{% if automatic_updates == true %}
|
||||
<p>This will update your containers, the mastercontainer and, on Saturdays, your Nextcloud apps if the backup is successful.</p>
|
||||
{% if is_mastercontainer_update_available == true %}
|
||||
<p>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>)</p>
|
||||
<p>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">Logs</a>)</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if has_update_available == false %}
|
||||
@@ -75,13 +75,13 @@
|
||||
<p><a href="" class="button reload">Reload ↻</a></p>
|
||||
<p>If the daily backup is stuck somehow, you can unstick it by running <strong>sudo docker exec nextcloud-aio-mastercontainer rm /mnt/docker-aio-config/data/daily_backup_running</strong> and afterwards reloading this interface.</p>
|
||||
{% elseif isWatchtowerRunning == true %}
|
||||
<p><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>)</p>
|
||||
<p><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">Logs</a>)</p>
|
||||
<p><a href="" class="button reload">Reload ↻</a></p>
|
||||
{% else %}
|
||||
{% if is_backup_container_running == false and domain == "" %}
|
||||
{% if isDomaincheckRunning == false %}
|
||||
<h2>Domaincheck container is not running</h2>
|
||||
<p>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.</p>
|
||||
<p>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 target="_blank" 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.</p>
|
||||
{% elseif is_mastercontainer_update_available == true %}
|
||||
<h2>Mastercontainer update</h2>
|
||||
<p>⚠️ A mastercontainer update is available. Please click on the button below to update it. Afterwards, you will be able to proceed with the setup.</p>
|
||||
@@ -97,11 +97,11 @@
|
||||
{{ include('includes/aio-config.twig') }}
|
||||
<h2>New AIO instance</h2>
|
||||
{% if apache_port == '443' %}
|
||||
<p>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, Caddy, Cloudflare Tunnel and else). If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, 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.</p>
|
||||
<p>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, Caddy, Cloudflare Tunnel and else). If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else), see the <strong><a target="_blank" 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.</p>
|
||||
{% else %}
|
||||
<p>AIO is currently in "reverse proxy mode" which means that it can be installed behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) and does not do the TLS proxying itself.</p>
|
||||
{% endif %}
|
||||
<p>Please type the domain that will be used for Nextcloud below in order to create a new AIO instance.</p>
|
||||
<p>Please type the domain that will be used for Nextcloud.</p>
|
||||
{% if skip_domain_validation == true %}
|
||||
<p><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!</p>
|
||||
{% endif %}
|
||||
@@ -115,14 +115,14 @@
|
||||
<p>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.</p>
|
||||
<details>
|
||||
<summary>Click here for further hints</summary>
|
||||
<p>If you do not have a domain yet, you can get one for free e.g. from duckdns.org and others.</p>
|
||||
<p>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.</p>
|
||||
<p>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>.</p>
|
||||
<p>If you do not have a domain yet, you can get one for free e.g. from duckdns.org and others. Recommended is to use <a target="_blank" href="https://github.com/nextcloud/all-in-one/discussions/5439">Tailscale</a></p>
|
||||
<p>If you have a dynamic public IP-address, you can use e.g. <a target="_blank" href="https://ddclient.net/">DDclient</a> with a compatible domain provider for DNS updates.</p>
|
||||
<p>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 target="_blank" href="https://github.com/nextcloud/all-in-one/blob/main/local-instance.md">this documentation</a>.</p>
|
||||
<p>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.</p>
|
||||
{% if apache_port != '443' %}
|
||||
<p>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.</p>
|
||||
<p>If you run into issues with your domain being accepted, see <a target="_blank" 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.</p>
|
||||
{% endif %}
|
||||
<p><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>.</p>
|
||||
<p><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 target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation">this documentation</a>.</p>
|
||||
</details>
|
||||
{% endif %}
|
||||
|
||||
@@ -134,11 +134,11 @@
|
||||
{% if hasBackupLocation %}
|
||||
{% if borg_backup_mode in ['test', 'check'] %}
|
||||
{% if backup_exit_code > 0 %}
|
||||
<p><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>)</p>
|
||||
<p><span class="status error"></span> Last {{ borg_backup_mode }} failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank">Logs</a>)</p>
|
||||
{% if borg_backup_mode == 'test' %}
|
||||
<p>Please adjust the path and/or the encryption password in order to make it work!</p>
|
||||
{% elseif borg_backup_mode == 'check' %}
|
||||
<p>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></p>
|
||||
<p>The backup archive seems to be corrupt. Please try to use a different intact backup archive or try to fix it by following <a target="_blank" href="https://borgbackup.readthedocs.io/en/stable/faq.html#i-get-an-integrityerror-or-similar-what-now"><strong>this documentation</strong></a></p>
|
||||
<details>
|
||||
<summary>Reveal repair option</summary>
|
||||
<p>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.)</p>
|
||||
@@ -150,7 +150,7 @@
|
||||
</details>
|
||||
{% endif %}
|
||||
{% elseif backup_exit_code == 0 %}
|
||||
<p><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>)</p>
|
||||
<p><span class="status success"></span> Last {{ borg_backup_mode }} successful! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank">Logs</a>)</p>
|
||||
{% if borg_backup_mode == 'test' %}
|
||||
<p>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.</p>
|
||||
<form method="POST" action="/api/docker/backup-check" class="xhr">
|
||||
@@ -160,7 +160,7 @@
|
||||
</form>
|
||||
{% endif %}
|
||||
<p>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!</p>
|
||||
<p><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.</p>
|
||||
<p><strong>Please note:</strong> If the backup that you want to restore contained any <a target="_blank" 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.</p>
|
||||
<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}}">
|
||||
@@ -175,7 +175,7 @@
|
||||
{% endif %}
|
||||
{% elseif borg_backup_mode == 'restore' %}
|
||||
{% if backup_exit_code > 0 %}
|
||||
<p><span class="status error"></span> Last restore failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)</p>
|
||||
<p><span class="status error"></span> Last restore failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank">Logs</a>)</p>
|
||||
<p>The restore process has unexpectedly failed! Please adjust the path and encryption password, test it and try to restore again!</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -191,12 +191,12 @@
|
||||
|
||||
<p>
|
||||
Please enter the location of the backup archive on your host or a
|
||||
<a href="https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls">remote borg repo url</a>
|
||||
<a target="_blank" href="https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls">remote borg repo url</a>
|
||||
if stored remotely; and the encryption password of the backup archive below:
|
||||
</p>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<label>Local backup location</label> <input type="text" name="borg_restore_host_location" value="{{borg_backup_host_location}}" placeholder="/mnt/backup"/><br>
|
||||
<label>Remote borg repo</label> <input type="text" name="borg_restore_remote_repo" value="{{borg_remote_repo}}" placeholder="ssh://user@host:/path/to/repo"/><br>
|
||||
<label>Remote borg repo</label> <input type="text" name="borg_restore_remote_repo" value="{{borg_remote_repo}}" placeholder="ssh://user@host:port/path/to/repo"/><br>
|
||||
<label>Borg passphrase</label> <input type="text" name="borg_restore_password" value="{{borg_restore_password}}" placeholder="encryption password"/><br>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
@@ -215,19 +215,19 @@
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<h2>How to reset the AIO instance?</h2>
|
||||
<p>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>.</p>
|
||||
<p>If something should be going wrong, for example during the initial installation, you can reset the instance by following <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-properly-reset-the-instance">this documentation</a>.</p>
|
||||
{% 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' %}
|
||||
<p>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>)</p>
|
||||
<p>You are running the <a target="_blank" 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">Logs</a>)</p>
|
||||
{% else %}
|
||||
<p>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.</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if is_backup_container_running == true %}
|
||||
<p><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>)</p>
|
||||
<p><span class="status running"></span> Backup container is currently running: {{ borg_backup_mode }} (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank">Logs</a>)</p>
|
||||
<p><a href="" class="button reload">Reload ↻</a></p>
|
||||
{% endif %}
|
||||
|
||||
@@ -245,9 +245,9 @@
|
||||
{% else %}
|
||||
<p>Initial Nextcloud password: <strong>{{ nextcloud_password }}</strong></p>
|
||||
{% endif %}
|
||||
<p><a href="https://{{ domain }}" class="button" target="_blank" rel="noopener">Open your Nextcloud ↗</a></p>
|
||||
<p><a href="https://{{ domain }}" class="button" target="_blank">Open your Nextcloud ↗</a></p>
|
||||
{% if not hasBackupLocation %}
|
||||
<p>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></p>
|
||||
<p>If your Nextcloud does not open when clicking the button above, see <strong><a target="_blank" href="https://github.com/nextcloud/all-in-one/discussions/2105">this documentation</a></strong></p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if isAnyRestarting == false %}
|
||||
@@ -278,23 +278,32 @@
|
||||
<li>
|
||||
{% if container.GetStartingState().value == 'starting' %}
|
||||
<span class="status running"></span>
|
||||
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}" target="_blank" rel="noopener">Starting</a>)
|
||||
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}" target="_blank">Starting</a>)
|
||||
{% if container.GetDocumentation() != '' %}
|
||||
(<a href="{{ container.GetDocumentation() }}">docs</a>)
|
||||
(<a target="_blank" href="{{ container.GetDocumentation() }}">docs</a>)
|
||||
{% endif %}
|
||||
{% if container.GetUiSecret() != '' %}
|
||||
(password: {{ container.GetUiSecret() }})
|
||||
{% endif %}
|
||||
</span>
|
||||
{% elseif container.GetRunningState().value == 'running' %}
|
||||
<span class="status success"></span>
|
||||
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}" target="_blank" rel="noopener">Running</a>)
|
||||
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}" target="_blank">Running</a>)
|
||||
{% if container.GetDocumentation() != '' %}
|
||||
(<a href="{{ container.GetDocumentation() }}">docs</a>)
|
||||
(<a target="_blank" href="{{ container.GetDocumentation() }}">docs</a>)
|
||||
{% endif %}
|
||||
{% if container.GetUiSecret() != '' %}
|
||||
(password: {{ container.GetUiSecret() }})
|
||||
{% endif %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="status error"></span>
|
||||
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}" target="_blank" rel="noopener">Stopped</a>)
|
||||
<span>{{ container.GetDisplayName() }} (<a href="/api/docker/logs?id={{ container.GetIdentifier() }}" target="_blank">Stopped</a>)
|
||||
{% if container.GetDocumentation() != '' %}
|
||||
(<a href="{{ container.GetDocumentation() }}">docs</a>)
|
||||
(<a target="_blank" href="{{ container.GetDocumentation() }}">docs</a>)
|
||||
{% endif %}
|
||||
{% if container.GetUiSecret() != '' %}
|
||||
(password: {{ container.GetUiSecret() }})
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
@@ -313,7 +322,7 @@
|
||||
{% if newMajorVersion != '' and isAnyRunning == true and isApacheStarting != true %}
|
||||
<details>
|
||||
<summary>Note about <strong>Nextcloud Hub {{ newMajorVersion - 21 }}</strong></summary>
|
||||
<p>If you haven't upgraded to Nextcloud Hub {{ newMajorVersion - 21 }} yet and want to do that now, feel free to follow <strong><a href="https://github.com/nextcloud/all-in-one/discussions/5133">this documentation</a></strong></p>
|
||||
<p>If you haven't upgraded to Nextcloud Hub {{ newMajorVersion - 21 }} yet and want to do that now, feel free to follow <strong><a target="_blank" href="https://github.com/nextcloud/all-in-one/discussions/6053">this documentation</a></strong></p>
|
||||
</details>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -325,11 +334,11 @@
|
||||
{% if is_mastercontainer_update_available == true %}
|
||||
<p>⚠️ A mastercontainer update is available. Please click on the button below to stop your containers in order to update the mastercontainer.</p>
|
||||
{% if current_channel starts with 'latest' %}
|
||||
<p>You can find the changelog <a href="https://github.com/nextcloud/all-in-one/releases/latest"><strong>here</strong></a></p>
|
||||
<p>You can find the changelog <a target="_blank" href="https://github.com/nextcloud/all-in-one/releases/latest"><strong>here</strong></a></p>
|
||||
{% elseif current_channel starts with 'beta' %}
|
||||
<p>You can find the changelog <a href="https://github.com/nextcloud/all-in-one/releases"><strong>here</strong></a></p>
|
||||
<p>You can find the changelog <a target="_blank" href="https://github.com/nextcloud/all-in-one/releases"><strong>here</strong></a></p>
|
||||
{% elseif current_channel starts with 'develop' %}
|
||||
<p>You can find all changes <a href="https://github.com/nextcloud-releases/all-in-one/commits/main"><strong>here</strong></a></p>
|
||||
<p>You can find all changes <a target="_blank" href="https://github.com/nextcloud-releases/all-in-one/commits/main"><strong>here</strong></a></p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<form method="POST" action="/api/docker/stop" class="xhr">
|
||||
@@ -390,11 +399,11 @@
|
||||
<p>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.</p>
|
||||
<p>
|
||||
To store backups remotely instead, fill in the
|
||||
<a href="https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls">remote borg repo url</a>.
|
||||
<a target="_blank" href="https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls">remote borg repo url</a>.
|
||||
</p>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<label>Local backup location</label> <input type="text" name="borg_backup_host_location" placeholder="/mnt/backup"/><br>
|
||||
<label>Remote borg repo</label> <input type="text" name="borg_remote_repo" placeholder="ssh://user@host:/path/to/repo"/><br>
|
||||
<label>Remote borg repo</label> <input type="text" name="borg_remote_repo" placeholder="ssh://user@host:port/path/to/repo"/><br>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input type="submit" value="Submit backup location" />
|
||||
@@ -409,9 +418,9 @@
|
||||
{% if is_backup_container_running == false %}
|
||||
<h2>Backup and restore</h2>
|
||||
{% if backup_exit_code > 0 %}
|
||||
<p><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>)</p>
|
||||
<p><span class="status error"></span> Last {{ borg_backup_mode }} failed! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank">Logs</a>)</p>
|
||||
{% if borg_backup_mode == "check" %}
|
||||
<p>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></p>
|
||||
<p>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 target="_blank" href="https://borgbackup.readthedocs.io/en/stable/faq.html#i-get-an-integrityerror-or-similar-what-now"><strong>this documentation</strong></a></p>
|
||||
<details>
|
||||
<summary>Reveal repair option</summary>
|
||||
<p>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.)</p>
|
||||
@@ -435,7 +444,7 @@
|
||||
<p>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.</p>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<label>Local backup location</label> <input type="text" name="borg_backup_host_location" placeholder="/mnt/backup"/><br>
|
||||
<label>Remote borg repo</label> <input type="text" name="borg_remote_repo" placeholder="ssh://user@host:/path/to/repo"/><br>
|
||||
<label>Remote borg repo</label> <input type="text" name="borg_remote_repo" placeholder="ssh://user@host:port/path/to/repo"/><br>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input type="submit" value="Set backup location again" />
|
||||
@@ -443,9 +452,9 @@
|
||||
{% endif %}
|
||||
{% elseif backup_exit_code == 0 %}
|
||||
{% if borg_backup_mode == "backup" %}
|
||||
<p><span class="status success"></span> Last {{ borg_backup_mode }} successful on {{ last_backup_time }} UTC! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank" rel="noopener">Logs</a>)</p>
|
||||
<p><span class="status success"></span> Last {{ borg_backup_mode }} successful on {{ last_backup_time }} UTC! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank">Logs</a>)</p>
|
||||
{% else %}
|
||||
<p><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>)</p>
|
||||
<p><span class="status success"></span> Last {{ borg_backup_mode }} successful! (<a href="/api/docker/logs?id=nextcloud-aio-borgbackup" target="_blank">Logs</a>)</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -459,7 +468,7 @@
|
||||
<p>This is your encryption password for backups: <strong>{{ borgbackup_password }}</strong></p>
|
||||
<p>Please save this password in a safe place. You won't be able to restore from backup if you lose this password!</p>
|
||||
<p>All important data from your Nextcloud AIO instance such as the database, your files and the mastercontainer's configuration files, will be backed up.</p>
|
||||
<p>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.</p>
|
||||
<p>The backup uses a tool called <a target="_blank" 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.</p>
|
||||
<p>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.</p>
|
||||
{% if borg_remote_repo != '' %}
|
||||
<p>
|
||||
@@ -473,9 +482,9 @@
|
||||
<p>Backups will be created in the following directory on the host: <strong>{{ borg_backup_host_location }}/borg</strong></p>
|
||||
{% endif %}
|
||||
<p>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.</p>
|
||||
<p>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>.</p>
|
||||
<p>For information about backup retention, see <strong><a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy">this</a></strong>.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>For further documentation and options on this backup solution refer to <strong><a target="_blank" href="https://github.com/nextcloud/all-in-one#backup">this section</a></strong> and below.</p>
|
||||
|
||||
{% if isApacheStarting != true %}
|
||||
<h3>Backup creation</h3>
|
||||
@@ -504,6 +513,9 @@
|
||||
{% endif %}
|
||||
|
||||
{% if has_backup_run_once == true %}
|
||||
<h3>Backup Viewer</h3>
|
||||
<p>There is now a community container that allows to access your backups in a web session. See <a target="_blank" href="https://github.com/nextcloud/all-in-one/tree/main/community-containers/borgbackup-viewer"><strong>this documentation</strong></a>.</p>
|
||||
|
||||
<h3>Backup check</h3>
|
||||
<p>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.</p>
|
||||
<form method="POST" action="/api/docker/backup-check" class="xhr">
|
||||
@@ -559,7 +571,7 @@
|
||||
<input type="submit" value="Submit additional backup locations" />
|
||||
</form>
|
||||
<p>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!</p>
|
||||
<p>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></p>
|
||||
<p>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 target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally">this documentation</a></p>
|
||||
<p>Please note that the chosen directories/volumes will not be restored when you restore your instance, so this would need to be done manually.</p>
|
||||
{% if additional_backup_directories != "" %}
|
||||
<p>This option is currently set. You can disable it again by clearing the field and submitting your changes.</p>
|
||||
@@ -586,7 +598,7 @@
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input type="submit" value="Submit passphrase change" />
|
||||
</form>
|
||||
<p>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>.</p>
|
||||
<p>The new passphrase needs to be at least 24 characters long. Allowed characters are the <a target="_blank" 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>.</p>
|
||||
</details>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -611,7 +623,7 @@
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input 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>
|
||||
<p>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.</p>
|
||||
<p>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 target="_blank" 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.</p>
|
||||
{% else %}
|
||||
<p>The timezone for Nextcloud is currently set to <strong>{{ timezone }}</strong>. You can change the timezone by clicking on the button below.</p>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<details>
|
||||
<summary>Click here to view the current AIO config and documentation links</summary>
|
||||
{% if was_start_button_clicked == true %}
|
||||
<p>Nextcloud's 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>.</p>
|
||||
<p>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>.</p>
|
||||
<p>Nextcloud's config.php file is stored in the nextcloud_aio_nextcloud Docker volume and can be edited by following the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-edit-nextclouds-configphp-file-with-a-texteditor">config.php documentation</a>.</p>
|
||||
<p>You can run Nextcloud's usual occ commands by following the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-run-occ-commands">occ documentation</a></strong>.</p>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
@@ -11,7 +11,7 @@
|
||||
{% else %}
|
||||
Nextcloud's datadir is getting stored in the {{ nextcloud_datadir }} Docker volume.
|
||||
{% endif %}
|
||||
See the <a href="https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir">NEXTCLOUD_DATADIR documentation</a> on how to change this.
|
||||
See the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir">NEXTCLOUD_DATADIR documentation</a> on how to change this.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -20,13 +20,13 @@
|
||||
{% else %}
|
||||
The Nextcloud container is getting access to the {{ nextcloud_mount }} directory and local external storage in Nextcloud is enabled.
|
||||
{% endif %}
|
||||
See the <a href="https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host">NEXTCLOUD_MOUNT documentation</a> on how to change this.</p>
|
||||
See the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host">NEXTCLOUD_MOUNT documentation</a> on how to change this.</p>
|
||||
|
||||
<p>Nextcloud has an upload limit of {{ nextcloud_upload_limit }} configured (for public link uploads. Bigger uploads are always possible when users are logged in). See the <a href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud">NEXTCLOUD_UPLOAD_LIMIT documentation</a> on how to change this.</p>
|
||||
<p>Nextcloud has an upload limit of {{ nextcloud_upload_limit }} configured (for public link uploads. Bigger uploads are always possible when users are logged in). See the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud">NEXTCLOUD_UPLOAD_LIMIT documentation</a> on how to change this.</p>
|
||||
|
||||
<p>For Nextcloud, a memory limit of {{ nextcloud_memory_limit }} per PHP process is configured. See the <a href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud">NEXTCLOUD_MEMORY_LIMIT documentation</a> on how to change this.</p>
|
||||
<p>For Nextcloud, a memory limit of {{ nextcloud_memory_limit }} per PHP process is configured. See the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud">NEXTCLOUD_MEMORY_LIMIT documentation</a> on how to change this.</p>
|
||||
|
||||
<p>Nextcloud has a timeout of {{ nextcloud_max_time }} seconds configured (important for big file uploads). See the <a href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud">NEXTCLOUD_MAX_TIME documentation</a> on how to change this.</p>
|
||||
<p>Nextcloud has a timeout of {{ nextcloud_max_time }} seconds configured (important for big file uploads). See the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud">NEXTCLOUD_MAX_TIME documentation</a> on how to change this.</p>
|
||||
|
||||
<p>
|
||||
{% if is_dri_device_enabled == true and is_nvidia_gpu_enabled == true %}
|
||||
@@ -38,7 +38,7 @@
|
||||
{% else %}
|
||||
Hardware acceleration is not enabled. It's recommended to enable hardware transcoding for better performance.
|
||||
{% endif %}
|
||||
See the <a href="https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud">hardware acceleration documentation</a> on how to change this.</p>
|
||||
See the <a target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud">hardware acceleration documentation</a> on how to change this.</p>
|
||||
|
||||
<p>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>.</p>
|
||||
<p>For further documentation on AIO, refer to <strong><a target="_blank" 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 target="_blank" href="https://github.com/nextcloud/all-in-one/discussions/categories/wiki">here</a></strong>.</p>
|
||||
</details>
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
<p>On Synology it could be <strong>/volume1/docker/nextcloud/backup</strong>.</p>
|
||||
<p>For macOS it may be <strong>/var/backup</strong>.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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 target="_blank" href="https://github.com/nextcloud/all-in-one#how-to-create-the-backup-volume-on-windows">this documentation</a> for an example.</p>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<h2>Optional containers</h2>
|
||||
<p>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.</p>
|
||||
<p>In this section you can enable or disable optional containers. There are further community containers available that are not listed below. See <strong><a target="_blank" href="https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers">this documentation</a></strong> how to add them.</p>
|
||||
{% if isAnyRunning == true %}
|
||||
<p><strong>Please note:</strong> You can enable or disable the options below only when your containers are stopped.</p>
|
||||
{% else %}
|
||||
@@ -21,7 +21,7 @@
|
||||
data-initial-state="false"
|
||||
{% endif %}
|
||||
>
|
||||
<label for="clamav">ClamAV (Antivirus backend for Nextcloud, only supported on x64, needs ~1GB additional RAM)</label>
|
||||
<label for="clamav">ClamAV (Antivirus backend for Nextcloud, only supported on x86_64, needs ~1GB additional RAM)</label>
|
||||
</p>
|
||||
<p>
|
||||
<input
|
||||
@@ -50,7 +50,7 @@
|
||||
{% endif %}
|
||||
>
|
||||
<label for="fulltextsearch">
|
||||
Fulltextsearch (needs ~1GB additional RAM, <a href="https://github.com/nextcloud/all-in-one/discussions/5768">does not work on Kernels without Seccomp</a>)
|
||||
Fulltextsearch (needs ~1GB additional RAM, <a target="_blank" href="https://github.com/nextcloud/all-in-one/discussions/5768">does not work on Kernels without Seccomp</a>)
|
||||
{% if is_fulltextsearch_enabled == false %}
|
||||
. <strong>Please note:</strong> the initial indexing can take a long time during which Nextcloud will be unavailable
|
||||
{% endif %}
|
||||
@@ -68,7 +68,7 @@
|
||||
data-initial-state="false"
|
||||
{% endif %}
|
||||
>
|
||||
<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>
|
||||
<label for="imaginary">Imaginary (for previews of heic, heif, illustrator, pdf, svg, tiff and webp. Imaginary is currently <a target="_blank" href="https://github.com/nextcloud/server/issues/34262">incompatible with server-side-encryption</a>)</label>
|
||||
</p>
|
||||
<p>
|
||||
<input
|
||||
@@ -96,7 +96,7 @@
|
||||
data-initial-state="false"
|
||||
{% endif %}
|
||||
>
|
||||
<label for="talk-recording">Nextcloud Talk Recording-server (needs Nextcloud Talk being enabled and ~1GB additional RAM and ~2 additional vCPUs)</label>
|
||||
<label for="talk-recording">Nextcloud Talk Recording-server (needs Nextcloud Talk being enabled and ~1GB additional RAM and ~2 additional vCPUs, currently <a target="_blank" href="https://github.com/nextcloud/nextcloud-talk-recording/issues/17">only works on x86_64</a>)</label>
|
||||
</p>
|
||||
{% if is_onlyoffice_enabled == true %}
|
||||
<p>
|
||||
@@ -126,7 +126,7 @@
|
||||
data-initial-state="false"
|
||||
{% endif %}
|
||||
>
|
||||
<label for="docker-socket-proxy">Docker Socket Proxy (needed for <a href="https://github.com/cloud-py-api/app_api#nextcloud-appapi">Nextcloud App API</a>)</label>
|
||||
<label for="docker-socket-proxy">Docker Socket Proxy (needed for <a target="_blank" href="https://github.com/cloud-py-api/app_api#nextcloud-appapi">Nextcloud App API</a>)</label>
|
||||
</p>
|
||||
<p>
|
||||
<input
|
||||
@@ -145,7 +145,7 @@
|
||||
<input id="options-form-submit" type="submit" value="Save changes" />
|
||||
<script type="text/javascript" src="options-form-submit.js?v3"></script>
|
||||
</form>
|
||||
<p><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></p>
|
||||
<p><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 advice and recommendations see <strong><a target="_blank" href="https://github.com/nextcloud/all-in-one/discussions/1335">this documentation</a></strong></p>
|
||||
{% if isAnyRunning == true or is_x64_platform == false %}
|
||||
<script type="text/javascript" src="disable-clamav.js"></script>
|
||||
{% endif %}
|
||||
@@ -181,4 +181,26 @@
|
||||
<input type="submit" value="Reset collabora dictionaries" />
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
<h3>Additional Collabora options</h3>
|
||||
|
||||
{% if collabora_additional_options == "" %}
|
||||
<p>You can configure additional options for collabora below.</p>
|
||||
<p>(This can be used for configuring the net.content_security_policy and more)</p>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="text" name="collabora_additional_options" />
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input type="submit" value="Submit additional collabora options" />
|
||||
</form>
|
||||
<p>You need to make sure that the options that you enter are valid. An example is <strong>--o:net.content_security_policy="frame-ancestors *.example.com:*;"</strong>.</p>
|
||||
{% else %}
|
||||
<p>The additioinal options for Collabora are currently set to <strong>{{ collabora_additional_options }}</strong>. You can reset them again by clicking on the button below.</p>
|
||||
<form method="POST" action="/api/configuration" class="xhr">
|
||||
<input type="hidden" name="delete_collabora_additional_options" value="yes"/>
|
||||
<input type="hidden" name="{{csrf.keys.name}}" value="{{csrf.name}}">
|
||||
<input type="hidden" name="{{csrf.keys.value}}" value="{{csrf.value}}">
|
||||
<input type="submit" value="Reset additional collabora options" />
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user