Ga naar inhoud

Een node installeren

Vier stappen op de doos, en twee dingen die alleen jij buiten de doos kunt doen: DNS instellen, en je vingerafdruk laten verifiëren.

Als je een inschrijvingstoken hebt gekregen, vallen stap 0 tot en met 2 samen in één commando. Het downloadt de code, pakt hem uit naar /opt/trusted-codes en draait tc-operator setup, dat de operator.yaml van deze node uit het token haalt, de stack installeert en zichzelf inschrijft.

Terminal window
curl -fsSL https://app.trusted.codes/download/install-node.sh | sudo bash -s -- <inschrijvingstoken>

Laat het token weg om ernaar gevraagd te worden, zodat het nooit in je shellgeschiedenis belandt:

Terminal window
curl -fsSL https://app.trusted.codes/download/install-node.sh | sudo bash

De download wordt geverifieerd tegen het gepubliceerde release-manifest, en het manifest zelf tegen een vastgelegde ondertekeningssleutel.

Neem in plaats daarvan de handmatige stappen hieronder als je het archief eerst wilt inspecteren, een versie wilt vastpinnen, of ergens anders wilt installeren dan /opt/trusted-codes (--dir <pad>).

Terminal window
sudo mkdir -p /opt/trusted-codes
sudo tar -xzf trusted-codes-operator-<versie>.tar.gz -C /opt/trusted-codes
cd /opt/trusted-codes

De installatie-preflight controleert of de boom compleet is en faalt luid, met deze instructie, als dat niet zo is.

Terminal window
cp scripts/tc-operator/operator.yaml.example operator.yaml
chmod 600 operator.yaml
$EDITOR operator.yaml

Houd het op modus 0600 — het bevat je SMTP-wachtwoord. Twee velden zijn verplicht:

home_server: node1.example.com
admin_email: ops@example.com

Al het andere heeft een werkende standaardwaarde. operator.yaml behandelt de rest van het bestand.

Terminal window
sudo scripts/tc-operator/tc-operator install --config operator.yaml

Het is idempotent — veilig om opnieuw te draaien, en opnieuw draaien is de normale manier om een nieuw archief toe te passen. Het:

  1. Doorloopt de host-preflight: controleert het besturingssysteem, regelt een swapbestand van 4 GB, installeert Docker als het ontbreekt, staat 22, 80 en 443 toe via de firewall.
  2. Genereert elk geheim en geeft het mTLS-certificaat van de node uit.
  3. Start de volledige stack in een geïsoleerd Docker-project, met elke gepubliceerde poort gebonden aan 127.0.0.1.
  4. Speelt het schema opnieuw af — migraties, dan referentiedata, dan de operator-overschrijving. Een verse database, opgebouwd, nooit uit een dump.
  5. Stelt federatie-identiteit en -vlaggen in, en zet WebFinger-ontdekking aan.
  6. Test zichzelf: een geauthenticeerde lezing, en de federatiehandler die antwoordt.
  7. Print de DNS-records die je nodig hebt en schrijft de toelatingspayload.

Het breekt niet af als je DNS nog niet is ingesteld. TLS is een aparte stap.

De installatie zit niet achter een getypte bevestiging: het is je eigen commando op je eigen doos.

Het schrijft /etc/trusted-codes/install.log met de volledige uitvoer van elk commando, en /etc/trusted-codes/README.md — een referentie op de doos die elk bestand in die map noemt, welke daarvan identiteitskritisch zijn, wat elke container doet en wat er stukgaat als hij uit staat. Begin bij die twee als iets er verkeerd uitziet.

Als je admin_email hebt gezet, maakt install ook je eerste operator_admin voor dat adres aan en print een eenmalig tijdelijk wachtwoord. Log in op de beheerapp van de node en wijzig het meteen. De installer print het één keer en nooit meer. Raak je het kwijt voordat je het hebt gewijzigd, draai install dan opnieuw op een terminal: het vindt het bestaande account en biedt aan het wachtwoord te resetten.

