Compare commits

..

59 Commits

Author SHA1 Message Date
Simon L.
5a474d92d9 notify-push: fix startup on ipv6 disabled servers (#8188) 2026-05-21 12:06:28 +02:00
Simon L.
795baf903b server.config.php: downstream sync serverid upstream change (#8187) 2026-05-21 12:01:49 +02:00
Simon L.
b4c0266461 notify-push: fix startup on ipv6 disabled servers
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-21 10:53:49 +02:00
Simon L.
3a988938b2 server.config.php: downstream sync serverid upstream change
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-21 10:48:37 +02:00
Simon L.
7c0df4f701 build(deps): bump nats from 2.14.0-scratch to 2.14.1-scratch in /Containers/talk (#8185) 2026-05-21 10:40:41 +02:00
dependabot[bot]
1d27e165e6 build(deps): bump nats in /Containers/talk
Bumps nats from 2.14.0-scratch to 2.14.1-scratch.

---
updated-dependencies:
- dependency-name: nats
  dependency-version: 2.14.1-scratch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-21 04:23:15 +00:00
Simon L.
a75d1c48bf Small improvements to /app/readme (#8179) 2026-05-20 17:15:51 +02:00
Simon L.
74b98b369e PHP dependency updates (#8180) 2026-05-20 16:36:42 +02:00
Simon L.
74dee77fac Add top-level .editorconfig; improve app/.editorconfig (#8178) 2026-05-20 15:54:33 +02:00
szaimen
70100ba5ef php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-20 13:42:43 +00:00
Gaetano Giunta
de72608519 Use proper name for AIP and Nextcloud in readme file
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 11:12:51 +00:00
Gaetano Giunta
02c9a7475b Small improvements to /app/readme
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 11:02:14 +00:00
Gaetano Giunta
c2e48d3524 add a comment to .editorconfig
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 10:56:10 +00:00
Gaetano Giunta
b615acf413 tabs to spaces for php/psalm.xml
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 10:55:39 +00:00
Gaetano Giunta
379b3d9e5a add top-level .editorconfig; improve app/.editorconfig
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-20 10:46:15 +00:00
Simon L.
abbe6a85cf build(deps): bump docker from 29.5.0-cli to 29.5.1-cli in /Containers/mastercontainer (#8177) 2026-05-20 10:50:58 +02:00
dependabot[bot]
20835baa0c build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.5.0-cli to 29.5.1-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-version: 29.5.1-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-20 08:36:32 +00:00
Simon L.
a32568cc9c mastercontainer: run session-deduplicator as www-data (#8175) 2026-05-20 10:20:56 +02:00
Dimas D. Angga
c6748dc450 fix(mastercontainer): run session-deduplicator as www-data
The session-deduplicator only touches files under /mnt/docker-aio-config/session/, which is already owned by www-data, so running it as root grants more privilege than it needs. Dropping to www-data reduces the number of root-owned processes in the mastercontainer and follows least-privilege for the supervisord program set.
2026-05-20 09:32:49 +07:00
Tim Alexander Neuenbauer
6288665170 home-assistant: Update readme.md (#8055) 2026-05-19 16:25:28 +02:00
Simon L.
a3d84cce7b add warning notice to minio container that minio is not maintained any more (#8131) 2026-05-18 19:18:01 +02:00
Simon L.
535a0ffbd2 add a comment to clarify the reason for the condition added in PR 8145 (#8147) 2026-05-18 19:16:13 +02:00
Simon L.
1d947355ab Yaml updates (#8152) 2026-05-18 19:15:33 +02:00
Gaetano Giunta
fdfd479db7 aio-interface: make sure ublock does not break the log viewer (#8148) 2026-05-18 18:55:18 +02:00
gggeek
d4da301c9a improve the notice about minio deprecation in the readme of the community container
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-18 15:57:15 +00:00
gggeek
4c0b28f70d add warning notice to minio container that minio is not maintained any more
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-18 15:57:15 +00:00
gggeek
34429865fe add a comment to clarify the reason for the condition added in PR 8145
Signed-off-by: Gaetano Giunta <giunta.gaetano@gmail.com>
2026-05-18 15:56:22 +00:00
szaimen
aa115110d5 Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-18 13:28:25 +00:00
Simon L.
01365c817f fix: apache container not stopping on SIGTERM (#8051) 2026-05-18 12:48:54 +02:00
Simon L.
774bd38f79 notify-push: allow to put the binary into the nextcloud apps dir directly (#8050) 2026-05-18 12:48:09 +02:00
Simon L.
82fc4635a2 aio-interface: add custom error handler for 405 errors (#8058) 2026-05-18 12:40:02 +02:00
Simon L.
e8b9e25cf8 small style improvements to compose.yaml comments (#8132) 2026-05-18 12:31:31 +02:00
Simon L.
d6a06f9e79 talk-recording: add Intel VAAPI driver to talk-recording container (#8143) 2026-05-18 12:31:08 +02:00
Simon L.
8e19b7165d apache: revert some changes to nextcloud.conf (#8146) 2026-05-18 12:31:00 +02:00
Simon L.
7ae8f729fb PHP dependency updates (#8115) 2026-05-18 12:01:47 +02:00
Simon L.
e6c340779f Remove HARP_HOST environment variable from manual-install YAML file (#8121) 2026-05-18 12:01:21 +02:00
Simon L.
e9a2076a9c apache: revert some changes to nextcloud.conf
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-18 11:56:14 +02:00
Simon L.
a571faa4a5 build(deps): bump nextcloud-releases/whiteboard from v1.5.7 to v1.5.8 in /Containers/whiteboard (#8142) 2026-05-18 11:52:50 +02:00
Simon L.
cdda9ea637 build(deps): bump docker from 29.4.3-cli to 29.5.0-cli in /Containers/mastercontainer (#8141) 2026-05-18 11:52:36 +02:00
Simon L.
dca9c6b2e2 fix(ci): skip helm-release workflow on forks (#8145) 2026-05-18 11:52:07 +02:00
Arya Rizky
af7c1d02fd fix(ci): skip helm-release workflow on forks
The helm-release workflow fails on forks because they don't have
a gh-pages branch set up for Helm chart publication. Add a
conditional check to only run this workflow on the upstream
nextcloud/all-in-one repository.

Fixes #8128
2026-05-18 16:10:57 +07:00
copilot-swe-agent[bot]
1a70a9e9fd fix: add Intel VAAPI driver (intel-media-driver) to talk-recording container
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/797873dc-7a28-424f-92d0-8e91bb47f6a0

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-05-18 07:34:40 +00:00
dependabot[bot]
0837266f86 build(deps): bump nextcloud-releases/whiteboard
Bumps nextcloud-releases/whiteboard from v1.5.7 to v1.5.8.

---
updated-dependencies:
- dependency-name: nextcloud-releases/whiteboard
  dependency-version: v1.5.8
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 04:57:41 +00:00
dependabot[bot]
ea9eca44c2 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.4.3-cli to 29.5.0-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-version: 29.5.0-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 04:56:43 +00:00
gggeek
3fc84ee784 small style improvements to compose.yaml comments 2026-05-17 13:44:00 +00:00
szaimen
bf445e699f php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-17 12:16:34 +00:00
Francesco Saltori
a03df48865 Remove HARP_HOST from manual-install YAML file
Signed-off-by: Francesco Saltori <francescosaltori@gmail.com>
2026-05-16 20:09:34 +02:00
Simon L.
cbea0730d3 LLDAP: update image and tag and change it to ghcr.io (#8020) 2026-05-16 13:03:58 +02:00
Simon L.
6c33a96980 Helm Chart updates (#8116) 2026-05-16 09:26:26 +02:00
szaimen
6a07493f4d Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-15 16:24:41 +00:00
Simon L.
e510e14550 fix watchtower
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-15 15:58:07 +02:00
Simon L.
1c5169c9e4 increase to 13.0.4
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-15 15:38:22 +02:00
Simon L.
b0c00866d4 Add default AIO_LOG_LEVEL=warn for watchtower and borgbackup containers (#8111) 2026-05-15 15:36:03 +02:00
copilot-swe-agent[bot]
ba48b8134f Add default AIO_LOG_LEVEL=warn for watchtower and borgbackup containers
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/8383605e-b72f-4f47-a4a8-a930d2f8a25c
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
2026-05-15 15:35:20 +02:00
Simon L.
5bb2778fb7 aio-interface: add custom error handler for 405 errors
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-05 17:30:07 +02:00
Simon L.
3b3c8ba25c Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-04 15:10:51 +02:00
copilot-swe-agent[bot]
0be797a531 fix: use httpd directly instead of apachectl to fix SIGTERM handling
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/6e288352-eba8-4697-978e-d0b11349fe3f

Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com>
2026-05-04 11:11:45 +00:00
Simon L.
490a1811c8 notify-push: allow to put the binary into the nextcloud apps dir directly
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-05-04 13:02:09 +02:00
Simon L.
035e270245 LLDAP: update image and tag and change it to ghcr.io
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-29 09:24:18 +02:00
53 changed files with 192 additions and 211 deletions

20
.editorconfig Normal file
View File

@@ -0,0 +1,20 @@
# https://editorconfig.org
# Tip: to find files violating the rules set out here, run `docker run --rm --volume=$PWD:/check mstruebing/editorconfig-checker`
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.yaml]
indent_size = 2
[*.yml]
indent_size = 2

View File

@@ -10,6 +10,9 @@ on:
jobs:
release:
# Do not run this workflow on forked repositories, as they might not have the `gh-pages` branch created, or might
# want to use it for other purposes than publishing helm charts
if: github.repository == 'nextcloud/all-in-one'
runs-on: ubuntu-latest
steps:
- name: Checkout

View File

@@ -9,34 +9,6 @@ Listen 8000
ErrorLogFormat "[%t] [%l] [%E] [client: %{X-Forwarded-For}i] [%M] [%{User-Agent}i]"
LogLevel ${AIO_LOG_LEVEL}
# KeepAlive On: allow the same TCP connection to carry multiple HTTP requests.
# Without this each asset (JS, CSS, image) would require a full TCP handshake,
# which is especially expensive on TLS connections and noticeably slows down
# Nextcloud's login page and file manager that load dozens of resources at once.
KeepAlive On
# KeepAliveTimeout: close an idle keep-alive connection after 5 seconds.
# A short timeout frees Apache worker threads quickly so they are available
# for new requests; 5 s is long enough to cover the gap between requests
# that a browser issues while rendering a page (typically < 1 s), yet short
# enough to avoid holding threads open for idle or slow clients.
KeepAliveTimeout 5
# MaxKeepAliveRequests: allow at most 500 requests per persistent connection.
# 100 (the Apache default) is too low for Nextcloud: the desktop and mobile
# sync clients issue many small API calls (PROPFIND, GET, PUT, checksums …)
# per sync cycle and routinely exceed 100 requests on a single connection.
# Hitting the limit forces a new TCP/TLS handshake, adding latency and CPU
# overhead. 500 gives sync clients enough headroom while still periodically
# recycling threads to contain per-process memory growth.
MaxKeepAliveRequests 500
# sendfile(2) is disabled because it bypasses Apache's output-filter chain: with
# it enabled, mod_brotli is silently skipped for static files (JS, CSS, SVG),
# negating the compression configured below. MMAP is also
# disabled because files can be replaced by Nextcloud at any time and mmap'd
# pages could serve stale data.
EnableSendfile Off
EnableMMAP Off
# PHP match
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://${NEXTCLOUD_HOST}:9000"
@@ -45,17 +17,12 @@ Listen 8000
<Proxy "fcgi://${NEXTCLOUD_HOST}:9000" flushpackets=on>
</Proxy>
# Compress JS, CSS and SVG responses with Brotli (quality 4 gives good
# compression with reasonable CPU cost; the default of 0 barely compresses).
# Compress JS, CSS and SVG responses with Brotli.
# Other plain-text files are already compressed by Nextcloud itself.
# No deflate fallback is needed: every browser that Nextcloud supports
# (Chrome 49+, Firefox 44+, Safari 11+, Edge 15+ — all from 2016-2017)
# supports Brotli. Internet Explorer, the only browser that never gained
# Brotli support, was dropped by Nextcloud with NC15 (2019).
# Desktop and mobile sync clients never request JS/CSS/SVG assets.
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/javascript application/javascript application/x-javascript text/css image/svg+xml
BrotliCompressionQuality 4
BrotliCompressionQuality 0
</IfModule>
# Nextcloud dir

View File

@@ -12,7 +12,7 @@ loglevel=%(ENV_AIO_LOG_LEVEL)s
stdout_logfile=%(ENV_SUPERVISORD_STDOUT)s
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apachectl -DFOREGROUND
command=httpd -DFOREGROUND
[program:caddy]
stdout_logfile=/dev/stdout

View File

@@ -31,4 +31,5 @@ LABEL com.centurylinklabs.watchtower.enable="false" \
org.opencontainers.image.source="https://github.com/nextcloud/all-in-one" \
org.opencontainers.image.vendor="Nextcloud" \
org.opencontainers.image.documentation="https://github.com/nextcloud/all-in-one/blob/main/readme.md"
ENV BORG_RETENTION_POLICY="--keep-within=7d --keep-weekly=4 --keep-monthly=6"
ENV BORG_RETENTION_POLICY="--keep-within=7d --keep-weekly=4 --keep-monthly=6" \
AIO_LOG_LEVEL="warn"

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
if [ "$AIO_LOG_LEVEL" = "warn" ]; then
BORG_LOG_LEVEL_FLAG="--warning"
else

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
if [ "$AIO_LOG_LEVEL" = "warn" ]; then
COLLABORA_LOG_LEVEL="warning"
elif [ "$AIO_LOG_LEVEL" = "info" ]; then

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
ELASTIC_LOG_LEVEL="$(echo "$AIO_LOG_LEVEL" | tr '[:lower:]' '[:upper:]')"
exec env "logger.level=$ELASTIC_LOG_LEVEL" /usr/local/bin/docker-entrypoint.sh "$@"

View File

@@ -4,15 +4,11 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
GOLANG_LOG="$(case "$AIO_LOG_LEVEL" in
debug) printf 'info' ;;
info) printf 'info' ;;
warn) printf 'warning' ;;
error) printf 'error' ;;
*) printf 'warning' ;;
esac)"
export GOLANG_LOG
if [ "$AIO_LOG_LEVEL" = "debug" ]; then

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
FROM docker:29.4.3-cli AS docker
FROM docker:29.5.1-cli AS docker
ARG CADDY_REMOTE_HOST_HASH=e80a9931765a8dbcbb47db415863387f0df0e1b3

View File

@@ -59,15 +59,6 @@ fi
# Wait for watchtower to stop
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
# Give Docker time to register the container as running before checking for it.
# Without this, there is a race condition where the check below runs before watchtower
# appears in `docker ps`, causing the script to skip the wait and continue with
# the potentially outdated mastercontainer code while watchtower is still updating it.
count=0
while ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$" && [ "$count" -lt 12 ]; do
sleep 5
count=$((count + 1))
done
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; then
echo "Something seems to be wrong: Watchtower should be started at this step."
fi

View File

@@ -54,7 +54,7 @@ stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/session-deduplicator.sh
user=root
user=www-data
[program:domain-validator]
# Logging is disabled as otherwise all attempts will be logged which spams the logs

View File

@@ -1,4 +1,4 @@
<?php
$CONFIG = array (
'serverid' => crc32(gethostname()) % 512,
'serverid' => hexdec(hash('xxh32', gethostname()) & 0x1FF,
);

View File

@@ -14,9 +14,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
run_upgrade_if_needed_due_to_app_update() {
if php /var/www/html/occ status | grep maintenance | grep -q true; then
php /var/www/html/occ maintenance:mode --off
@@ -32,7 +29,6 @@ NEXTCLOUD_LOG_LEVEL="$(case "$AIO_LOG_LEVEL" in
info) printf '1' ;;
warn) printf '2' ;;
error) printf '3' ;;
*) printf '2' ;;
esac)"
export NEXTCLOUD_LOG_LEVEL

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
export RUST_LOG="$AIO_LOG_LEVEL"
if [ -z "$NEXTCLOUD_HOST" ]; then
@@ -31,7 +28,7 @@ elif [ "$CPU_ARCH" != "x86_64" ]; then
fi
# Add warning
if ! [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
if ! [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ] && ! [ -f /var/www/html/apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
echo "The notify_push binary was not found."
echo "Most likely is DNS resolution not working correctly."
echo "You can try to fix this by configuring a DNS server globally in dockers daemon.json."
@@ -45,9 +42,24 @@ if ! [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; t
exit 1
fi
# Logic for ipv6 disabled servers
BIND="::"
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
BIND="0.0.0.0"
fi
export BIND
echo "notify-push was started"
if [ -f /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push ]; then
PUSH_PATH="/var/www/html/custom_apps/notify_push/bin/$CPU_ARCH/notify_push"
else
PUSH_PATH="/var/www/html/apps/notify_push/bin/$CPU_ARCH/notify_push"
fi
# Run it
exec /var/www/html/custom_apps/notify_push/bin/"$CPU_ARCH"/notify_push \
exec "$PUSH_PATH" \
--port 7867 \
/var/www/html/config/config.php

View File

@@ -4,15 +4,11 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
POSTGRES_LOG_MIN_MESSAGES="$(case "$AIO_LOG_LEVEL" in
debug) printf 'debug1' ;;
info) printf 'info' ;;
warn) printf 'warning' ;;
error) printf 'error' ;;
*) printf 'warning' ;;
esac)"
export POSTGRES_LOG_MIN_MESSAGES

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
# Redis only supports [debug, verbose, notice, warning, nothing] as log level
if [ "$AIO_LOG_LEVEL" = "warn" ] || [ "$AIO_LOG_LEVEL" = "error" ]; then
REDIS_LOG_LEVEL="warning"

View File

@@ -35,6 +35,9 @@ RUN set -ex; \
build-base \
linux-headers \
geckodriver; \
if [ "$(apk --print-arch)" = "x86_64" ]; then \
apk add --no-cache intel-media-driver; \
fi; \
useradd -d /tmp --system recording -u 122; \
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd; \

View File

@@ -4,15 +4,11 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
TALK_RECORDING_LOG_LEVEL="$(case "$AIO_LOG_LEVEL" in
debug) printf '10' ;;
info) printf '20' ;;
warn) printf '30' ;;
error) printf '40' ;;
*) printf '30' ;;
esac)"
export TALK_RECORDING_LOG_LEVEL

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM nats:2.14.0-scratch AS nats
FROM nats:2.14.1-scratch AS nats
FROM eturnal/eturnal:1.12.2-alpine AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.1.1 AS signaling
FROM alpine:3.23.4 AS janus

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
if [ "$AIO_LOG_LEVEL" = "warn" ]; then
ETURNAL_LOG_LEVEL="warning"
else
@@ -18,7 +15,6 @@ JANUS_LOG_LEVEL="$(case "$AIO_LOG_LEVEL" in
info) printf '4' ;;
warn) printf '3' ;;
error) printf '1' ;;
*) printf '3' ;;
esac)"
export JANUS_LOG_LEVEL

View File

@@ -22,6 +22,8 @@ COPY --chmod=775 start.sh /start.sh
# hadolint ignore=DL3002
USER root
ENV AIO_LOG_LEVEL="warn"
ENTRYPOINT ["/start.sh"]
LABEL com.centurylinklabs.watchtower.enable="false" \
wud.watch="false" \

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
# Check if socket is available and readable
if ! [ -e "/var/run/docker.sock" ]; then
echo "Docker socket is not available. Cannot continue."

View File

@@ -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.5.7
FROM ghcr.io/nextcloud-releases/whiteboard:v1.5.8
USER root
RUN set -ex; \

View File

@@ -4,9 +4,6 @@ if [ "$AIO_LOG_LEVEL" = 'debug' ]; then
set -x
fi
# Defensive default: ensure AIO_LOG_LEVEL is never empty so log-level mappings below always resolve correctly
AIO_LOG_LEVEL="${AIO_LOG_LEVEL:-warn}"
export LOG_LEVEL="$AIO_LOG_LEVEL"
# Only start container if nextcloud is accessible

View File

@@ -1,19 +1,12 @@
# https://editorconfig.org
# note: the files in ./composer actually use 4 spaces instead of tabs
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
[*.feature]
indent_size = 2
indent_style = space
[*.yml]
indent_size = 2
indent_style = space

View File

@@ -1,7 +1,10 @@
# AIO app for Nextcloud
This folder contains a Nextcloud app, which will be automatically installed within the Nextcloud instance.
It adds a link to the admin settings page that gives access to the AIO interface.
## How to develop the app?
Please note that in order to check if an app is already downloaded
Nextcloud will look for a folder with the same name as the app.
Please note that in order to check if an app is already downloaded Nextcloud will look for a folder with the same name as the app.
Therefore you need to add the app to one of the app directories
naming the directory `nextcloud-aio`.
Therefore you need to add the app to one of the app directories naming the directory `nextcloud-aio`.

View File

@@ -6,6 +6,8 @@ This container bundles Home Assistant and auto-configures it for you.
- After adding and starting the container, you can visit `http://ip.address.of.this.server:8123` in order to set up your Home Assistant instance.
- The data of Home Assistant will be automatically included in AIOs backup solution!
- In order to access your Home Assistant 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 to allow the traffic from the reverse proxy to be accepted by Home Assistant, follow [these instructions](https://www.home-assistant.io/integrations/http/#reverse-proxies) from the Home Assistant documentation.
- Or, to use the Caddy with geoblocking community container, follow the following instruction to add your own Caddyfile, to use it for Home Assistant: https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy#notes
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository

View File

@@ -4,8 +4,8 @@
"container_name": "nextcloud-aio-lldap",
"display_name": "Light LDAP implementation",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap",
"image": "lldap/lldap",
"image_tag": "v0-alpine",
"image": "ghcr.io/lldap/lldap",
"image_tag": "latest-alpine",
"internal_port": "17170",
"restart": "unless-stopped",
"ports": [

View File

@@ -1,6 +1,9 @@
## Minio
This container bundles minio s3 storage and auto-configures it for you.
> [!CAUTION]
> The Minio upstream project is no longer maintained. The container should still work in its current form...
>[!WARNING]
> Enabling this container will remove access to all the files formerly written to the data directory.
> So only enable this on a clean instance directly after installing AIO.

View File

@@ -1,4 +1,4 @@
name: nextcloud-aio # Add the container to the same compose project like all the sibling containers are added to automatically.
name: nextcloud-aio # Add the container to the same compose project to which all the sibling containers are added automatically
services:
nextcloud-aio-mastercontainer:
image: ghcr.io/nextcloud-releases/all-in-one:latest # This is the container image used. You can switch to ghcr.io/nextcloud-releases/all-in-one:beta if you want to help testing new releases. See https://github.com/nextcloud/all-in-one#how-to-switch-the-channel
@@ -15,10 +15,10 @@ services:
- "80:80" # Can be removed 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
- "8080:8080" # This is the AIO interface, served via https and self-signed certificate. See https://github.com/nextcloud/all-in-one#explanation-of-used-ports
- "8443:8443" # Can be removed 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
# security_opt: ["label:disable"] # Is needed when using SELinux. See https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled
# environment: # Is needed when using any of the options below
# security_opt: ["label:disable"] # Needed when using SELinux. See https://github.com/nextcloud/all-in-one#are-there-known-problems-when-selinux-is-enabled
# environment: # This line is needed (has to be uncommented) when using any of the options below
# AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
# APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# APACHE_PORT: 11000 # 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

View File

@@ -46,7 +46,6 @@ services:
- APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME}
- NOTIFY_PUSH_HOST=nextcloud-aio-notify-push
- WHITEBOARD_HOST=nextcloud-aio-whiteboard
- HARP_HOST=nextcloud-aio-harp
volumes:
- nextcloud_aio_nextcloud:/var/www/html:ro
- nextcloud_aio_apache:/mnt/data:rw

View File

@@ -48,6 +48,7 @@ sed -i '/AIO_TOKEN/d' containers.yml
sed -i '/AIO_URL/d' containers.yml
sed -i '/DOCKER_SOCKET_PROXY_ENABLED/d' containers.yml
sed -i '/HARP_ENABLED/d' containers.yml
sed -i '/HARP_HOST/d' containers.yml
sed -i '/HP_SHARED_KEY/d' containers.yml
sed -i '/ADDITIONAL_TRUSTED_PROXY/d' containers.yml
sed -i '/TURN_DOMAIN/d' containers.yml

View File

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

View File

@@ -65,7 +65,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
image: ghcr.io/nextcloud-releases/aio-apache:20260513_090235
image: ghcr.io/nextcloud-releases/aio-apache:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -36,7 +36,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
image: ghcr.io/nextcloud-releases/aio-alpine:20260513_090235
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- mkdir
- "-p"
@@ -61,7 +61,7 @@ spec:
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-clamav:20260513_090235
image: ghcr.io/nextcloud-releases/aio-clamav:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -38,9 +38,9 @@ spec:
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
{{- if contains "--o:support_key=" (join " " (.Values.ADDITIONAL_COLLABORA_OPTIONS | default list)) }}
image: ghcr.io/nextcloud-releases/aio-collabora-online:20260513_090235
image: ghcr.io/nextcloud-releases/aio-collabora-online:20260515_145717
{{- else }}
image: ghcr.io/nextcloud-releases/aio-collabora:20260513_090235
image: ghcr.io/nextcloud-releases/aio-collabora:20260515_145717
{{- end }}
readinessProbe:
exec:

View File

@@ -35,7 +35,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
image: ghcr.io/nextcloud-releases/aio-alpine:20260513_090235
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- mkdir
- "-p"
@@ -66,7 +66,7 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-postgresql:20260513_090235
image: ghcr.io/nextcloud-releases/aio-postgresql:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20260513_090235
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- chmod
- "777"
@@ -60,7 +60,7 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20260513_090235
image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -40,7 +40,7 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-imaginary:20260513_090235
image: ghcr.io/nextcloud-releases/aio-imaginary:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -38,7 +38,7 @@ spec:
# AIO settings start # Do not remove or change this line!
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20260513_090235
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- chmod
- "777"
@@ -192,7 +192,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
image: ghcr.io/nextcloud-releases/aio-nextcloud:20260513_090235
image: ghcr.io/nextcloud-releases/aio-nextcloud:20260515_145717
{{- if eq (.Values.RPSS_ENABLED | default "no") "yes" }} # AIO-config - do not change this comment!
securityContext:
# The items below only work in container context

View File

@@ -41,7 +41,7 @@ spec:
value: nextcloud-aio-nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-notify-push:20260513_090235
image: ghcr.io/nextcloud-releases/aio-notify-push:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
image: ghcr.io/nextcloud-releases/aio-alpine:20260513_090235
image: ghcr.io/nextcloud-releases/aio-alpine:20260515_145717
command:
- chmod
- "777"
@@ -46,7 +46,7 @@ spec:
value: "{{ .Values.AIO_LOG_LEVEL }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-onlyoffice:20260513_090235
image: ghcr.io/nextcloud-releases/aio-onlyoffice:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -41,7 +41,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-redis:20260513_090235
image: ghcr.io/nextcloud-releases/aio-redis:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -56,7 +56,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk:20260513_090235
image: ghcr.io/nextcloud-releases/aio-talk:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -46,7 +46,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-talk-recording:20260513_090235
image: ghcr.io/nextcloud-releases/aio-talk-recording:20260515_145717
readinessProbe:
exec:
command:

View File

@@ -52,7 +52,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
image: ghcr.io/nextcloud-releases/aio-whiteboard:20260513_090235
image: ghcr.io/nextcloud-releases/aio-whiteboard:20260515_145717
readinessProbe:
exec:
command:

113
php/composer.lock generated
View File

@@ -64,16 +64,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.10.0",
"version": "7.10.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4"
"reference": "aed36fd5fb4844f284252a999d9abf35d3a9a1ae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
"reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/aed36fd5fb4844f284252a999d9abf35d3a9a1ae",
"reference": "aed36fd5fb4844f284252a999d9abf35d3a9a1ae",
"shasum": ""
},
"require": {
@@ -91,8 +91,9 @@
"bamarni/composer-bin-plugin": "^1.8.2",
"ext-curl": "*",
"guzzle/client-integration-tests": "3.0.2",
"guzzlehttp/test-server": "^0.3.2",
"php-http/message-factory": "^1.1",
"phpunit/phpunit": "^8.5.39 || ^9.6.20",
"phpunit/phpunit": "^8.5.52 || ^9.6.34",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -170,7 +171,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.10.0"
"source": "https://github.com/guzzle/guzzle/tree/7.10.2"
},
"funding": [
{
@@ -186,20 +187,20 @@
"type": "tidelift"
}
],
"time": "2025-08-23T22:36:01+00:00"
"time": "2026-05-20T11:58:52+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.3.0",
"version": "2.3.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "481557b130ef3790cf82b713667b43030dc9c957"
"reference": "d2d8dfae4757f384d630fdffc2d8d6618d8f4c5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
"reference": "481557b130ef3790cf82b713667b43030dc9c957",
"url": "https://api.github.com/repos/guzzle/promises/zipball/d2d8dfae4757f384d630fdffc2d8d6618d8f4c5e",
"reference": "d2d8dfae4757f384d630fdffc2d8d6618d8f4c5e",
"shasum": ""
},
"require": {
@@ -207,7 +208,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
"phpunit/phpunit": "^8.5.52 || ^9.6.34"
},
"type": "library",
"extra": {
@@ -253,7 +254,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.3.0"
"source": "https://github.com/guzzle/promises/tree/2.3.1"
},
"funding": [
{
@@ -269,20 +270,20 @@
"type": "tidelift"
}
],
"time": "2025-08-22T14:34:08+00:00"
"time": "2026-05-19T18:30:48+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.9.0",
"version": "2.10.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884"
"reference": "73ab136360b5dfd858006eae9795e8fe43c80361"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884",
"reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/73ab136360b5dfd858006eae9795e8fe43c80361",
"reference": "73ab136360b5dfd858006eae9795e8fe43c80361",
"shasum": ""
},
"require": {
@@ -297,9 +298,9 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0",
"http-interop/http-factory-tests": "1.1.0",
"jshttp/mime-db": "1.54.0.1",
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
"phpunit/phpunit": "^8.5.52 || ^9.6.34"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -370,7 +371,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.9.0"
"source": "https://github.com/guzzle/psr7/tree/2.10.1"
},
"funding": [
{
@@ -386,7 +387,7 @@
"type": "tidelift"
}
],
"time": "2026-03-10T16:41:02+00:00"
"time": "2026-05-20T09:27:36+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -1784,16 +1785,16 @@
},
{
"name": "twig/twig",
"version": "v3.24.0",
"version": "v3.26.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "a6769aefb305efef849dc25c9fd1653358c148f0"
"reference": "1fcae487b180d78e6351f4e0afa91f9eab96a2bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a6769aefb305efef849dc25c9fd1653358c148f0",
"reference": "a6769aefb305efef849dc25c9fd1653358c148f0",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/1fcae487b180d78e6351f4e0afa91f9eab96a2bc",
"reference": "1fcae487b180d78e6351f4e0afa91f9eab96a2bc",
"shasum": ""
},
"require": {
@@ -1848,7 +1849,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.24.0"
"source": "https://github.com/twigphp/Twig/tree/v3.26.0"
},
"funding": [
{
@@ -1860,7 +1861,7 @@
"type": "tidelift"
}
],
"time": "2026-03-17T21:31:11+00:00"
"time": "2026-05-20T07:31:59+00:00"
}
],
"packages-dev": [
@@ -2176,16 +2177,16 @@
},
{
"name": "amphp/parallel",
"version": "v2.3.4",
"version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/amphp/parallel.git",
"reference": "3ad45d1cff1bfbfe832c79671e6a4a1017dd9921"
"reference": "37f5b2754fadc229c00f9416bd68fb8d04529a81"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/parallel/zipball/3ad45d1cff1bfbfe832c79671e6a4a1017dd9921",
"reference": "3ad45d1cff1bfbfe832c79671e6a4a1017dd9921",
"url": "https://api.github.com/repos/amphp/parallel/zipball/37f5b2754fadc229c00f9416bd68fb8d04529a81",
"reference": "37f5b2754fadc229c00f9416bd68fb8d04529a81",
"shasum": ""
},
"require": {
@@ -2248,7 +2249,7 @@
],
"support": {
"issues": "https://github.com/amphp/parallel/issues",
"source": "https://github.com/amphp/parallel/tree/v2.3.4"
"source": "https://github.com/amphp/parallel/tree/v2.4.0"
},
"funding": [
{
@@ -2256,7 +2257,7 @@
"type": "github"
}
],
"time": "2026-05-06T19:26:51+00:00"
"time": "2026-05-16T16:54:01+00:00"
},
{
"name": "amphp/parser",
@@ -3775,16 +3776,16 @@
},
{
"name": "revolt/event-loop",
"version": "v1.0.8",
"version": "v1.0.9",
"source": {
"type": "git",
"url": "https://github.com/revoltphp/event-loop.git",
"reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c"
"reference": "44061cf513e53c6200372fc935ac42271566295d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/revoltphp/event-loop/zipball/b6fc06dce8e9b523c9946138fa5e62181934f91c",
"reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c",
"url": "https://api.github.com/repos/revoltphp/event-loop/zipball/44061cf513e53c6200372fc935ac42271566295d",
"reference": "44061cf513e53c6200372fc935ac42271566295d",
"shasum": ""
},
"require": {
@@ -3794,7 +3795,7 @@
"ext-json": "*",
"jetbrains/phpstorm-stubs": "^2019.3",
"phpunit/phpunit": "^9",
"psalm/phar": "^5.15"
"psalm/phar": "6.16.*"
},
"type": "library",
"extra": {
@@ -3841,22 +3842,22 @@
],
"support": {
"issues": "https://github.com/revoltphp/event-loop/issues",
"source": "https://github.com/revoltphp/event-loop/tree/v1.0.8"
"source": "https://github.com/revoltphp/event-loop/tree/v1.0.9"
},
"time": "2025-08-27T21:33:23+00:00"
"time": "2026-05-16T17:55:38+00:00"
},
{
"name": "sebastian/diff",
"version": "8.2.1",
"version": "8.3.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "cce1bb200e0062e72f9b85ccfe54d3fd38bbd044"
"reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/cce1bb200e0062e72f9b85ccfe54d3fd38bbd044",
"reference": "cce1bb200e0062e72f9b85ccfe54d3fd38bbd044",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b36d33b6e796513de7cb7df053afb3f55eefcd47",
"reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47",
"shasum": ""
},
"require": {
@@ -3869,7 +3870,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "8.2-dev"
"dev-main": "8.3-dev"
}
},
"autoload": {
@@ -3902,7 +3903,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
"source": "https://github.com/sebastianbergmann/diff/tree/8.2.1"
"source": "https://github.com/sebastianbergmann/diff/tree/8.3.0"
},
"funding": [
{
@@ -3922,7 +3923,7 @@
"type": "tidelift"
}
],
"time": "2026-05-14T05:24:37+00:00"
"time": "2026-05-15T04:58:09+00:00"
},
{
"name": "spatie/array-to-xml",
@@ -4898,16 +4899,16 @@
},
{
"name": "webmozart/assert",
"version": "2.3.0",
"version": "2.4.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
"reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4"
"reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/eb0d790f735ba6cff25c683a85a1da0eadeff9e4",
"reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/9007ea6f45ecf352a9422b36644e4bfc039b9155",
"reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155",
"shasum": ""
},
"require": {
@@ -4923,7 +4924,11 @@
},
"type": "library",
"extra": {
"psalm": {
"pluginClass": "Webmozart\\Assert\\PsalmPlugin"
},
"branch-alias": {
"dev-master": "2.0-dev",
"dev-feature/2-0": "2.0-dev"
}
},
@@ -4954,9 +4959,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
"source": "https://github.com/webmozarts/assert/tree/2.3.0"
"source": "https://github.com/webmozarts/assert/tree/2.4.0"
},
"time": "2026-04-11T10:33:05+00:00"
"time": "2026-05-20T13:07:01+00:00"
}
],
"aliases": [],

