41 lines
1.0 KiB
Django/Jinja
41 lines
1.0 KiB
Django/Jinja
[Unit]
|
|
Description={{ description }}
|
|
# Stellt sicher, dass das Netzwerk bereit ist
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
# 'simple' ist der Standard, 'exec' wartet, bis der Prozess wirklich gestartet ist
|
|
Type={{ service_type }}
|
|
|
|
# Arbeitsverzeichnis (wichtig für relative Pfade im Skript)
|
|
WorkingDirectory={{ working_dir }}
|
|
|
|
# Ausführen als spezifischer Benutzer (Sicherheit!)
|
|
User={{ user }}
|
|
Group={{ user }}
|
|
|
|
# Umgebungsvariablen (z.B. für Python Pfade oder API Keys)
|
|
{% if env_vars -%}
|
|
{% for key, value in env_vars.items() -%}
|
|
Environment="{{ key }}={{ value }}"
|
|
{% endfor -%}
|
|
{% endif %}
|
|
|
|
# Vor dem Start kurz warten (optional, falls nötig)
|
|
{% if wait_before_start -%}
|
|
ExecStartPre=/usr/bin/sleep {{ wait_before_start }}
|
|
{% endif %}
|
|
|
|
# Der eigentliche Befehl
|
|
ExecStart={{ exec_command }}
|
|
|
|
# Neustart-Logik: Startet den Dienst automatisch neu, wenn er abstürzt
|
|
Restart=on-failure
|
|
# Wartezeit zwischen Neustartversuchen
|
|
RestartSec=5s
|
|
|
|
[Install]
|
|
# Definiert, wann die Unit beim Booten gestartet wird
|
|
WantedBy=multi-user.target
|