- docs/plans/Local github setup.md - docs/plans/lees-de-readme-md-validated-book.md - docs/plans/zustand-store-rearchitecture.md - docs/recommendations/beelink-ubuntu-scrum4me-server-caveman-plan.md - docs/recommendations/claude-vm-job-flow-git-strategy.md - docs/INDEX.md updated Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9.5 KiB
| title | status | audience | language | last_updated | ||
|---|---|---|---|---|---|---|
| Caveman plan — Beelink naar Ubuntu Scrum4Me server | draft |
|
nl | 2026-05-09 |
Caveman plan — Beelink naar Ubuntu Scrum4Me server
Doel
Zet de Beelink mini-PC om naar een dual-boot machine waarop Ubuntu Server 24.04 LTS de standaard server-boot is. Windows blijft bestaan als fallback, maar Scrum4Me draait op Ubuntu.
Doelopstelling:
Beelink mini-PC
├─ Windows fallback
└─ Ubuntu Server 24.04 LTS default
├─ Docker Engine
├─ Postgres
├─ Scrum4Me webserver
├─ worker-idea
├─ worker-implementation
└─ worker-orchestrator
Hardware
Bekende specs:
| Onderdeel | Waarde |
|---|---|
| Merk | Beelink |
| CPU | Intel Core i5-12450H |
| CPU boost | Tot 4,4 GHz |
| RAM | 32 GB DDR4 |
| Opslag | 1 TB |
| GPU | Intel integrated graphics |
| Vorm | Mini-PC |
Conclusie: geschikt voor Scrum4Me als single-user/small-team server, mits implementation-concurrency op 1 blijft en resource limits strak staan.
Caveman Regels
- Geen Ubuntu Desktop installeren.
- Geen GPU-driver installeren tenzij beeld echt kapot is.
- Geen Docker Desktop.
- Geen Postgres-poort naar internet.
- Geen Docker socket mounten in workercontainers.
- Geen repos, caches of worktrees op de Windows-partitie.
- Alles onder
/srv/scrum4me. - Eerst één worker werkend krijgen, daarna pas drie.
- Eerst via lokaal IP testen, daarna pas domein/TLS.
- Ubuntu wordt default boot; Windows is fallback.
Waarom Geen Drivergedoe Verwacht Wordt
De CPU heeft Intel integrated graphics. Ubuntu Server heeft geen desktop nodig. Intel geeft aan dat de meeste Linux-distributies Intel graphics drivers al meeleveren. Voor deze machine verwacht je de kernel-driver i915.
Na installatie alleen checken:
lspci -k | grep -EA3 'VGA|3D|Display'
lsmod | grep i915
Als i915 zichtbaar is: klaar. Niet verder aan sleutelen.
Fase 0 — Voorbereiding In Windows
- Maak backup van belangrijke Windows-data.
- Sla BitLocker recovery key op als BitLocker aan staat.
- Zet Windows Fast Startup uit:
- Control Panel
- Power Options
- Choose what the power buttons do
- Turn off fast startup
- Maak vrije ruimte:
- Open Disk Management.
- Shrink
C:. - Laat ongeveer
600 GBunallocated voor Ubuntu.
Aanbevolen diskverdeling:
Windows: 250-300 GB
Ubuntu /: 120 GB
/srv/scrum4me: rest van vrije ruimte
swapfile: 16 GB
EFI: bestaande EFI behouden
Fase 1 — Ubuntu USB Maken
- Download Ubuntu Server 24.04 LTS amd64.
- Maak USB-stick met Rufus of Balena Etcher.
- Sluit ethernet aan op de Beelink.
- Boot van USB.
Veelvoorkomende Beelink toetsen:
Boot menu: F7
BIOS: Del
BIOS-checks:
UEFI boot: aan
Secure Boot: mag aan blijven, maar uitzetten als install gedoe geeft
Power on after power loss: aan
Ubuntu later als eerste boot entry
Fase 2 — Ubuntu Installeren
Kies tijdens installatie:
Install Ubuntu Server
OpenSSH server: YES
Desktop: NO
Storage: Custom layout
Storage:
Bestaande EFI partition:
mount: /boot/efi
formatteren: NEE
Nieuwe ext4 partition 120 GB:
mount: /
Nieuwe ext4 partition rest:
mount: /srv/scrum4me
Niet kiezen:
Use entire disk
Dat zou Windows verwijderen.
Fase 3 — Eerste Boot
Login op Ubuntu.
sudo apt update
sudo apt upgrade -y
sudo reboot
Na reboot:
sudo hostnamectl set-hostname scrum4me-server
ip a
Zet in je router een DHCP reservation voor het IP-adres. Dat is simpeler dan handmatige netwerkconfiguratie.
Fase 4 — Server Niet Laten Slapen
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
In BIOS:
Power on after power loss: ON
Sleep: OFF als optie bestaat
Boot order: Ubuntu eerst
Fase 5 — Basis Tools
sudo apt install -y git curl ca-certificates gnupg htop iotop ufw fail2ban unzip jq
Firewall:
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
sudo ufw status
Let op: Docker kan gepubliceerde containerpoorten buiten gewone ufw-verwachtingen om bereikbaar maken. Publiceer straks alleen reverse proxy poorten naar buiten.
Fase 6 — Docker Engine Installeren
Gebruik Docker Engine native op Ubuntu. Geen Docker Desktop.
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
sudo reboot
Na reboot:
docker run hello-world
docker compose version
Fase 7 — Scrum4Me Directories
sudo mkdir -p /srv/scrum4me/{postgres,repos,worker-cache,worker-logs,worker-state,backups,compose,caddy}
sudo chown -R $USER:$USER /srv/scrum4me
Doelstructuur:
/srv/scrum4me/postgres database data
/srv/scrum4me/repos cloned GitHub repos / mirrors
/srv/scrum4me/worker-cache npm/git/cache
/srv/scrum4me/worker-logs worker logs
/srv/scrum4me/worker-state worker state
/srv/scrum4me/backups local backup staging
/srv/scrum4me/compose docker compose files
/srv/scrum4me/caddy reverse proxy config
Fase 8 — Services
Einddoel:
postgres
scrum4me-web
worker-idea
worker-implementation
worker-orchestrator
caddy
Aanbevolen resource limits voor 32 GB RAM:
| Service | CPU limit | Memory limit | Opmerking |
|---|---|---|---|
postgres |
2 CPU | 3-4 GB | Lokale DB |
scrum4me-web |
2 CPU | 2-3 GB | Next.js runtime |
worker-idea |
2 CPU | 4 GB | Grill, plan, chat |
worker-implementation |
4-5 CPU | 10-12 GB | Zwaarste worker |
worker-orchestrator |
2-3 CPU | 5-6 GB | PR review, CI triage, conflicts |
caddy of nginx |
0.25 CPU | 256 MB | Reverse proxy |
Laat 5-7 GB vrij voor Ubuntu, Docker overhead, filesystem cache en pieken.
Fase 9 — Tokens en Secrets
Maak aparte tokens per rol:
SCRUM4ME_TOKEN_IDEA
SCRUM4ME_TOKEN_IMPLEMENTATION
SCRUM4ME_TOKEN_ORCHESTRATOR
GH_TOKEN_IDEA
GH_TOKEN_IMPLEMENTATION
GH_TOKEN_ORCHESTRATOR
CLAUDE_CODE_OAUTH_TOKEN_IDEA
CLAUDE_CODE_OAUTH_TOKEN_IMPLEMENTATION
CLAUDE_CODE_OAUTH_TOKEN_ORCHESTRATOR
Tokenbeleid:
| Token | Rechten |
|---|---|
| Idea | Read-only waar mogelijk, markdown/status updates via Scrum4Me |
| Implementation | GitHub contents RW + pull requests RW |
| Orchestrator | PR RW, contents RW alleen voor conflict/repair |
Bestandsrechten:
chmod 600 /srv/scrum4me/compose/*.env
Geen secrets in git.
Fase 10 — Backups
Minimum:
Elke nacht pg_dump
Elke nacht backup van /srv/scrum4me/compose
Offsite kopie naar cloud, NAS of externe disk
Backup restore maandelijks testen
Lokale backup alleen is onvoldoende. Als de SSD stuk gaat, is alles weg.
Fase 11 — Monitoring
Simpel beginnen:
docker ps
docker stats
htop
iotop
df -h
du -sh /srv/scrum4me/*
journalctl -u docker --no-pager -n 100
Dagelijkse health checklist:
Docker containers up?
Disk < 80% vol?
Backups gelukt?
Workers online?
Postgres bereikbaar?
Webserver bereikbaar via HTTPS?
Geen runaway logs?
Fase 12 — Uitrolvolgorde
Niet alles tegelijk.
- Ubuntu werkt.
- SSH werkt.
- Docker werkt.
- Caddy/nginx testpagina werkt.
- Postgres container werkt.
- Scrum4Me webserver werkt lokaal.
- Scrum4Me webserver werkt via HTTPS.
- Eén worker werkt:
worker-idea. - Tweede worker werkt:
worker-implementation. - Derde worker werkt:
worker-orchestrator. - Role-aware queue claiming aanzetten.
- Backups testen.
Eerste Smoke Test
Na installatie:
hostnamectl
free -h
df -h
lscpu
docker version
docker compose version
docker run hello-world
lspci -k | grep -EA3 'VGA|3D|Display'
lsmod | grep i915
Verwacht:
Ubuntu 24.04 LTS
~32 GB RAM zichtbaar
Docker werkt
1 TB disk verdeeld zoals gepland
i915 zichtbaar voor Intel integrated graphics
Foutscenario's
Geen beeld na Ubuntu install
Eerst:
Gebruik HDMI-poort 1
Gebruik andere kabel
Boot recovery mode
Probeer tijdelijk Secure Boot uit
Niet meteen drivers installeren.
Windows start direct, geen Ubuntu menu
BIOS boot order aanpassen:
Ubuntu boven Windows Boot Manager
Docker permission denied
groups
Als docker ontbreekt:
sudo usermod -aG docker $USER
sudo reboot
Server wordt traag
Check:
docker stats
free -h
htop
iotop
Eerste maatregel:
implementation-worker alleen laten draaien
orchestrator zware builds verbieden
worker memory limits verlagen
Bronnen
- Ubuntu Server requirements: https://ubuntu.com/server/docs/reference/installation/system-requirements/
- Ubuntu Server install docs: https://ubuntu.com/server/docs/how-to/installation/
- Intel Linux graphics guidance: https://www.intel.com/content/www/us/en/support/articles/000005520/graphics.html
- Docker Engine on Ubuntu: https://docs.docker.com/installation/ubuntulinux/
- Next.js self-hosting: https://nextjs.org/docs/app/guides/self-hosting