104 lines
3.1 KiB
Markdown
104 lines
3.1 KiB
Markdown
# 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 variables
|
|
- `seafile-server.yml` - Main Seafile + MariaDB + Redis
|
|
- `seadoc.yml` - SeaDoc server
|
|
- `seasearch.yml` - SeaSearch server
|
|
- `notification-server.yml` - Notification server
|
|
- `md-server.yml` - Metadata server
|
|
- `seahub_settings.py` - Seahub Python config (mounted into container)
|
|
|
|
## Deployment
|
|
|
|
```bash
|
|
cd /mnt/user/appdata/seafile
|
|
docker compose up -d
|
|
```
|
|
|
|
## Volumes
|
|
|
|
All data stored in `/mnt/user/appdata/seafile/`:
|
|
- `data/` - Seafile data and file storage
|
|
- `db-data/` - MariaDB database
|
|
- `seadoc-data/` - SeaDoc data
|
|
- `seasearch-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:8098`
|
|
- `notification.rishighan.com` → `192.168.1.75:8083`
|
|
|
|
## NPM Advanced Config for fileserver.rishighan.com
|
|
|
|
```nginx
|
|
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:
|
|
|
|
```bash
|
|
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.
|