234 lines
4.3 KiB
Markdown
234 lines
4.3 KiB
Markdown
# PulseGate
|
|
|
|
**PulseGate** ist ein neon-inspiriertes SSH Control Center als TUI-Anwendung für dein Terminal.
|
|
Die App verwaltet gespeicherte Server, unterstützt Key- und Passwort-Login, Quick Commands, Statuschecks und Kitty/TERM-Fixes für saubere SSH-Sessions unter Hyprland/Kitty.
|
|
|
|

|
|
|
|
## Features
|
|
|
|
- Server aus `config.yaml` laden
|
|
- Server hinzufügen, bearbeiten und löschen
|
|
- SSH-Verbindung per Key oder Passwort
|
|
- Passwortspeicherung über den Linux-Keyring
|
|
- Quick Commands pro ausgewähltem Server ausführen
|
|
- Command-Output in der TUI anzeigen
|
|
- SSH-Port-Statuscheck mit Refresh
|
|
- Kitty-Fix über `TERM=xterm-256color`
|
|
- Vollbild-TUI mit Navigation, Settings und Help-View
|
|
|
|
## Voraussetzungen
|
|
|
|
### Arch / CachyOS
|
|
|
|
```bash
|
|
sudo pacman -S go git sshpass gnome-keyring libsecret seahorse
|
|
```
|
|
|
|
Optional, aber empfohlen:
|
|
|
|
```bash
|
|
sudo pacman -S openssh
|
|
```
|
|
|
|
## Installation
|
|
|
|
Repository klonen oder Projektordner öffnen:
|
|
|
|
```bash
|
|
cd ~/Projects/pulsegate
|
|
```
|
|
|
|
Go-Abhängigkeiten installieren:
|
|
|
|
```bash
|
|
go mod tidy
|
|
```
|
|
|
|
Falls du die Dependencies manuell installieren möchtest:
|
|
|
|
```bash
|
|
go get github.com/charmbracelet/bubbletea
|
|
go get github.com/charmbracelet/lipgloss
|
|
go get github.com/charmbracelet/bubbles/textinput
|
|
go get gopkg.in/yaml.v3
|
|
go get github.com/99designs/keyring
|
|
go get golang.org/x/term
|
|
```
|
|
|
|
## Konfiguration
|
|
|
|
Lege im Projektordner eine `config.yaml` an:
|
|
|
|
```yaml
|
|
settings:
|
|
theme: neon-green
|
|
terminal:
|
|
term: xterm-256color
|
|
enable_kitty_fix: true
|
|
|
|
servers:
|
|
- name: Unraid
|
|
host: 10.0.0.15
|
|
user: root
|
|
port: 22
|
|
group: Homelab
|
|
auth: password
|
|
password_id: unraid-root
|
|
kitty_fix: true
|
|
|
|
- name: Webhost
|
|
host: 10.0.0.23
|
|
user: administrator
|
|
port: 22
|
|
group: Homelab
|
|
auth: key
|
|
key: ~/.ssh/id_ed25519
|
|
kitty_fix: true
|
|
|
|
quick_commands:
|
|
- name: Docker PS
|
|
command: docker ps
|
|
|
|
- name: Disk Usage
|
|
command: df -h
|
|
|
|
- name: RAM Usage
|
|
command: free -h
|
|
|
|
- name: Uptime
|
|
command: uptime
|
|
```
|
|
|
|
## Starten
|
|
|
|
Während der Entwicklung:
|
|
|
|
```bash
|
|
go run .
|
|
```
|
|
|
|
Als Binary bauen:
|
|
|
|
```bash
|
|
go build -o pulsegate
|
|
./pulsegate
|
|
```
|
|
|
|
Optional global installieren:
|
|
|
|
```bash
|
|
sudo cp pulsegate /usr/local/bin/
|
|
pulsegate
|
|
```
|
|
|
|
## Bedienung
|
|
|
|
| Taste | Funktion |
|
|
|---|---|
|
|
| `↑` / `↓` oder `k` / `j` | Auswahl bewegen |
|
|
| `Enter` | Server verbinden oder Command ausführen |
|
|
| `a` | Server hinzufügen |
|
|
| `e` | Server bearbeiten |
|
|
| `d` | Server löschen |
|
|
| `c` | Quick Commands öffnen |
|
|
| `r` | SSH-Port-Status aktualisieren |
|
|
| `Tab` | Ansicht wechseln |
|
|
| `s` | Settings öffnen |
|
|
| `h` | Hilfe öffnen |
|
|
| `q` | Zurück oder beenden |
|
|
|
|
## Passwort-Login
|
|
|
|
PulseGate speichert Passwörter nicht in der `config.yaml`, sondern über den Linux-Keyring.
|
|
Beim ersten Verbindungsaufbau mit `auth: password` fragt PulseGate nach dem Passwort und speichert es unter der angegebenen `password_id`.
|
|
|
|
Beispiel:
|
|
|
|
```yaml
|
|
auth: password
|
|
password_id: unraid-root
|
|
```
|
|
|
|
Zum Anzeigen oder Löschen gespeicherter Passwörter kannst du Seahorse verwenden:
|
|
|
|
```bash
|
|
seahorse
|
|
```
|
|
|
|
Dort nach `pulsegate` oder der jeweiligen `password_id` suchen.
|
|
|
|
## SSH-Key-Login
|
|
|
|
Beispielkonfiguration:
|
|
|
|
```yaml
|
|
auth: key
|
|
key: ~/.ssh/id_ed25519
|
|
```
|
|
|
|
Public Key auf den Server kopieren:
|
|
|
|
```bash
|
|
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip
|
|
```
|
|
|
|
## Kitty / TERM Fix
|
|
|
|
Wenn du über Kitty per SSH auf Server gehst, kann es zu Fehlern kommen wie:
|
|
|
|
```text
|
|
Error opening terminal: xterm-kitty
|
|
```
|
|
|
|
PulseGate kann für solche Server automatisch setzen:
|
|
|
|
```bash
|
|
TERM=xterm-256color
|
|
```
|
|
|
|
Aktivierung global:
|
|
|
|
```yaml
|
|
settings:
|
|
terminal:
|
|
term: xterm-256color
|
|
enable_kitty_fix: true
|
|
```
|
|
|
|
Aktivierung pro Server:
|
|
|
|
```yaml
|
|
kitty_fix: true
|
|
```
|
|
|
|
## Screenshot austauschen
|
|
|
|
Der enthaltene Screenshot ist ein Beispielbild.
|
|
Einen echten Screenshot kannst du unter Hyprland z. B. mit `grim` erstellen:
|
|
|
|
```bash
|
|
grim -g "$(slurp)" pulsegate_screenshot.png
|
|
```
|
|
|
|
Oder mit einem anderen Screenshot-Tool deiner Wahl.
|
|
Lege die Datei anschließend neben die README:
|
|
|
|
```text
|
|
README.md
|
|
pulsegate_screenshot.png
|
|
```
|
|
|
|
## Roadmap
|
|
|
|
Mögliche nächste Features:
|
|
|
|
- Suche und Filter mit `/`
|
|
- Scrollbarer Command-Output
|
|
- Servergruppen / Tags
|
|
- Import aus `~/.ssh/config`
|
|
- Passwort ändern/löschen direkt in der TUI
|
|
- Themes wie `neon-green`, `neon-cyan`, `orange-authentik`
|
|
- Health Checks mit SSH-Login-Test
|
|
- Quick Commands pro Servergruppe
|