(SOLVED) Seafile12 CE is running - using portainer

Running Debian12 latest, portainer latest, seafile latest
Need help

  • how to access seafile?
  • how to check and/or adjust ports for seafile, this is not in .env?
  • not using caddy can I activate letsencrypt , this is not in .env?

Sequence:

  • added port forwarding for 80 and 443 for my local IP 192.168.2.100
  • DynDNS is properly connected
  • Installed seafile on a separate partition.
  • Deployed the seafile-server.yml using my adjusted .env. (see .env below) Seems all is OK, in portainer all 3 container created for seafile on green but cannot access seafile.
  • Tried http/https local ip:80/8000/443 also dyndns address → nothing!
  • Checked seafile gui and tried re-installation → says already here
  • Checked folders created by seafile → looks perfect
  • OK, system restart → portainer shows the 3 container on red
  • started container in portainer manuelly → no problem all green
  • Problem persist cannot access seafile

my .env

COMPOSE_FILE='seafile-server.yml'
COMPOSE_PATH_SEPARATOR=','

SEAFILE_IMAGE=seafileltd/seafile-mc:12.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_MEMCACHED_IMAGE=memcached:1.6.29

SEAFILE_VOLUME=/media/boris/seadata/seafile-data
SEAFILE_MYSQL_VOLUME=/media/boris/seadata/seafile-mysql/db
SEAFILE_CADDY_VOLUME=/media/boris/seadata/seafile-caddy

SEAFILE_MYSQL_DB_HOST=db
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=xxx
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=xxx

TIME_ZONE=Europe/Berlin

JWT_PRIVATE_KEY=xxx

SEAFILE_SERVER_HOSTNAME=share.stdat.selfhost.co
SEAFILE_SERVER_PROTOCOL=https

INIT_SEAFILE_ADMIN_EMAIL=my@mail.com
INIT_SEAFILE_ADMIN_PASSWORD=xxx

NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:12.0-latest
NOTIFICATION_SERVER_VOLUME=/media/boris/seadata/notification-data

This is portainer:

and this seafile.conf

[fileserver]
port = 8082

[database]
type = mysql
host = db
port = 3306
user = seafile
password = xxx
db_name = seafile_db
connection_charset = utf8
  1. Can you look into the logs of the Seafile container in Portainer?
    Is the server fully started?

  2. Do you use any proxy-manager?

  3. I added

    ports:
      - "8900:80"

to my seafile-container part in the compose file, so i can open the site with:

http://local-ip-of-the-server:8900

You can also use NginxProxyManager to forward https-requests to

seafile:80(seafile and ProxyManager need shared docker-network)
or
local-ip-of-the-server:8900

When I check the log in Portainer, what shows me if properly running or not, any specific message you are interested in?
I don’t use any proxy nor Nginx, wouldn’t really know how to use such tools.
So you mean I should use a different port for 80 in the compose file, and edit and deploy the stack again?
When using 8900 should that also added in my router for port forwarding?
I selected https in the .env will that change the way I need to access?
Can I and how add something for let’s encrypt in the compose file cause used https in .env?
Thanks

Have a look in your install dir from seafile, inside seafile-data is a dir “nginx” and check the settings in the nginx.conf

Yes is there, but why I removed it from .env cause I thought don´t need this - and I have no glue how to use.
Is it running, how to check and does it need any further activity from myside?
OK this is the conf