View File

@@ -1,29 +1,29 @@
<?xml version="1.0"?>
<psalm
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
errorBaseline="psalm-baseline.xml"
findUnusedBaselineEntry="true"
findUnusedCode="false"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
errorBaseline="psalm-baseline.xml"
findUnusedBaselineEntry="true"
findUnusedCode="false"
>
<projectFiles>
<directory name="templates"/>
<directory name="src"/>
<file name="public/index.php"/>
<ignoreFiles>
<directory name="vendor" />
</ignoreFiles>
</projectFiles>
<extraFiles>
<directory name="vendor" />
</extraFiles>
<issueHandlers>
<ClassMustBeFinal errorLevel="suppress" />
<projectFiles>
<directory name="templates"/>
<directory name="src"/>
<file name="public/index.php"/>
<ignoreFiles>
<directory name="vendor" />
</ignoreFiles>
</projectFiles>
<extraFiles>
<directory name="vendor" />
</extraFiles>
<issueHandlers>
<ClassMustBeFinal errorLevel="suppress" />
<MissingConstructor>
<errorLevel type="suppress">
<file name="src/Data/ConfigurationManager.php" /> <!-- We're using property hooks with virtual properties in that file, which Psalm wrongly complains about. See <https://github.com/vimeo/psalm/issues/11435>. -->
</errorLevel>
</MissingConstructor>
</issueHandlers>
</issueHandlers>
</psalm>

