Hi everyone,
I’m running Seafile Pro 12 with OnlyOffice and everything works smoothly — except SeaDoc, which I really need for the Wiki functionality. I suspect the issue is small but can’t seem to locate it. I’m using Plesk with Nginx, not Caddy.
Here’s my setup and what I’ve tried so far:
Docker Setup:
version: '3.7'
services:
seafilepro-mysql:
image: mariadb:10.11
container_name: seafilepro-mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD}
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- ${SEAFILE_MYSQL_VOLUME}:/var/lib/mysql
networks:
- seafilepro-net
seafilepro-memcached:
image: memcached:1.6.29
container_name: seafilepro-memcached
restart: always
command: ["memcached", "-m", "256", "-vv"]
networks:
- seafilepro-net
seafilepro-seasearch:
image: ${SEASEARCH_IMAGE}
container_name: seafilepro-seasearch
restart: always
environment:
- SS_STORAGE_TYPE=disk
- SS_DATA_PATH=/seasearch-data
volumes:
- ${SS_DATA_PATH}:/seasearch-data
ports:
- "8085:8080"
networks:
- seafilepro-net
seafilepro-notification:
image: ${NOTIFICATION_SERVER_IMAGE}
container_name: seafilepro-notification
restart: always
volumes:
- ${NOTIFICATION_SERVER_VOLUME}:/notification-data
- ${SEAFILE_VOLUME}:/shared
networks:
- seafilepro-net
seafilepro-seadoc:
image: ${SEADOC_IMAGE}
container_name: seafilepro-seadoc
restart: always
environment:
- SEAFILE_SERVER=http://seafilepro-core:8081
- SEADOC_SERVER_NAME=seadoc
- SEADOC_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD}
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY}
- TIME_ZONE=${TIME_ZONE}
volumes:
- ${SEADOC_VOLUME}:/seadoc-data
ports:
- "8888:8888"
networks:
- seafilepro-net
seafilepro-core:
image: ${SEAFILE_IMAGE}
container_name: seafilepro-core
restart: always
environment:
- DB_HOST=seafilepro-mysql
- DB_PORT=3306
- DB_USER=${SEAFILE_MYSQL_DB_USER}
- DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD}
- DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD}
- SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL}
- SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD}
- SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME}
- SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL}
- MEMCACHED_HOST=seafilepro-memcached
- SITE_ROOT=/
- NON_ROOT=${NON_ROOT:-false}
- TIME_ZONE=${TIME_ZONE}
- ENABLE_SEADOC=true
- SEADOC_SERVER_URL=https://my.subdomain.com/sdoc-server
- ENABLE_SEARCH=true
- SEARCH_SERVER_URL=http://localhost:8085
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY}
- ENABLE_ONLYOFFICE=true
- ONLYOFFICE_APIJS_URL=https://my.subdomain.com/web-apps/apps/api/documents/api.js
- ONLYOFFICE_FILE_EXTENSION=doc,docx,ppt,pptx,xls,xlsx,odt,fodt,odp,fodp,ods,fods,csv,ppsx,pps
- ONLYOFFICE_JWT_SECRET=SECRETKEY
depends_on:
- seafilepro-mysql
- seafilepro-memcached
volumes:
- ${SEAFILE_VOLUME}:/shared
ports:
- "8081:80"
networks:
- seafilepro-net
networks:
seafilepro-net:
name: seafilepro-net
ENVs:
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:12.0-latest
SEASEARCH_IMAGE=seafileltd/seasearch:0.9-latest
SEADOC_IMAGE=seafileltd/sdoc-server:1.0-latest
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:12.0-latest
SEAFILE_VOLUME=/srv/docker/seafilepro/seafile-data
SEAFILE_MYSQL_VOLUME=/srv/docker/seafilepro/mysql
SEADOC_VOLUME=/srv/docker/seafilepro/seadoc-data
NOTIFICATION_SERVER_VOLUME=/srv/docker/seafilepro/notification-data
SS_DATA_PATH=/srv/docker/seafilepro/seasearch-data
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=PASSWORD
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=ROOTPASSWORD
SEAFILE_SERVER_HOSTNAME=my.subdomain.com
SEAFILE_SERVER_PROTOCOL=https
TIME_ZONE=Europe/Berlin
JWT_PRIVATE_KEY=KEY
INIT_SEAFILE_ADMIN_EMAIL=MAILADDRESS
INIT_SEAFILE_ADMIN_PASSWORD=PASSWORD
SEAFILE_CADDY_VOLUME=/srv/docker/seafilepro/caddy
Nginx Setup:
Default seafile.nginx.conf (auto-generated):
I’m not sure if this is used at all, since I configure everything through Plesk.
location /sdoc-server/ {
proxy_pass http://seafilepro-seadoc:8084;
...
}
location /socket.io {
proxy_pass http://seafilepro-seadoc:8084;
...
}
Plesk Additional Nginx Directives (active):
location /sdoc-server/ {
proxy_pass http://127.0.0.1:8888/;
proxy_set_header Host $host;
...
}
location /socket.io {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
...
}
Current Issues:
- When accessing a SeaDoc link or trying to open a Wiki page, I get errors (Axiom, 403)
- Direct call to subdomain.com - Subdomain.com
- Was returning 403 Forbidden.
- Now returns 502 Bad Gateway (probably due to testing changes).
- SeaDoc never responded with version info or a valid page, always forbidden.
Key Questions
- Is it correct that Plesk’s Nginx directives override the default seafile.nginx.conf inside the container? That’s how I understood it.
- Is http://127.0.0.1:8888 the correct way to reach the seadoc container from the host (Plesk perspective)?
- Do I need to set an extra hostname or domain rule inside the container itself (like in Caddy)?
- Is the SeaDoc port maybe wrong? Should I expose 8084 as well?
What I Want to Achieve:
- Seamless SeaDoc integration with Seafile Pro 12.
- Ability to open and edit Wiki pages.
- See a valid response when accessing /sdoc-server/ from browser.
Any help or ideas are very appreciated
Thanks a lot in advance!