# 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 ```