# -*- mode: nginx -*-
# Auto generated at 03/18/2025 19:06:40
server {
listen 80;
server_name share.stdat.selfhost.co;

    client_max_body_size 10m;

    location / {
        proxy_pass http://127.0.0.1:8000/;
        proxy_read_timeout 310s;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Connection "";
        proxy_http_version 1.1;

        client_max_body_size 0;
        access_log      /var/log/nginx/seahub.access.log seafileformat;
        error_log       /var/log/nginx/seahub.error.log;
    }

    location /seafhttp {
        rewrite ^/seafhttp(.*)$ $1 break;
        proxy_pass http://127.0.0.1:8082;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 0;
        proxy_read_timeout  36000s;

        access_log      /var/log/nginx/seafhttp.access.log seafileformat;
        error_log       /var/log/nginx/seafhttp.error.log;
    }

    location /notification/ping {
        proxy_pass http://127.0.0.1:8083/ping;
        access_log      /var/log/nginx/notification.access.log seafileformat;
        error_log       /var/log/nginx/notification.error.log;
    }

    location /notification {
        proxy_pass http://127.0.0.1:8083/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        access_log      /var/log/nginx/notification.access.log seafileformat;
        error_log       /var/log/nginx/notification.error.log;
    }

    location /seafdav {
        rewrite ^/seafdav$ /seafdav/ permanent;
    }

    location /seafdav/ {
        proxy_pass         http://127.0.0.1:8080/seafdav/;
        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;
        proxy_read_timeout  1200s;
        client_max_body_size 0;

        access_log      /var/log/nginx/seafdav.access.log seafileformat;
        error_log       /var/log/nginx/seafdav.error.log;
    }

    location /:dir_browser {
        # Logo of WebDAV
        proxy_pass         http://127.0.0.1:8080/:dir_browser;
    }

    location /media {
        root /opt/seafile/seafile-server-latest/seahub;
    }

}

OK log looks good but what is that beast doing :slight_smile:
I deleted caddy entries from .env. but is there, right.
Also nginx is created. Is that all necessary? I don´t know how to handle that:

What confuses me I can see in the log:
port of seafile fileserver: 8082
port of seahub: 8000
I selected https in the .env so I expected 443, right?

This the portainer log for the seafile container:

   ccnet database:         ccnet_db

    seafile database:       seafile_db

    seahub database:        seahub_db

    database user:          seafile

Generating seafile configuration ...

done

Generating seahub configuration ...

----------------------------------------

Now creating seafevents database tables ...

----------------------------------------

----------------------------------------

Now creating ccnet database tables ...

----------------------------------------

----------------------------------------

Now creating seafile database tables ...

----------------------------------------

----------------------------------------

Now creating seahub database tables ...

----------------------------------------

creating seafile-server-latest symbolic link ...  done

-----------------------------------------------------------------

Your seafile server configuration has been finished successfully.

-----------------------------------------------------------------

run seafile server:     ./seafile.sh { start | stop | restart }

run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }

-----------------------------------------------------------------

If you are behind a firewall, remember to allow input/output of these tcp ports:

-----------------------------------------------------------------

port of seafile fileserver:   8082

port of seahub:               8000

When problems occur, Refer to

        https://download.seafile.com/published/seafile-manual/home.md

for information.

[2025-03-18 19:06:42] Updating version stamp

Starting seafile server, please wait ...

Seafile server started

Done.

Starting seahub at port 8000 ...

----------------------------------------

Successfully created seafile admin

----------------------------------------

Seahub is started

Done.

*** Shutting down /scripts/enterpoint.sh (PID 17)...

*** Shutting down runit daemon (PID 16)...

*** Running /etc/my_init.post_shutdown.d/10_syslog-ng.shutdown...

*** Init system aborted.

*** Killing all processes...

*** Running /etc/my_init.d/01_create_data_links.sh...

*** Booting runit daemon...

*** Runit started as PID 21

*** Running /scripts/enterpoint.sh...

2025-03-18 20:21:42 Nginx ready 

2025-03-18 20:21:42 This is an idle script (infinite loop) to keep container running. 

[2025-03-18 20:21:53] Skip running setup-seafile-mysql.py because there is existing seafile-data folder.

Starting seafile server, please wait ...

Seafile server started

Done.

Starting seahub at port 8000 ...

Seahub is started

Done.

Cause I see seehub on port 8000 i have added this to my port forwarding.

  • Trying to reach it localy myIP:8000 I am getting “not found”
  • When I try to reach it with mydyndns:8000 I am getting the answer
    image

