Skip to content

Autostart

When setting up SeaTable following the instructions in this manual, SeaTable's Docker containers do not automatically start after a system reboot. Adding SeaTable to autostart minimizes system downtime and prevents service disruption.

Requirements

The autostart routine presented here utilizes systemd. systemd, the default init system in many Linux distributions, including CentOS, Debian, and Ubuntu, provides a convenient autostart function for the services it controls.

Setup

Autostart SeaTable builds on three components: First, a start script that is capable of starting, stopping, and restarting SeaTable using the docker-compose.yml; second, a systemd unit file using the start script; third, systemd's native autostart capability.

Preparing the start script

Create the script file in /opt/seatable and open it in a text editor:

$ cd /opt/seatable/
$ nano seatable-autostart.sh

Paste the following code block into the file:

#!/bin/bash

case $1 in
    start)
    cd /opt/seatable/
    docker-compose up -d
    sleep 10
    docker exec -d seatable /shared/seatable/scripts/seatable.sh start
    ;;
    stop)
    cd /opt/seatable/
    docker-compose down
    ;;
    restart)
    cd /opt/seatable/
    docker-compose down
    docker-compose up -d
    sleep 10
    docker exec -d seatable /shared/seatable/scripts/seatable.sh start
    ;;
esac

Note: If SeaTable's docker-compose.yml is not in the default directory /opt/seatable, change the three cd commands in the script accordingly.

Make the script executable:

$ chmod u+x seatable-autostart.sh

Configuring the systemd unit file

Create a new unit file in /etc/systemd/system and open it in a text editor:

$ cd /etc/systemd/system/
$ nano seatable.service

Copy the following code into the file:

[Unit]
Description=SeaTable
After=network.target

[Service]
ExecStart=/opt/seatable/seatable-autostart.sh start
ExecStop=/opt/seatable/seatable-autostart.sh stop
User=root
Type=forking
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[Install]
WantedBy=multi-user.target

Note: If the seatable-autostart.sh is saved in a directory other than /opt/seatable, change the unit file accordingly to reflect it.

The unit file in combination with the above script enables the start and stop of SeaTable using the systemctl command: * sudo systemctl stop seatable stops all SeaTable containers * sudo systemctl start seatable start all SeaTable containers * sudo systemctl restart seatable restart all SeaTable containers

Note: When using systemctl to start SeaTable Server, its Docker containers must be stopped beforehand.

Enabling autostart

Autostart can be enabled with the following command:

$ sudo systemctl enable seatable

Similarly, autostart can be disabled with the following command:

$ sudo systemctl disable seatable

You can check SeaTable's autostart status with the following command:

$ sudo systemctl is-enabled seatable

Last update: September 13, 2023