- Neuer Endpoint: POST /api/admin/config/reload - Nur für Admins zugänglich - Lädt .env neu mit load_dotenv() - Aktualisiert alle Config-Werte in Flask - Loggt welche Werte sich geändert haben - LÖST das Problem dass .env Änderungen sonst Neustart brauchten Verwendung: curl -X POST http://localhost:5000/api/admin/config/reload -H "Authorization: Bearer $JWT_TOKEN" Statt: docker-compose down && docker-compose up -d |
||
|---|---|---|
| docs | ||
| frontend | ||
| user-template-01 | ||
| user-template-02 | ||
| user-template-next | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| admin_api.py | ||
| api.py | ||
| app.py | ||
| auth.py | ||
| config.py | ||
| container_manager.py | ||
| decorators.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| email_service.py | ||
| IMPLEMENTATION_SUMMARY.md | ||
| IMPLEMENTATION-GUIDE.md | ||
| install.sh | ||
| models.py | ||
| README.md | ||
| requirements.txt | ||
| templates.json | ||
| TEST_VERIFICATION.md | ||
Container Spawner
Ein Flask-basierter Service zur automatischen Bereitstellung von isolierten Docker-Containern pro Benutzer mit Traefik-Integration. Benutzer registrieren sich, erhalten einen eigenen Container und eine personalisierte Subdomain.
Features
- User-Management: Registrierung und Login mit sicherer Passwort-Speicherung
- Automatisches Container-Spawning: Jeder User erhaelt einen eigenen Docker-Container
- Dynamisches Routing: Traefik routet automatisch zu den User-Containern via Subdomain
- Resource-Management: CPU- und RAM-Limits pro Container
- Lifecycle-Management: Starten, Stoppen und Neustarten von User-Containern
- Template-basiert: Neue User-Container aus vorgefertigten Images
Schnellstart
# Installation mit einem Befehl
curl -sSL https://gitea.iotxs.de/RainerWieland/spawner/raw/branch/main/install.sh | bash
Nach der Installation .env anpassen und erneut ausfuehren:
cp .env.example .env
nano .env # Werte anpassen
bash install.sh
Voraussetzungen
- Docker 20.10+
- Docker Compose 2.0+
- Traefik 2.x oder 3.x (laufend)
- Bestehendes Docker-Netzwerk fuer Traefik
Dokumentation
| Dokument | Beschreibung |
|---|---|
| Installation | Installationsanleitung und Updates |
| Architektur | Technische Architektur und Komponenten |
| Sicherheit | Sicherheitsrisiken und Massnahmen |
| Versionen | Changelog und Versionierung |
| Bekannte Bugs | Bekannte Probleme und Workarounds |
| Best Practices | Dos and Don'ts |
Projektstruktur
spawner/
├── app.py # Flask-Hauptanwendung
├── auth.py # Authentifizierungs-Blueprint
├── container_manager.py # Docker-Container-Management
├── models.py # SQLAlchemy User-Modell
├── config.py # Konfigurationsklassen
├── templates/ # Jinja2-Templates (Legacy)
├── frontend/ # Next.js Frontend
├── user-template/ # Docker-Template fuer User-Container
└── docs/ # Dokumentation
Konfiguration
Alle Einstellungen erfolgen ueber Umgebungsvariablen in .env:
| Variable | Beschreibung |
|---|---|
SECRET_KEY |
Flask Session Secret (generieren!) |
BASE_DOMAIN |
Haupt-Domain (z.B. example.com) |
SPAWNER_SUBDOMAIN |
Subdomain fuer Spawner-UI |
TRAEFIK_NETWORK |
Docker-Netzwerk fuer Traefik |
USER_TEMPLATE_IMAGE |
Docker-Image fuer User-Container |
Siehe .env.example fuer alle Optionen.
Lizenz
MIT License - siehe Dokumentation fuer Details.
Version: 0.1.0 Repository: https://gitea.iotxs.de/RainerWieland/spawner