and when scrolling through the nginc.conf I can see two entries with 8080, this is already used by my openhab installation.
Is this NGinx running or just a file created in case I would use it?
location /seafdav/ {
proxy_pass http://127.0.0.1:8080/seafdav/;
location /:dir_browser {
# Logo of WebDAV
proxy_pass http://127.0.0.1:8080/:dir_browser;

It is running !!!

I have just added to the compose file
ports:
- “8900:80”
and it is running locally

added 8020 to my port forwarding router settings
and it is running via DynDNS

So far so good

  • Do I need to change something for this NGinx or caddy things or leave it like it is?
  • Do I need to change any other port settings for this message syncing with clients?

Thanks a lot

Trouble again!
After changing the port settings I redeployed seafile
I am selecting “latest” so it took 12.0.11 (before 12.0.10)
I don´t want reverse proxy neither caddy nor nginx.
Please how to change the setup to get rid of these?

After restart of router and seafile server my access is gone!
It looks like my network is messed up.
I only port forwarded 8020 what i am also using in the compose file (8020:80)
When starting openhab remote - Nothing!
When starting wireguard on my mobile - No access to internet!
This is nothing I really need!

Quite sure this nginx, I don´t want that peace of trouble at all, can I remove that - I don´t understand so I don´t want that.
When trying to access seafile via my DynDns:
I am getting a message “502 Bad gateway - Nginx”
When trying to reach locally:

This site can’t provide a secure connection

192.168.2.100 sent an invalid response.
ERR_SSL_PROTOCOL_ERROR

Seafile container log:
waiting for mysql server to be ready: mysql is not ready

Please help

As far as I understand the structure you need nginx to be able to use seafile, without it I don’t think it works

That is driving me nuts

I have no idea but cause I changed the ports to 8020:80
I just edited the seafile.nginx.conf
from listen to 80 to listen to 8020

redeployed seafile completely → still no access
still the seafile log with:
waiting for mysql server to be ready: mysql is not ready

will change it back to 80, waiting for some support from you guys to bring the nginx in a working state

Now stopped the containers, deleted all, changed 8020:80 to 8099:80
adjusted router port forwarding
created all from scratch
deployed running all green
mysql server is now running as well but

Result same as at the beginning → no access

Would use a nginx proxy manager docker container with simple docker compose. This will allow you to use ssl certificates for your DynDNS. If not, you are sending your passwords unencrypted over the Internet, which you certainly don’t want.


NGINX Proxy Manager
You can find docker compose here:

Default admin user:

Email: admin@example.com
Password: changeme

Details
Scheme: http
Forward Hostname: local-ip
Forward Port:

  • 80 (if you take the ip of the seafile container)
  • or 8099 (if you use the local ip of the server)

If the Nginx proxy manager and the seafile container share a network, you can use: seafile:80 for the location and port.


SSL
Certificate: Reqeuest a new…
Force SSL: On
HTTP/2 Support: On


Advanced

client_max_body_size 0;
proxy_max_temp_file_size 0;

Now you can only portforward port 443 in your router and join with your DynDNS-adress.

You need to provide logs

Oh heavy stuff for me :slight_smile: some questions:

  1. Why will that solve my trouble with the ports?
  2. When applied is the 8099:80 port assignment in the seafile-compose still be required?
  3. No need to change something for “Quick Setup”?
  4. In Details: You are describing Scheme: http and 80 or 8099
    Is this for the router port forwarding, or is this for Nginx manager?
    To mention: I did choose https in the .env is this contradicting?
    I realized ports 80 and 443 are somehow open for my Telekom router by default (SpeedportSmart3) do I still need to forward?
    Yes, same network all running on my ThinClient but what do you mean with seafile:80 where to use?
  5. SSL and Advanced is that what I need to check/change in the Nginx manager?
  6. Do I still need to portforward 443, when this seems to be open by default, or is this specifically 443 to my local IP?
  7. Is that Nginx, Letsencrypt, seafile setup somehow impacting the rest of my network?
    Asking cause I realized that I suddenly cannot access my Openhab remotely anymore. OH is also running on the same machine. Openhab locally is using port 8080 but I don´t know what the Android Openhab app is using.
    Error message is like check the SSL certificate and assure that the server is using basic authentification … therefore I think this is something with that Nginx on that machine, right?

Also trouble with my Wireguard connection served on the Telekom router, I cannot access local network when activating Wireguard on my mobile phone to my Router anymore!

  1. One thing remains, what with that Nginx folder and conf created by seafile setup, ignore?

Thanks a lot

Can you share your latest .env and seafile-server.yml as for me started ot of the box

Sure, more or less all standard

.env file

COMPOSE_FILE='seafile-server.yml'
COMPOSE_PATH_SEPARATOR=','

SEAFILE_IMAGE=seafileltd/seafile-mc:12.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_MEMCACHED_IMAGE=memcached:1.6.29

SEAFILE_VOLUME=/media/boris/seadata/seafile-data
SEAFILE_MYSQL_VOLUME=/media/boris/seadata/seafile-mysql/db
SEAFILE_CADDY_VOLUME=/media/boris/seadata/seafile-caddy

SEAFILE_MYSQL_DB_HOST=db
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=xxx
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=xxx

TIME_ZONE=Europe/Berlin

JWT_PRIVATE_KEY=xxx

SEAFILE_SERVER_HOSTNAME=dyndns
SEAFILE_SERVER_PROTOCOL=https

INIT_SEAFILE_ADMIN_EMAIL=xxx
INIT_SEAFILE_ADMIN_PASSWORD=xxx

NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:12.0-latest
NOTIFICATION_SERVER_VOLUME=/media/boris/seadata/notification-data

compose file

services:
  db:
    image: ${SEAFILE_DB_IMAGE:-mariadb:10.11}
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
      - MYSQL_LOG_CONSOLE=true
      - MARIADB_AUTO_UPGRADE=1
    volumes:
      - "${SEAFILE_MYSQL_VOLUME:-/opt/seafile-mysql/db}:/var/lib/mysql"
    networks:
      - seafile-net
    healthcheck:
      test:
        [
          "CMD",
          "/usr/local/bin/healthcheck.sh",
          "--connect",
          "--mariadbupgrade",
          "--innodb_initialized",
        ]
      interval: 20s
      start_period: 30s
      timeout: 5s
      retries: 10

  memcached:
    image: ${SEAFILE_MEMCACHED_IMAGE:-memcached:1.6.29}
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net

  seafile:
    image: ${SEAFILE_IMAGE:-seafileltd/seafile-mc:12.0-latest}
    container_name: seafile
    ports:
      - "8099:80"
    volumes:
      - ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
    environment:
      - DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
      - DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
      - DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
      - DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
      - DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
      - SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
      - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
      - SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db}
      - TIME_ZONE=${TIME_ZONE:-Etc/UTC}
      - INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com}
      - INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD:-asecret}
      - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      - SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http}
      - SITE_ROOT=${SITE_ROOT:-/}
      - NON_ROOT=${NON_ROOT:-false}
      - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
      - SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
      - ENABLE_SEADOC=${ENABLE_SEADOC:-true}
      - SEADOC_SERVER_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}/sdoc-server
    labels:
      caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      caddy.reverse_proxy: "{{upstreams 80}}"
    depends_on:
      db:
        condition: service_healthy
      memcached:
        condition: service_started
    networks:
      - seafile-net

