Updated: 28 September 2026 · Applies to: Seafile 13 (Docker) with ISPConfig 3.2+

Seafile 6.3 and ISPConfig 3.1 are outdated. Seafile (current version 13) is now installed with Docker. On an ISPConfig server, run Seafile in Docker and let an ISPConfig website forward requests to it.

Note: Seafile needs its own memory and disk space. For many users or large amounts of files, run it on a separate VPS.

1. Install Docker

See "How to install Docker on a VPS?".

2. Get Seafile's compose files

mkdir /opt/seafile && cd /opt/seafile
wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env
wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml

3. Configure

In .env, set at least SEAFILE_SERVER_HOSTNAME (for example files.example.com), SEAFILE_SERVER_PROTOCOL=https, SEAFILE_MYSQL_DB_PASSWORD, JWT_PRIVATE_KEY (a random string of at least 32 characters), INIT_SEAFILE_ADMIN_EMAIL and INIT_SEAFILE_ADMIN_PASSWORD.

Because ISPConfig's web server already uses ports 80 and 443, do not use the bundled Caddy proxy: remove caddy.yml (and seadoc.yml, the optional online document editor, unless you also proxy it) from COMPOSE_FILE in .env and publish Seafile on a local port (for example 127.0.0.1:8000:80 in seafile-server.yml), as described in Seafile's manual under "Use other reverse proxy".

docker compose up -d

4. Create the website in ISPConfig

  1. Add a website for files.example.com with Let's Encrypt SSL enabled.
  2. On its Options tab, add Apache directives that forward everything to Seafile:
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
RequestHeader set X-Forwarded-Proto "https"

Enable the Apache modules once with a2enmod proxy proxy_http headers && systemctl reload apache2. Then open https://files.example.com and log in with the admin account from .env.

Ucartz services for this topic

Was this answer helpful? 10 Users Found This Useful (30 Votes)