spawner/README.md
2026-01-30 18:00:41 +01:00

84 lines
2.8 KiB
Markdown

# 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
```bash
# 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:
```bash
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](docs/install/README.md) | Installationsanleitung und Updates |
| [Architektur](docs/architecture/README.md) | Technische Architektur und Komponenten |
| [Sicherheit](docs/security/README.md) | Sicherheitsrisiken und Massnahmen |
| [Versionen](docs/versions/README.md) | Changelog und Versionierung |
| [Bekannte Bugs](docs/bugs/README.md) | Bekannte Probleme und Workarounds |
| [Best Practices](docs/dos-n-donts/README.md) | 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](.env.example) fuer alle Optionen.
## Lizenz
MIT License - siehe Dokumentation fuer Details.
---
**Version**: 0.1.0
**Repository**: https://gitea.iotxs.de/RainerWieland/spawner