networks:
  seafile-net:
    name: seafile-net

seafile container log in portainer says

waiting for mysql server to be ready: mysql is not ready

and I just noticed the log for mysql container in portainer says

2025-03-20 10:56:40 0 [Note] Starting MariaDB 10.11.11-MariaDB-ubu2204 source revision e69f8cae1a15e15b9e4f5e0f8497e1f17bdc81a4 server_uid P7onuM2VlZNKJXtq/pXb0Hd2mIE= as process 1

2025-03-20 10:56:40 0 [Note] InnoDB: Compressed tables use zlib 1.2.11

2025-03-20 10:56:40 0 [Note] InnoDB: Number of transaction pools: 1

2025-03-20 10:56:40 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions

2025-03-20 10:56:40 0 [Note] mariadbd: O_TMPFILE is not supported on /tmp (disabling future attempts)

2025-03-20 10:56:40 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 1

2025-03-20 10:56:40 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF

2025-03-20 10:56:40 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB

2025-03-20 10:56:40 0 [Note] InnoDB: Completed initialization of buffer pool

2025-03-20 10:56:40 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)

2025-03-20 10:56:40 0 [Note] InnoDB: End of log at LSN=1107448

2025-03-20 10:56:40 0 [Note] InnoDB: 128 rollback segments are active.

