Compare commits

..

73 Commits

Author SHA1 Message Date
Simon L.
34a264d945 Merge pull request #5543 from nextcloud/revert-5537-enh/noid/fix-talk-recording
Revert "talk-recording: change to firefox-esr"
2024-11-07 14:51:59 +01:00
Simon L.
16a3c32ec3 Revert "talk-recording: change to firefox-esr" 2024-11-07 14:51:37 +01:00
Simon L.
30614ad9b6 Merge pull request #5540 from nextcloud/aio-dependency-update
PHP dependency updates
2024-11-07 13:50:38 +01:00
Simon L.
b7355b12b7 Merge pull request #5541 from nextcloud/imaginary-container-update
Imaginary update
2024-11-07 13:50:08 +01:00
szaimen
d5b6e6653d imaginary-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-07 12:02:52 +00:00
szaimen
7d286edc5f php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-07 12:02:48 +00:00
Simon L.
d6bd5b407a Merge pull request #5538 from nextcloud/enh/noid/change-talk-recording
talk-recording: change tmpfs to volume
2024-11-07 12:12:42 +01:00
Simon L.
56864dde66 talk-recording: change tmpfs to volume
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-07 12:07:44 +01:00
Simon L.
adc9c1ea44 Merge pull request #5537 from nextcloud/enh/noid/fix-talk-recording
talk-recording: change to firefox-esr
2024-11-07 11:43:52 +01:00
Simon L.
4e2bb8f1a7 talk-recording: change to firefox-esr
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-07 11:22:29 +01:00
Simon L.
74e5a58a4c increase to 9.9.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-07 10:50:26 +01:00
Simon L.
bcd3fd80ec Merge pull request #5536 from nextcloud/enh/noid/update-nc
nextcloud: update to 29.0.9
2024-11-07 10:49:11 +01:00
Simon L.
01e10aa3f2 nextcloud: update to 29.0.9
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-07 10:48:35 +01:00
Simon L.
cd3a33a800 Merge pull request #5484 from apparle/apache_additional_network
Specifying additional docker network for Apache container
2024-11-07 09:37:56 +01:00
Simon L.
4a8e0c8415 fix indentation
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-07 09:34:37 +01:00
Apoorv Parle
e30b4562b2 Remove mastercontainer connection to APACHE_ADDITIONAL_CONTAINER. Follow that up in a separate PR.
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2024-11-07 00:26:35 -08:00
Simon L.
798c250db2 Merge pull request #5534 from nextcloud/dependabot/composer/php/twig/twig-3.14.1
build(deps): bump twig/twig from 3.14.0 to 3.14.1 in /php
2024-11-06 22:31:18 +01:00
Simon L.
57884a1c79 Merge pull request #5535 from Martinligabue/patch-1
readme reset instance guide typo
2024-11-06 22:27:06 +01:00
Martin Ligabue
5125ec934f readme reset instance guide typo
probably due to a copypaste

