Running Soft Serve as a Systemd Service
Most Linux OSes use Systemd as an init system and service management. You can use Systemd to manage Soft Serve as a service on your host machine.
Our Soft Serve deb/rpm packages come with Systemd service files pre-packaged.
You can install soft-serve from our Apt/Yum repositories. Follow the
installation instructions for
more information.
Writing a Systemd Service File
Note you can skip this section if you are using our deb/rpm packages or installed Soft Serve from our Apt/Yum repositories.
Start by writing a Systemd service file to define how your Soft Serve server should start.
First, we need to specify where the data should live for our server. Here I
will be choosing /var/local/lib/soft-serve to store the server's data. Soft
Serve will look for this path in the SOFT_SERVE_DATA_PATH environment
variable.
Make sure this directory exists before proceeding.
sudo mkdir -p /var/local/lib/soft-serve
We will also create a /etc/soft-serve.conf file for any extra server settings that we want to override.
# Config defined here will override the config in /var/local/lib/soft-serve/config.yaml
# Keys defined in `SOFT_SERVE_INITIAL_ADMIN_KEYS` will be merged with
# the `initial_admin_keys` from /var/local/lib/soft-serve/config.yaml.
#
#SOFT_SERVE_GIT_LISTEN_ADDR=:9418
#SOFT_SERVE_HTTP_LISTEN_ADDR=:23232
#SOFT_SERVE_SSH_LISTEN_ADDR=:23231
#SOFT_SERVE_SSH_KEY_PATH=ssh/soft_serve_host_ed25519
#SOFT_SERVE_INITIAL_ADMIN_KEYS='ssh-ed25519 AAAAC3NzaC1lZDI1...'
Note Soft Serve stores its server configuration and settings in
config.yamlunder its data path directory specified usingSOFT_SERVE_DATA_PATHenvironment variable.
Now, let's write a new /etc/systemd/system/soft-serve.service Systemd service file:
[Unit]
Description=Soft Serve git server 🍦
Documentation=https://github.com/charmbracelet/soft-serve
Requires=network-online.target
After=network-online.target
[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/usr/bin/soft serve
Environment=SOFT_SERVE_DATA_PATH=/var/local/lib/soft-serve
EnvironmentFile=-/etc/soft-serve.conf
WorkingDirectory=/var/local/lib/soft-serve
[Install]
WantedBy=multi-user.target
Great, we now have a Systemd service file for Soft Serve. The settings defined
here may vary depending on your specific setup. This assumes that you want to
run Soft Serve as root. For more information on Systemd service files, refer
to
systemd.service
Start Soft Serve on boot
Now that we have our Soft Serve Systemd service file in-place, let's go ahead and enable and start Soft Serve to run on-boot.
# Reload systemd daemon
sudo systemctl daemon-reload
# Enable Soft Serve to start on-boot
sudo systemctl enable soft-serve.service
# Start Soft Serve now!!
sudo systemctl start soft-serve.service
You can monitor the server logs using journalctl -u soft-serve.service. Use
-f to tail and follow the logs as they get written.
Part of Charm.
Charm热爱开源 • Charm loves open source
