You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.6 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 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!