- 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>
371 lines
5.1 KiB
Markdown
371 lines
5.1 KiB
Markdown
# Advies — Zelf een Git-platform hosten naast of in plaats van GitHub
|
||
|
||
## Situatie
|
||
|
||
Je wilt onderzoeken of je lokaal of op een eigen server een Git repository-platform kunt draaien vergelijkbaar met GitHub.
|
||
|
||
In jouw situatie spelen mee:
|
||
|
||
- Next.js/Vercel apps
|
||
- AI-workers / automation
|
||
- batch processing
|
||
- deploy pipelines
|
||
- private code
|
||
- mogelijk draaien op NAS of VPS
|
||
- integratie met Claude Code / Codex / agents
|
||
|
||
Het antwoord is: ja, dit kan uitstekend.
|
||
|
||
---
|
||
|
||
# Architectuur-opties
|
||
|
||
## Optie 1 — Alleen een centrale Git remote
|
||
|
||
De lichtste oplossing.
|
||
|
||
Je draait alleen een zogenaamde "bare repo" op een Linux server.
|
||
|
||
### Voordelen
|
||
|
||
- extreem simpel
|
||
- weinig resources
|
||
- volledige controle
|
||
- SSH push/pull
|
||
|
||
### Nadelen
|
||
|
||
- geen webinterface
|
||
- geen PR’s
|
||
- geen issues
|
||
- geen gebruikersbeheer
|
||
- geen CI/CD UI
|
||
|
||
### Setup
|
||
|
||
Server:
|
||
|
||
```bash
|
||
mkdir -p /srv/git/myapp.git
|
||
cd /srv/git/myapp.git
|
||
git init --bare
|
||
```
|
||
|
||
Client:
|
||
|
||
```bash
|
||
git remote add origin ssh://user@server:/srv/git/myapp.git
|
||
git push -u origin main
|
||
```
|
||
|
||
---
|
||
|
||
# Optie 2 — Self-hosted GitHub alternatief
|
||
|
||
Dit is meestal de beste keuze.
|
||
|
||
Software opties:
|
||
|
||
| Software | Omschrijving |
|
||
|---|---|
|
||
| Gitea | Lichtgewicht GitHub alternatief |
|
||
| Forgejo | Community fork van Gitea |
|
||
| GitLab | Zeer compleet maar zwaar |
|
||
| OneDev | Moderne alles-in-één oplossing |
|
||
|
||
---
|
||
|
||
# Aanbevolen keuze: Gitea
|
||
|
||
## Waarom
|
||
|
||
Voor jouw situatie is Gitea waarschijnlijk de beste balans tussen:
|
||
|
||
- eenvoud
|
||
- performance
|
||
- features
|
||
- beheerlast
|
||
|
||
Je krijgt:
|
||
|
||
- Git hosting
|
||
- web UI
|
||
- pull requests
|
||
- issues
|
||
- SSH support
|
||
- webhooks
|
||
- CI integratie
|
||
- Docker support
|
||
- private repos
|
||
- multi-user support
|
||
|
||
---
|
||
|
||
# Aanbevolen architectuur voor jouw setup
|
||
|
||
## Huidige richting
|
||
|
||
```text
|
||
MacBook
|
||
↓
|
||
GitHub
|
||
↓
|
||
Vercel deploy
|
||
```
|
||
|
||
## Uitgebreide AI workflow
|
||
|
||
```text
|
||
MacBook
|
||
↓
|
||
Gitea / GitHub
|
||
↓ webhook
|
||
AI Worker Server
|
||
↓
|
||
Repo clone
|
||
↓
|
||
Code generatie
|
||
↓
|
||
Commit + push
|
||
↓
|
||
PR creation
|
||
↓
|
||
Merge
|
||
↓
|
||
Vercel deploy
|
||
```
|
||
|
||
---
|
||
|
||
# Beste strategie voor jouw situatie
|
||
|
||
## Advies: hybride model
|
||
|
||
Gebruik:
|
||
|
||
| Component | Platform |
|
||
|---|---|
|
||
| publieke repos | GitHub |
|
||
| deploys | Vercel |
|
||
| AI worker orchestration | eigen server |
|
||
| interne experimenten | Gitea |
|
||
| automation | self-hosted |
|
||
|
||
Waarom:
|
||
|
||
- GitHub ecosystem blijft beschikbaar
|
||
- recruiters herkennen GitHub
|
||
- Copilot integratie blijft optimaal
|
||
- minder beheer
|
||
- sneller stabiel
|
||
|
||
---
|
||
|
||
# Wanneer volledig self-hosted interessant wordt
|
||
|
||
Volledig self-hosted wordt interessant als:
|
||
|
||
- privacy belangrijk is
|
||
- AI agents autonoom moeten kunnen werken
|
||
- je volledige controle wilt
|
||
- je GitHub limieten wilt vermijden
|
||
- je meerdere workers wilt draaien
|
||
|
||
Dan bouw je:
|
||
|
||
```text
|
||
Gitea
|
||
+ Postgres
|
||
+ Docker Registry
|
||
+ CI Runners
|
||
+ Reverse Proxy
|
||
+ Backups
|
||
+ Monitoring
|
||
```
|
||
|
||
---
|
||
|
||
# Aanbevolen infrastructuur
|
||
|
||
## Lichtgewicht setup
|
||
|
||
### Hardware
|
||
|
||
- Synology NAS of mini-PC
|
||
- 8–16 GB RAM
|
||
- SSD opslag
|
||
|
||
### Software stack
|
||
|
||
| Component | Advies |
|
||
|---|---|
|
||
| OS | Ubuntu Server |
|
||
| Containers | Docker Compose |
|
||
| Git platform | Gitea |
|
||
| Reverse proxy | Traefik |
|
||
| Database | Postgres |
|
||
| SSL | Let's Encrypt |
|
||
| Deploys | Vercel |
|
||
|
||
---
|
||
|
||
# Docker Compose voorbeeld
|
||
|
||
```yaml
|
||
services:
|
||
gitea:
|
||
image: gitea/gitea:latest
|
||
container_name: gitea
|
||
|
||
ports:
|
||
- "3000:3000"
|
||
- "222:22"
|
||
|
||
volumes:
|
||
- ./gitea:/data
|
||
|
||
restart: always
|
||
```
|
||
|
||
Starten:
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
Daarna bereikbaar via:
|
||
|
||
```text
|
||
http://server-ip:3000
|
||
```
|
||
|
||
---
|
||
|
||
# Belangrijke aandachtspunten
|
||
|
||
## Backups
|
||
|
||
Bij self-hosting moet je zelf regelen:
|
||
|
||
- database backups
|
||
- repo backups
|
||
- disaster recovery
|
||
|
||
---
|
||
|
||
## Security
|
||
|
||
Je bent zelf verantwoordelijk voor:
|
||
|
||
- updates
|
||
- SSH security
|
||
- firewall
|
||
- SSL certificaten
|
||
- gebruikersbeheer
|
||
|
||
---
|
||
|
||
## CI/CD
|
||
|
||
GitHub Actions vervang je mogelijk door:
|
||
|
||
- Gitea Actions
|
||
- Drone CI
|
||
- Woodpecker CI
|
||
- self-hosted runners
|
||
|
||
---
|
||
|
||
# Integratie met jouw AI-worker ideeën
|
||
|
||
Dit sluit zeer goed aan op jouw eerdere ideeën:
|
||
|
||
- Neon database events
|
||
- worker servers
|
||
- auto-generated PR’s
|
||
- selective deploys
|
||
- batch execution
|
||
|
||
Je kunt bijvoorbeeld:
|
||
|
||
1. story wordt aangemaakt
|
||
2. worker krijgt event via SSE/webhook
|
||
3. repo wordt gecloned
|
||
4. AI implementeert wijziging
|
||
5. commit + push
|
||
6. PR automatisch aangemaakt
|
||
7. review pipeline start
|
||
8. merge → deploy
|
||
|
||
Dit wordt veel eenvoudiger wanneer je volledige controle hebt over de Git infrastructuur.
|
||
|
||
---
|
||
|
||
# Concrete roadmap
|
||
|
||
## Fase 1 — huidige setup stabiliseren
|
||
|
||
Hou:
|
||
|
||
- GitHub
|
||
- Vercel
|
||
- Neon
|
||
|
||
Voeg toe:
|
||
|
||
- AI worker server
|
||
- webhooks
|
||
- automation pipeline
|
||
|
||
---
|
||
|
||
## Fase 2 — interne Git infrastructuur
|
||
|
||
Installeer:
|
||
|
||
- Gitea
|
||
- Docker
|
||
- Postgres
|
||
|
||
Gebruik dit voor:
|
||
|
||
- experimenten
|
||
- AI-generated branches
|
||
- interne repos
|
||
- automation testing
|
||
|
||
---
|
||
|
||
## Fase 3 — geavanceerde automation
|
||
|
||
Later toevoegen:
|
||
|
||
- self-hosted runners
|
||
- preview environments
|
||
- deploy approvals
|
||
- selective deployments
|
||
- agent orchestration
|
||
|
||
---
|
||
|
||
# Eindadvies
|
||
|
||
Voor jouw situatie:
|
||
|
||
## Niet meteen GitHub vervangen
|
||
|
||
Dat levert nu vooral extra beheerlast op.
|
||
|
||
## Wel nu al beginnen met:
|
||
|
||
- eigen AI worker server
|
||
- webhook automation
|
||
- lokale Git orchestration
|
||
- Gitea testomgeving
|
||
|
||
Dat sluit perfect aan op:
|
||
|
||
- Scrum4Me
|
||
- AI-assisted development
|
||
- batch story execution
|
||
- autonome pipelines
|