Hello everyone,
I am having problem setting up seadoc using podman. I know that seafile does not officially support podman, but I prefer it over docker even though I am by no means an expert and try to learn.
My setup is the following:
All my services run behind a caddy reverse proxy on a rented vps which then uses wireguard to tunnel into my home server where my applications a running.
The seafile server (version 13) runs inside a pod which also has a redis cache container, a mariadb database container and the seafile-notification container running inside the same pod. This work without any problems up until now, and I am very happy with it. At first, I wanted to just seadoc into the same pod, but seafile and seadoc both have a web server running which both will try to bind on the port 80 inside the container and therefore this was not possible. Now I try to run seadoc in a separate container and just talk to the seafile pod via the podman network.
When I try to open a file inside the seafile web interface I get the following error:
Load doc content error
I already tried to trouble shoot using Gemini, Copilot and Claude, but I somehow can not get things to work. My guess is that either there is a handshake problem between seafile and seadoc or maybe seadoc can not connect to some of the other containers. I will add my caddyfile and my quadlet files:
seafile.domain.ch {
handle /seafdav/* {
reverse_proxy 10.10.0.2:6233
}
handle /sdoc-server/* {
reverse_proxy 10.10.0.2:6232
}
handle /socket.io/* {
reverse_proxy 10.10.0.2:6232 {
header_up Connection {http.request.header.Connection}
header_up Upgrade {http.request.header.Upgrade}
}
}
handle /seafhttp/* {
reverse_proxy 10.10.0.2:8082
}
handle /notification/* {
reverse_proxy 10.10.0.2:6234 {
header_up Connection {http.request.header.Connection}
header_up Upgrade {http.request.header.Upgrade}
}
}
reverse_proxy 10.10.0.2:8088 {
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
header_up X-Forwarded-Host {host}
}
}
[Pod]
PodName=seafile
PublishPort=8088:80 #seafile-server
PublishPort=6233:8080 #webdav
PublishPort=6234:8083 #notifications
PublishPort=8082:8082 #fileserver
PublishPort=3306:3306 #mariadb
PublishPort=6379:6379 #redis
[Service]
Restart=always
[Install]
WantedBy=default.target
[Unit]
Description=Seafile Server (Community Edition)
After=seafile-db.service seafile-redis.service
Requires=seafile-pod.service seafile-db.service seafile-redis.service
[Container]
ContainerName=seafile-server
Image=docker.io/seafileltd/seafile-mc:13.0-latest
Pod=seafile.pod
Label=io.containers.autoupdate=registry
EnvironmentFile=/etc/containers/systemd/seafile.env
Volume=/mnt/storage/seafile/data:/shared:Z
[Service]
Restart=on-failure
TimeoutStartSec=300
[Install]
WantedBy=default.target
[Unit]
Description=Seafile SeaDoc Server
[Container]
ContainerName=seafile-seadoc
Image=docker.io/seafileltd/sdoc-server:2.0-latest
PublishPort=6232:7070
Label=io.containers.autoupdate=registry
EnvironmentFile=/etc/containers/systemd/seafile.env
Environment=SEAFILE_MYSQL_DB_HOST=10.88.0.1:3306
Environment=REDIS_HOST=10.88.0.1:6379
Environment=SEAHUB_SERVICE_URL=https://seafile.domain.ch
Volume=/mnt/storage/seafile/sdoc:/shared:Z
[Service]
Restart=on-failure
TimeoutStartSec=120
[Install]
WantedBy=default.target
[Unit]
Description=Seafile MariaDB Database
After=seafile-pod.service
Requires=seafile-pod.service
[Container]
ContainerName=seafile-db
Image=docker.io/mariadb:lts
Pod=seafile.pod
Label=io.containers.autoupdate=registry
Volume=/mnt/storage/seafile/db:/var/lib/mysql:Z
EnvironmentFile=/etc/containers/systemd/seafile.env
Environment=MARIADB_ROOT_PASSWORD=password
Environment=MYSQL_INITDB_SKIP_TZINFO=1
Environment=MYSQL_LOG_CONSOLE=true
Environment=MARIADB_AUTO_UPGRADE=1
HealthCmd=healthcheck.sh --connect --innodb_initialized
HealthInterval=20s
HealthRetries=10
HealthTimeout=5s
HealthStartPeriod=30s
Notify=healthy
[Service]
Restart=on-failure
[Install]
WantedBy=default.target
[Unit]
Description=Seafile Redis Cache
After=seafile-pod.service
Requires=seafile-pod.service
[Container]
ContainerName=seafile-redis
Image=docker.io/redis:7-alpine
Pod=seafile.pod
Label=io.containers.autoupdate=registry
HealthCmd=redis-cli ping || exit 1
HealthInterval=10s
HealthRetries=5
Notify=healthy
[Service]
Restart=on-failure
[Install]
WantedBy=default.target
[Unit]
Description=Seafile Notification Server
After=seafile-server.service
Requires=seafile-pod.service
[Container]
ContainerName=seafile-notification
Image=docker.io/seafileltd/notification-server:13.0-latest
Pod=seafile.pod
Label=io.containers.autoupdate=registry
EnvironmentFile=/etc/containers/systemd/seafile.env
Volume=/mnt/storage/seafile/data/seafile/logs:/shared/seafile/logs:Z
[Service]
Restart=on-failure
[Install]
WantedBy=default.target
The Environment file:
TIME_ZONE=Europe/Somewhere
SEAFILE_SERVER_HOSTNAME=seafile.domain.ch
SEAFILE_SERVER_PROTOCOL=https
JWT_PRIVATE_KEY=key
# ─── Datenbank ────────────────────────────────────────────────────────────────
# Im Pod kommunizieren alle Container über localhost
SEAFILE_MYSQL_DB_HOST=127.0.0.1
SEAFILE_MYSQL_DB_PORT=3306
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=password
# Nur beim allerersten Start benötigt:
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=password
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
# ─── Cache (Redis) ────────────────────────────────────────────────────────────
CACHE_PROVIDER=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
# ─── Admin-Account (nur Erstinstallation) ─────────────────────────────────────
INIT_SEAFILE_ADMIN_EMAIL=name@protonmail.com
INIT_SEAFILE_ADMIN_PASSWORD=password
# ─── SeaDoc ───────────────────────────────────────────────────────────────────
ENABLE_SEADOC=true
SEADOC_SERVER_URL=https://seafile.domain.ch/sdoc-server
SEADOC_VOLUME=/mnt/storage/seafile/sdoc
I would be very grateful if someone could help me to get this to work. There can not be much missing. All container run and I can ping seadoc from the seafile container and I can pink seafile from the seadoc container and seafile works fine.
Thank you in advance.