Twaalf builds

Het hele ding, niet de eerste helft.

Elke handleiding neemt één lege instantie en verandert die in een dienst waar u echt verkeer naartoe kunt sturen. Commando's worden van boven naar beneden uitgevoerd in de volgorde waarin ze staan afgedrukt, plaatshouders worden als plaatshouders gemarkeerd en het laatste deel is altijd een test. Geen enkele handleiding eindigt hier met “en configureer de rest naar smaak”.

01

Een handleiding is geen kennisbankartikel

Beide formaten bestaan omdat elk slecht is in de taak van de ander. Meng ze en u krijgt het soort documentatie dat uitlegt wat elke vlag doet zonder ooit te vertellen welke vlaggen u nodig hebt.

De kennisbank beantwoordt een vraag in een minuut. Een handleiding kost u een middag en laat aan het eind een server draaien.

Een kennisbankartikel begint met iets dat u al heeft en iets dat er mis mee is: een mount die na een herstart niet terugkomt, een certificaat dat is verlengd maar niet opnieuw is geladen, een rescueconsole waar u geen prompt uit krijgt. Het is kort omdat de context al in uw hoofd zit. U komt met het probleem en gaat weg met het antwoord.

Een handleiding begint met niets. Je hebt een factuur betaald, je hebt root-inloggegevens, en de machine is een ongeconfigureerd image in een stad die je om je eigen redenen hebt gekozen. Aan het einde heb je een mailserver die authenticatiecontroles doorstaat, of een hypervisor met geneste gasten, of twee terabytes die in een ander land staan dan vanmorgen. De context wordt gaandeweg opgebouwd, daarom zijn deze stukken een paar duizend woorden lang in plaats van tweehonderd.

Op deze manier schrijven is meer werk en het vangt meer fouten. Elke handleiding op deze pagina is volledig uitgevoerd op een nieuw geïnstalleerde instantie vóór publicatie, en opnieuw uitgevoerd wanneer het upstream-project iets lanceerde dat het brak. De datum bovenaan elk is de datum van de laatste uitvoering, niet de datum dat iemand het heeft doorgelezen.

01

Eén compleet ding

Geen overzicht van zes opties en een schouderophalen. Elke handleiding kiest een aanpak, legt uit waarom, en bouwt die. Waar een echt alternatief bestaat, krijgt dat één zin en een link, en dan gaat de handleiding verder.

02

Commando’s die in volgorde draaien

Kopieer ze in de afgedrukte volgorde op een nieuw image en ze werken. Als stap negen een pakket nodig heeft dat in stap twee is geïnstalleerd, installeert stap twee het. Er hangt niets af van staat die je nooit is verteld te creëren.

03

Een benoemde machine

Elke build vermeldt op welke lijn die is geschreven en wat er gebeurt als je iets kleinere gebruikt. Postgres-tuning die uitgaat van 64 GB ECC is nutteloos advies op een 16 GB-box, dus we zeggen dat bovenaan.

04

Het saaie midden

Bestandseigendom, systemd-unitbeveiliging, firewallregels, logrotatie. Dit is het deel dat de meeste tutorials overslaan en het deel dat bepaalt of de dienst in maart nog draait.

05

Een test aan het eind

Elke handleiding eindigt met commando’s waarvan de uitvoer je ondubbelzinnig vertelt of de build werkte. Niet “je zou nu de inlogpagina moeten zien”. Iets met een exitcode of een header die je kunt lezen.

Als de laatste regel van de pagina is “en configureer dan je firewall”, is het geen handleiding, maar een boodschappenlijst.
Punt vier van de interne reviewchecklist
02

Hoe je er een volgt zonder een avond kwijt te raken

Deze zijn geschreven voor mensen die de hele pagina lezen voordat ze iets typen. Die gewoonte is ongeveer een uur per build waard.

Ga uit van een verse Debian 13-image en een root-shell, tenzij de handleiding anders zegt. Al het andere staat in de eerste twee alinea’s.

  1. 01

    Implementeer iets nieuws

    Een handleiding achteraf op een machine zetten die al drie diensten draait, is hoe je ontdekt welke daarvan stilzwijgend poort 8080 gebruikte. Een nieuwe instantie is binnen een minuut klaar en je kunt haar daarna vernietigen.

  2. 02

    Lees het een keer door

    Vooral de DNS-stappen. Voor de helft van de builds hier moet een record zijn gepropageerd voordat een later commando slaagt, en de goedkoopste plek om dat te leren is bij de eerste lezing in plaats van bij stap elf.

  3. 03

    Vervang de placeholders

    Alles dat de vorm heeft van example.com, 2001:db8: of <punthaken> is aan jou om te vervangen. Documentatiebereiken worden bewust gebruikt zodat een kopieer-plakfout luid faalt in plaats van stilletjes een netwerk van een vreemde te bereiken.

  4. 04

    Snapshot vóór het onomkeerbare deel

    Herschikken van partities, dist-upgrades, alles met het woord “wissen”. Een snapshot-pack geeft je vijf slots en een herstel dat in seconden klaar is, wat goedkoper is dan stappen één tot en met negen herhalen.

  5. 05

    Voer de verificatie uit

    Het is het laatste onderdeel van elke handleiding en het bestaat omdat “het leek te starten” niet hetzelfde is als “het werkt”. Twee minuten controleren is beter dan erachter komen via een gebruiker.