2025-03-20 10:56:40 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...

2025-03-20 10:56:40 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.

2025-03-20 10:56:40 0 [Note] InnoDB: log sequence number 1107448; transaction id 801

2025-03-20 10:56:40 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool

2025-03-20 10:56:40 0 [Note] Plugin 'FEEDBACK' is disabled.

2025-03-20 10:56:40 0 [Warning] You need to use --log-bin to make --expire-logs-days or --binlog-expire-logs-seconds work.

2025-03-20 10:56:40 0 [Note] Server socket created on IP: '0.0.0.0'.

2025-03-20 10:56:40 0 [Note] Server socket created on IP: '::'.

2025-03-20 10:56:40 0 [Note] mariadbd: ready for connections.

Version: '10.11.11-MariaDB-ubu2204'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

2025-03-20 10:56:41 0 [Note] InnoDB: Buffer pool(s) load completed at 250320 10:56:41

OK just stooped and restarted mysql container now
seafile log looks better

2025/03/20 10:47AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:310 > encryption key file not present | filename=portainer
2025/03/20 10:47AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:334 > proceeding without encryption key |
2025/03/20 10:47AM INF github.com/portainer/portainer/api/database/boltdb/db.go:133 > loading PortainerDB | filename=portainer.db
2025/03/20 10:47AM INF github.com/portainer/portainer/api/chisel/service.go:200 > found Chisel private key file on disk | private-key=/data/chisel/private-key.pem
2025/03/20 10:47:49 server: Reverse tunnelling enabled
2025/03/20 10:47:49 server: Fingerprint fhtIbEFPlGtVO/STGArVupno7J1s9Yy3SHg8fKIiELY=
2025/03/20 10:47:49 server: Listening on http://0.0.0.0:8000
2025/03/20 10:47AM INF github.com/portainer/portainer/api/datastore/postinit/migrate_post_init.go:101 > Executing post init migration for environment 2 |
2025/03/20 10:47AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:601 > starting Portainer | build_number=164 go_version=1.23.5 image_tag=2.27.1-linux-amd64 nodejs_version=18.20.7 version=2.27.1 webpack_version=5.88.2 yarn_version=1.22.22
2025/03/20 10:47AM INF github.com/portainer/portainer/api/http/server.go:347 > starting HTTP server | bind_address=:9000
2025/03/20 10:47AM INF github.com/portainer/portainer/api/http/server.go:363 > starting HTTPS server | bind_address=:9443
2025/03/20 10:55AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:310 > encryption key file not present | filename=portainer
2025/03/20 10:55AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:334 > proceeding without encryption key |
2025/03/20 10:55AM INF github.com/portainer/portainer/api/database/boltdb/db.go:133 > loading PortainerDB | filename=portainer.db
2025/03/20 10:55AM INF github.com/portainer/portainer/api/chisel/service.go:200 > found Chisel private key file on disk | private-key=/data/chisel/private-key.pem
2025/03/20 10:55:45 server: Reverse tunnelling enabled
2025/03/20 10:55:45 server: Fingerprint fhtIbEFPlGtVO/STGArVupno7J1s9Yy3SHg8fKIiELY=
2025/03/20 10:55:45 server: Listening on http://0.0.0.0:8000
2025/03/20 10:55AM INF github.com/portainer/portainer/api/datastore/postinit/migrate_post_init.go:101 > Executing post init migration for environment 2 |
2025/03/20 10:55AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:601 > starting Portainer | build_number=164 go_version=1.23.5 image_tag=2.27.1-linux-amd64 nodejs_version=18.20.7 version=2.27.1 webpack_version=5.88.2 yarn_version=1.22.22
2025/03/20 10:55AM INF github.com/portainer/portainer/api/http/server.go:347 > starting HTTP server | bind_address=:9000
2025/03/20 10:55AM INF github.com/portainer/portainer/api/http/server.go:363 > starting HTTPS server | bind_address=:9443
2025/03/20 10:56AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:310 > encryption key file not present | filename=portainer
2025/03/20 10:56AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:334 > proceeding without encryption key |
2025/03/20 10:56AM INF github.com/portainer/portainer/api/database/boltdb/db.go:133 > loading PortainerDB | filename=portainer.db
2025/03/20 10:56AM INF github.com/portainer/portainer/api/chisel/service.go:200 > found Chisel private key file on disk | private-key=/data/chisel/private-key.pem
2025/03/20 10:56:40 server: Reverse tunnelling enabled
2025/03/20 10:56:40 server: Fingerprint fhtIbEFPlGtVO/STGArVupno7J1s9Yy3SHg8fKIiELY=
2025/03/20 10:56:40 server: Listening on http://0.0.0.0:8000
2025/03/20 10:56AM INF github.com/portainer/portainer/api/datastore/postinit/migrate_post_init.go:101 > Executing post init migration for environment 2 |
2025/03/20 10:56AM INF github.com/portainer/portainer/api/cmd/portainer/main.go:601 > starting Portainer | build_number=164 go_version=1.23.5 image_tag=2.27.1-linux-amd64 nodejs_version=18.20.7 version=2.27.1 webpack_version=5.88.2 yarn_version=1.22.22
2025/03/20 10:56AM INF github.com/portainer/portainer/api/http/server.go:347 > starting HTTP server | bind_address=:9000
2025/03/20 10:56AM INF github.com/portainer/portainer/api/http/server.go:363 > starting HTTPS server | bind_address=:9443

