From 7f9a768c325d4bd9fc6029845ce4a080b985929e Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 1 Dec 2024 13:47:53 +0100 Subject: [PATCH] towards tidy seafile setup --- caddy/Caddyfile | 2 +- docker-compose.seafile.yml | 78 +++++++++++++++---- docker-compose.yml | 1 - seafile/.env | 33 ++++++++ ...compose.seafile.yml => docker-compose.yml} | 3 +- 5 files changed, 97 insertions(+), 20 deletions(-) create mode 100644 seafile/.env rename seafile/{docker-compose.seafile.yml => docker-compose.yml} (98%) diff --git a/caddy/Caddyfile b/caddy/Caddyfile index de2a321..6d4c55e 100644 --- a/caddy/Caddyfile +++ b/caddy/Caddyfile @@ -69,7 +69,7 @@ seafile.rik.veenboer.xyz { log { output file /var/log/seafile.log } - reverse_proxy host:12380 + reverse_proxy host:8082 } (authentik) { diff --git a/docker-compose.seafile.yml b/docker-compose.seafile.yml index 453de1a..962aee8 100644 --- a/docker-compose.seafile.yml +++ b/docker-compose.seafile.yml @@ -1,17 +1,63 @@ services: - seafile: - build: - context: /opt/seafile/docker/ - container_name: seafile - environment: - - MODE=autorun - image: gronis/seafile:10.0.1 - # image: seafile - ports: - - 8100:8000 - - 8180:8080 - - 8182:8082 - restart: unless-stopped - volumes: - - /opt/seafile:/seafile - - /media/sync/seafile:/seafile/seafile-data + seafile-mysql: + image: mariadb:10.11 + container_name: seafile-mysql + environment: + - MYSQL_ROOT_PASSWORD=ROOT_PASSWORD + - MYSQL_LOG_CONSOLE=true + - MARIADB_AUTO_UPGRADE=1 + volumes: + - /opt/seafile/db:/var/lib/mysql + healthcheck: + test: + [ + "CMD", + "/usr/local/bin/healthcheck.sh", + "--connect", + "--mariadbupgrade", + "--innodb_initialized", + ] + interval: 20s + start_period: 30s + timeout: 5s + retries: 10 + + seafile-server: + image: seafileltd/seafile-mc:12.0-latest + container_name: seafile-server + ports: + - "8082:80" + volumes: + - /opt/seafile/data:/shared + - /media/sync/seafile:/shared/seafile/seafile-data + environment: + - DB_HOST=seafile-mysql + - DB_PORT=3306 + - DB_ROOT_PASSWD=ROOT_PASSWORD + - DB_PASSWORD=PASSWORD + - TIME_ZONE=Europe/Amsterdam + - INIT_SEAFILE_ADMIN_EMAIL=admin@veenboer.xyz + - INIT_SEAFILE_ADMIN_PASSWORD=asecret + - SEAFILE_SERVER_HOSTNAME=seafile.rik.veenboer.xyz + - SEAFILE_SERVER_PROTOCOL=https + - JWT_PRIVATE_KEY=8LzWzeuQ41z1i8fc1cr1L7Kw80VpTgmT + + # - DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db} + # - DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306} + # - DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-} + # - DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty} + - SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db} + - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db} + - SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db} + # - TIME_ZONE=${TIME_ZONE:-Etc/UTC} + # - INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com} + # - INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD:-asecret} + # - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty} + # - SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http} + - SITE_ROOT=${SITE_ROOT:-/} + - NON_ROOT=${NON_ROOT:-false} + # - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - ENABLE_SEADOC=${ENABLE_SEADOC:-false} + - SEADOC_SERVER_URL=${SEADOC_SERVER_URL:-http://example.example.com/sdoc-server} + depends_on: + - seafile-mysql diff --git a/docker-compose.yml b/docker-compose.yml index 0c96f57..7b09306 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,6 @@ include: # Web - docker-compose.caddy.yml -- docker-compose.nginx.yml # Authentication - docker-compose.authentik.yml diff --git a/seafile/.env b/seafile/.env new file mode 100644 index 0000000..1ce8727 --- /dev/null +++ b/seafile/.env @@ -0,0 +1,33 @@ +SEAFILE_IMAGE=seafileltd/seafile-mc:12.0-latest +SEAFILE_DB_IMAGE=mariadb:10.11 +SEAFILE_MEMCACHED_IMAGE=memcached:1.6.29 +SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.9 + +SEAFILE_VOLUME=/opt/seafile/data +SEAFILE_MYSQL_VOLUME=/opt/seafile/db +SEAFILE_CADDY_VOLUME=/opt/seafile/caddy + +SEAFILE_MYSQL_DB_HOST=db +INIT_SEAFILE_MYSQL_ROOT_PASSWORD=ROOT_PASSWORD +SEAFILE_MYSQL_DB_USER=seafile +SEAFILE_MYSQL_DB_PASSWORD=PASSWORD + +TIME_ZONE=Europe/Amsterdam + +JWT_PRIVATE_KEY=8LzWzeuQ41z1i8fc1cr1L7Kw80VpTgmT + +SEAFILE_SERVER_HOSTNAME=seafile.rik.veenboer.xyz +SEAFILE_SERVER_PROTOCOL=https + +INIT_SEAFILE_ADMIN_EMAIL=admin@rik.veenboer.xyz +INIT_SEAFILE_ADMIN_PASSWORD=asecret + + +SEADOC_IMAGE=seafileltd/sdoc-server:1.0-latest +SEADOC_VOLUME=/opt/seadoc-data + +ENABLE_SEADOC=false +SEADOC_SERVER_URL=http://example.seafile.com/sdoc-server + +NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:12.0-latest +NOTIFICATION_SERVER_VOLUME=/opt/notification-data diff --git a/seafile/docker-compose.seafile.yml b/seafile/docker-compose.yml similarity index 98% rename from seafile/docker-compose.seafile.yml rename to seafile/docker-compose.yml index 3e796f0..7af56ee 100644 --- a/seafile/docker-compose.seafile.yml +++ b/seafile/docker-compose.yml @@ -27,8 +27,7 @@ services: image: ${SEAFILE_IMAGE:-seafileltd/seafile-mc:12.0-latest} container_name: seafile ports: - - "12380:80" - - "18082:8082" + - "8082:80" volumes: - ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared - /media/sync/seafile:/shared/seafile/seafile-data