@
Mars Warrior Leuk dat je dit project zo mag gaan doen

. Tot een paar jaar terug heb ik op mijn werk de complete infrastructuur in beheer gehad. Inclusief versiebeheer, CI/CD, Agile-apps, gateway, SSO, Docker en uiteindelijk Kubernetes. Allemaal super leuk, maar probeer het wel behapbaar te houden. Een mooie stack is ontzettend leuk, maar het is leuker als je het snapt en kunt overdragen

.
Als basis zal - als het goed is - Proxmox + PBS worden ingezet met 1 grote VM met daarin de hele serie aan docker containers. Proxmox regelt dan lekker ZFS + Backup en een stuk beheer.
Wij gebruikte in de basis gewone Debian servers. Dat deden we niet op 1 grote VM, maar kleinere VMs. Eén grote VM (of colo) klinkt verleidelijk, maar nam bij problemen meteen heel de stack mee

. Daarom hadden we bijvoorbeeld 1 VM voor monitoring (o.a.
Prometheus), 1 VM voor Git en CI-controller, etc. De CI-runners stonden dan op aparte machines zodat ook hier de load eenvoudig verdeeld kon worden. Ik zeg hierbij niet dat dit 'het beste' is, maar ik zou je dit wel aanraden om mee te nemen in de overweging.
Het inrichten van deze machines deden we met
Ansible. Dat doe ik privé nog steeds. Dat is een forse drempel, maar zorgt voor eenvoudig te herhalen, idempotente setups. Hierdoor weet ik zeker dat twee keer dezelfde uitrol, twee keer hetzelfde resultaat oplevert. Tegelijkertijd is het
infrastructure-as-code en is het daardoor ook in versiebeheer.
Backup doe ik thuis met
Kopia. Dat is een deduplicerende, met pariteit beveiligde, versleutelde backup software. Hele mond vol, maar zorgt voor relatief kleine backups, met toch alles erin. Ook kan ik met Kopia dergelijke backups a la rsync eenvoudig syncen naar meerdere targets zodat ik hier redundantie heb. En het terughalen van data is met de web UI kinderlijk eenvoudig.
Professioneel sloegen we eigenlijk altijd alles op in databases en waren applicaties 'stateless'. Die databases werden dan gesnapshot en gesynct. Dat doe ik voor mijn Kopia backups (waar van toepassing) nog steeds. Een PostgreSQL WAL is namelijk geen backup.
Maar ik wil dan ook het bijwerken van de containers beheersbaarder maken. Nu kijk ik gewoon zelf, en ik update af en toe als ik zin heb.
Een paar jaar terug keken we eenmaal per week naar updates en voerde we die handmatig uit met Ansible. Momenteel gebruik ik dus
Renovate en gebeuren updates (veelal) automatisch. Het is afhankelijk van de applicatie en soort update.
Met Renovate kun je bijvoorbeeld ook eenvoudig buiten SLA tijden updaten, updates uitstellen en handmatige uitrol verplicht stellen. Dit zijn 3 voorbeelden, maar Renovate is enorm uitgebreid. De opzet van Renovate was echter kinderlijk eenvoudig en heb ik al eerder iets over geschreven hier

.
Op internet kom ik vaak de combi van Forgejo + Renovate + Woodpecker tegen. Woodpecker CI zou beter/makkelijker zijn dan Forgejo CI.
Privé en professioneel heb ik verschillende stacks gebruikt. Thuis gebruikte ik eerder
Gitea en later
Forgejo. Dat zijn oprecht mooie pakketten. Privé en professioneel heb ik veel ervaring opgedaan met
GitLab.
GitLab liep echt wel voor op Gitea en Forgejo, maar het zit IMHO tegenwoordig allemaal vrij dicht bij elkaar. Gitea en Forgejo zijn wat minder verfijnd dan GitLab. Gitea's updatecyclus vind ik eigenlijk te traag, maar dat hebben ze bij Forgejo opgelost.
Ik zou je aanraden om de native CI solution te gebruiken. Wij gebruikte professioneel
JetBrains TeamCity met GitLab en dat werkte prima hoor, maar ik was er eigenlijk niet zo over te spreken. De integratie van GitLab CI met GitLab (en Forgejo Runners met Forgejo) is dan, alhoewel je een vendor lock-in hebt, wel enorm strak. Dat mist dan met TeamCity. Ik vind het bijvoorbeeld wel tof dat build statussen direct op het dashboard staan. Het is dan ook weer andere applicatie die je moet openen

.
Functioneel is het Audi, BMW en Mercedes en doet het weinig voor elkaar onder. Het enige wat ik enorm mis bij Forgejo en Gitea is
organisations within organisations. Dat heeft GitLab wel, maar hoeft wellicht geen showstopper te zijn.
Je mist overigens ook nog wellicht een stukje IAM. Het zou ook mooi zijn als je daarbij aan kunt sluiten op de oplossing van je werkgever. Bijvoorbeeld Active Directory / LDAP, Google IAM of Microsoft 365. Met een dergelijke aansluiting scoor je direct veel punten

. En management kan erg gevoelig zijn voor branding

.
Tot slot wil ik je meegeven dat ChatGPT kan werken om mee op te starten, maar die gaat je waarschijnlijk wel in de steek laten

. Eigen documentatie en kennisontwikkeling is hierbij een must. Probeer hier ook direct mee te starten. Dan kun je ook vastleggen wat je overwegingen zijn. Dit voelt misschien in het begin suf, maar zorgt uiteindelijk ook voor accountability. Waarom kies je in 2025 voor product Y wanneer in 2026 product Z beter is? En dat is helemaal niet slecht om vast te leggen, maar geeft juist inzicht

.