- Update Ansible playbooks and roles for application deployment - Add new Gitea/Traefik troubleshooting playbooks - Update Docker Compose configurations (base, local, staging, production) - Enhance EncryptedEnvLoader with improved error handling - Add deployment scripts (autossh setup, migration, secret testing) - Update CI/CD workflows and documentation - Add Semaphore stack configuration
244 lines
5.7 KiB
Markdown
244 lines
5.7 KiB
Markdown
# Autossh Setup - Abgeschlossen
|
|
|
|
**Datum**: 2025-11-02
|
|
**Status**: ? Erfolgreich konfiguriert
|
|
**Server**: Production (94.16.110.151)
|
|
|
|
---
|
|
|
|
## Durchgef?hrte Schritte
|
|
|
|
### 1. Installation von Autossh
|
|
|
|
Autossh war bereits auf dem System installiert:
|
|
```bash
|
|
/usr/bin/autossh
|
|
```
|
|
|
|
### 2. SSH-Konfiguration erweitert
|
|
|
|
Die SSH-Config (`~/.ssh/config`) wurde erweitert mit folgenden Eintr?gen:
|
|
|
|
```ssh-config
|
|
Host production
|
|
HostName 94.16.110.151
|
|
User deploy
|
|
IdentityFile ~/.ssh/production
|
|
ServerAliveInterval 60
|
|
ServerAliveCountMax 3
|
|
TCPKeepAlive yes
|
|
Compression yes
|
|
StrictHostKeyChecking accept-new
|
|
```
|
|
|
|
**Wichtige Optionen:**
|
|
- `ServerAliveInterval 60`: Sendet alle 60 Sekunden ein Keep-Alive-Signal
|
|
- `ServerAliveCountMax 3`: Nach 3 fehlgeschlagenen Versuchen aufgeben
|
|
- `TCPKeepAlive yes`: Nutzt TCP Keep-Alive f?r zus?tzliche Persistenz
|
|
|
|
### 3. Systemd Service erstellt
|
|
|
|
Systemd Service wurde erstellt unter:
|
|
```
|
|
~/.config/systemd/user/autossh-production.service
|
|
```
|
|
|
|
**Service-Konfiguration:**
|
|
```ini
|
|
[Unit]
|
|
Description=AutoSSH for production
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
Environment="AUTOSSH_GATETIME=0"
|
|
Environment="AUTOSSH_POLL=10"
|
|
ExecStart=/usr/bin/autossh -M 20000 -N -o "ServerAliveInterval=60" -o "ServerAliveCountMax=3" production
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=default.target
|
|
```
|
|
|
|
**Wichtige Parameter:**
|
|
- `-M 20000`: Monitoring-Port (autossh nutzt diesen zur Verbindungs?berwachung)
|
|
- `-N`: Keine Remote-Commands ausf?hren (nur persistente Verbindung)
|
|
- `AUTOSSH_GATETIME=0`: Keine Wartezeit nach Start (sofortige Verbindung)
|
|
- `AUTOSSH_POLL=10`: Polling-Intervall in Sekunden
|
|
|
|
**Hinweis**: Das `-f` Flag wurde entfernt, da es mit systemd Type=simple nicht kompatibel ist.
|
|
|
|
### 4. Service aktiviert und gestartet
|
|
|
|
```bash
|
|
# Service aktivieren (startet automatisch beim Login)
|
|
systemctl --user enable autossh-production.service
|
|
|
|
# Service starten
|
|
systemctl --user start autossh-production.service
|
|
```
|
|
|
|
### 5. Status ?berpr?ft
|
|
|
|
Service Status:
|
|
```
|
|
? autossh-production.service - AutoSSH for production
|
|
Loaded: loaded (/home/michael/.config/systemd/user/autossh-production.service; enabled; preset: enabled)
|
|
Active: active (running) since Sun 2025-11-02 18:21:06 CET
|
|
Main PID: 35533 (autossh)
|
|
Tasks: 2 (limit: 14999)
|
|
Memory: 1.7M
|
|
```
|
|
|
|
**Laufende Prozesse:**
|
|
- Autossh Main Process: PID 35533
|
|
- SSH Connection Process: PID 35537
|
|
|
|
---
|
|
|
|
## Verbindungstest
|
|
|
|
SSH-Verbindung erfolgreich getestet:
|
|
```bash
|
|
ssh production "echo 'Connection test successful'"
|
|
# Output: Connection test successful
|
|
```
|
|
|
|
---
|
|
|
|
## Service-Management
|
|
|
|
### Status pr?fen
|
|
```bash
|
|
systemctl --user status autossh-production.service
|
|
```
|
|
|
|
### Logs anzeigen
|
|
```bash
|
|
journalctl --user -u autossh-production.service -f
|
|
```
|
|
|
|
### Service stoppen
|
|
```bash
|
|
systemctl --user stop autossh-production.service
|
|
```
|
|
|
|
### Service neu starten
|
|
```bash
|
|
systemctl --user restart autossh-production.service
|
|
```
|
|
|
|
### Service deaktivieren
|
|
```bash
|
|
systemctl --user disable autossh-production.service
|
|
```
|
|
|
|
---
|
|
|
|
## Funktionsweise
|
|
|
|
Autossh ?berwacht die SSH-Verbindung kontinuierlich:
|
|
|
|
1. **Monitoring-Port**: Port 20000 wird genutzt, um die Verbindung zu ?berwachen
|
|
2. **Keep-Alive**: Alle 60 Sekunden wird ein Keep-Alive-Signal gesendet
|
|
3. **Automatischer Neustart**: Bei Verbindungsabbruch wird die Verbindung automatisch neu aufgebaut
|
|
4. **Systemd Integration**: Bei Service-Fehler startet systemd den Service nach 10 Sekunden neu
|
|
|
|
---
|
|
|
|
## Bekannte Probleme & L?sungen
|
|
|
|
### Problem 1: Monitoring-Port Format
|
|
**Fehler**: `invalid port "127.0.0.1"`
|
|
**L?sung**: `-M` Parameter sollte nur die Port-Nummer sein, nicht `IP:Port`
|
|
```bash
|
|
# Falsch:
|
|
-M 127.0.0.1:20000
|
|
|
|
# Richtig:
|
|
-M 20000
|
|
```
|
|
|
|
### Problem 2: `-f` Flag mit systemd
|
|
**Fehler**: Service startet, beendet sich aber sofort
|
|
**L?sung**: `-f` Flag entfernen bei systemd Type=simple (systemd ?bernimmt Background-Operation)
|
|
|
|
### Problem 3: Service startet nicht automatisch
|
|
**L?sung**: User lingering aktivieren f?r automatischen Start ohne Login:
|
|
```bash
|
|
sudo loginctl enable-linger $USER
|
|
```
|
|
|
|
---
|
|
|
|
## N?chste Schritte
|
|
|
|
### F?r weitere Server
|
|
Das Setup-Script kann f?r weitere Server verwendet werden:
|
|
```bash
|
|
./scripts/setup-autossh.sh production # Nur Production
|
|
./scripts/setup-autossh.sh git # Nur Git Server
|
|
./scripts/setup-autossh.sh both # Beide
|
|
```
|
|
|
|
### SSH-Tunnel einrichten
|
|
Falls SSH-Tunnel ben?tigt werden (z.B. Port-Forwarding):
|
|
```bash
|
|
# Lokalen Port weiterleiten
|
|
autossh -M 20002 -N -L 8080:localhost:80 production
|
|
```
|
|
|
|
### Monitoring
|
|
Regelm??ig den Service-Status ?berpr?fen:
|
|
```bash
|
|
systemctl --user status autossh-production.service
|
|
journalctl --user -u autossh-production.service --since "1 hour ago"
|
|
```
|
|
|
|
---
|
|
|
|
## Makefile-Befehle
|
|
|
|
Das Projekt bietet jetzt folgende Makefile-Befehle f?r SSH-Verbindungen:
|
|
|
|
```bash
|
|
# SSH-Verbindung zum Production-Server ?ffnen
|
|
make ssh
|
|
# oder
|
|
make ssh-production
|
|
|
|
# SSH-Verbindung zum Git-Server ?ffnen
|
|
make ssh-git
|
|
|
|
# Status der autossh-Services pr?fen
|
|
make ssh-status
|
|
|
|
# Logs der autossh-Services anzeigen
|
|
make ssh-logs
|
|
|
|
# Autossh einrichten
|
|
make setup-autossh
|
|
```
|
|
|
|
## Referenzen
|
|
|
|
- **Setup-Script**: `scripts/setup-autossh.sh`
|
|
- **Dokumentation**: `docs/deployment/AUTOSSH-SETUP.md`
|
|
- **SSH-Config**: `~/.ssh/config`
|
|
- **Service-Datei**: `~/.config/systemd/user/autossh-production.service`
|
|
- **Makefile**: `Makefile` (Befehle: `ssh`, `ssh-status`, `ssh-logs`, `setup-autossh`)
|
|
|
|
---
|
|
|
|
## Zusammenfassung
|
|
|
|
? Autossh erfolgreich installiert
|
|
? SSH-Config mit Keep-Alive-Optionen erweitert
|
|
? Systemd Service erstellt und konfiguriert
|
|
? Service aktiviert und gestartet
|
|
? Verbindungstest erfolgreich
|
|
? Automatischer Neustart bei Verbindungsabbruch aktiviert
|
|
|
|
Die SSH-Verbindung zum Production-Server wird jetzt automatisch ?berwacht und bei Abbruch neu aufgebaut.
|