Overview
EmiBrain gira su un server Hetzner CAX21 (ARM64, 8GB RAM, 80GB SSD, Debian 12). Tutto in Docker CE 29.3 + Compose 5.1. Ogni utente ha il suo container workspace isolato.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Server Hetzner (178.104.48.34 / Tailscale 100.70.197.28) β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β emibrain- β β emibrain- β β emibrain- β β
β β nginx β β php β β admin β β
β β :80 β proxy β β FPM :9000 β β :3100 webssh β β
β ββββββββ¬ββββββββ ββββββββββββββββ β :8080 api β β
β β ββββββββββββββββ β
β β βββββββββββββββββββββββββββββββββββββββββββ β
β β β Workspace Containers β β
β β β ws-giobi ws-puddu ws-bodini β β
β β β ws-ricci ws-franzini ws-stagista β β
β β β (Claude Code + tmux + brain) β β
β β βββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββ β
β β /var/emibrain/ β β
β β βββ brains/{slug}/ β volume mount (rw) β β
β β βββ repos/{slug}.git β bare repos (backup) β β
β β βββ shared/ β volume mount (ro) β β
β β βββ database.sqlite β Laravel DB β β
β β βββ docker/ β build context β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββContainer
| Container | Ruolo | RAM | Porte |
|---|---|---|---|
emibrain-nginx | Reverse proxy, static files, Cloudflare SSL | β | 80 |
emibrain-php | PHP 8.4 FPM per Laravel | β | 9000 |
emibrain-admin | WebSSH server (Node.js), Docker socket, brain API | β | 3100, 8080 |
emibrain-ws-* | Workspace utente (Claude Code + tmux) | 512M-1G | β |
Volume Mount
| Host | Container | Mode |
|---|---|---|
/var/emibrain/brains/{slug} | /home/brain/workspace | rw |
/var/emibrain/shared | /home/brain/shared | ro |
/var/run/docker.sock | /var/run/docker.sock (solo admin) | rw |
Dockerfile.workspace
L'immagine workspace include:
- Debian bookworm-slim + Python3, Node.js, git, tmux, curl, sqlite3
- Claude Code installato globalmente via npm
- SSH server (per accesso diretto via
ssh brain@container) - Brain template baked in
/opt/emibrain/brain-template/ - Entrypoint che fa auto-bootstrap al primo avvio: crea
boot/,wiki/,diary/, git init, primo commit
up -d.