Door ·

Twee maanden op één Dokploy-box

Twee maanden op één Dokploy-box

Vandaag is het precies twee maanden geleden dat ik al mijn projecten op één Dokploy-box heb gezet. Deployen is geen infrastructuurwerk meer: één server met één manier om te shippen, in plaats van vijf VPS’en waar elke nieuwe site weer een nieuwe Nginx-config, een nieuwe certificaatverlenging en een nieuw proces dat herstart moest worden betekende.

De oude setup was geen ramp. Het is zo gegroeid. De projecten stonden verspreid over vijf VPS’en. Een deploy deed een pull van de repo op de server en herstartte de PM2-instance waar het project onder draaide, meestal getriggerd vanuit GitHub Actions. Elke site had een eigen Nginx-configuratie, met een Varnish-laag ervoor, en er eentje bijzetten betekende die configuratie schrijven, hopen dat hij goed samenging met alles wat al op de server stond, en dan een certificaat aanvragen en het SSL-blok in het bestand plakken.

Dat gaf twee soorten problemen. Een Nginx-wijziging op de ene site haalde andere sites op dezelfde server onderuit. De stillere variant was Certbot: soms werd een certificaat niet verlengd, en een verlopen certificaat op een site die klanten zien, staat niet goed.

De verhuizing

Ik installeerde Dokploy en zette eerst één project erop. Die test beviel zo goed dat ik nooit meer terug ben gegaan. In ongeveer een week heb ik de rest verhuisd, één applicatie per keer, met heel weinig downtime. Er waren geen incidenten, en de klantprojecten op de box bleven gewoon draaien.

Vandaag draaien er ergens tussen de 20 en 30 apps op. De meeste zijn Node.js, met wat Python en Go ertussen. De applicaties zijn stateless en hun databases staan elders, waardoor de server vervangbaar blijft. Deze blog is een van de apps op de box.

Hoe een deploy nu gaat

1.00

Een project wordt gebouwd vanuit de Dockerfile in de repo. Wijs Dokploy naar de repo en het bouwt. Voor sommige projecten draait GitHub Actions nog steeds eerst de CI-stappen en roept daarna de deployment-webhook van Dokploy aan. Het verschil zit in de deploy-stap: de server haalt de repo niet meer op en herstart geen proces meer handmatig.

Twee dingen zijn nog handmatig: omgevingsvariabelen en domeinen. De rest gaat automatisch. Domeinen lopen via de Cloudflare-integratie van Dokploy, die de DNS-wijziging regelt en de site een geldig SSL-certificaat geeft. Die ene flow vervangt het hele Nginx-en-Certbot-traject dat ik voor elke nieuwe site moest doorlopen.

De UI bespaart hier echt werk. Ik kan het project waar ik mee bezig ben vinden, het deployen, een domein wijzigen en een certificaat regelen vanaf hetzelfde scherm. Dat is het verschil tussen deployen omdat ik iets te shippen heb en deployen als werk op zich.

De rekening en de box

1.00

De server is een Netcup-box met 12 vCPU, 32 GB RAM en 1 TB schijf. Hij was de grootste van de vijf en al groot genoeg voor alles, dus ik heb alles naar die box verhuisd en de andere vier laten vallen. De betaalde tier van Dokploy kost $4,50 per maand. Ik betaal het zelf en er zit geen referral-link in deze post.

Wat er nog mis is

Er is in twee maanden niets belangrijks stukgegaan, wat zowel het goede nieuws is als het deel dat me ongemakkelijk maakt. De resourcemonitoring van Dokploy is niet goed. Ik heb nog geen alert gekregen, dus ik kan je niet vertellen dat de alerting werkt, en ik vertrouw er niet op dat die me laat weten wanneer de box door zijn resources heen is. Ik draai er mijn eigen script voor, maar dat script is niet robuust. Betere monitoring, voor de server en voor de applicaties erop, is het enige dat ik nog moet oplossen. Het is ook de functie die ik het liefst door Dokploy zelf geregeld zou zien.

De andere beperking is dat ik het maar op één server heb gedraaid. Ik weet niet of één project in een cluster over meerdere servers kan draaien, dus ik kan niemand daar advies over geven. Ik verwacht dat opschalen makkelijk is als een project de box ontgroeit, maar verwachting is geen ervaring.

Twee maanden verder

1.00

Ik zou het iedereen aanraden, met de kanttekening dat ik het alleen op één server heb gedraaid. Voor iemand die nog een idee aan het verkennen is, is de pitch simpeler: de tijd die je niet aan Nginx en certificaten besteedt, besteed je aan het idee. Zelfs als het idee groeit, blijven de repo en de Dockerfile hetzelfde, en is de box het deel dat je vervangt.

Als je projecten over meer dan één server draait, is mijn setup kopiëren niet wat je deze week moet doen. Tel eens hoeveel van je deploytijd opgaat aan Nginx, certificaten en het herstarten van processen, zet dan één project over en kijk of dat aantal daalt.

Lees ook