Niets op deze pagina leidt een extern script naar een shell. Waar een upstream-project alleen een installer op die manier levert, laat de handleiding zien hoe je het ophaalt, leest en als bestand uitvoert — je zou moeten weten wat er op je machine kwam, en wij ook.

03

Welke machine elke build wil

De meeste draaien prima op de kleinste Ryzen-instantie. Vier ervan niet, en voor die vier de verkeerde lijn kiezen kost je een middag voordat je bij het interessante deel komt.

Waar een handleiding een plan noemt, is dat het plan waarop het is getest. Kleiner gaan is meestal prima en wordt aangegeven waar dat niet zo is. Groter verandert niets behalve de getallen die je in de configuratiebestanden zet, en de handleidingen die om die rekenkunde geven, tonen de rekenkunde.

BuildLijnWaarom die
WireGuard, Tor-relay, Matrix, monitoringRyzen R-4Single-threaded, netwerkgebonden, kleine werkset. Meer cores veranderen niets.
Mailserver, CI-runner, NextcloudRyzen R-8Buildstappen en antispam houden allebei van snelle cores. Image-builds zijn het zwaarste wat hier gebeurt.
PostgresEPYC E-8 en hogerDe tuning in die handleiding gaat uit van 64 GB ECC-geheugen en NUMA-bewuste pinning.
Lokale inferentieGPU G-L40SAchtenveertig gigabyte VRAM, direct doorgegeven. Een gedeelde kaart is de wachtrij van iemand anders.
SeedboxStorage S-50Vijftig terabyte bulk achter een NVMe-schrijflaag, op een poort groot genoeg om het te legen.
Proxmox met geneste gastenBare metal BM-EGeneste virtualisatie heeft de fysieke machine nodig. Er staat geen hypervisor van ons in de weg.
Twee terabyte verplaatsen tussen locatiesElke twee instantiesGeschreven tegen een storage-node en een Ryzen-machine, maar de methode is op elke grootte hetzelfde.

Elke handleiding gaat uit van het gerouteerde IPv6 /64 dat bij elke instantie wordt geleverd. Twee ervan vragen om het /48, omdat het uitdelen van per-client-subnets uit een enkele /64 betekent dat je neighbour discovery moet proxen, en geproxied IPv6 is iets wat je dagelijks debugt in plaats van draait.

Privacy

03

Infrastructuur

04

Ontwikkeling

02

Media

01

Netwerken

02
04

Vragen over de handleidingen, niet over de builds

Meestal wel. De delen die van ons zijn, zijn de panestappen, het gerouteerde prefix en de aanname van dedicated cores. Al het andere is standaard Debian en upstream-software, dus de commando's zijn probleemloos over te zetten naar elke plek die je root geeft en de CPU niet oververkoopt.

Omdat twaalf handleidingen vijf keer herschrijven is hoe documentatie veroudert. Debian 13 is ons standaardimage, de pakketnamen zijn jarenlang stabiel en een stap vertalen naar AlmaLinux of Alpine is een pakketbeheerder-substitutie in plaats van een herschrijving. De volledige lijst met images staat op de pagina met besturingssystemen.

Vertel het ons. Handleidingen worden opnieuw gedraaid tegen een schoon image wanneer we van een breuk horen, en de gecorrigeerde versie verschijnt dezelfde week met de datum bovenaan bijgewerkt. Een ticket met het commando en de foutmelding is voldoende; je hoeft het niet voor ons te diagnosticeren.

We ondersteunen de machine, het netwerk en de opslag eronder. Het debuggen van je Postfix-mapbestanden om drie uur 's nachts hoort daar niet bij, en daar zouden we toch slecht in zijn. Beheerde hardening bestaat als add-on als je de basislijn door iemand anders wilt laten onderhouden.

Voor acht van de twaalf, ja, en de R-4 is waar er verschillende op zijn geschreven. De Postgres-, inferentie-, seedbox- en Proxmox-builds hebben de lijn nodig die in de bovenstaande tabel wordt genoemd; de rest is comfortabel op vier dedicated cores en 16 GB.

Klaar wanneer jij dat bent

Kies een stad, implementeer, volg mee.

De instantie die je voor de meeste hiervan nodig hebt, kost minder dan de koffie die je drinkt tijdens het bouwen. Betaal in munten, wacht ongeveer zevenenveertig seconden en begin bij stap één.