Hello! I had this exact same issue in the past couple of days. Like many, I made sure my SERVICE_URL & FILE_SERVER_ROOT were correct in seahub_settings.py
and it still made no difference. I threw a lot of stuff at the wall, from trying different reverse proxies & configurations to meddling with the seahub_db
database (constance_config
table). Nothing worked. Until…
…I modified relevant config .yml files to change any environment
fallback protocol lines from using http to using https.
For instance, in seafile-server.yml
, one of the environment
items sets the SEADOC_SERVER_URL, and one sees this default substitution as part of the value:
${SEAFILE_SERVER_PROTOCOL:-http}
Instead, add an “s” there so you have:
${SEAFILE_SERVER_PROTOCOL:-https}
So, in any of the accepted user-configurable .yml files, for any environment
value where you see the above pattern, add that “s”. But ONLY in an environment
section, not in, say, a labels
section that deals with Caddy labels. For me, that meant modifying both seafile-server.yml
& seadoc.yml
and that was it. After that, BOOM! 
Lastly, for completeness, I should note that in my .env
file, I removed the SEAFILE_SERVER_PROTOCOL
line but left my SEAFILE_SERVER_HOSTNAME
in there. I would need to dig into the source to figure out all of the pieces in play here and why these changes got it working, but in the short term, I hope it works for you.
UPDATE: I just noticed that I actually removed both SERVICE_URL & FILE_SERVER_ROOT from seahub_settings.py
and file uploads via the web interface are still working. I am guessing that that removal wasn’t advisable, but I am assuming that the default falls back to my SEAFILE_SERVER_HOSTNAME in my .env
file anyway.