Use alpine, add collabora, tune php uploads, bump database version

This commit is contained in:
Oliver Hattshire 2025-10-20 03:48:24 -03:00
parent 2107687a11
commit 03c2fb46cf
8 changed files with 47 additions and 51 deletions

View file

@ -1,22 +0,0 @@
#!/bin/bash
set -e
set -u
function create_user_and_database() {
local database=$1
echo " Creating user and database '$database'"
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER $database;
CREATE DATABASE $database;
GRANT ALL PRIVILEGES ON DATABASE $database TO $database;
EOSQL
}
if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then
echo "Multiple database creation requested: $POSTGRES_MULTIPLE_DATABASES"
for db in $(echo $POSTGRES_MULTIPLE_DATABASES | tr ',' ' '); do
create_user_and_database $db
done
echo "Multiple databases created"
fi

View file

@ -16,14 +16,19 @@ services:
restart: always
volumes:
- nc-data:/var/www/html
- ./config/nc:/var/www/html/config:rw
- type: tmpfs
target: /tmp:exec
environment:
- TRUSTED_PROXIES=172.16.0.0/12 192.168.0.0/16 10.0.0.0/8 fc00::/7 fe80::/10 2001:db8::/32
- TRUSTED_DOMAINS=palta.cyou,bard.palta.cyou
- NEXTCLOUD_TRUSTED_DOMAINS=palta.cyou
- OVERWRITEPROTOCOL=https
- OVERWRITECLIURL=https://palta.cyou
# - VIRTUAL_PROTO=fastcgi
# - VIRTUAL_ROOT=xxx
- POSTGRES_HOST=db
- REDIS_HOST=redis
- PHP_MEMORY_LIMIT=3G
- PHP_UPLOAD_LIMIT=3G
env_file:
- db.env
- nc_config.env
@ -34,11 +39,13 @@ services:
- redis
# janitor
nextcloud-janitor:
janitor:
build: ./images/nc
restart: always
volumes_from:
- nextcloud:rw
volumes:
- nc-data:/var/www/html
- type: tmpfs
target: /tmp:exec
entrypoint: /cron.sh
networks:
- nextcloud
@ -47,16 +54,14 @@ services:
- redis
# Frontend php proxy
nextcloud-front:
front:
build: ./images/ngx
restart: always
environment:
- VIRTUAL_HOST=palta.cyou
- LETSENCRYPT_HOST=palta.cyou
volumes:
- nc-data:/var/www/html:ro
depends_on:
- nextcloud
networks:
@ -64,10 +69,8 @@ services:
- reverse_proxy-tier
# db
db:
image: postgres:14-alpine
image: postgres:17-alpine
restart: always
ports:
- "5432:5432"
volumes:
- db-data:/var/lib/postgresql/data
env_file:
@ -75,9 +78,29 @@ services:
shm_size: 512MB
networks:
- nextcloud
# redis
redis:
image: redis:alpine
restart: always
networks:
- nextcloud
# Collabora CODE
collabora:
image: collabora/code
restart: always
privileged: true
hostname: collabora.palta.cyou
environment:
- VIRTUAL_HOST=collabora.palta.cyou
- VIRTUAL_PORT=9980
- VIRTUAL_PROTO=https
- LETSENCRYPT_HOST=collabora.palta.cyou
- server_name=collabora.palta.cyou
- aliasgroup1=https://palta.cyou
networks:
- reverse_proxy-tier
- nextcloud
volumes:
- type: tmpfs
target: /tmp:exec

View file

@ -1,18 +1,15 @@
FROM nextcloud:production-fpm
FROM nextcloud:production-fpm-alpine
# Pregenerate previews
RUN echo "*/5 * * * * php -f /var/www/html/occ preview:pre-generate">> /var/spool/cron/crontabs/www-data
# Install app deps
RUN apt-get update && apt-get install --no-install-recommends -y \
ffmpeg imagemagick wget gnupg2 unzip
#RUN apt-get update && apt-get install --no-install-recommends -y \
# ffmpeg imagemagick wget gnupg2 unzip
RUN apk add --no-cache ffmpeg imagemagick wget gnupg unzip
## Increase memory limits
COPY upload.ini /usr/local/etc/php/conf.d/upload.ini
COPY upload.ini ${PHP_INI_DIR}/conf.d/upload.ini
## Tune PHP-FPM Children
COPY fpmtune.ini /usr/local/etc/php/conf.d/fpmtune.ini
# Remove residual gcc
RUN apt remove gcc -y && apt autoremove -y \
&& rm -rf /var/lib/apt/lists/*
COPY fpmtune.ini ${PHP_INI_DIR}/conf.d/fpmtune.ini

View file

@ -3,3 +3,4 @@ pm.start_servers=12
pm.min_spare_servers=12
pm.max_spare_servers=38
opcache.memory_consumption=256

View file

@ -1,6 +1,6 @@
upload_max_filesize=16G
post_max_size=16G
upload_max_filesize=3G
post_max_size=3G
max_input_time=3600
max_execution_time=3600
memory_limit=1G
memory_limit=3G
output_buffering=0

View file

@ -1 +1 @@
docker compose exec -tiu www-data nextcloud bash
docker compose exec -tiu www-data nextcloud sh

View file

View file

@ -1,3 +0,0 @@
# From: https://github.com/nextcloud/docker/blob/85e22b4a8e6b12d82d574c7eacd68656dac85bf5/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/uploadsize.conf
client_max_body_size 10G;
proxy_request_buffering off;