Table of Contents

Installation

Seafile Professional Edition

See below for the community edition installation instructions.

As of 2021-08-09, Seafile provides a free 3-seat professional edition, which only requires an account registration at their customer center. Head over to the downloads page to retrieve either:

Note the 4 core and 4GB RAM requirement.


Seafile Community Edition

Contrary to expectations online, setup was pretty easy, and it helps to have a tailored user guide. This is facilitated by the docker-compose.yml initialization file to set the service up pretty smoothly.

Download the docker-compose.yml file from the Seafile servers (which in turn is specified in the server installation manual). This file looks something like the file below, retrieved on 2021-06-27, noting the parts you'll need to change:

docker-compose.yml
version: '2.0'
services:
  db:
    image: mariadb:10.5
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=RER63IZQ8hUTdeo  # change me
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql
    networks:
      - seafile-net

  memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc:latest
    container_name: seafile
    ports:
      - "3100:80"
    volumes:
      - /opt/seafile-data:/shared
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=RER63IZQ8hUTdeo  # change me, same as MySQL root password
      - TIME_ZONE=Asia/Singapore
      - SEAFILE_ADMIN_EMAIL=myemail@example.com  # change to preferred email address
      - SEAFILE_ADMIN_PASSWORD=myfancypassword  # change to preferred admin password
      - SEAFILE_SERVER_LETSENCRYPT=false
      - SEAFILE_SERVER_HOSTNAME=cloud.pyuxiang.com  # change to server address
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

In the same directory, run docker-compose up -d to pull the images and create the required containers. Setup will be complete when the log message "Seahub is started. Done." shows up in docker logs seafile.

Ensure that the nginx or your preferred webserver redirects to the exposed port, and then use certbot to get the HTTPS certificate in.

server {
    listen 80;
    listen [::]:80;
    server_name cloud.pyuxiang.com;  # change me
    location / {
        proxy_pass http://127.0.0.1:3100;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Once done, the Seafile GUI will appear when accessing the subdomain:

Additional information configuration step: Change the protocol of the service headers from http to https under the system administration settings page. This will avoid blocking of uploads/downloads due to the mixed content policies of web browsers (i.e. serving HTTP content while in a HTTPS connection).