# Start Seafile at System Bootup - Seafile Admin Manual
Author: seafile

Skip to content

# Start Seafile at System Bootup

## For systems running systemd and python virtual environments

> For example Debian 12

Create systemd service files, change ${seafile_dir} to your seafile installation location and seafile to user, who runs seafile (if appropriate). Then you need to reload systemd's daemons: systemctl daemon-reload.

Firstly, you should create a script to activate the python virtual environment, which goes in the ${seafile_dir} directory. Put another way, it does not go in "seafile-server-latest", but the directory above that. Throughout this manual the examples use /opt/seafile for this directory, but you might have chosen to use a different directory.

    sudo vim /opt/seafile/run_with_venv.sh

The content of the file is:

    #!/bin/bash
    # Activate the python virtual environment (venv) before starting one of the seafile scripts

    dir_name="$(dirname $0)"
    source "${dir_name}/python-venv/bin/activate"
    script="$1"
    shift 1

    echo "${dir_name}/seafile-server-latest/${script}" "$@"
    "${dir_name}/seafile-server-latest/${script}" "$@"

make this script executable

    sudo chmod 755 /opt/seafile/run_with_venv.sh

### Seafile component

    sudo vim /etc/systemd/system/seafile.service

The content of the file is:

    [Unit]
    Description=Seafile
    # add mysql.service or postgresql.service depending on your database to the line below
    After=network.target

    [Service]
    Type=forking
    ExecStart=bash ${seafile_dir}/run_with_venv.sh seafile.sh start
    ExecStop=bash ${seafile_dir}/seafile-server-latest/seafile.sh stop
    LimitNOFILE=infinity
    User=seafile
    Group=seafile

    [Install]
    WantedBy=multi-user.target

### Seahub component

    sudo vim /etc/systemd/system/seahub.service

The content of the file is:

    [Unit]
    Description=Seafile hub
    After=network.target seafile.service

    [Service]
    Type=forking
    ExecStart=bash ${seafile_dir}/run_with_venv.sh seahub.sh start
    ExecStop=bash ${seafile_dir}/seafile-server-latest/seahub.sh stop
    User=seafile
    Group=seafile

    [Install]
    WantedBy=multi-user.target

## For systems running systemd without python virtual environment

> For example Debian 8 through Debian 11, Linux Ubuntu 15.04 and newer

Create systemd service files, change ${seafile_dir} to your seafile installation location and seafile to user, who runs seafile (if appropriate). Then you need to reload systemd's daemons: systemctl daemon-reload.

### Seafile component

    sudo vim /etc/systemd/system/seafile.service

The content of the file is:

    [Unit]
    Description=Seafile
    # add mysql.service or postgresql.service depending on your database to the line below
    After=network.target

    [Service]
    Type=forking
    ExecStart=${seafile_dir}/seafile-server-latest/seafile.sh start
    ExecStop=${seafile_dir}/seafile-server-latest/seafile.sh stop
    LimitNOFILE=infinity
    User=seafile
    Group=seafile

    [Install]
    WantedBy=multi-user.target

### Seahub component

Create systemd service file /etc/systemd/system/seahub.service

    sudo vim /etc/systemd/system/seahub.service

The content of the file is:

    [Unit]
    Description=Seafile hub
    After=network.target seafile.service

    [Service]
    Type=forking
    ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start
    ExecStop=${seafile_dir}/seafile-server-latest/seahub.sh stop
    User=seafile
    Group=seafile

    [Install]
    WantedBy=multi-user.target

## Seafile cli client (optional)

Create systemd service file /etc/systemd/system/seafile-client.service

You need to create this service file only if you have seafile console client and you want to run it on system boot.

    sudo vim /etc/systemd/system/seafile-client.service

The content of the file is:

    [Unit]
    Description=Seafile client
    # Uncomment the next line you are running seafile client on the same computer as server
    # After=seafile.service
    # Or the next one in other case
    # After=network.target

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/seaf-cli start
    ExecStop=/usr/bin/seaf-cli stop
    RemainAfterExit=yes
    User=seafile
    Group=seafile

    [Install]
    WantedBy=multi-user.target

## Enable service start on system boot

    sudo systemctl enable seafile.service
    sudo systemctl enable seahub.service
    sudo systemctl enable seafile-client.service   # optional