View File

@@ -245,6 +245,7 @@ $app->get('/', function (\Psr\Http\Message\RequestInterface $request, Response $
}
});
// Default error handler
$errorMiddleware = $app->addErrorMiddleware(false, true, true);
// Set a custom Not Found handler, which doesn't pollute the app output with 404 errors.
@@ -254,6 +255,17 @@ $errorMiddleware->setErrorHandler(
$response = $app->getResponseFactory()->createResponse();
$response->getBody()->write('Not Found');
return $response->withStatus(404);
});
}
);
// Set another custom error handler, which doesn't pollute the app output with 405 errors.
$errorMiddleware->setErrorHandler(
\Slim\Exception\HttpMethodNotAllowedException::class,
function (Request $request, Throwable $exception, bool $displayErrorDetails) use ($app) {
$response = $app->getResponseFactory()->createResponse();
$response->getBody()->write('Method not allowed');
return $response->withStatus(405);
}
);
$app->run();

View File

@@ -1 +1 @@
13.0.3
13.0.4

View File

@@ -1,9 +1,11 @@
<html lang="en">
<head>
<title>AIO</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="logs.css">
<script src="log-view.js?v1"></script>
<link rel="icon" href="img/favicon.png">
<script src="log-load.js?v1"></script>
</head>
<body data-container-id="{{ id }}">
<div id="floating-box">