Convert to sdoc: internal server error

I’ve been trying to get the Seadoc integration working with Seafile 12 CE for what seems like weeks. Up until today, none of the Seadoc functions would work:

  • Wiki pages - Axios Error
  • Opening sdoc - internal server error
  • Convert docx (or Markdown) to sdoc - internal server error

Now, all but the conversion function works. I am running Single Node install on Unraid server since I had no luck integrating SeaDoc with the exisiting v12 CE template in the Unraid community apps store and I liked having the .env as the “source of truth” for variables used by the YAMLs.

I am not using Caddy but have an exisiting Nginx Proxy Manager instance stood up via docker on the same server. This is handling all SSL and reverse proxy on my home network. I managed to get this to work despite the multitude of reverse proxy problems I was running into due to the non-standard set up and just not having all of the correct configs set in NPM. But I’ve hit a brick wall with the conversion function. I have monitored logs, scoured the internet, read through the manual, and monitored dev tools in the browser to try to wrap my head around the issue. So far I’m coming up empty. So one thing I would like to confirm first of all is this: Does conversion feature of Seadoc require any other component outside of single node deployment? Like Libre Office, Collabra, etc? I want to ensure what I’m trying to do is actually supported before I spend anymore time on it.

The functions of Seadoc are neat and I’m excited to see future developments. My concern was being able to export/convert to a more widely used format as needed. Whether that be Markdown or .docx.

Here is a snippet for a Markdown.md to .sdoc conversion attempt from Chromium dev tools (domain name edited):

commons.97a1bd68.js:2  POST https://my.seafile.com/api/v2.1/repos/405d7115-5883-4b68-b0e0-c878d5b2ccb3/file/?p=%2FMarkdown.md 500 (Internal Server Error)
(anonymous) @ commons.97a1bd68.js:2
xhr @ commons.97a1bd68.js:2
xt @ commons.97a1bd68.js:2
value @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
p @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
r @ commons.97a1bd68.js:2
s @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
value @ commons.97a1bd68.js:2
value @ commons.97a1bd68.js:2
push.82818.n.onConvertItem @ app.c2e9f4e3.js:1
push.82818.n.onItemConvert @ app.c2e9f4e3.js:1
push.82818.n.onMenuItemClick @ app.c2e9f4e3.js:1
push.82818.n.onMobileMenuItemClick @ app.c2e9f4e3.js:1
push.68879.n.onClick @ commons.97a1bd68.js:2
ze @ commons.97a1bd68.js:2
Xe @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
xr @ commons.97a1bd68.js:2
Sr @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
Le @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
Mr @ commons.97a1bd68.js:2
Jt @ commons.97a1bd68.js:2
Qt @ commons.97a1bd68.js:2
(anonymous) @ commons.97a1bd68.js:2
Wo @ commons.97a1bd68.js:2
Re @ commons.97a1bd68.js:2
Zt @ commons.97a1bd68.js:2

Same message occurs when attempting a sdoc to docx conversion. Or any other conversion attempt within the Seafile UI.

I’m sure it has something to do with the NPM configuration, but I’ve run out of things to test or check due to my admittedly limited understanding.

Here is my Custom Nginx Config set inside the Proxy Host for Seafile in NPM:

    proxy_pass http://seadoc:7070/socket.io/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 3600;
    proxy_send_timeout 3600;
}

location /sdoc-server/ {
    proxy_pass http://seadoc:7070/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 3600;
    proxy_send_timeout 3600;
}

location /converter/ {
    proxy_pass http://seadoc:7070/converter/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 3600;
    proxy_send_timeout 3600;
}

Any help would be greatly appreciated!

I should also mention the ‘seadoc-converter.log’ doesn’t show anything amiss so seems the request to convert never reaches the back-end component for conversion:

[2025-08-10 09:44:50,589] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 09:57:56,021] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 10:21:21,429] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 10:58:25,052] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 11:02:13,445] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 14:45:03,553] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 15:05:26,228] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 18:32:18,294] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 19:12:33,944] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 19:32:45,887] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 19:40:42,261] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 19:49:43,808] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 20:03:28,710] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 20:27:27,072] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 20:37:43,633] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 20:51:14,931] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 21:02:02,836] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 21:06:21,358] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-10 21:14:10,606] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec
[2025-08-11 01:31:01,475] [INFO] root:20 start sdoc operation log cleaner is started, interval = 86400 sec

That tracks since I see the 500 error in the browser dev tools.
I also tried some different variations of conversion and export. If I choose an sdoc and select “export to docx” it will download an appropriately titled docx with the contents only being:

Cannot POST /converter/api/v1/sdoc-export-to-docx/

I’m just not sure what else to look into. Can NPM coexist as an external reverse proxy with Caddy as internal? Currently I have removed caddy.yaml from the .env per the documentation about using other reverse proxies. But I may have misunderstood some fundamental function.

From your error message, it is clearly a problem related to network setting.

I’m not familiar with NPM. So I cannot give much help on your case.

I agree 100%.

NPM is just a GUI for Nginx. And Seafile uses that at least in some capacity as is evident by the nginx.conf that shows up on the system after installing.

Ultimately trying to figure out how to either skip NPM entirely and use only Caddy for SSL and reverse proxy, but in my environment NPM is using ports 80 and 443. So Caddy can’t.

What’s strange to me is that Seafile can communicate with Seadoc server to create, open, and edit sdoc files. But can’t when trying to convert. That’s the part I can’t wrap my head around.

Answer: No other components required

Answer: NPM seemingly cannot communicate with seafile-net, period. At least on Unraid when NPM is set to use br0 network.

Predictably, all functions work perfectly when using http://seafile.example.com.