System-Architektur
Γberblick
Internet
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Caddy (TLS + Proxy) β stoat-caddy-1
β chat.dreylo.com / dreylo.com β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββΌβββββββββββ
βΌ βΌ βΌ
ββββββββββ ββββββββ ββββββββββββββββββββ
β Web β β API β β Profile API β
β (SolidJSβ β(Rust)β β (Express/Node) β
β :80 β β:14702β β :3010 β
ββββββββββ ββββ¬ββββ βββββββββ¬βββββββββββ
β β
βββββββββββ΄ββββββββββ β
βΌ βΌ βΌ βΌ
βββββββββ ββββββββ βββββββββββββββββ
βMongoDBβ βRedis β β MongoDB β
β:27017 β β:6379 β β dreylo- β
β(Stoat)β β β β profiles DB β
βββββββββ ββββββββ βββββββββββββββββ
Container-Details
stoat-api-1 (Backend)
- Sprache: Rust mit Rocket Framework
- Image:
ghcr.io/stoatchat/api:v0.11.1(pre-built, nicht Γ€nderbar) - Funktion: REST API fΓΌr alle Chat-Operationen (Messages, Users, Server, etc.)
- Auth: Session Tokens (
X-Session-TokenHeader)
stoat-web-1 (Frontend)
- Sprache: TypeScript / SolidJS
- Image:
dreylo-web(lokal gebaut aus/home/dreylo-web/) - Build:
pnpmmonorepo, Vite bundle - Besonderheit: Fork des Stoat-Frontends mit Dreylo-Anpassungen
dreylo-profile-api (Custom Microservice)
- Sprache: TypeScript / Express.js
- Image: Lokal gebaut aus
/home/revolt/dreylo-profile-api/ - Funktion: Speichert Avatar-Ringe, Banner-Farben, Server-Folder
- Auth: Delegiert an stoat-api-1 (
/users/@mecheck) - DB: Eigene MongoDB Collection
dreylo-profiles
stoat-database-1 (MongoDB)
- Version: MongoDB (aktuell)
- Daten: Alle Stoat-Daten + dreylo-profiles Collection
- Zugriff intern:
mongodb://database:27017
stoat-caddy-1 (Reverse Proxy)
- Konfiguration:
/home/revolt/Caddyfile - Funktion: TLS-Terminierung, Routing zu den Services
- Automatisches TLS: Let's Encrypt / ZeroSSL
Netzwerk-Kommunikation
Alle Container sind im selben Docker-Netzwerk stoat_default und kommunizieren ΓΌber ihre Service-Namen:
# Von dreylo-profile-api zu stoat-api:
http://api:14702/users/@me
Von Frontend zu Backend (ΓΌber Caddy):
https://chat.dreylo.com/api/...
Profile API intern:
http://dreylo-profile-api:3010
Authentication Flow
User β Frontend β /auth/session/login β stoat-api-1
β
Session Token βββ
User β Frontend β /profile-api/api/profile/me
β
X-Session-Token Header
β
dreylo-profile-api
β
GET http://api:14702/users/@me
mit X-Session-Token
β
User-ID βββ
β
MongoDB Write/Read