Die rol beheert alleen deze node. Hij wordt geweigerd bij elk centraal scherm — grants, rechten, abonnementen, functievlaggen — op de server, niet alleen in de interface, en er is geen weg om hem te escaleren. Zie De node draaien.

Stap 3 — DNS instellen, dan TLS afronden

Section titled “Stap 3 — DNS instellen, dan TLS afronden”

De installer print het exacte record. Zet het bij je DNS-provider:

node1.example.com. A <ip-adres-van-je-doos>

Zodra het oplost:

Terminal window
sudo scripts/tc-operator/tc-operator finalize-tls --config operator.yaml

Dit peilt totdat het A-record naar de doos oplost, tekent de proxyconfiguratie, en brengt HTTPS op gang met een Let’s Encrypt-certificaat.

Oefen eerst met --dry-run. Dat gebruikt de staging-omgeving van Let’s Encrypt: het certificaat is niet vertrouwd, en je verbruikt geen snelheidslimiet. Dat is van belang, omdat de echte limiet per domein geldt en je hem niet ongedaan kunt maken zodra je hem raakt.

De installer heeft /etc/trusted-codes/admission-payload.json geschreven. Het bevat alleen publiek sleutelmateriaal: je publieke federatie-ondertekeningssleutel en de vingerafdruk ervan, je mTLS-vingerafdruk, je domeinen en je capaciteiten.

Terminal window
scripts/tc-operator/tc-operator submit-admission

Dit ondertekent de payload met de federatiesleutel van je node en plaatst hem in de centrale beoordelingswachtrij.

De handtekening bewijst dat je node de sleutel bezit. Ze bewijst niet dat je de hostnaam bezit — dus vertel Trusted Codes je vingerafdruk van je publieke sleutel via een apart kanaal. Het commando print hem. Iemand verifieert die vingerafdruk met de hand en keurt daarna je node goed; er is geen zelfgoedkeuring. Het commando opnieuw draaien ververst de wachtende vermelding.

Zodra goedgekeurd, en zodra het ondertekende register opnieuw is gepubliceerd, federeert je node met de mesh. Tot die tijd blijft het beheeroppervlak achter een scherm “wacht op goedkeuring” staan.

De node draait zodra install klaar is. Dat is niet hetzelfde als klaar zijn.

  • DNS-records lossen op naar de doos, en finalize-tls is voltooid met een geldig certificaat.
  • Toelating goedgekeurd — je vingerafdruk geverifieerd, de node federeert.
  • SMTP ingesteld en geverifieerd. Stuur jezelf een aanmeldlink en bevestig dat hij aankomt.
  • Het beheerwachtwoord gewijzigd van het tijdelijke.
  • /etc/trusted-codes/secrets.env ergens offline gekopieerd. Hem kwijtraken kost je de identiteitssleutels van de node en maakt alle teruggezette data onleesbaar.
  • Optionele integratiesleutels gezet, als je die functies wilt.

Een oppervlaktebuild werd overgeslagen. De andere oppervlakken zijn geïnstalleerd; alleen dat portaal werd niet gebouwd. Lees de fout in install.log — zoek naar surface <naam>: building. De gebruikelijke oorzaak is geheugen: een regel met “killed” of signaal 137 betekent dat de doos zonder kwam te zitten. Voeg RAM of swap toe en draai install opnieuw, dat probeert de build opnieuw. De node is ondertussen bruikbaar.

TLS is niet afgerond. Bijna altijd DNS die nog niet is doorgekomen. Bevestig met getent hosts <jouw-domein>, en draai dan finalize-tls opnieuw.

Toelating blijft in de wacht staan. Iemand bij Trusted Codes moet je vingerafdruk buiten om verifiëren en goedkeuren. Opnieuw indienen ververst de vermelding; het keurt hem niet goed.