Add systemd service file and installation guide

Adds krafttrainer.service for running as a systemd unit and expands
deployment.md with step-by-step instructions for both systemd and Docker deployment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Christoph K.
2026-03-21 23:59:04 +01:00
parent a954f2c59d
commit c992e2775c
2 changed files with 90 additions and 1 deletions

View File

@@ -1,6 +1,78 @@
# Deployment # Deployment
## Voraussetzungen Es gibt zwei Deployment-Varianten: **systemd** (empfohlen für einzelne Server) und **Docker**.
---
## Variante 1: systemd (Binary direkt)
### Voraussetzungen
- Linux mit systemd
- GCC/glibc (für CGO/SQLite) auf dem Build-Rechner
- SSH-Zugang zum Zielrechner
### Erstinstallation
```bash
# 1. Binary bauen (auf dem Entwicklungsrechner)
make build
# 2. Verzeichnis auf dem Zielrechner anlegen
ssh christoph@192.168.1.118 "mkdir -p ~/krafttrainer"
# 3. Binary übertragen
scp krafttrainer christoph@192.168.1.118:~/krafttrainer/
# 4. Service-Datei installieren
sudo cp krafttrainer.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable krafttrainer
sudo systemctl start krafttrainer
```
Die Service-Datei (`krafttrainer.service`) liegt im Repo-Root und geht von folgendem aus:
| Parameter | Wert |
|-----------|------|
| User | `christoph` |
| Binary | `/home/christoph/krafttrainer/krafttrainer` |
| Datenbank | `/home/christoph/krafttrainer/krafttrainer.db` |
| Port | `8090` |
Anpassen falls User oder Pfade abweichen.
### Update deployen
```bash
make build
scp krafttrainer christoph@192.168.1.118:~/krafttrainer/
ssh christoph@192.168.1.118 "sudo systemctl restart krafttrainer"
```
### Service verwalten
```bash
sudo systemctl status krafttrainer # Status
sudo journalctl -u krafttrainer -f # Logs live
sudo systemctl stop krafttrainer # Stoppen
sudo systemctl restart krafttrainer # Neustarten
```
### Service entfernen
```bash
sudo systemctl stop krafttrainer
sudo systemctl disable krafttrainer
sudo rm /etc/systemd/system/krafttrainer.service
sudo systemctl daemon-reload
```
---
## Variante 2: Docker
### Voraussetzungen
- Docker + Docker Compose auf dem Zielrechner - Docker + Docker Compose auf dem Zielrechner
- Quellcode (git clone) - Quellcode (git clone)

17
krafttrainer.service Normal file
View File

@@ -0,0 +1,17 @@
[Unit]
Description=Krafttrainer Web App
After=network.target
[Service]
Type=simple
User=christoph
WorkingDirectory=/home/christoph/krafttrainer
ExecStart=/home/christoph/krafttrainer/krafttrainer
Restart=on-failure
RestartSec=5
Environment=PORT=8090
Environment=DB_PATH=/home/christoph/krafttrainer/krafttrainer.db
[Install]
WantedBy=multi-user.target