edit - not true after a few seconds changed again to

waiting for mysql server to be ready: mysql is not ready

and browser shows with local ip:8099
image

and changing to https://localip.8099 it shows
image

now stopped seafile and restartet again log says now:

*** Shutting down /scripts/enterpoint.sh (PID 22)...

*** Shutting down runit daemon (PID 21)...

*** Running /etc/my_init.post_shutdown.d/10_syslog-ng.shutdown...

*** Init system aborted.

*** Killing all processes...

*** Running /etc/my_init.d/01_create_data_links.sh...

*** Booting runit daemon...

*** Runit started as PID 21

*** Running /scripts/enterpoint.sh...

2025-03-20 19:29:03 Nginx ready 

2025-03-20 19:29:03 This is an idle script (infinite loop) to keep container running. 


and not to miss this is the display in portainer for my containers some showing ports exposed

I tried to simulate an env, so under win 11 I’ve launched ubuntu 24.04 and instlled there portainer.

my .env

COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml'
COMPOSE_PATH_SEPARATOR=','
SEAFILE_IMAGE=seafileltd/seafile-mc:12.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_MEMCACHED_IMAGE=memcached:1.6.29
SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.9-alpine
SEAFILE_VOLUME=/opt/seafile-data
SEAFILE_MYSQL_VOLUME=/opt/seafile-mysql/db
SEAFILE_CADDY_VOLUME=/opt/seafile-caddy
SEAFILE_MYSQL_DB_HOST=db
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=ROOT_PASSWORD
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=PASSWORD
TIME_ZONE=Etc/UTC
JWT_PRIVATE_KEY=123
SEAFILE_SERVER_HOSTNAME=seafile.example.com
SEAFILE_SERVER_PROTOCOL=http
INIT_SEAFILE_ADMIN_EMAIL=me@example.com
INIT_SEAFILE_ADMIN_PASSWORD=asecret
SEADOC_IMAGE=seafileltd/sdoc-server:1.0-latest
SEADOC_VOLUME=/opt/seadoc-data
ENABLE_SEADOC=true
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:12.0-latest
NOTIFICATION_SERVER_VOLUME=/opt/notification-data

