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
- Add a website for
files.example.comwith Let's Encrypt SSL enabled. - 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.