Seatable 1.8 developer edition docker fresh installation broken?

Ran a fresh install according to
and changed the docker-compose.yml placeholders (db password and hostname) and enabled the letsencrypt option.

However after starting the container (+service) and creating an admin account, seatable is not accessible.

docker-compose logs --f
states hundreds of lines of
seatable | nginx: [emerg] open() "/etc/nginx/sites-enabled/default" failed (2: No such file or directory) in /etc/nginx/nginx.conf:25

After entering the container and running
cat /etc/nginx/nginx.conf
on line 25 it states
include /etc/nginx/sites-enabled/*;
and inspecting
ls -alh /etc/nginx/sites-enabled/
there is a symlink
lrwxrwxrwx 1 root root 29 May 5 23:49 default -> /opt/seatable/conf/nginx.conf

However there is no nginx.conf in the referenced folder /opt/seatable/conf/.

After running
find / -iname "nginx.conf"
only the original /etc/nginx/nginx.conf shows up with its reference to

I can quite imagine how I could have screwed up the install. So the question is: (How) has this major doozy slipped past QA?

Hi, welcome to the SeaTable Forum.
In the manual it was clear that the nginx.conf will only be generated automatically on the first time running docker-compose up -d when you have set SEATABLE_SERVER_LETSENCRYPT to true:

Hi Karlheinz. Thank you for your quick reply :pray: That totally makes sense and I’m was certain I did that beforehand. Just to make sure, I just did a fresh install again (docker-compose down -v && rm -rf /opt/seatable) and this issue didn’t appear again.
However it still doesn’t seem to start (note: I started the service via docker exec and admin account was created afterwards):

seatable     | 2021-05-06 12:57:36 This is a idle script (infinite loop) to keep container running.
seatable-mysql | 2021-05-06 12:58:10 4 [Warning] Aborted connection 4 to db: 'dtable_db' user: 'root' host: '' (Got an error reading communication packets)

This is my compose.yml

version: '2.0'
    image: mariadb:10.5
    container_name: seatable-mysql
      - MYSQL_ROOT_PASSWORD=REDACTED  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
      - /opt/seatable/mysql-data:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
      - seatable-net

    image: memcached:1.5.6
    container_name: seatable-memcached
    entrypoint: memcached -m 256
      - seatable-net

    image: redis:5.0.7
    container_name: seatable-redis
      - seatable-net

    image: seatable/seatable:latest
    container_name: seatable
      - "80:80"
      - "443:443"  # If https is enabled, cancel the comment.
      - /opt/seatable/seatable-data:/shared  # Requested, specifies the path to Seafile data persistent store.
      - DB_HOST=db
      - DB_ROOT_PASSWD=REDACTED  # Requested, the value should be root's password of MySQL service.
      - SEATABLE_SERVER_LETSENCRYPT=True # Default is False. Whether to use let's encrypt certificate.
      - # Specifies your host name.
      - TIME_ZONE=Etc/UTC # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - db
      - memcached
      - redis
      - seatable-net


My host details

Docker version 20.10.6, build 370c289
docker-compose version 1.27.4, build 40524192
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic
  • Vanilla Ubuntu install.
  • And no firewall active.
  • No other services running on the host.

Please explain more precisely what you did. In the same vein, what do you mean by “doesn’t seem to start”? Do the containers start or don’t they? (If you could create the superuser account, then SeaTable is obviously up.)

Here are just some specific questions/checks you should answer/run:

  • Did you restart docker-compose “detached”?
  • Are all four containers running? (How about posting the output of docker ps here?)
  • Is the seatable container listening on port 80 and 443?
  • What does nginx do with requests coming in on port 80 and 443? (Check the nginx log.)
  • Can you manually connect to the database?

Hey Ralf, amazing support. Thank you! I’ll give my best to provide you with the missing details.

I started the containers detached via docker-compose up -d

All four containers are running docker ps -a

CONTAINER ID   IMAGE                      COMMAND                  CREATED       STATUS          PORTS                                                                      NAMES
d854bf915c24   seatable/seatable:latest   "/sbin/my_init -- /t…"   4 hours ago   Up 2 hours>80/tcp, :::80->80/tcp,>443/tcp, :::443->443/tcp   seatable
8da18b74174e   memcached:1.5.6            "memcached -m 256"       4 hours ago   Up 2 hours   11211/tcp                                                                  seatable-memcached
1ef91cf899ec   redis:5.0.7                "docker-entrypoint.s…"   4 hours ago   Up 2 hours   6379/tcp                                                                   seatable-redis
78161b2d4c78   mariadb:10.5               "docker-entrypoint.s…"   4 hours ago   Up 2 hours   3306/tcp                                                                   seatable-mysql

The ps output shows that seatable is listening on (host)ports 80 and 443.

docker-compose logs -f still shows the error.

seatable-mysql | 2021-05-06 16:33:38 4 [Warning] Aborted connection 4 to db: 'dtable_db' user: 'root' host: '' (Got an error reading communication packets)

Oddly enough after trying the same procedure for the sixth time (in pretty much exactly the same way) and lastly letting it (and myself) rest for 2 hours, it suddenly seems to work and I was able to access the login form. The other times I wouldn’t get a repsonse from the webserver (btw: DNS settings remained the same for over a month, so no TTL issue here) or occasionally a “502 Bad Gateway” response.

Since I can now reliably start seatable, I’m not sure what to make of this and feel a bit silly. Could there be a race condition, that only triggers on fresh installs with no prior certificate or existing DB? I’m a bit puzzled on this, since I’ve tried this many times in the last week with exactly those steps :sleepy:

Thank you for your support so far.

I was curious so I tried it on my own docker. I could successfully install SeaTable for the first time without Letsencrypt, then I removed all the four docker containers and started all over again, the second time with Letsencrypt, and it worked right away.

Glad to hear that you finally got your SeaTable running, enjoy!

As this forum is open for all levels of users, I would like to present my procedures for anyone who’s interested:

  1. My Ubuntu is fresh and there’s no previous installation of SeaTable or docker. If the previous docker installation of SeaTable was unsuccessful, refer to Step 5.

  2. Installed docker and pulled SeaTable from the docker Enterprise Edition - SeaTable Admin Manual (The Developer Edition should be the same)

  3. Also following the manual, downloaded docker-compose.yml and changed the necessary parameters including the password in Step 2. I left SEATABLE_SERVER_LETSENCRYPT=False.

  4. Proceeded with the installation following the manual and created a superuser, and could successfully login and start using SeaTable.

  5. Then, in order to enable letsencrypt, I removed all the four docker containers following this instruction: How To Remove Docker Images, Containers, Networks & Volumes {2021} (

  6. Repeated 3 and 4, and this time, let SEATABLE_SERVER_LETSENCRYPT=True. Again, changed this value in the docker-compose.yml before running docker-compose up for the first time. And the installation was successful as well.

To summarize: The SeaTable admin manual is precise. Make sure you have a correct docker-compose.yml before you run the docker-compose up or the docker-compose up -d for the first time and everything should be fine!

If you speak German - wir haben hier einen Artikel auf Deutsch geschrieben:
SeaTable Enterprise Edition unter Ubuntu Server 20.04 LTS installieren

1 Like

At your service!

Don’t waste your time on feeling silly. Something must have gone wrong, whatever.
Rather spend your time playing around with SeaTable and share your experience! (Just as a heads up: You’ll find some real bugs in SeaTable when looking closely. We are working on those and we’ll fix a lot of those in SeaTable 2.0 due mid/end of May 2021)

1 Like