4.5 KiB
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
}
.env
set your environment variables
# 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
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, ccnet.conf, and maybe gunicorn.conf.py (if you have connnection refused issues) as shown below.
seahub_settings.py
sudo nano ~/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
sudo nano ~/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
gunicorn.conf.py
sudo nano ~/docker/seafile/seafile-data/seafile/conf/gunicorn.conf.py
According to @DemoniWaari #3 you may need to change the default bind = "127.0.0.1:8000"
to bind = "0.0.0.0:8000"
if you get a connection refused error.
Optional: seafile.conf - changing upload file size limit
You can change your upload size limits by editing max_upload_size=1000
seafile.conf... The number is in GBs
sudo nano ~/docker/seafile/seafile-data/seafile/conf/seafile.conf
Optional: Setting Up WebDav
Caddyfile
webdav.example.com {
reverse_proxy seafile:8080
}
Here I assigned a new subdomain webdav and point it to port 8080 which is the defualt on seafdav.conf
seafdav.conf
nano ~/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!
Maintainance - Freeing Space
When you delete files in seafile and empty trash in the web UI, it doesn't free up space on your server. After emptying trash in the webUI you should run the garbage collector w/ the command below to free up space.
docker exec seafile /scripts/gc.sh