Go to file
XPS\Micro 79cf304ccf feat: implement multi-container MVP with dev and prod templates
Add full support for 2 container types (development and production):

Backend Changes:
- New UserContainer model with unique constraint on (user_id, container_type)
- Removed single-container fields from User model (container_id, container_port)
- Added CONTAINER_TEMPLATES config with dev and prod templates
- Implemented spawn_multi_container() method in ContainerManager
- Added 2 new API endpoints:
  * GET /api/user/containers - list all containers with status
  * POST /api/container/launch/<type> - on-demand container creation
- Multi-container container names and Traefik routing with type suffix

Frontend Changes:
- New Container, ContainersResponse, LaunchResponse types
- Implemented getUserContainers() and launchContainer() API functions
- Completely redesigned dashboard with 2 container cards
- Status display with icons for each container type
- "Create & Open" and "Open Service" buttons based on container status
- Responsive grid layout

Templates:
- user-template-next already configured with Tailwind CSS and Shadcn/UI

Documentation:
- Added IMPLEMENTATION_SUMMARY.md with complete feature list
- Added TEST_VERIFICATION.md with detailed testing guide
- Updated .env.example with USER_TEMPLATE_IMAGE_DEV/PROD variables

This MVP allows each user to manage 2 distinct containers with:
- On-demand lazy creation
- Status tracking per container
- Unique URLs: /{slug}-dev and /{slug}-prod
- Proper Traefik routing with StripPrefix middleware

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-31 20:33:07 +01:00
docs Update documentation for v0.3.0 (admin features) 2026-01-31 07:06:13 +01:00
frontend feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00
user-template Initial project structure with documentation 2026-01-30 18:00:41 +01:00
user-template-next fix: add fallback to npm install for user-template-next 2026-01-31 18:34:06 +01:00
.dockerignore Initial project structure with documentation 2026-01-30 18:00:41 +01:00
.env.example feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00
.gitignore modified 2026-01-31 18:30:00 +01:00
admin_api.py feat: Implement passwordless authentication with Magic Links 2026-01-31 16:19:22 +01:00
api.py feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00
app.py fix: update legacy web routes to use slug instead of username 2026-01-31 17:05:45 +01:00
auth.py Fix auth.py: redirect to frontend instead of rendering templates 2026-01-30 22:08:36 +01:00
config.py feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00
container_manager.py feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00
decorators.py Add admin features and email verification 2026-01-31 07:01:51 +01:00
docker-compose.yml fix: change frontend healthcheck from wget to curl for Debian slim compatibility 2026-01-31 13:14:50 +01:00
Dockerfile Initial project structure with documentation 2026-01-30 18:00:41 +01:00
email_service.py feat: Implement passwordless authentication with Magic Links 2026-01-31 16:19:22 +01:00
IMPLEMENTATION_SUMMARY.md feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00
IMPLEMENTATION-GUIDE.md feat: Implement passwordless authentication with Magic Links 2026-01-31 16:19:22 +01:00
install.sh perf: make user-template-next optional and optimize build process 2026-01-31 16:43:10 +01:00
models.py feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00
README.md Initial project structure with documentation 2026-01-30 18:00:41 +01:00
requirements.txt Initial project structure with documentation 2026-01-30 18:00:41 +01:00
TEST_VERIFICATION.md feat: implement multi-container MVP with dev and prod templates 2026-01-31 20:33:07 +01:00

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