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
This commit is contained in:
243
docs/deployment/AUTOSSH-SETUP-COMPLETED.md
Normal file
243
docs/deployment/AUTOSSH-SETUP-COMPLETED.md
Normal file
@@ -0,0 +1,243 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user