From bcdacb3ed3921fe9c3c2918403a90614e55150b4 Mon Sep 17 00:00:00 2001 From: BeauTroll <-> Date: Tue, 6 Jan 2026 10:38:32 +0100 Subject: [PATCH] initial commit --- .env.example | 22 ++++++++++++++++++++ .gitignore | 1 + docker-compose.yml | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..2b4c332 --- /dev/null +++ b/.env.example @@ -0,0 +1,22 @@ +# MySQL Configuration +MYSQL_ROOT_PASSWORD=changeme_secure_password +MYSQL_LOG_CONSOLE=true +MARIADB_AUTO_UPGRADE=1 + +# Database Configuration for Seafile +DB_HOST=db +DB_ROOT_PASSWD=changeme_secure_password + +# Time Zone Configuration +TIME_ZONE=Etc/UTC + +# Seafile Admin Configuration +SEAFILE_ADMIN_EMAIL=admin@example.com +SEAFILE_ADMIN_PASSWORD=changeme_admin_password + +# HTTPS/SSL Configuration +SEAFILE_SERVER_LETSENCRYPT=false +SEAFILE_SERVER_HOSTNAME=seafile.example.com + +# Memcached Configuration +MEMCACHED_MEMORY=256 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c6a1179 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,51 @@ +services: + db: + image: mariadb:10.11 + container_name: seafile-mysql + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} # Required, set the root's password of MySQL service. + - MYSQL_LOG_CONSOLE=${MYSQL_LOG_CONSOLE} + - MARIADB_AUTO_UPGRADE=${MARIADB_AUTO_UPGRADE} + volumes: + - /opt/seafile-mysql/db:/var/lib/mysql # Required, specifies the path to MySQL data persistent store. + networks: + - seafile-net + + memcached: + image: memcached:1.6.18 + container_name: seafile-memcached + entrypoint: memcached -m ${MEMCACHED_MEMORY} + networks: + - seafile-net + + seafile: + image: seafileltd/seafile-mc:11.0-latest + container_name: seafile + volumes: + - /opt/seafile-data:/shared # Required, specifies the path to Seafile data persistent store. + environment: + - DB_HOST=${DB_HOST} + - DB_ROOT_PASSWD=${DB_ROOT_PASSWD} # Required, the value should be root's password of MySQL service. + - TIME_ZONE=${TIME_ZONE} # Optional, default is UTC. Should be uncomment and set to your local time zone. + - SEAFILE_ADMIN_EMAIL=${SEAFILE_ADMIN_EMAIL} # Specifies Seafile admin user, default is 'me@example.com'. + - SEAFILE_ADMIN_PASSWORD=${SEAFILE_ADMIN_PASSWORD} # Specifies Seafile admin password, default is 'asecret'. + - SEAFILE_SERVER_LETSENCRYPT=${SEAFILE_SERVER_LETSENCRYPT} # Whether to use https or not. + - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME} # Specifies your host name if https is enabled. + labels: + - "traefik.enable=true" + - "traefik.http.routers.seafile.rule=Host(`${SEAFILE_SERVER_HOSTNAME}`)" + - "traefik.http.routers.seafile.entrypoints=websecure" + - "traefik.http.routers.seafile.tls=true" + - "traefik.http.routers.seafile.tls.certresolver=letsencrypt" + - "traefik.http.services.seafile.loadbalancer.server.port=80" + depends_on: + - db + - memcached + networks: + - seafile-net + - traefik-net + +networks: + seafile-net: + traefik-net: + external: true