Seafile/docker-compose.yml

80 lines
2.6 KiB
YAML
Raw Permalink Normal View History

2025-11-24 17:10:42 +00:00
version: '3.8'
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=biker111
volumes:
- ./mysql:/var/lib/mysql
networks:
- seafile-net
healthcheck:
test: ["CMD", "mariadb-admin", "--protocol=tcp", "ping"]
interval: 20s
timeout: 10s
retries: 5
restart: unless-stopped
memcached:
image: memcached:1.6.18
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
restart: unless-stopped
seafile:
image: seafileltd/seafile-mc:latest
container_name: seafile
# NO PORTS EXPOSED → MAX SECURITY
volumes:
- ./data:/shared
# - /mnt/sea-files/seafile-data1:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=biker111
- SEAFILE_ADMIN_EMAIL=dejan@rozic-dev.com
- SEAFILE_ADMIN_PASSWORD=biker111
- SEAFILE_SERVER_HOSTNAME=seafile.rozic-dev.com
- TIME_ZONE=Europe/Belgrade
- SEAFILE_SERVER_LETSENCRYPT=false # Traefik handles certs, not Seafile
- FORCE_HTTPS_IN_CONF=true # Force https:// in Seafile config
- SEAFILE_SERVICE_URL=https://seafile.rozic-dev.com
- SEAFILE_FILE_SERVER_ROOT=https://seafile.rozic-dev.com/seafhttp
depends_on:
- db
- memcached
networks:
- seafile-net
- traefik_default
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_default"
# UI router → service "seafile"
- "traefik.http.routers.seafile.rule=Host(`seafile.rozic-dev.com`)"
- "traefik.http.routers.seafile.entrypoints=websecure"
- "traefik.http.routers.seafile.tls.certresolver=letsencrypt"
- "traefik.http.routers.seafile.service=seafile"
- "traefik.http.services.seafile.loadbalancer.server.port=80"
# File server router → service "seafile-files"
- "traefik.http.routers.seafile-files.rule=Host(`seafile.rozic-dev.com`) && PathPrefix(`/seafhttp`)"
- "traefik.http.routers.seafile-files.entrypoints=websecure"
- "traefik.http.routers.seafile-files.tls.certresolver=letsencrypt"
- "traefik.http.routers.seafile-files.service=seafile-files"
- "traefik.http.services.seafile-files.loadbalancer.server.port=8082"
# ADD: Attach strip-prefix middleware to the router
- "traefik.http.routers.seafile-files.middlewares=strip-seafhttp"
# ADD: Define the strip-prefix middleware (strips /seafhttp from the path)
- "traefik.http.middlewares.strip-seafhttp.stripprefix.prefixes=/seafhttp"
restart: unless-stopped
networks:
seafile-net:
driver: bridge
traefik_default:
external: true