Files
michaelschiemer/docs/deployment/AUTOSSH-SETUP-COMPLETED.md
Michael Schiemer 24cbbccf4c feat: update deployment configuration and encrypted env loader
- 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
2025-11-02 20:38:06 +01:00

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.