and then combine all yml into one:

services:
  caddy:
    image: ${SEAFILE_CADDY_IMAGE:-lucaslorentz/caddy-docker-proxy:2.9-alpine}
    restart: unless-stopped
    container_name: seafile-caddy
    ports:
      - 80:80
      - 443:443
    environment:
      - CADDY_INGRESS_NETWORKS=seafile-net
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${SEAFILE_CADDY_VOLUME:-/opt/seafile-caddy}:/data/caddy
    networks:
      - seafile-net
    healthcheck:
      test: ["CMD-SHELL", "curl --fail http://localhost:2019/metrics || exit 1"]
      start_period: 20s
      interval: 20s
      timeout: 5s
      retries: 3

  seadoc:
    image: ${SEADOC_IMAGE:-seafileltd/sdoc-server:1.0-latest}
    container_name: seadoc
    volumes:
      - ${SEADOC_VOLUME:-/opt/seadoc-data/}:/shared
    # ports:
    #   - "80:80"
    environment:
      - DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
      - DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
      - DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
      - DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
      - DB_NAME=${SEADOC_MYSQL_DB_NAME:-seahub_db}
      - TIME_ZONE=${TIME_ZONE:-Etc/UTC}
      - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
      - NON_ROOT=${NON_ROOT:-false}
      - SEAHUB_SERVICE_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
    labels:
      caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      caddy.@ws.0_header: "Connection *Upgrade*"
      caddy.@ws.1_header: "Upgrade websocket"
      caddy.0_reverse_proxy: "@ws {{upstreams 80}}"
      caddy.1_handle_path: "/socket.io/*"
      caddy.1_handle_path.0_rewrite: "* /socket.io{uri}"
      caddy.1_handle_path.1_reverse_proxy: "{{upstreams 80}}"
      caddy.2_handle_path: "/sdoc-server/*"
      caddy.2_handle_path.0_rewrite: "* {uri}"
      caddy.2_handle_path.1_reverse_proxy: "{{upstreams 80}}"
    depends_on:
      db:
        condition: service_healthy
    networks:
      - seafile-net

  db:
    image: ${SEAFILE_DB_IMAGE:-mariadb:10.11}
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
      - MYSQL_LOG_CONSOLE=true
      - MARIADB_AUTO_UPGRADE=1
    volumes:
      - "${SEAFILE_MYSQL_VOLUME:-/opt/seafile-mysql/db}:/var/lib/mysql"
    networks:
      - seafile-net
    healthcheck:
      test:
        [
          "CMD",
          "/usr/local/bin/healthcheck.sh",
          "--connect",
          "--mariadbupgrade",
          "--innodb_initialized",
        ]
      interval: 20s
      start_period: 30s
      timeout: 5s
      retries: 10

  memcached:
    image: ${SEAFILE_MEMCACHED_IMAGE:-memcached:1.6.29}
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net

  seafile:
    image: ${SEAFILE_IMAGE:-seafileltd/seafile-mc:12.0-latest}
    container_name: seafile
    # ports:
    #   - "80:80"
    volumes:
      - ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
    environment:
      - DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
      - DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
      - DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
      - DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
      - DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
      - SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
      - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
      - SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db}
      - TIME_ZONE=${TIME_ZONE:-Etc/UTC}
      - INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com}
      - INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD:-asecret}
      - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      - SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http}
      - SITE_ROOT=${SITE_ROOT:-/}
      - NON_ROOT=${NON_ROOT:-false}
      - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
      - SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
      - ENABLE_SEADOC=${ENABLE_SEADOC:-true}
      - SEADOC_SERVER_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}/sdoc-server
    labels:
      caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      caddy.reverse_proxy: "{{upstreams 80}}"
    depends_on:
      db:
        condition: service_healthy
      memcached:
        condition: service_started
    networks:
      - seafile-net

networks:
  seafile-net:
    name: seafile-net

also I did modify C:/Windows/System32/driver/etc/host to simulate domain by adding entry :slight_smile:

172.31.13.67 seafile.example.com

after all above steps all seems to be working fine