From c084dd2a196d7003c592ba7662748bd7fcbcbfd5 Mon Sep 17 00:00:00 2001 From: Hattshire Date: Mon, 11 Sep 2023 12:48:18 +0000 Subject: [PATCH] Up --- .../create-multiple-postgresql-databases.sh | 22 ++++++++ db.env | 4 ++ docker-compose.yml | 53 ++++++++++++++----- docker-update.sh | 4 ++ images/nc/Dockerfile | 5 ++ vhost.d/default | 10 ---- vhost.d/palta.cyou | 10 ++++ 7 files changed, 86 insertions(+), 22 deletions(-) create mode 100644 db-init.d/create-multiple-postgresql-databases.sh create mode 100644 db.env create mode 100755 docker-update.sh create mode 100644 images/nc/Dockerfile diff --git a/db-init.d/create-multiple-postgresql-databases.sh b/db-init.d/create-multiple-postgresql-databases.sh new file mode 100644 index 0000000..aa665fa --- /dev/null +++ b/db-init.d/create-multiple-postgresql-databases.sh @@ -0,0 +1,22 @@ +#!/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 diff --git a/db.env b/db.env new file mode 100644 index 0000000..58265fb --- /dev/null +++ b/db.env @@ -0,0 +1,4 @@ +MYSQL_ROOT_PASSWORD=root +MYSQL_USER=nextcloud +MYSQL_PASSWORD=nextcloud +MYSQL_DATABASE=nextcloud diff --git a/docker-compose.yml b/docker-compose.yml index 85d51c9..ba9905d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,9 +7,10 @@ volumes: # vhost.d: html: #NextCloud - nc-appdata: + nc-data: nc-userdata: nc-apps: + db-data: networks: proxy-tier: @@ -17,12 +18,12 @@ networks: services: # ============ NextCloud nextcloud: - image: nextcloud + build: ./images/nc restart: always expose: - 80 volumes: - - nc-appdata:/var/www/html + - nc-data:/var/www/html - nc-userdata:/var/www/html/data - nc-apps:/var/www/html/apps environment: @@ -34,25 +35,37 @@ services: - OVERWRITEPROTOCOL=https - NEXTCLOUD_ADMIN_USER=Super - "NEXTCLOUD_ADMIN_PASSWORD=&3Qv%CQCGp>zs-!f" - - OBJECTSTORE_S3_HOST=axkurj1fnll3.compat.objectstorage.sa-santiago-1.oraclecloud.com - - OBJECTSTORE_S3_BUCKET=palta.cyou-nextcloud-standard-1 - - OBJECTSTORE_S3_KEY=40b34022e06916f8c1ce17cd3dc93438465feb00 - - OBJECTSTORE_S3_SECRET=uZDPc7J6oic5p3S0BWBJm0YojLtDsL+Ukjh8MdSCxNs= + - OBJECTSTORE_S3_HOST=s3.us-west-001.backblazeb2.com + - OBJECTSTORE_S3_BUCKET=paltas + - OBJECTSTORE_S3_KEY=001602c9b6d6e420000000001 + - OBJECTSTORE_S3_SECRET=K001WXz69MkRgVKk+7DP4mwbZYXe2fQ - OBJECTSTORE_S3_PORT=443 - OBJECTSTORE_S3_SSL=true - - OBJECTSTORE_S3_REGION=sa-santiago-1 + - OBJECTSTORE_S3_REGION=us-west-001 - OBJECTSTORE_S3_USEPATH_STYLE=true + - POSTGRES_HOST=db + - REDIS_HOST=redis + env_file: + - db.env networks: - default - proxy-tier + depends_on: + - reverse_proxy + - db + - redis nextcloud-janitor: - image: nextcloud + build: ./images/nc restart: always volumes: - - nc-appdata:/var/www/html + - nc-data:/var/www/html + - nc-userdata:/var/www/html/data + - nc-apps:/var/www/html/apps entrypoint: /cron.sh -# depends_on: + depends_on: + - db + - redis # =========== SSL @@ -78,7 +91,7 @@ services: volumes: - certs:/etc/nginx/certs - acme:/etc/acme.sh - - ./vhost.d:/etc/nginx/vhost.d:ro + - ./vhost.d:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock:ro networks: @@ -88,3 +101,19 @@ services: environment: #- ACME_CA_URI=https://acme-staging-v02.api.letsencrypt.org/directory # test-server - DEFAULT_EMAIL=admin@uwu.email + + db: +# container_name: db + image: postgres:14-alpine + restart: always + ports: + - "5432:5432" + volumes: + - db-data:/var/lib/postgresql/data + env_file: + - db.env + shm_size: 256MB + + redis: + image: redis:alpine + restart: always diff --git a/docker-update.sh b/docker-update.sh new file mode 100755 index 0000000..314792e --- /dev/null +++ b/docker-update.sh @@ -0,0 +1,4 @@ +#!/usr/bin/bash + +docker compose up --force-recreate --build -d --pull always +docker image prune -f diff --git a/images/nc/Dockerfile b/images/nc/Dockerfile new file mode 100644 index 0000000..43d957e --- /dev/null +++ b/images/nc/Dockerfile @@ -0,0 +1,5 @@ +FROM nextcloud:25.0 + +RUN echo "*/5 * * * * php -f /var/www/nextcloud/occ preview:pre-generate">> /var/spool/cron/crontabs/www-data +RUN apt-get update && apt-get install -y ffmpeg imagemagick \ + && rm -rf /var/lib/apt/lists/* diff --git a/vhost.d/default b/vhost.d/default index 5e59aa4..e69de29 100644 --- a/vhost.d/default +++ b/vhost.d/default @@ -1,10 +0,0 @@ -## Start of configuration add by letsencrypt container -location ^~ /.well-known/acme-challenge/ { - auth_basic off; - auth_request off; - allow all; - root /usr/share/nginx/html; - try_files $uri =404; - break; -} -## End of configuration add by letsencrypt container diff --git a/vhost.d/palta.cyou b/vhost.d/palta.cyou index 0747b6f..302ee26 100644 --- a/vhost.d/palta.cyou +++ b/vhost.d/palta.cyou @@ -1,3 +1,13 @@ +## Start of configuration add by letsencrypt container +location ^~ /.well-known/acme-challenge/ { + auth_basic off; + auth_request off; + allow all; + root /usr/share/nginx/html; + try_files $uri =404; + break; +} +## End of configuration add by letsencrypt container # 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;