
🔨 Ein moderner, plattformübergreifender Maschinenmanager
Ein Host-Management-Hub für Flotten von Linux-Maschinen. Installieren Sie den Platypus-Agenten auf jedem Host, den Sie besitzen; der Agent baut eine Verbindung zu Ihrem Platypus-Server über TLS + Protobuf auf; vom Server aus erhalten Sie eine interaktive Shell, Dateiverwaltung und Netzwerk-Tunneling auf jedem verwalteten Host – über eine zentrale Steuerungsebene.
Eine Vercel-ähnliche Flat-Nav-Oberfläche mit einem Projekt-Dashboard, einem Host-/Listener-/Session-Browser, einer Multi-Host-Dispatch-Konsole und einem Admin-Benutzer-Manager. Die vollständige Galerie finden Sie unter docs/screenshots/. Führen Sie make screenshots erneut aus, um sie aus der Live-App neu zu generieren.
Platypus wird als zwei Backend-Binärdateien plus einem eigenständigen Desktop-Client ausgeliefert:
| Binary | Rolle |
|---|---|
platypus-server | Daemon. Nimmt eingehende Agentenverbindungen auf TLS-Eingangsports entgegen; stellt eine REST + WebSocket API für Admin-Tools bereit; stellt Agenten-Binärdateien zur Verteilung bereit. |
platypus-agent | Der Prozess, der auf jedem verwalteten Host läuft. Baut eine Verbindung zum Server über TLS + Protobuf auf. |
platypus-desktop | Native (Wails v2) Desktop-GUI. Verbinden Sie sich mit jedem erreichbaren Server mit URL + Secret; tabbasierte UI für Sessions, Terminals, Listener, Dateien, Tunnel. Siehe desktop/. |
Der Server ist rein eine API – keine eingebettete Web-UI. Mehrere Desktops können sich gleichzeitig mit demselben Server verbinden.
config.yml startenDer schnellste Weg, ein vollständiges Platypus-System zum Laufen zu bringen (einschließlich Server, Web-UI und eines MinIO-gestützten Agenten-Verteilers), ist die Verwendung von Docker Compose:
git clone https://github.com/WangYihang/Platypus
cd Platypus
docker-compose up -d
https://localhost:9443 in Ihrem Browser (der Container wird mit einem selbstsignierten Zertifikat ausgeliefert; Ihr Browser fordert Sie auf, es beim ersten Besuch zu akzeptieren).bootstrap_secret wird beim ersten Start in /app/data/bootstrap.secret im Container geschrieben (Modus 0600). Lesen Sie es mit docker compose exec platypus-server cat /app/data/bootstrap.secret, verwenden Sie es einmal, um den ersten Administrator zu erstellen, und löschen Sie dann die Datei. Nach Abschluss des Bootstraps wird das Secret nicht mehr akzeptiert.curl ... | sh-Befehl zu erhalten, der mit der Projekt-CA signiert und verankert ist, um Agenten in Ihrer Flotte bereitzustellen.Erfordert Go 1.24+ und protoc (nur wenn Sie Protobuf-Code neu generieren).
git clone https://github.com/WangYihang/Platypus
cd Platypus
make build # → ./build/{platypus-server,platypus-agent}
Andere nützliche Ziele: make test, make lint, make snapshot (plattformübergreifend über goreleaser), make help.
Mitwirkende sollten die Git-Hooks installieren, damit gofmt / goimports / go vet / golangci-lint vor jedem Commit ausgeführt werden:
pip install pre-commit # or: pipx install pre-commit
make hooks # one-time: wires .git/hooks/pre-commit
make pre-commit # optional: run all hooks against every file now
Erfordert Node 22+, Wails CLI-Abhängigkeiten (wails doctor) und die WebView-Bibliotheken der Plattform (webkit2gtk-4.1 unter Linux, WebView2 unter Windows, WKWebView unter macOS).
make desktop-deps # one-time: install Wails CLI + pnpm packages
make desktop-build # → desktop/build/bin/platypus-desktop
make desktop-dev # hot-reload dev mode
Gleiche Seiten, gleiche Funktionen (minus Echtzeit-Ereignis-Push), läuft in jedem Browser:
make web-ui # → desktop/frontend/dist-web/ (static bundle)
make web-ui-serve # preview at http://localhost:8080
dist-web/ ist vollständig statisch; legen Sie es auf GitHub Pages / S3 / nginx ab. Verweisen Sie es über das Anmeldeformular auf einen beliebigen platypus-server.
Vollständige Hinweise in desktop/README.md.
Laden Sie das entsprechende Archiv für Ihr Betriebssystem/Ihre Architektur von der Releases-Seite herunter, entpacken Sie es und führen Sie es aus.
docker build -t platypus-server .
docker run --rm -p 9443:9443 \
-e PLATYPUS_DEV=1 \
-v $(pwd)/config.yml:/config.yml \
platypus-server
PLATYPUS_DEV=1 aktiviert den KEK-Fallback auf der Festplatte, sodass ein Neustart "einfach funktioniert"; für die Produktion entfernen Sie diese Umgebungsvariable und setzen stattdessen PLATYPUS_CA_KEK (32 Bytes hex; openssl rand -hex 32), damit der Verschlüsselungsschlüssel des CA-Private-Key nie neben der verschlüsselten Datenbank geschrieben wird.
./build/platypus-server # foreground; Ctrl-C for graceful shutdown
Für die Produktion führen Sie den Server unter systemd aus, anstatt ihn manuell im Hintergrund laufen zu lassen.