84 lines
2.8 KiB
Markdown
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
|