Seafile Pro Stack
Seafile Pro 13.0.6 with SeaDoc, SeaSearch, Notification Server, and Metadata Server.
Important Notes
This stack uses Seafile's official multi-file compose setup. It cannot be deployed via Portainer's git-based stack deployment due to the COMPOSE_FILE variable combining multiple yml files.
Deployment method: Run from command line with docker compose up -d
Files
.env- All configuration variablesseafile-server.yml- Main Seafile + MariaDB + Redisseadoc.yml- SeaDoc serverseasearch.yml- SeaSearch servernotification-server.yml- Notification servermd-server.yml- Metadata serverseahub_settings.py- Seahub Python config (mounted into container)
Deployment
cd /mnt/user/appdata/seafile
docker compose up -d
Volumes
All data stored in /mnt/user/appdata/seafile/:
data/- Seafile data and file storagedb-data/- MariaDB databaseseadoc-data/- SeaDoc dataseasearch-data/- SeaSearch index
External Dependencies
- OnlyOffice - Running in documents stack at
https://office.rishighan.com - NPM Proxy Hosts:
fileserver.rishighan.com→192.168.1.75:8098notification.rishighan.com→192.168.1.75:8083
NPM Advanced Config for fileserver.rishighan.com
location / {
proxy_pass http://192.168.1.75:8098;
proxy_read_timeout 310s;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "upgrade";
client_max_body_size 0;
}
rewrite ^/seafdav$ /seafdav/ permanent;
location /sdoc-server/ {
proxy_pass http://192.168.1.75:8888/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
client_max_body_size 100m;
}
location /socket.io {
proxy_pass http://192.168.1.75:8888;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_redirect off;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
OnlyOffice JWT
The JWT secret must match between seahub_settings.py and OnlyOffice's /etc/onlyoffice/documentserver/local.json. Check with:
docker exec onlyoffice cat /etc/onlyoffice/documentserver/local.json | grep -A2 '"secret"'
Troubleshooting
"Commit is missing" errors
The seafile data wasn't fully transferred. Re-rsync with proper permissions from source.
OnlyOffice "document security token" error
JWT secret mismatch. Update ONLYOFFICE_JWT_SECRET in seahub_settings.py to match OnlyOffice config.
Search returns 500 error
Check if SeaSearch is accessible: docker exec seafile curl -s http://seafile-seasearch:4080
Check database for missing .ibd files in mysql logs.