Add Systemd Service for Persistent Background Services

- teamchat.service: Systemd service configuration
- install-service.sh: Automated service installer
- SYSTEMD_INSTALL_README.md: Complete installation guide
- Automatic start on boot with failure recovery
- Proper logging to systemd journal
- Root user configuration (can be customized)
- Troubleshooting and management commands
This commit is contained in:
DGSoft 2025-12-09 22:33:17 +01:00
parent 9daab3cdf4
commit b10078dc2e
3 changed files with 239 additions and 0 deletions

126
SYSTEMD_INSTALL_README.md Normal file
View File

@ -0,0 +1,126 @@
# Team Chat System - Systemd Service Installation
## 🚀 Schnellinstallation
```bash
# Als root ausführen
sudo ./install-service.sh
```
## 📋 Was passiert bei der Installation?
1. **Service-Datei kopieren**`/etc/systemd/system/teamchat.service`
2. **Systemd neu laden**`systemctl daemon-reload`
3. **Service aktivieren** → Automatischer Start beim Boot
4. **Service starten** → Sofortiger Start
5. **Status prüfen** → Bestätigung der erfolgreichen Installation
## 🎯 Nach der Installation
### Service verwalten:
```bash
# Status prüfen
sudo systemctl status teamchat
# Service stoppen
sudo systemctl stop teamchat
# Service starten
sudo systemctl start teamchat
# Neustart
sudo systemctl restart teamchat
```
### Logs anzeigen:
```bash
# Live-Logs
sudo journalctl -u teamchat -f
# Letzte 50 Zeilen
sudo journalctl -u teamchat -n 50
```
### Service deaktivieren:
```bash
# Automatischen Start deaktivieren
sudo systemctl disable teamchat
# Service komplett entfernen
sudo systemctl stop teamchat
sudo rm /etc/systemd/system/teamchat.service
sudo systemctl daemon-reload
```
## 🔧 Troubleshooting
### Service startet nicht:
```bash
# Detaillierte Fehler anzeigen
sudo systemctl status teamchat -l
# Systemd-Logs prüfen
sudo journalctl -u teamchat --no-pager
```
### Berechtigungsprobleme:
```bash
# Service-Datei prüfen
ls -la /etc/systemd/system/teamchat.service
# User in Service-Datei anpassen (falls nicht root)
sudo nano /etc/systemd/system/teamchat.service
# User=your_username ändern
sudo systemctl daemon-reload
sudo systemctl restart teamchat
```
### Port-Konflikte:
```bash
# Prüfe verwendete Ports
sudo netstat -tlnp | grep -E ':(8000|5173|80)'
# Ports in service-manager.sh anpassen falls nötig
sudo nano /home/OfficeDesk/service-manager.sh
```
## 📊 Service-Details
- **Name:** `teamchat`
- **Beschreibung:** Team Chat System
- **User:** `root` (kann angepasst werden)
- **Working Directory:** `/home/OfficeDesk`
- **Auto-Start:** Beim System-Boot
- **Restart:** Bei Fehlern automatisch neu starten
- **Logs:** Systemd Journal (`journalctl`)
## 🔄 Alternative: Screen/Tmux
Falls Systemd nicht gewünscht ist:
```bash
# Screen installieren
sudo apt install screen
# Session starten
screen -S teamchat
# Services starten
./service-manager.sh start
# Detach (Strg+A, D)
# Zurück: screen -r teamchat
```
## ✅ Erfolgreiche Installation prüfen
```bash
# Sollte "active (running)" zeigen
sudo systemctl status teamchat
# Sollte die Webseite laden
curl -I http://192.168.0.12
# Sollte JSON zurückgeben
curl http://localhost:8000/docs
```

91
install-service.sh Executable file
View File

@ -0,0 +1,91 @@
#!/bin/bash
# Team Chat System - Systemd Service Installer
# Installiert den Team Chat als Systemd-Service für automatischen Start
set -e
SERVICE_NAME="teamchat"
SERVICE_FILE="/home/OfficeDesk/teamchat.service"
SYSTEMD_PATH="/etc/systemd/system/${SERVICE_NAME}.service"
# Farben
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}"
}
error() {
echo -e "${RED}[ERROR] $1${NC}" >&2
}
warning() {
echo -e "${YELLOW}[WARNING] $1${NC}"
}
info() {
echo -e "${BLUE}[INFO] $1${NC}"
}
# Prüfe Root-Rechte
if [[ $EUID -ne 0 ]]; then
error "Dieses Script muss als root ausgeführt werden!"
echo "Verwendung: sudo $0"
exit 1
fi
log "Installiere Team Chat System als Systemd-Service..."
# Kopiere Service-Datei
log "Kopiere Service-Datei nach $SYSTEMD_PATH"
cp "$SERVICE_FILE" "$SYSTEMD_PATH"
# Setze korrekte Berechtigungen
chmod 644 "$SYSTEMD_PATH"
# Systemd neu laden
log "Lade Systemd-Konfiguration neu..."
systemctl daemon-reload
# Service aktivieren
log "Aktiviere Service für automatischen Start beim Boot..."
systemctl enable "$SERVICE_NAME"
# Service starten
log "Starte Team Chat Service..."
systemctl start "$SERVICE_NAME"
# Warte kurz
sleep 3
# Status prüfen
log "Prüfe Service-Status..."
if systemctl is-active --quiet "$SERVICE_NAME"; then
log "✅ Service erfolgreich gestartet!"
echo ""
echo "=== Service Status ==="
systemctl status "$SERVICE_NAME" --no-pager -l
echo ""
echo "=== Nützliche Commands ==="
echo "Status prüfen: systemctl status $SERVICE_NAME"
echo "Service stoppen: systemctl stop $SERVICE_NAME"
echo "Service starten: systemctl start $SERVICE_NAME"
echo "Logs anzeigen: journalctl -u $SERVICE_NAME -f"
echo "Service deaktivieren: systemctl disable $SERVICE_NAME"
echo ""
info "Der Service startet jetzt automatisch beim System-Boot!"
else
error "Service konnte nicht gestartet werden!"
echo ""
echo "=== Debug Informationen ==="
systemctl status "$SERVICE_NAME" --no-pager -l
echo ""
echo "=== Logs ==="
journalctl -u "$SERVICE_NAME" --no-pager -n 20
exit 1
fi

22
teamchat.service Normal file
View File

@ -0,0 +1,22 @@
[Unit]
Description=Team Chat System
After=network.target postgresql.service
Requires=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/OfficeDesk
ExecStart=/home/OfficeDesk/service-manager.sh start
ExecStop=/home/OfficeDesk/service-manager.sh stop
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=teamchat
# Environment variables
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target