This guide explains how to run SysCapture as a systemd service on Linux systems, providing automatic startup and service management.
Create a systemd service file:
# filepath: /etc/systemd/system/syscapture.service
[Unit]
Description=SysCapture System Monitoring Service
After=network.target
[Service]
Type=simple
User=syscapture
Group=syscapture
ExecStart=/usr/local/bin/syscapture
WorkingDirectory=/etc/syscapture
Environment="CONFIG_FILE=/etc/syscapture/config.yml"
Environment="LOG_LEVEL=info"
# Restart configuration
Restart=always
RestartSec=10
# Security settings
NoNewPrivileges=yes
ProtectSystem=full
ProtectHome=yes
PrivateTmp=yes
[Install]
WantedBy=multi-user.target- Create system user and group:
sudo useradd -r -s /bin/false syscapture- Create required directories:
sudo mkdir -p /etc/syscapture
sudo mkdir -p /var/log/syscapture- Copy binary and configuration:
sudo cp syscapture /usr/local/bin/
sudo cp config.yml /etc/syscapture/- Set permissions:
sudo chown -R syscapture:syscapture /etc/syscapture
sudo chown -R syscapture:syscapture /var/log/syscapture
sudo chmod 755 /usr/local/bin/syscapturesudo systemctl enable syscapture
sudo systemctl start syscapturesudo systemctl status syscapturesudo journalctl -u syscapture -fsudo systemctl stop syscaptureCreate configuration file:
# filepath: /etc/syscapture/config.yml
server:
port: "42000"
environment: "production"
security:
auth:
enabled: true
secret: "${AUTH_SECRET}"
logging:
level: "info"
format: "json"
output: "/var/log/syscapture/syscapture.log"
notifications:
enabled: true
# ...notification settings...Create environment file:
# filepath: /etc/syscapture/syscapture.env
AUTH_SECRET=your-secret-here
DISCORD_WEBHOOK=your-webhook-urlUpdate service to use environment file:
# filepath: /etc/systemd/system/syscapture.service
[Service]
# ...existing configuration...
EnvironmentFile=/etc/syscapture/syscapture.env- File Permissions:
sudo chmod 600 /etc/syscapture/config.yml
sudo chmod 600 /etc/syscapture/syscapture.env- SELinux Context (if applicable):
sudo semanage fcontext -a -t bin_t "/usr/local/bin/syscapture"
sudo restorecon -v /usr/local/bin/syscapturesudo systemctl status syscapture
sudo journalctl -u syscapture -n 50 --no-pagersudo -u syscapture /usr/local/bin/syscapture --config /etc/syscapture/config.yml --test- Permission Denied:
sudo chown -R syscapture:syscapture /etc/syscapture
sudo chmod 755 /usr/local/bin/syscapture- Service Won't Start:
sudo journalctl -u syscapture -f
sudo systemctl restart syscapture- Configuration Errors:
sudo -u syscapture /usr/local/bin/syscapture --validate-config