# Minimum File Structure ``` /home/ └── ~/ └── docker/ └── seafile/ ├── .env ├── docker-compose.yml ``` ## Add to Caddyfile (from ~/docker/caddy) Remember to `docker exec -w /etc/caddy caddy caddy reload` after editing your Caddyfile. ``` subdomain.example.com { reverse_proxy seafile:80 } ``` # Things to Modify ## .env set your environment variables https://github.com/StarWhiz/docker_deployment_notes/blob/master/seafile/.env ``` # General MY_DOMAIN=example.com DOCKER_MY_NETWORK=caddy_net # Seafile Specific MYSQL_ROOT_PASSWORD=examplepassword SEAFILE_ADMIN_EMAIL=youremail # Specifies Seafile admin user. This is also your username SEAFILE_ADMIN_PASSWORD=examplepass # Specifies Seafile admin password. SEAFILE_HOSTNAME=subdomain.example.com ``` ## docker-compose.yml https://github.com/StarWhiz/docker_deployment_notes/blob/master/seafile/docker-compose.yml ``` version: '2.0' services: seafile-db: image: mariadb:10.1 container_name: seafile-db restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} # Requested, set the root's password of MySQL service. - MYSQL_LOG_CONSOLE=true volumes: - ~/docker/seafile/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store. memcached: image: memcached:1.5.6 container_name: seafile-memcached restart: unless-stopped entrypoint: memcached -m 256 seafile: image: seafileltd/seafile-mc:latest container_name: seafile restart: unless-stopped volumes: - ~/docker/seafile/seafile-data:/shared # Requested, specifies the path to Seafile data persistent store. environment: - DB_HOST=seafile-db - DB_ROOT_PASSWD=${MYSQL_ROOT_PASSWORD} # Requested, the value shuold be root's password of MySQL service. - TIME_ZONE=Etc/UTC # 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=false # Whether to use https or not. - SEAFILE_SERVER_HOSTNAME=${SEAFILE_HOSTNAME} # Specifies your host name if https is enabled. depends_on: - seafile-db - memcached networks: default: external: name: caddy_net ``` Notes for WebDAV You may need to add the following lines to your docker file if you plan on enabling WebDAV ``` ports: - "4173:4173" ``` After that you do this open this port on your firewall and redirect it to the Docker Host's IP with seafile running on it. ## docker-compose up -d After you have the .env and docker-compose files set up in this directory. Do a ```docker-compose up -d``` to start the containers. After they start modify seahub_settings.py and ccnet.conf as shown below. ## seahub_settings.py nano /home/~/docker/seafile/seafile-data/seafile/conf/seahub_settings.py Change FILE_SERVER_ROOT to be https instead of http. Example Below: ``` FILE_SERVER_ROOT = "https://subdomain.example.com/seafhttp" ``` ## ccnet.conf nano /home/~/docker/seafile/seafile-data/seafile/conf/ccnet.conf Change SERVICE_URL from http to https and remove the :8000 at the end. Example Below: ``` SERVICE_URL https://subdomain.example.com ``` # Optional: Setting Up WebDav ## Caddyfile ``` webdav.example.com { reverse_proxy seafile:80 } ``` Here I assigned a new subdomain webdav and point it to port 8080 which is the defualt on seafdav.conf ## seafdav.conf ``` nano /home/~/docker/seafile/seafile-data/seafile/conf/seafdav.conf ``` Set ```enabled=true``` Set ```share_name = /``` Remember to do a docker-compose restart and a caddy exec restart after modifying seafile conf files!