Draai de server waar je al werkt
De Crunu-server is bewust blind. Op app.crunu.com of op infrastructuur die je zelf beheert, bewaart hij versleutelde data, publieke sleutels en ondertekende records, en heeft hij geen sleutel die ook maar één waarde ontsleutelt.
Wat je eerst nodig hebt
- 1Node.js 24 en de servercodeDe beheertools server-init, doctor en crunu-server draaien erop. De server is geen publieke download: mail naar support@crunu.com om hem te krijgen.
- 2Een adres dat je houdtInloghandtekeningen, deellinks, passkeys en agents zijn gebonden aan het domein van de server, dus dat kan later niet veranderen.
- 3Een veilige plek voor .envEen wachtwoordmanager volstaat. Het bestand bevat SERVER_KEY, het belangrijkste geheim van de server.
Eén keer per server
Installeren
Vijf stappen brengen je van een lege machine of cloudaccount naar een draaiende server met zijn eerste eigenaar.
1Bepaal wie de server beheert
Versleuteling gebeurt in de browser en in de agent
crunu, nooit op de server. De keuze tussen app.crunu.com en een eigen server gaat dus over wie hem beheert en wie zijn metadata ziet. In beide gevallen kan niemand aan de serverkant je waarden lezen.- app.crunu.com: Crunu draait de server op Cloudflare Workers met een D1-database, gratis tijdens de vroege toegang
- Je eigen server: jij beheert hem, jij betaalt je platformprovider, en alleen jij ziet zijn metadata
- Metadata zijn de namen van organisaties, projecten, omgevingen en machines, e-mailadressen, de auditlog, en de grootte en het tijdstip van versies
Voorbeeld. Kiteline is een fictief bedrijf. 2Genereer de instellingen van de server
server-initschrijft een.env-bestand met een nieuweSERVER_KEY, een eenmaligeBOOTSTRAP_TOKENvoor de eerste eigenaar en eenCRON_SECRET. Alleen jouw gebruiker kan het bestand lezen.- Bewaar meteen een kopie in je wachtwoordmanager
- Raak je SERVER_KEY kwijt, dan wordt iedereen uitgelogd en werken deellinks niet meer. De data van omgevingen blijft bewaard
3Kies een van vijf platforms
Elk platform draait dezelfde server met hetzelfde databaseschema, en de webapp zit erin ingebouwd. Elk deployscript controleert
.envmet de code die de server bij het opstarten gebruikt, dus een verkeerde instelling stopt de deploy met een duidelijke melding.- Docker op je eigen server: Caddy regelt TLS-certificaten, en Cloudflare Tunnel werkt als je geen open poorten wilt
- Cloudflare Workers: Free volstaat voor een proef, maar een team heeft Workers Paid nodig, want Free geeft elk verzoek 10 ms CPU-tijd
- Vercel: previews krijgen een eigen database en serversleutel, en op het Hobby-abonnement draait de opschoning hooguit één keer per dag
- AWS App Runner alleen in AWS-accounts die het al gebruiken: AWS heeft het gesloten voor nieuwe klanten, en Crunu heeft geen script voor Amazon ECS Express Mode
Voorbeeld. Kiteline is een fictief bedrijf. 4Deploy met het script van het platform
Eén opdracht per platform bouwt en deployt de server. Secrets bereiken het platform via stdin of een bestand dat alleen jij kunt lezen, nooit via argumenten of uitvoer van een opdracht. De server voert databasemigraties zelf uit bij het opstarten.
- Hetzelfde script installeert de eerste versie en elke update
- Op Cloudflare gaan code en secrets samen uit als één versie, dus een mislukte deploy verandert niets
5Maak de eerste eigenaar aan
Open het adres van de server en vul de bootstrapsleutel uit
.envin. Je account- en organisatiesleutels worden in je browser aangemaakt, en de sleutel werkt na dit ene gebruik niet meer. Bewaar daarna je Emergency Kit, maak een herstelcode aan en zet een tweede factor aan.- Zonder de Emergency Kit en je wachtwoord kan een nieuw apparaat niet inloggen
- Alle anderen komen erbij via een uitnodiging
Elke dag
Draaien
Draait hij eenmaal, dan houden drie gewoontes de server gezond: een controle na elke deploy, bewaking en een dagelijkse back-up.
6Controleer de deployment met doctor
doctorcontroleert een draaiende server van buitenaf: status, TLS en verloop van het certificaat, beveiligingsheaders, compressie van API-antwoorden, de serverklok, de agentrelease, migraties, opschoning en het clientadres achter proxy’s.- Een totaaloordeel en een exitcode, zodat het in cron en CI past
- --json geeft machineleesbare uitvoer
7Houd status, metrics en waarschuwingen in de gaten
GET /v2/healthwerkt met uptimecheckers zoals UptimeRobot of Better Stack.GET /v2/statusmet een beheertoken geeft metrics als JSON of in Prometheus-formaat, zonder waarden en zonder e-mailadressen. Waarschuwingen bereiken je team via een ondertekende webhook of per e-mail.- Slack, Microsoft Teams en PagerDuty koppel je via hun inkomende webhooks
- Op Cloud Run en App Runner draait de opschoning alleen bij verkeer, dus waarschuwingen die op de toestand afgaan, kunnen te laat komen
8Maak back-ups naar elke opslag die je wilt
crunu-server exportschrijft de hele database naar één archief. Er staan geen onversleutelde waarden in, dus je kunt het bij elke provider bewaren. Houd het.env-bestand er apart van, in je wachtwoordmanager.- Exporteer elke dag en bewaar 30 dagen. De server heeft geen ingebouwde planner, en de handleiding voor back-ups geeft een kant-en-klare cronregel voor Docker
- Controleer elke maand een kopie, of beter: zet die terug in een testdatabase
- Een herstel draait alles na de kopie terug, en apparaten die nieuwere data hebben gezien, weigeren de oudere staat tot je ze reset
Als het nodig is
Wijzigen
Verhuizen, de serversleutel roteren en bijwerken doe je met de deployscripts en crunu-server die je al hebt.
9Verhuis naar een ander platform met één archief
Exporteer de database, controleer het archief, importeer het in een lege database op het nieuwe platform, deploy daar met dezelfde
.enven zet dan DNS om. Elk van de zes opstellingen kan naar elke andere verhuizen, in beide richtingen.- Houd dezelfde SERVER_KEY en hetzelfde adres. Alleen het DNS-record verandert
- Machines blijven draaien op de variabelen die ze al hebben voor hun lease, tot 24 uur
- Houd het oude platform een week aan. Teruggaan is een DNS-wijziging
Voorbeeld. Kiteline is een fictief bedrijf. 10Roteer de serversleutel zonder dat iemand wordt uitgelogd
Tijdens een rotatie blijft de vorige sleutel werken, worden tokens bij gebruik opnieuw gehasht met de nieuwe sleutel, en versleutelt
rotate-keyTOTP-geheimen en meldingskanalen opnieuw. Mensen blijven ingelogd en deellinks blijven openen. De data van omgevingen wordt nooit met deze sleutel versleuteld.- Vier stappen: new-server-key, deploy, rotate-key, drop-previous-key
- Roteer als .env mogelijk is gezien, na een verhuizing, of eens per jaar
11Bijwerken zonder aparte migratiestap
Een update gebruikt hetzelfde deployscript als de eerste installatie, en de server voert migraties uit bij het opstarten. Migraties voegen alleen toe, en uitgebrachte migraties zijn beschermd met checksums, dus je kunt de code terugdraaien zonder de database terug te draaien.
- Webreleases zijn ondertekend, en de server levert de handtekening mee, zodat een uitgerolde site ertegen kan worden gecontroleerd
- Terugdraaien naar een versie onder 6.0 kan niet
Vragen over zelf hosten
Wat beheerders vragen voordat ze hun eigen server draaien.
Nog een vraag? Mail naar support@crunu.com.
Is app.crunu.com dezelfde software die ik zelf kan hosten?
Ja. app.crunu.com draait dezelfde Crunu-server, uitgerold op Cloudflare Workers met een D1-database.
Kunnen de mensen die app.crunu.com beheren mijn secrets lezen?
Nee. De server bewaart versleutelde data en heeft geen sleutel om die te ontsleutelen. Als beheerder ziet Crunu wel metadata: de namen van organisaties, projecten, omgevingen en machines, e-mailadressen, de auditlog, en de grootte en het tijdstip van elke versie. Eén risico geldt voor elke kluis in de browser: een overgenomen server zou een aangepaste webapp kunnen leveren die je wachtwoord en Secret Key ziet als je inlogt. Ondertekende releases en een strikte Content Security Policy verkleinen dat risico, en de pagina met beperkingen legt de rest uit.
Kan ik later van app.crunu.com naar mijn eigen server overstappen?
Niet in één stap. Het archief dat een server tussen platforms verhuist, wordt gemaakt van de hele database van de server, en op app.crunu.com heeft alleen de beheerder daar toegang toe. Je kunt wel op elk moment elke omgeving die je kunt lezen als .env-bestand exporteren of een offline kopie downloaden, en die bestanden daarna aan je eigen server toevoegen. Geschiedenis, toegangsinstellingen en de auditlog gaan op die manier niet mee.
Wordt AWS ondersteund?
Gedeeltelijk. Het Crunu-script deployt naar AWS App Runner, maar AWS heeft App Runner gesloten voor nieuwe klanten, dus het werkt alleen in accounts die het al gebruiken. Crunu heeft geen script voor Amazon ECS Express Mode, de dienst die AWS in plaats daarvan aanraadt. Met een nieuw AWS-account kies je Cloud Run, Vercel of je eigen server.
Wat gebeurt er met machines en CI tijdens een verhuizing?
Machines blijven draaien op de variabelen die ze al hebben, zolang hun lease loopt, tot 24 uur. Vraag het team om 15 tot 30 minuten geen omgevingen te wijzigen en niemand uit te nodigen terwijl je overstapt: wat na de export naar de oude server wordt geschreven, komt niet op de nieuwe.
Kan ik meerdere serverinstanties draaien voor hoge beschikbaarheid?
Op Postgres kunnen meerdere instanties één database delen: schrijfacties naar de auditlog worden door een databaselock achter elkaar gezet. Er is geen handleiding voor een failovercluster, dus plan dat als je eigen opstelling.
Hebben de beheertools een Engelse interface?
Ja. server-init, doctor en crunu-server tonen hun meldingen in het Engels, of in het Russisch als CRUNU_LANG of de systeemtaal Russisch is.
Hoe krijg ik de server om zelf te hosten?
De server is niet als publieke download gepubliceerd. Mail naar support@crunu.com en vertel welk platform je wilt gebruiken.
Probeer Crunu eerst als gehoste dienst
Gratis tijdens de vroege toegang. Je wachtwoord en Secret Key worden in je browser aangemaakt en bereiken nooit de server.