Signed-off-by: Martin Ligabue <martinligabue@gmail.com>
2024-11-06 21:18:59 +01:00
dependabot[bot]
9deb2e0356 build(deps): bump twig/twig from 3.14.0 to 3.14.1 in /php
Bumps [twig/twig](https://github.com/twigphp/Twig) from 3.14.0 to 3.14.1.
- [Changelog](https://github.com/twigphp/Twig/blob/v3.14.1/CHANGELOG)
- [Commits](https://github.com/twigphp/Twig/compare/v3.14.0...v3.14.1)

---
updated-dependencies:
- dependency-name: twig/twig
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-06 19:54:39 +00:00
Simon L.
45a0350b16 Merge pull request #5532 from nextcloud/ci/json-validator/use-venv
ci(json-validator): use venv
2024-11-06 16:33:52 +01:00
Simon L.
72d1c2c14e Merge pull request #5525 from nextcloud/aio-helm-update
Helm Chart updates
2024-11-06 16:32:14 +01:00
Richard Steinmetz
4f808d2d67 ci(json-validator): use venv
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-11-06 16:28:36 +01:00
szaimen
d50ec29cf0 Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-06 15:27:52 +00:00
Simon L.
5c4d0b7a4a Merge pull request #5530 from nextcloud/enh/noid/user-string
user must be a string
2024-11-06 16:26:52 +01:00
szaimen
4c83aac666 Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 16:24:29 +01:00
Simon L.
ad32d0af9c try to fix workflows
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 16:22:54 +01:00
Simon L.
b498f557cf user must be a string
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 16:17:22 +01:00
Simon L.
8d81f56a9f Merge pull request #5528 from nextcloud/enh/noid/add-user-ids
add user-IDs to all containers
2024-11-06 16:13:50 +01:00
Simon L.
bc36ce9aab fix some issues
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 16:12:36 +01:00
Simon L.
f617a94af5 fix json-validator workflow
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 15:59:45 +01:00
Simon L.
1632e14380 nextcloud: remove chpasswd
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 15:03:17 +01:00
Simon L.
2f4acc52ad Merge pull request #5527 from nextcloud/enh/5526/add-libreoffice
nextcloud: add libreoffice by default
2024-11-06 14:49:03 +01:00
szaimen
c686afb6da Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 14:35:40 +01:00
Simon L.
faecc028fe add user-IDs to all containers
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 14:35:40 +01:00
Simon L.
0d9a22346e nextcloud: add libreoffice by default
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 14:08:46 +01:00
Simon L.
5499bc8a5d Merge pull request #5524 from nextcloud/aio-dependency-update
PHP dependency updates
2024-11-06 13:04:57 +01:00
szaimen
f6cfa071a0 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-06 12:03:27 +00:00
Simon L.
24a249be05 Update json-validator.yml
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-06 13:01:55 +01:00
Simon L.
bb3236d3e5 Merge pull request #5503 from nextcloud/enh/noid/fix-getting-tag
DockerActionManager: fix getting the tag from the image
2024-11-06 12:59:54 +01:00
Simon L.
9e2b86232f Merge pull request #5507 from nextcloud/enh/noid/add-debug-docs
aio-interface: add debug docs to collabora, talk and fts
2024-11-06 12:59:18 +01:00
Simon L.
e9e444efbe Merge pull request #5510 from nextcloud/docjyJ-patch-1
Fix twig
2024-11-06 12:58:07 +01:00
Simon L.
096de1af7f Merge pull request #5515 from nextcloud/dependabot/docker/Containers/clamav/clamav/clamav-1.4.1-11
build(deps): bump clamav/clamav from 1.4.1-10 to 1.4.1-11 in /Containers/clamav
2024-11-06 12:57:18 +01:00
Simon L.
7795bda828 Merge pull request #5516 from nextcloud/aio-dependency-update
PHP dependency updates
2024-11-06 12:57:04 +01:00
Simon L.
a26dbfc0b1 Merge pull request #5520 from nextcloud/enh/noid/user-value
helm: add additional security settings
2024-11-05 16:29:07 +01:00
Simon L.
b81ae86e8a helm: add additional security settings
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-05 16:21:52 +01:00
Simon L.
89739b26ed Merge pull request #5519 from nextcloud/enh/noid/adjust-network-policy
helm: update network policy
2024-11-05 13:28:34 +01:00
szaimen
347e83c08a php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-05 12:05:58 +00:00
Simon L.
5131a2f34a helm: update network policy
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-05 11:49:52 +01:00
Simon L.
a625570c31 address review
Co-authored-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-04 21:09:15 +01:00
Apoorv Parle
974ad1ef9b Improve error checking and connect mastercontainer right from the start to make inital process seamless.
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2024-11-04 05:27:30 -08:00
Apoorv Parle
f5990cc0ef Add APACHE_ADDITIONAL_NETWORK variable to env variables QA test
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2024-11-04 04:10:47 -08:00
Apoorv Parle
75c2407afa Apply suggestions from code review
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2024-11-04 02:44:10 -08:00
Simon L.
9df3a171da update apache_port description
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-04 10:42:10 +01:00
dependabot[bot]
e73e272e31 build(deps): bump clamav/clamav in /Containers/clamav
Bumps clamav/clamav from 1.4.1-10 to 1.4.1-11.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 05:09:49 +00:00
Apoorv Parle
4ad749a265 Merge branch 'main' into apache_additional_network 2024-11-02 14:14:42 -07:00
Apoorv Parle
f644e83935 Add ability to specify additional docker network and update documentation for it.
Signed-off-by: Apoorv Parle <19315187+apparle@users.noreply.github.com>
2024-11-02 14:11:17 -07:00
Jean-Yves
b5492f28ae Update already-installed.twig
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2024-11-02 18:30:01 +01:00
Jean-Yves
9af90f00f8 Update setup.twig
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2024-11-02 18:29:06 +01:00
Jean-Yves
d748134533 Fix twig
Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
2024-11-02 18:28:31 +01:00
Simon L.
c823816a79 Update readme.md
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-02 17:22:25 +01:00
Simon L.
013306fff7 update screenshot
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-01 11:57:03 +01:00
Simon L.
44ecde5d64 Merge pull request #5505 from zybster/patch-1
Update truenas scale section in readme.md
2024-11-01 10:46:59 +01:00
Simon L.
0ff08f00f1 adjust the PR and add link to guide
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-01 10:42:18 +01:00
Simon L.
315c29c81e try to fix the json-validator workflow
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-01 10:35:04 +01:00
Simon L.
329e2e7805 aio-interface: add debug docs to collabora, talk and fts
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-11-01 10:28:19 +01:00
zybster
c78bffbff9 Update readme.md
Since IX System ditched Kubernetes and integrated a full-fledged docker environment in Truenas Scale 24.10.0 (Electric Eel) it is now very easy to install Nextcloud AIO on Scale
On way is listed here.

Signed-off-by: zybster <zybster@gmail.com>
2024-11-01 09:09:21 +01:00
Simon L.
0f91f39dbe Merge pull request #5499 from Perlover/patch-1
Update docker-rootless.md - missprint + improvement
2024-10-31 13:22:19 +01:00
Simon L.
3ede76af8f DockerActionManager: fix getting the tag from the image
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-10-31 13:14:12 +01:00
Simon L.
bd799bd753 address review
Signed-off-by: Simon L. <szaimen@e.mail.de>
2024-10-31 11:48:39 +01:00
Simon L.
476d80ca54 Merge pull request #5500 from jr551/patch-1
npmplus: Update readme.md
2024-10-30 20:42:48 +01:00
jr_blue_551
4b51f85d98 Update readme.md
Signed-off-by: jr_blue_551 <johnrowe551@gmail.com>
2024-10-30 19:27:10 +00:00
Perlover
9316555ecb Update docker-rootless.md
1) No NEXTCLOUD_MOUNT but there is NEXTCLOUD_DATADIR
2) Now in Docker recommended the few different detailed config: https://docs.docker.com/engine/security/rootless/#docker-run--p-does-not-propagate-source-ip-addresses

Signed-off-by: Perlover <perlover@perlover.com>
2024-10-30 13:43:19 +01:00
46 changed files with 296 additions and 145 deletions

View File

@@ -1,35 +1,37 @@
name: Json Validator
on:
pull_request:
paths:
- '**.json'
push:
branches:
- main
paths:
- '**.json'
jobs:
json-validator:
name: Json Validator
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Validate Json
run: |
sudo apt-get update
sudo apt-get install python3-pip -y --no-install-recommends
sudo pip3 install json-spec
if ! json validate --schema-file=php/containers-schema.json --document-file=php/containers.json; then
exit 1
fi
JSON_FILES="$(find ./community-containers -name '*.json')"
mapfile -t JSON_FILES <<< "$JSON_FILES"
for file in "${JSON_FILES[@]}"; do
json validate --schema-file=php/containers-schema.json --document-file="$file" 2>&1 | tee -a ./json-validator.log
done
if grep -q "document does not validate with schema.\|invalid JSONFile" ./json-validator.log; then
exit 1
fi
name: Json Validator
on:
pull_request:
paths:
- '**.json'
push:
branches:
- main
paths:
- '**.json'
jobs:
json-validator:
name: Json Validator
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Validate Json
run: |
sudo apt-get update
sudo apt-get install python3-venv -y --no-install-recommends
python3 -m venv venv
. venv/bin/activate
pip3 install json-spec
if ! json validate --schema-file=php/containers-schema.json --document-file=php/containers.json; then
exit 1
fi
JSON_FILES="$(find ./community-containers -name '*.json')"
mapfile -t JSON_FILES <<< "$JSON_FILES"
for file in "${JSON_FILES[@]}"; do
json validate --schema-file=php/containers-schema.json --document-file="$file" 2>&1 | tee -a ./json-validator.log
done
if grep -q "document does not validate with schema.\|invalid JSONFile" ./json-validator.log; then
exit 1
fi

View File

@@ -81,7 +81,7 @@ RUN set -ex; \
\
echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data
USER 33
ENTRYPOINT ["/start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]

View File

@@ -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-10
FROM clamav/clamav:1.4.1-11
COPY clamav.conf /clamav.conf
COPY --chmod=775 start.script /start.script
@@ -19,7 +19,7 @@ RUN set -ex; \
VOLUME /var/lib/clamav
USER clamav
USER 100
LABEL com.centurylinklabs.watchtower.enable="false"

View File

@@ -33,7 +33,7 @@ COPY --chmod=775 start.sh /start.sh
ENV PORT=9000
USER nobody
USER 65534
# https://github.com/h2non/imaginary#memory-issues
ENV MALLOC_ARENA_MAX=2

View File

@@ -193,6 +193,14 @@ It is set to '$APACHE_IP_BINDING'."
exit 1
fi
fi
if [ -n "$APACHE_ADDITIONAL_NETWORK" ]; then
if ! echo "$APACHE_ADDITIONAL_NETWORK" | grep -q "^[a-zA-Z0-9_-]\+$"; then
print_red "You've set APACHE_ADDITIONAL_NETWORK but not to an allowed value.
It needs to be a string with letters, numbers, hyphens and underscores.
It is set to '$APACHE_ADDITIONAL_NETWORK'."
exit 1
fi
fi
if [ -n "$TALK_PORT" ]; then
if ! check_if_number "$TALK_PORT"; then
print_red "You provided an Talk port but did not only use numbers.

View File

@@ -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=29.0.8
ENV NEXTCLOUD_VERSION=29.0.9
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!
@@ -222,6 +222,7 @@ RUN set -ex; \
sudo \
grep \
nodejs \
libreoffice \
bind-tools \
imagemagick \
imagemagick-svg \
@@ -255,10 +256,7 @@ RUN set -ex; \
\
mkdir -p /nc-updater; \
chown -R www-data:www-data /nc-updater; \
chmod -R 770 /nc-updater; \
\
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd
chmod -R 770 /nc-updater
# hadolint ignore=DL3002
USER root

View File

@@ -39,7 +39,7 @@ RUN set -ex; \
VOLUME /mnt/data
USER postgres
USER 999
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD /healthcheck.sh

View File

@@ -14,7 +14,7 @@ RUN set -ex; \
# Get rid of unused binaries
rm -f /usr/local/bin/gosu;
USER redis
USER 999
ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD redis-cli -a $REDIS_HOST_PASSWORD PING || exit 1

View File

@@ -28,7 +28,7 @@ RUN set -ex; \
build-base \
linux-headers \
geckodriver; \
useradd -d /tmp --system recording; \
useradd -d /tmp --system recording -u 122; \
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd; \
git clone --recursive https://github.com/nextcloud/nextcloud-talk-recording --depth=1 --single-branch --branch "$RECORDING_VERSION" /src; \
@@ -48,8 +48,9 @@ RUN set -ex; \
build-base \
linux-headers;
VOLUME /tmp
WORKDIR /tmp
USER recording
USER 122
ENTRYPOINT ["/start.sh"]
CMD ["python", "-m", "nextcloud.talk.recording", "--config", "/conf/recording.conf"]

View File

@@ -16,6 +16,9 @@ if [ -z "$HPB_DOMAIN" ]; then
export HPB_DOMAIN="$NC_DOMAIN"
fi
# Delete all contents on startup to start fresh
rm -fr /tmp/{*,.*}
cat << RECORDING_CONF > "/conf/recording.conf"
[logs]
# 30 means Warning

View File

@@ -99,7 +99,7 @@ RUN set -ex; \
ln -s /opt/eturnal/bin/stun /usr/local/bin/stun; \
ln -s /opt/eturnal/bin/eturnalctl /usr/local/bin/eturnalctl
USER eturnal
USER 1000
ENTRYPOINT ["/start.sh"]
CMD ["supervisord", "-c", "/supervisord.conf"]

View File

@@ -5,7 +5,7 @@ USER root
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash
USER nobody
USER 65534
COPY --chmod=775 start.sh /start.sh

View File

@@ -7,7 +7,7 @@ This container contains a fork of the Nginx Proxy Manager, which is a WebUI for
- 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.
- The default password is `iArhP1j7p1P6TA92FA2FMbbUGYqwcYzxC4AVEe12Wbi94FY9gNN62aKyF1shrvG4NycjjX9KfmDQiwkLZH1ZDR9xMjiG2QmoHXi` and the default email is `admin@example.com`
- The default password is `iArhP1j7p1P6TA92FA2FMbbUGYqwcYzxC4AVEe12Wbi94FY9gNN62aKyF1shrvG4NycjjX9KfmDQiwkLZH1ZDR9xMjiG2QmoHXi` and the default email is `admin@example.org`
- 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!

View File

@@ -17,6 +17,7 @@ services:
# AIO_COMMUNITY_CONTAINERS: # With this variable, you can add community containers very easily. See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers
# APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# APACHE_IP_BINDING: 127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# 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
# 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

View File

@@ -18,7 +18,8 @@ You can run AIO with docker rootless by following the steps below.
Almost all commands in this project's documentation use `sudo docker ...`. Since `sudo` is not needed in case of docker rootless, you simply remove `sudo` from the commands and they should work.
### Note regarding permissions
All files outside the containers get created, written to and accessed as the user that is running the docker daemon or a subuid of it. So for the built-in backup to work you need to allow this user to write to the target directory. E.g. with `sudo chown -R USERNAME:GROUPNAME /mnt/backup`. The same applies when changing Nextcloud's datadir. E.g. `sudo chown -R USERNAME:GROUPNAME /mnt/ncdata`. When you want to use the NEXTCLOUD_MOUNT option for local external storage, you need to adjust the permissions of the chosen folders to be accessible/writeable by the userid `100032:100032` (if running `grep ^$(whoami): /etc/subuid` as the user that is running the docker daemon returns 100000 as first value).
All files outside the containers get created, written to and accessed as the user that is running the docker daemon or a subuid of it. So for the built-in backup to work you need to allow this user to write to the target directory. E.g. with `sudo chown -R USERNAME:GROUPNAME /mnt/backup`. The same applies when changing Nextcloud's datadir via NEXTCLOUD_DATADIR. E.g. `sudo chown -R USERNAME:GROUPNAME /mnt/ncdata`. When you want to use the NEXTCLOUD_MOUNT option for local external storage, you need to adjust the permissions of the chosen folders to be accessible/writeable by the userid `100032:100032` (if running `grep ^$(whoami): /etc/subuid` as the user that is running the docker daemon returns 100000 as first value).
### Note regarding docker network driver
By default rootless docker uses the `slirp4netns` IP driver and the `builtin` port driver. As mentioned in [the documentation](https://docs.docker.com/engine/security/rootless/#networking-errors), this combination doesn't provide "Source IP propagation". This means that Apache and Nextcloud will see all connections as coming from the docker gateway (e.g 172.19.0.1), which can lead to the Nextcloud brute force protection blocking all connection attempts. To expose the correct source IP, you will need to configure docker to also use `slirp4netns` as the port driver (see also [this guide](https://rootlesscontaine.rs/getting-started/docker/#changing-the-port-forwarder)).
@@ -29,9 +30,10 @@ As stated in the documentation, this change will likely lead to decreased networ
with the following content:
```
[Service]
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_NET=slirp4netns"
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns"
```
* Restart the docker daemon
```
systemctl --user restart docker
```
```

View File

@@ -20,6 +20,7 @@ services:
condition: service_started
required: false
image: nextcloud/aio-apache:latest
user: "33"
init: true
ports:
- ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/tcp
@@ -53,6 +54,7 @@ services:
nextcloud-aio-database:
image: nextcloud/aio-postgresql:latest
user: "999"
init: true
expose:
- "5432"
@@ -161,6 +163,7 @@ services:
nextcloud-aio-notify-push:
image: nextcloud/aio-notify-push:latest
user: "33"
init: true
expose:
- "7867"
@@ -183,6 +186,7 @@ services:
nextcloud-aio-redis:
image: nextcloud/aio-redis:latest
user: "999"
init: true
expose:
- "6379"
@@ -198,6 +202,7 @@ services:
nextcloud-aio-collabora:
image: nextcloud/aio-collabora:latest
user: "100"
init: true
expose:
- "9980"
@@ -219,6 +224,7 @@ services:
nextcloud-aio-talk:
image: nextcloud/aio-talk:latest
user: "1000"
init: true
ports:
- ${TALK_PORT}:${TALK_PORT}/tcp
@@ -249,6 +255,7 @@ services:
nextcloud-aio-talk-recording:
image: nextcloud/aio-talk-recording:latest
user: "122"
init: true
expose:
- "1234"
@@ -270,6 +277,7 @@ services:
nextcloud-aio-clamav:
image: nextcloud/aio-clamav:latest
user: "100"
init: false
expose:
- "3310"
@@ -310,6 +318,7 @@ services:
nextcloud-aio-imaginary:
image: nextcloud/aio-imaginary:latest
user: "65534"
init: true
expose:
- "9000"
@@ -353,6 +362,7 @@ services:
nextcloud-aio-whiteboard:
image: nextcloud/aio-whiteboard:latest
user: "65534"
init: true
expose:
- "3002"

View File

@@ -19,6 +19,7 @@ OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].backup_volumes)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].nextcloud_exec_commands)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].image_tag)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].networks)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].documentation)')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-watchtower"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-domaincheck"))')"
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-borgbackup"))')"

View File

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

View File

@@ -64,7 +64,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-apache:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-apache:20241106_101604"
name: nextcloud-aio-apache
ports:
- containerPort: {{ .Values.APACHE_PORT }}
@@ -72,9 +72,12 @@ spec:
- containerPort: {{ .Values.APACHE_PORT }}
protocol: UDP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 33
volumeMounts:
- mountPath: /var/www/html
name: nextcloud-aio-nextcloud

View File

@@ -53,15 +53,18 @@ spec:
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-clamav:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-clamav:20241106_101604"
name: nextcloud-aio-clamav
ports:
- containerPort: 3310
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 100
volumeMounts:
- mountPath: /var/lib/clamav
subPath: data

View File

@@ -36,16 +36,19 @@ spec:
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true {{ .Values.COLLABORA_SECCOMP_POLICY }} --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-collabora:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-collabora:20241106_101604"
name: nextcloud-aio-collabora
ports:
- containerPort: 9980
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
add:
- MKNOD
- SYS_ADMIN
drop:
- NET_RAW
runAsUser: 100
{{- end }}

View File

@@ -62,15 +62,18 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-postgresql:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-postgresql:20241106_101604"
name: nextcloud-aio-database
ports:
- containerPort: 5432
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 999
volumeMounts:
- mountPath: /var/lib/postgresql/data
subPath: data

View File

@@ -56,12 +56,14 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-fulltextsearch:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-fulltextsearch:20241106_101604"
name: nextcloud-aio-fulltextsearch
ports:
- containerPort: 9200
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW

View File

@@ -28,15 +28,18 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-imaginary:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-imaginary:20241106_101604"
name: nextcloud-aio-imaginary
ports:
- containerPort: 9000
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
add:
- SYS_NICE
drop:
- NET_RAW
runAsUser: 65534
{{- end }}

View File

@@ -15,6 +15,22 @@ spec:
- from:
- podSelector: {}
egress:
- to:
- podSelector: {}
- {} # Allows all egress traffic
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
namespace: "{{ .Values.NAMESPACE }}"
name: nextcloud-aio-webserver-allow
spec:
podSelector:
matchExpressions:
- key: io.kompose.service
operator: In
values:
- nextcloud-aio-apache
policyTypes:
- Ingress
ingress:
- {} # Allows all ingress traffic
{{- end }}

View File

@@ -173,7 +173,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-nextcloud:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-nextcloud:20241106_101604"
name: nextcloud-aio-nextcloud
ports:
- containerPort: 9000

View File

@@ -53,15 +53,18 @@ spec:
value: nextcloud-aio-redis
- name: REDIS_HOST_PASSWORD
value: "{{ .Values.REDIS_PASSWORD }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-notify-push:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-notify-push:20241106_101604"
name: nextcloud-aio-notify-push
ports:
- containerPort: 7867
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 33
volumeMounts:
- mountPath: /nextcloud
name: nextcloud-aio-nextcloud

View File

@@ -44,7 +44,7 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-onlyoffice:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-onlyoffice:20241106_101604"
name: nextcloud-aio-onlyoffice
ports:
- containerPort: 80

View File

@@ -39,15 +39,18 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-redis:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-redis:20241106_101604"
name: nextcloud-aio-redis
ports:
- containerPort: 6379
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 999
volumeMounts:
- mountPath: /data
name: nextcloud-aio-redis

View File

@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk:20241106_101604"
name: nextcloud-aio-talk
ports:
- containerPort: {{ .Values.TALK_PORT }}
@@ -52,7 +52,10 @@ spec:
- containerPort: 8081
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 1000
{{- end }}

View File

@@ -32,13 +32,16 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk-recording:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-talk-recording:20241106_101604"
name: nextcloud-aio-talk-recording
ports:
- containerPort: 1234
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 122
{{- end }}

View File

@@ -36,13 +36,16 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-whiteboard:20241017_085101"
image: "{{ .Values.IMAGE_MIRROR_PREFIX }}{{ .Values.NEXTCLOUD_IMAGE_ORG }}/aio-whiteboard:20241106_101604"
name: nextcloud-aio-whiteboard
ports:
- containerPort: 3002
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- NET_RAW
runAsUser: 65534
{{- end }}

View File

@@ -310,8 +310,24 @@ spec:
- from:
- podSelector: {}
egress:
- to:
- podSelector: {}
- {} # Allows all egress traffic
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
namespace: "{{ .Values.NAMESPACE }}"
name: nextcloud-aio-webserver-allow
spec:
podSelector:
matchExpressions:
- key: io.kompose.service
operator: In
values:
- nextcloud-aio-apache
policyTypes:
- Ingress
ingress:
- {} # Allows all ingress traffic
{{- end }}
EOL
@@ -355,7 +371,7 @@ cat << ADDITIONAL_CONFIG >> /tmp/sample.conf
NAMESPACE: default # By changing this, you can adjust the namespace of the installation which allows to install multiple instances on one kubernetes cluster
NAMESPACE_DISABLED: "no" # By setting this to "yes", you can disabled the creation of the namespace so that you can use a pre-created one
NETWORK_POLICY_ENABLED: "no" # By setting this to "yes", you can enable a network policy that limits network access to the same namespace. ⚠️ Attention: this breaks if you use an ingress!!! So it should be disabled if you do so!
NETWORK_POLICY_ENABLED: "no" # By setting this to "yes", you can enable a network policy that limits network access to the same namespace. Except the Web server service which is reachable from all endpoints.
SUBSCRIPTION_KEY: # This allows to set the Nextcloud Enterprise key via ENV
SERVERINFO_TOKEN: # This allows to set the serverinfo app token for monitoring your Nextcloud via the serverinfo app
APPS_ALLOWLIST: # This allows to configure allowed apps that will be shown in Nextcloud's Appstore. You need to enter the app-IDs of the apps here and separate them with spaces. E.g. 'files richdocuments'
@@ -407,6 +423,13 @@ find ./ -name "*nextcloud-aio-elasticsearch-persistentvolumeclaim.yaml" -exec se
# shellcheck disable=SC1083
find ./ -name "*nextcloud-aio-elasticsearch-persistentvolumeclaim.yaml" -exec sed -i "$ a {{- end }}" \{} \;
cat << EOL >> /tmp/security.conf
allowPrivilegeEscalation: false
runAsNonRoot: true
EOL
# shellcheck disable=SC1083
find ./ \( -not -name '*nextcloud-deployment.yaml*' -not -name '*onlyoffice-deployment.yaml*' -name "*deployment.yaml" \) -exec sed -i "/^.*securityContext:$/r /tmp/security.conf" \{} \;
chmod 777 -R ./
# Seems like the dir needs to match the name of the chart

View File

@@ -51,7 +51,7 @@ REDIS_STORAGE_SIZE: 1Gi # You can change the size of the redis volume that
NAMESPACE: default # By changing this, you can adjust the namespace of the installation which allows to install multiple instances on one kubernetes cluster
NAMESPACE_DISABLED: "no" # By setting this to "yes", you can disabled the creation of the namespace so that you can use a pre-created one
NETWORK_POLICY_ENABLED: "no" # By setting this to "yes", you can enable a network policy that limits network access to the same namespace. ⚠️ Attention: this breaks if you use an ingress!!! So it should be disabled if you do so!
NETWORK_POLICY_ENABLED: "no" # By setting this to "yes", you can enable a network policy that limits network access to the same namespace. Except the Web server service which is reachable from all endpoints.
SUBSCRIPTION_KEY: # This allows to set the Nextcloud Enterprise key via ENV
SERVERINFO_TOKEN: # This allows to set the serverinfo app token for monitoring your Nextcloud via the serverinfo app
APPS_ALLOWLIST: # This allows to configure allowed apps that will be shown in Nextcloud's Appstore. You need to enter the app-IDs of the apps here and separate them with spaces. E.g. 'files richdocuments'

54
php/composer.lock generated
View File

@@ -1632,16 +1632,16 @@
},
{
"name": "twig/twig",
"version": "v3.14.0",
"version": "v3.14.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72"
"reference": "f405356d20fb43603bcadc8b09bfb676cb04a379"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72",
"reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/f405356d20fb43603bcadc8b09bfb676cb04a379",
"reference": "f405356d20fb43603bcadc8b09bfb676cb04a379",
"shasum": ""
},
"require": {
@@ -1695,7 +1695,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.14.0"
"source": "https://github.com/twigphp/Twig/tree/v3.14.1"
},
"funding": [
{
@@ -1707,7 +1707,7 @@
"type": "tidelift"
}
],
"time": "2024-09-09T17:55:12+00:00"
"time": "2024-11-06T18:17:38+00:00"
}
],
"packages-dev": [
@@ -2578,16 +2578,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "5.4.1",
"version": "5.5.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c"
"reference": "0c70d2c566e899666f367ab7b80986beb3581e6f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
"reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/0c70d2c566e899666f367ab7b80986beb3581e6f",
"reference": "0c70d2c566e899666f367ab7b80986beb3581e6f",
"shasum": ""
},
"require": {
@@ -2600,13 +2600,13 @@
"webmozart/assert": "^1.9.1"
},
"require-dev": {
"mockery/mockery": "~1.3.5",
"mockery/mockery": "~1.3.5 || ~1.6.0",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-mockery": "^1.1",
"phpstan/phpstan-webmozart-assert": "^1.2",
"phpunit/phpunit": "^9.5",
"vimeo/psalm": "^5.13"
"psalm/phar": "^5.26"
},
"type": "library",
"extra": {
@@ -2636,29 +2636,29 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1"
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.5.1"
},
"time": "2024-05-21T05:55:05+00:00"
"time": "2024-11-06T11:58:54+00:00"
},
{
"name": "phpdocumentor/type-resolver",
"version": "1.8.2",
"version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "153ae662783729388a584b4361f2545e4d841e3c"
"reference": "1fb5ba8d045f5dd984ebded5b1cc66f29459422d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
"reference": "153ae662783729388a584b4361f2545e4d841e3c",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/1fb5ba8d045f5dd984ebded5b1cc66f29459422d",
"reference": "1fb5ba8d045f5dd984ebded5b1cc66f29459422d",
"shasum": ""
},
"require": {
"doctrine/deprecations": "^1.0",
"php": "^7.3 || ^8.0",
"phpdocumentor/reflection-common": "^2.0",
"phpstan/phpdoc-parser": "^1.13"
"phpstan/phpdoc-parser": "^1.18"
},
"require-dev": {
"ext-tokenizer": "*",
@@ -2694,9 +2694,9 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.9.0"
},
"time": "2024-02-23T11:10:43+00:00"
"time": "2024-11-03T20:11:34+00:00"
},
{
"name": "phpstan/phpdoc-parser",
@@ -2940,16 +2940,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.13",
"version": "v6.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "f793dd5a7d9ae9923e35d0503d08ba734cec1d79"
"reference": "897c2441ed4eec8a8a2c37b943427d24dba3f26b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/f793dd5a7d9ae9923e35d0503d08ba734cec1d79",
"reference": "f793dd5a7d9ae9923e35d0503d08ba734cec1d79",
"url": "https://api.github.com/repos/symfony/console/zipball/897c2441ed4eec8a8a2c37b943427d24dba3f26b",
"reference": "897c2441ed4eec8a8a2c37b943427d24dba3f26b",
"shasum": ""
},
"require": {
@@ -3014,7 +3014,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.13"
"source": "https://github.com/symfony/console/tree/v6.4.14"
},
"funding": [
{
@@ -3030,7 +3030,7 @@
"type": "tidelift"
}
],
"time": "2024-10-09T08:40:40+00:00"
"time": "2024-11-05T15:34:40+00:00"
},
{
"name": "symfony/filesystem",

View File

@@ -68,6 +68,10 @@
"stop_grace_period": {
"type": "integer"
},
"user": {
"type": "string",
"pattern": "^[0-9]{1,6}$"
},
"ports": {
"type": "array",
"items": {

View File

@@ -13,6 +13,7 @@
],
"display_name": "Apache",
"image": "nextcloud/aio-apache",
"user": "33",
"init": true,
"ports": [
{
@@ -78,6 +79,7 @@
"image_tag": "%AIO_CHANNEL%",
"display_name": "Database",
"image": "nextcloud/aio-postgresql",
"user": "999",
"init": true,
"expose": [
"5432"
@@ -251,6 +253,7 @@
"image_tag": "%AIO_CHANNEL%",
"display_name": "Notify Push",
"image": "nextcloud/aio-notify-push",
"user": "33",
"init": true,
"expose": [
"7867"
@@ -292,6 +295,7 @@
"image_tag": "%AIO_CHANNEL%",
"display_name": "Redis",
"image": "nextcloud/aio-redis",
"user": "999",
"init": true,
"expose": [
"6379"
@@ -325,8 +329,10 @@
{
"container_name": "nextcloud-aio-collabora",
"image_tag": "%AIO_CHANNEL%",
"documentation": "https://github.com/nextcloud/all-in-one/discussions/1358",
"display_name": "Collabora",
"image": "nextcloud/aio-collabora",
"user": "100",
"init": true,
"expose": [
"9980"
@@ -362,8 +368,10 @@
{
"container_name": "nextcloud-aio-talk",
"image_tag": "%AIO_CHANNEL%",
"documentation": "https://github.com/nextcloud/all-in-one/discussions/1358",
"display_name": "Talk",
"image": "nextcloud/aio-talk",
"user": "1000",
"init": true,
"ports": [
{
@@ -420,6 +428,7 @@
"image_tag": "%AIO_CHANNEL%",
"display_name": "Talk Recording",
"image": "nextcloud/aio-talk-recording",
"user": "122",
"init": true,
"expose": [
"1234"
@@ -431,6 +440,13 @@
"RECORDING_SECRET=%RECORDING_SECRET%",
"INTERNAL_SECRET=%TALK_INTERNAL_SECRET%"
],
"volumes": [
{
"source": "nextcloud_aio_talk_recording",
"destination": "/tmp",
"writeable": true
}
],
"shm_size": 2147483648,
"secrets": [
"RECORDING_SECRET",
@@ -445,7 +461,6 @@
],
"read_only": true,
"tmpfs": [
"/tmp",
"/conf"
],
"cap_drop": [
@@ -573,6 +588,7 @@
"image_tag": "%AIO_CHANNEL%",
"display_name": "ClamAV",
"image": "nextcloud/aio-clamav",
"user": "100",
"init": false,
"expose": [
"3310"
@@ -653,6 +669,7 @@
"image_tag": "%AIO_CHANNEL%",
"display_name": "Imaginary",
"image": "nextcloud/aio-imaginary",
"user": "65534",
"init": true,
"expose": [
"9000"
@@ -686,6 +703,7 @@
{
"container_name": "nextcloud-aio-fulltextsearch",
"image_tag": "%AIO_CHANNEL%",
"documentation": "https://github.com/nextcloud/all-in-one/discussions/1709",
"display_name": "Fulltextsearch",
"image": "nextcloud/aio-fulltextsearch",
"init": false,
@@ -757,6 +775,7 @@
"image_tag": "%AIO_CHANNEL%",
"display_name": "Whiteboard",
"image": "nextcloud/aio-whiteboard",
"user": "65534",
"init": true,
"expose": [
"3002"

View File

@@ -888,6 +888,13 @@ class ConfigurationManager
$this->WriteConfig($config);
}
public function GetApacheAdditionalNetwork() : string {
$envVariableName = 'APACHE_ADDITIONAL_NETWORK';
$configName = 'apache_additional_network';
$defaultValue = '';
return $this->GetEnvironmentalVariableOrConfig($envVariableName, $configName, $defaultValue);
}
public function GetApacheIPBinding() : string {
$envVariableName = 'APACHE_IP_BINDING';
$configName = 'apache_ip_binding';

View File

@@ -736,16 +736,13 @@ readonly class DockerActionManager {
$output = json_decode($this->guzzleClient->get($url)->getBody()->getContents(), true);
$containerChecksum = $output['Image'];
$tagArray = explode(':', $output['Config']['Image']);
$tag = $tagArray[1];
apcu_add($cacheKey, $tag);
/**
* @psalm-suppress TypeDoesNotContainNull
* @psalm-suppress DocblockTypeContradiction
*/
if ($tag === null) {
if (count($tagArray) === 2) {
$tag = $tagArray[1];
} else {
error_log("No tag was found when getting the current channel. You probably did not follow the documentation correctly. Changing the channel to the default 'latest'.");
$tag = 'latest';
}
apcu_add($cacheKey, $tag);
return $tag;
} catch (\Exception $e) {
error_log('Could not get current channel ' . $e->getMessage());
@@ -844,44 +841,49 @@ readonly class DockerActionManager {
}
}
private function ConnectContainerIdToNetwork(string $id, string $internalPort, string $network = 'nextcloud-aio') : void
private function ConnectContainerIdToNetwork(string $id, string $internalPort, string $network = 'nextcloud-aio', bool $createNetwork = true, string $alias = '') : void
{
if ($internalPort === 'host') {
return;
}
$url = $this->BuildApiUrl('networks/create');
try {
$this->guzzleClient->request(
'POST',
$url,
[
'json' => [
'Name' => $network,
'CheckDuplicate' => true,
'Driver' => 'bridge',
'Internal' => false,
if ($createNetwork) {
$url = $this->BuildApiUrl('networks/create');
try {
$this->guzzleClient->request(
'POST',
$url,
[
'json' => [
'Name' => $network,
'CheckDuplicate' => true,
'Driver' => 'bridge',
'Internal' => false,
]
]
]
);
} 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());
);
} 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());
}
}
}
$url = $this->BuildApiUrl(
sprintf('networks/%s/connect', $network)
);
$jsonPayload = [ 'Container' => $id ];
if ($alias !== '' ) {
$jsonPayload['EndpointConfig'] = ['Aliases' => [ $alias ]];
}
try {
$this->guzzleClient->request(
'POST',
$url,
[
'json' => [
'container' => $id,
]
'json' => $jsonPayload
]
);
} catch (RequestException $e) {
@@ -901,7 +903,19 @@ readonly class DockerActionManager {
public function ConnectContainerToNetwork(Container $container) : void
{
$this->ConnectContainerIdToNetwork($container->GetIdentifier(), $container->GetInternalPort());
// Add a secondary alias for domaincheck container, to keep it as similar to actual apache controller as possible.
// If a reverse-proxy is relying on container name as hostname this allows it to operate as usual and still validate the domain
// The domaincheck container and apache container are never supposed to be active at the same time because they use the same APACHE_PORT anyway, so this doesn't add any new constraints.
$alias = ($container->GetIdentifier() === 'nextcloud-aio-domaincheck') ? 'nextcloud-aio-apache' : '';
$this->ConnectContainerIdToNetwork($container->GetIdentifier(), $container->GetInternalPort(), alias: $alias);
if ($container->GetIdentifier() === 'nextcloud-aio-apache' || $container->GetIdentifier() === 'nextcloud-aio-domaincheck') {
$apacheAdditionalNetwork = $this->configurationManager->GetApacheAdditionalNetwork();
if ($apacheAdditionalNetwork !== '') {
$this->ConnectContainerIdToNetwork($container->GetIdentifier(), $container->GetInternalPort(), $apacheAdditionalNetwork, false, $alias);
}
}
}
public function StopContainer(Container $container) : void {

View File

@@ -2,7 +2,7 @@
{% block body %}
<div class="login">
<svg class="nextcloud-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 100" width="142" height="100"">
<svg class="nextcloud-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 100" width="142" height="100">
<use href="/img/nextcloud-logo.svg#logo"></use>
<use href="/img/nextcloud-logo.svg#Nextcloud"></use>
<text x="10" y="50" fill="var(--color-nextcloud-logo)" class="fallback-text">Nextcloud Logo</text>
@@ -10,4 +10,4 @@
<h2>Nextcloud All-In-One is already installed</h2>
<a href="/" class="button">Open Nextcloud AIO</a>
</div>
{% endblock %}
{% endblock %}

View File

@@ -17,7 +17,7 @@
<div class="container">
<main>
<h1>Nextcloud AIO v9.8.0</h1>
<h1>Nextcloud AIO v9.9.0</h1>
{# Add 2nd tab warning #}
<script type="text/javascript" src="second-tab-warning.js"></script>

View File

@@ -2,7 +2,7 @@
{% block body %}
<div class="login">
<svg class="nextcloud-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 100" width="142" height="100"">
<svg class="nextcloud-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 100" width="142" height="100">
<use href="/img/nextcloud-logo.svg#logo"></use>
<use href="/img/nextcloud-logo.svg#Nextcloud"></use>
<text x="10" y="50" fill="var(--color-nextcloud-logo)" class="fallback-text">Nextcloud Logo</text>

View File

@@ -2,7 +2,7 @@
{% block body %}
<div class="login">
<svg class="nextcloud-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 100" width="142" height="100"">
<svg class="nextcloud-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 142 100" width="142" height="100">
<use href="/img/nextcloud-logo.svg#logo"></use>
<use href="/img/nextcloud-logo.svg#Nextcloud"></use>
<text x="10" y="50" fill="var(--color-nextcloud-logo)" class="fallback-text">Nextcloud Logo</text>
@@ -13,4 +13,4 @@
<strong>Passphrase</strong><br/><span class="monospace">{{ password }}</span><br>
<a href="/" class="button" target="_blank" rel="noopener">Open Nextcloud AIO login ↗</a>
</div>
{% endblock %}
{% endblock %}

View File

@@ -41,7 +41,7 @@ Included are:
- By default confined (good for security) but can [allow access to additional storages](https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host) in order to enable the usage of the local external storage feature
- Possibility included to [adjust default installed Nextcloud apps](https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup)
- Nextcloud installation is not read only - that means you can apply patches if you should need them (instead of having to wait for the next release for them getting applied)
- `ffmpeg`, `smbclient` and `nodejs` are included by default
- `ffmpeg`, `smbclient`, `libreoffice` and `nodejs` are included by default
- Possibility included to [permanently add additional OS packages into the Nextcloud container](https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup) without having to build your own Docker image
- Possibility included to [permanently add additional PHP extensions into the Nextcloud container](https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container) without having to build your own Docker image
- Possibility included to [pass the needed device for hardware transcoding](https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud) to the Nextcloud container
@@ -78,7 +78,7 @@ Included are:
## Screenshots
| First setup | After installation |
|---|---|
| ![image](https://github.com/user-attachments/assets/6ef5d7b5-86f2-402c-bc6c-b633af2ca7dd) | ![image](https://github.com/user-attachments/assets/5f510667-a172-4841-b916-89025debef3a) |
| ![image](https://github.com/user-attachments/assets/6ef5d7b5-86f2-402c-bc6c-b633af2ca7dd) | ![image](https://github.com/user-attachments/assets/939d0fdf-436f-433d-82d3-27548263a040) |
## How to use this?
The following instructions are meant for installations without a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) already being in place. If you want to run AIO behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else), see the [reverse proxy documentation](https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md). Also, the instructions below are especially meant for Linux. For macOS see [this](#how-to-run-aio-on-macos), for Windows see [this](#how-to-run-aio-on-windows) and for Synology see [this](#how-to-run-aio-on-synology-dsm).
@@ -219,7 +219,12 @@ If you have the NAS setup on your local network (which is most often the case) y
The easiest way to run it with Portainer on Linux is to use Portainer's stacks feature and use [this docker-compose file](./compose.yaml) in order to start AIO correctly.
### Can I run AIO on TrueNAS SCALE?
On TrueNAS SCALE, there are two ways to run AIO. The preferred one is to run AIO inside a VM. This is necessary since they do not expose the docker socket for containers on the host, you also cannot use docker-compose on it thus and it is also not possible to run custom helm-charts that are not explicitly written for TrueNAS SCALE.
With the Truenas Scale Release 24.10.0 (which was officially released on October 29th 2024 as a stable release) IX Systems ditched the Kubernetes integration and implemented a fully working docker environment.
For a more complete guide, see this guide by @zybster: https://github.com/nextcloud/all-in-one/discussions/5506
On older TrueNAS SCALE releases with Kubernetes environment, there are two ways to run AIO. The preferred one is to run AIO inside a VM. This is necessary since they do not expose the docker socket for containers on the host, you also cannot use docker-compose on it thus and it is also not possible to run custom helm-charts that are not explicitly written for TrueNAS SCALE.
Another but untested way is to install Portainer on your TrueNAS SCALE from here https://truecharts.org/charts/stable/portainer/installation-notes and add the Helm-chart repository https://nextcloud.github.io/all-in-one/ into Portainer by following https://docs.portainer.io/user/kubernetes/helm. More docs on AIOs Helm Chart are available here: https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart#nextcloud-aio-helm-chart.
@@ -339,7 +344,10 @@ Additionally, there is a cronjob that runs once a day that checks for container
AIO ships its own update notifications implementation. It checks if container updates are available. If so, it sends a notification with the title `Container updates available!` on saturdays to Nextcloud users that are part of the `admin` group. If the Nextcloud container image should be older than 90 days (~3 months) and thus badly outdated, AIO sends a notification to all Nextcloud users with the title `AIO is outdated!`. Thus admins should make sure to update the container images at least once every 3 months in order to make sure that the instance gets all security bugfixes as soon as possible.
### How to easily log in to the AIO interface?
If your Nextcloud is running and you are logged in as admin in your Nextcloud, you can easily log in to the AIO interface by opening `https://yourdomain.tld/settings/admin/overview` which will show a button on top that enables you to log in to the AIO interface by just clicking on this button. **Note:** You can change the domain/ip-address/port of the button by simply stopping the containers, visiting the AIO interface from the correct and desired domain/ip-address/port and clicking once on `Start containers`.
If your Nextcloud is running and you are logged in as admin in your Nextcloud, you can easily log in to the AIO interface by opening `https://yourdomain.tld/settings/admin/overview` which will show a button on top that enables you to log in to the AIO interface by just clicking on this button.
> [!Note]
> You can change the domain/ip-address/port of the button by simply stopping the containers, visiting the AIO interface from the correct and desired domain/ip-address/port and clicking once on `Start containers`.
### How to change the domain?
> [!NOTE]
@@ -370,7 +378,7 @@ Here is how to reset the AIO instance properly:
1. Check which volumes are dangling with `sudo docker volume ls --filter "dangling=true"`
1. Now remove all these dangling volumes: `sudo docker volume prune --filter all=1` (on Windows you might need to remove some volumes afterwards manually with `docker volume rm nextcloud_aio_backupdir`, `docker volume rm nextcloud_aio_nextcloud_datadir`).
1. If you've configured `NEXTCLOUD_DATADIR` to a path on your host instead of the default volume, you need to clean that up as well. (E.g. by simply deleting the directory).
1. Make sure that no volumes are remaining with `sudo docker volume ls --format {{.Name}}`. If no `nextcloud-aio` volumes are listed, you can proceed with the steps below. If there should be some, you will need to stop them with `sudo docker volume rm <volume_name>` until no one is listed anymore.
1. Make sure that no volumes are remaining with `sudo docker volume ls --format {{.Name}}`. If no `nextcloud-aio` volumes are listed, you can proceed with the steps below. If there should be some, you will need to remove them with `sudo docker volume rm <volume_name>` until no one is listed anymore.
1. Optional: You can remove all docker images with `sudo docker image prune -a`.
1. And you are done! Now feel free to start over with the recommended docker run command!

View File

@@ -44,9 +44,10 @@ All examples below will use port `11000` as `APACHE_PORT`. This port will be exp
<summary>On the same server in a Docker container</summary>
For this setup, you can use as target `host.docker.internal:$APACHE_PORT` instead of `localhost:$APACHE_PORT`. **⚠️ Important:** In order to make this work on Docker for Linux, you need to add `--add-host=host.docker.internal:host-gateway` to the docker run command of your reverse proxy container or `extra_hosts: ["host.docker.internal:host-gateway"]` in docker compose (it works on Docker Desktop by default).
Another option (actually the recommended way) in this case is to use `--network host` option (or `network_mode: host` for docker-compose) as setting for the reverse proxy container to connect it to the host network. If you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy manually. By doing so, the default sample configurations that point at `localhost:$APACHE_PORT` should work without having to modify them.
The reverse-proxy container needs to be connected to the nextcloud containers. This can be achieved one of these 3 ways:
1. Utilize host networking instead of docker bridge networking: Specify `--network host` option (or `network_mode: host` for docker-compose) as setting for the reverse proxy container to connect it to the host network. If you are using a firewall on the server, you need to open ports 80 and 443 for the reverse proxy manually. With this setup, the default sample configurations with reverse-proxy pointing to `localhost:$APACHE_PORT` should work directly.
1. Connect nextcloud's external-facing containers to the reverse-proxy's docker network by specifying env variable APACHE_ADDITIONAL_NETWORK. With this setup, the reverse proxy can utilize Docker bridge network's DNS name resolution to access nextcloud at `http://nextcloud-aio-apache:$APACHE_PORT`. ⚠️⚠️⚠️ Note, the specified network must already exist before Nextcloud AIO is started. Otherwise it will fail to start the container because the network is not existing.
1. Connect the reverse-proxy container to the `nextcloud-aio` network by specifying it as a secondary (external) network for the reverse proxy container. With this setup also, the reverse proxy can utilize Docker bridge network's DNS name resolution to access nextcloud at `http://nextcloud-aio-apache:$APACHE_PORT` .
</details>

View File

@@ -1,7 +1,8 @@
# Environmental variables
- [ ] When starting the mastercontainer with `--env APACHE_PORT=11000` on a clean instance, the domaincheck container should be started with that same port published. That makes sure that also the Apache container will use that port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `--env APACHE_PORT=11000` on a clean instance, the domaincheck container should be started with that same port published. That makes sure that also the Apache container will use that port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly. However `@INTERNAL` is also an allowed value which skips publishing the port on the host for internal usage inside a bridged network for example.
- [ ] When starting the mastercontainer with `--env APACHE_IP_BINDING=127.0.0.1` on a clean instance, the domaincheck container's apache port should only listen on localhost on the host. Using a value here that is not a number or dot will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `--env APACHE_ADDITIONAL_NETWORK=frontend_net` on a clean instance, the domaincheck and subsequently the apache containers should be connected to the specified `frontend_net` docker network, in addition to the default `nextcloud-aio` network. Specifying the network that doesn't already exist will not allow the mastercontainer to start correctly.
- [ ] When starting the mastercontainer with `--env TALK_PORT=3479` on a clean instance, the talk container should use this port later on. Using a value here that is not a port will not allow the mastercontainer to start correctly. Also it should stop if apache_port and talk_port are set to the same value.
- [ ] Make also sure that reverse proxies work by following https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#reverse-proxy-documentation and following [001-initial-setup.md](./001-initial-setup.md) and [002-new-instance.md](./002-new-instance.md)
- [ ] When starting the mastercontainer with `--env SKIP_DOMAIN_VALIDATION=true` on a clean instance, it should skip the domain verification. So it should accept any domain that you type in then.