CLI Reference
Komplet oversigt over alle nordkraft kommandoer.
Grundlæggende brug
Få hjælp til enhver kommando:
Første gang: setup
Dit invite-token står kun i velkomstmailen. At du kan køre kommandoen fra den, er beviset på, at adressen er din, så setup spørger ikke om mere: nøglepar genereres lokalt, token sendes ind, og WireGuard forbindes.
Container kommandoer
deploy
Deploy en ny container.
Argumenter:
| Argument | Beskrivelse |
|---|---|
IMAGE | Container image (f.eks. nginx:alpine, ghcr.io/user/app:v1) |
Flag:
| Flag | Kort | Default | Beskrivelse |
|---|---|---|---|
--port | -p | - | Port(s) containeren lytter på (kan gentages) |
--env | -e | - | Miljøvariabel (kan gentages) |
--cpu | 0.5 | CPU grænse i cores ⚠️ | |
--memory | -m | 512m | Hukommelsesgrænse ⚠️ |
--persistence | false | Aktiver persistent storage | |
--volume-path | - | Sti til persistent storage (påkrævet med --persistence) | |
--ipv6 | false | Allokér global IPv6 adresse | |
--name | -n | auto | Brugerdefineret container navn |
--garage | auto | Target garage (ry, aarhus, etc.) | |
--hardware | auto | Hardware præference (optiplex, raspi, mac-mini) | |
--restart | node-default | Restart-politik: always, unless-stopped, on-failure, never | |
--auto-stop | - | Stop efter denne tid uden shell/exec-aktivitet (15m, 0 = aldrig) | |
--auto-delete | - | Slet denne tid efter containeren stoppede (1h) | |
--max-lifetime | - | Stop senest denne tid efter oprettelse (24h) | |
--label | -l | - | Label KEY=VALUE (kan gentages); se list --label |
--volume-from | - | Fyld den nye volume med en backup-fil fra nordkraft backup (kræver --persistence) |
Kendte problemer
CPU/Memory limits: Disse flag er implementeret men bliver ikke anvendt endnu (bug #1). Dette bliver rettet i næste opdatering.
Eksempler:
# Simpel webserver
nordkraft deploy nginx:alpine --port 80
# Med miljøvariabler
nordkraft deploy myapp:v1 --port 3000 \
--env NODE_ENV=production \
--env API_KEY=secret123
# Med ressourcegrænser
nordkraft deploy myapp:v1 --port 3000 \
--cpu 1.0 \
--memory 1g
# Database med persistent storage
nordkraft deploy postgres:15 --port 5432 --persistent
# Sandbox der rydder op efter sig selv
nordkraft deploy python:3.12 --command "python worker.py" \
--restart never --auto-stop 15m --auto-delete 1h --label workspace=ws-42
Se Sandboxes for livscyklus og labels.
list
Vis alle dine containere.
Flag:
| Flag | Beskrivelse |
|---|---|
--all | Vis også stoppede containere |
--json | Output som JSON |
Eksempel output:
NAME IMAGE STATUS IP PORTS
app-8ade4622-fdd6-411b-afc9... nginx:alpine running 172.21.5.15 80/tcp
db-3fa85f64-5717-4562-b3fc... postgres:15 running 172.21.5.16 5432/tcp
shell
Åbn en interaktiv shell (pty) i en container.
Virker som kubectl exec -it: fuld terminal, resize, exit lukker. Exit-koden fra shellen bliver CLI'ens.
exec
Kør én kommando i en container og afslut med dens exit-kode.
Flag:
| Flag | Kort | Default | Beskrivelse |
|---|---|---|---|
--cwd | image-default | Arbejdsmappe i containeren | |
--env | -e | - | Miljøvariabel KEY=VALUE (kan gentages) |
--user | image-default | Kør som uid[:gid] | |
--timeout | 120 | Sekunder før kommandoen dræbes (exit 124) | |
--stdin | false | Send CLI'ens stdin til kommandoen |
wait
Vent på at containerens hovedproces slutter; afslut med dens exit-kode.
logs
Vis logs fra en container.
Flag:
| Flag | Kort | Default | Beskrivelse |
|---|---|---|---|
--lines | -n | 100 | Antal linjer |
--follow | -f | false | Følg logs i realtid |
Eksempler:
# Sidste 100 linjer
nordkraft logs myapp
# Sidste 50 linjer
nordkraft logs myapp --lines 50
# Følg logs live
nordkraft logs myapp --follow
stop
Stop en kørende container.
Containeren stoppes men slettes ikke. Data bevares.
start
Start en stoppet container.
restart
Genstart en container (stop + start).
Kommer snart
Restart kommandoen er under udvikling. I mellemtiden: brug nordkraft stop NAVN efterfulgt af nordkraft start NAVN.
rm
Slet en container permanent.
Flag:
| Flag | Beskrivelse |
|---|---|
--force | Slet uden bekræftelse |
Advarsel
Dette sletter containeren og frigiver IP-adressen. Tag en nordkraft backup først, hvis du vil beholde dataene.
backup
Hent en komplet kopi af containerens volume som én fil (tar.zst) på din egen maskine.
Flag:
| Flag | Kort | Default | Beskrivelse |
|---|---|---|---|
--output | -o | NAVN-ÅÅÅÅMMDDTHHMM.tar.zst | Filnavn. - skriver til stdout |
Filen er almindelig tar komprimeret med zstd, så du kan åbne den hvor som helst (zstd -dc fil.tar.zst | tar -t). Øverst i arkivet ligger .nordkraft/manifest.json med container-id, mount-sti og tidspunkt.
Kører noden på LVM, tages kopien fra et øjebliksbillede uden nedetid (snapshot). Ellers kopieres den kørende volume (live) — stop containeren først, hvis det er en database og du vil være sikker på en konsistent kopi.
Eksempler:
# Backup til en fil i den aktuelle mappe
nordkraft backup campfire
# Vælg selv filnavn
nordkraft backup campfire -o campfire-før-opgradering.tar.zst
# Direkte videre i en pipe
nordkraft backup campfire -o - | ssh nas 'cat > /backups/campfire.tar.zst'
restore
Erstat containerens volume med indholdet af en backup-fil.
Flag:
| Flag | Kort | Beskrivelse |
|---|---|---|
--yes | -y | Spring bekræftelsen over |
Containeren stoppes, arkivet pakkes ud ved siden af den nuværende volume og verificeres (sha256), og først derefter byttes mapperne. Fejler noget undervejs, rører jeg ikke den eksisterende volume. Kørte containeren før, startes den igen bagefter.
Advarsel
Alt i volumen erstattes — også filer der ikke findes i arkivet.
Eksempler:
# Rul tilbage til en backup
nordkraft restore campfire campfire-20261026T1840.tar.zst
# Flyt data til en ny container (fx ved migrering) — husk miljøvariablerne,
# arkivet indeholder kun volumen
nordkraft deploy ghcr.io/basecamp/once-campfire:latest --port 3000 \
--persistence --volume-path /rails/storage \
--env-file campfire.env \
--volume-from campfire-20261026T1840.tar.zst
energy
Watt lige nu, kWh og CO₂ over et vindue: for hele kontoen eller én container.
Flag:
| Flag | Beskrivelse |
|---|---|
--since | Vindue: 90m, 24h (standard), 7d, 30d |
--json | Rå svar fra API'et, med method og hourly[] |
Containerens watt er dens andel af nodens målte forbrug. Se guiden.
Deklarative deployments (.nk specs)
NordKraft.io gemmer hver deployment som en .nk spec-fil (TOML-format) i ~/.nordkraft/deployments/. Du kan redigere dem direkte, diff'e mod kørende containere og applicere ændringer — ligesom Kubernetes manifests, men enklere.
init
Generér en .nk spec fra en kørende container.
Bruger du uden argument, får du en interaktiv vælger over kørende containere.
Flag:
| Flag | Beskrivelse |
|---|---|
--from-server | Byg specen fra den config containeren blev deployet med, i stedet for fra den kørende container |
--from-server henter den gemte deploy-config fra controller'en. Det er den nøjagtige konfiguration — inklusive volume_size, som ikke kan aflæses fra runtime — og specen beholder serverens revisionsnummer i stedet for at starte forfra på 0.
Containere der blev deployet før config-tracking blev indført, har ingen gemt config. Der siger kommandoen det, og du bruger nordkraft init <container> uden flaget i stedet.
Mistet dine specs?
Se Ny maskine / mistet config for at bygge hele ~/.nordkraft op igen.
specs
List alle gemte deployment specs. Grøn prik = ny deployment (r0), cyan prik = opgraderet mindst én gang.
diff
Sammenlign en .nk spec mod den kørende container og vis forskelle.
upgrade
Applicer spec-ændringer til den kørende container. Genbygger containeren hvis nødvendigt.
edit
Åbn .nk spec-filen i $EDITOR (default: vim).
spec-set
Redigér et felt i en .nk spec direkte fra kommandolinjen — uden at åbne en editor. Værdier type-coerces automatisk (int → float → bool → string), og filen valideres før den gemmes, så typos fanges med det samme.
Dotted key syntax: table.field, fx resources.cpu, deployment.image, network.ipv6.
Array operationer: Prefix værdien med + for at tilføje, eller - for at fjerne:
# Sæt et simpelt felt
nordkraft spec-set web resources.cpu 2
nordkraft spec-set web deployment.image nginx:1.27
nordkraft spec-set web network.ipv6 true
# Tilføj/fjern fra arrays
nordkraft spec-set web network.ports +8080
nordkraft spec-set web network.ports -8080
# Redigér og applicer i én kommando
nordkraft spec-set web resources.memory 512m --apply
| Flag | Beskrivelse |
|---|---|
--apply | Applicer ændringen til den kørende container med det samme |
spec-unset
Fjern et felt fra en .nk spec.
Eksempel:
spec-delete
Slet en .nk spec-fil. Dette påvirker IKKE den kørende container — brug nordkraft rm separat hvis du også vil slette containeren.
| Flag | Beskrivelse |
|---|---|
-y, --yes | Spring bekræftelsesprompt over |
Hvorfor bruge specs?
Specs er perfekte til at versionere din infrastruktur i git, genudrulle en container med de samme indstillinger, eller dele opsætninger med kollegaer. Filen ~/.nordkraft/deployments/<name>.nk er ren TOML — commit den gerne.
Netværk kommandoer
network info
Vis dine netværksoplysninger.
Output:
Ingress kommandoer (HTTPS)
ingress enable
Aktiver HTTPS adgang til en container.
Flag:
| Flag | Påkrævet | Beskrivelse |
|---|---|---|
--subdomain | Ja | Subdomain (f.eks. myapp → myapp.nordkraft.cloud) |
--port | Nej | Target port (default: containerens port) |
Eksempel:
ingress disable
Deaktiver HTTPS adgang.
ingress status
Vis ingress status for en container.
ingress list
Vis alle dine ingress routes.
Domain kommandoer (dit eget domæne)
Se også guiden Custom domæner & HTTPS.
domain add
Registrér dit eget domæne til en container. Svarer med det samme og viser de DNS-records, du skal oprette hos din udbyder.
Flag:
| Flag | Påkrævet | Beskrivelse |
|---|---|---|
--container, -c | Ja | Container, navn eller alias |
--port, -p | Nej | Containerens port (default: 80) |
Eksempel:
nordkraft domain add mitfirma.dk --container myapp
# → viser TXT + A record · derefter automatisk verificering, HTTPS og redirect
domain status
Vis hvor langt et domæne er: verificering, certifikat, routing.
domain verify
Tjek dine DNS-records med det samme (mod domænets autoritative navneservere) i stedet for at vente på næste automatiske tjek.
domain list
Vis alle dine domæner og deres status.
domain remove
Fjern et domæne — routing, certifikat og registrering ryddes op.
Peer kommandoer (ekstra WireGuard-adgang)
Giv en telefon, en kollega eller en CI-runner adgang til dine containere, uden at give dem din egen nøgle og uden adgang til API'et. Peeren får en adresse i dit eget område (172.20.<slot>.2-254) og kan kun nå det, du tillader. Den private nøgle laves lokalt; kun den offentlige sendes.
peer add
nordkraft peer add NAVN (--all | --container CONTAINER ...) [--ports 80,443] [--pubkey NØGLE] [--out FIL] [--qr]
| Flag | Beskrivelse |
|---|---|
--all | Må nå alle dine containere, også dem du laver senere |
--container, -c | Må kun nå denne container (gentag flaget for flere) |
--ports | Begræns de angivne containere til disse TCP-porte |
--pubkey | Brug enhedens egen offentlige nøgle i stedet for at lave et nøglepar her |
--out, -o | Skriv WireGuard-konfigurationen hertil (default ~/.nordkraft/peers/NAVN.conf) |
--qr | Vis også konfigurationen som QR-kode til WireGuard-appen (ingen ekstra værktøj) |
Eksempler:
nordkraft peer add anna-laptop --all
nordkraft peer add ci --container web --ports 80,443 --container db
nordkraft peer add telefon --all --qr
Konfigurationen importeres i WireGuard-appen på enheden, eller med sudo wg-quick up ~/.nordkraft/peers/NAVN.conf. AllowedIPs er altid hele dit containerområde, så en ændring af scope kræver ingen ny konfiguration; det er noden, der håndhæver, hvad peeren må.
peer list / show
Viser adresse, scope, status, seneste handshake og de containere peeren kan nå med deres aktuelle IP. En container, der ikke kører lige nu, vises som dangling; adgangen kommer igen, når en container med det navn kører.
peer allow / revoke / set
nordkraft peer allow NAVN --container CONTAINER [--ports 80]
nordkraft peer revoke NAVN --container CONTAINER
nordkraft peer set NAVN --all
nordkraft peer set NAVN --only web,db
Ændringer slår igennem på få sekunder; enheden skal ikke gøre noget.
peer disable / enable / rotate / rm
nordkraft peer disable NAVN # lukker adgangen, beholder peeren
nordkraft peer enable NAVN
nordkraft peer rotate NAVN # nyt nøglepar, samme adresse, ny konfiguration
nordkraft peer rm NAVN
IPv6 kommandoer
ipv6 open
Åbn firewall for containerens IPv6 adresse.
Gør containeren tilgængelig på en global IPv6 adresse.
ipv6 close
Luk firewall for IPv6.
ipv6 status
Vis IPv6 status.
ipv6 list
Vis alle IPv6 allokeringer.
Auth kommandoer
auth login
Bekræft din authentication og forbindelse.
Output:
auth status
Vis detaljeret auth status.
Konto kommandoer
account status
Vis din konto og en eventuel planlagt sletning.
account delete
Slet din konto. Først sendes en 6-cifret kode til din e-mail, som du indtaster i terminalen. Derefter er sletningen planlagt 14 dage frem, kl. 03 dansk tid: alt virker som normalt indtil da, så du kan nå at hente det, du vil beholde (nordkraft backup). Når dagen kommer, fjernes containere, volumener, backups, domæner, WireGuard-adgang og dine oplysninger i databasen, og du får en sidste mail. Bagefter fjerner nordkraft reset nøgler og konfiguration på din egen maskine.
Vil du ikke vente, springer --now fristen over: sletningen går i gang få minutter efter koden, og der er ingen fortrydelsesret.
nordkraft account delete
nordkraft account delete --now # ingen frist
nordkraft account delete --yes # spring bekræftelsen over (koden kræves stadig)
nordkraft account delete --verification-id <id> --code 123456 # uden prompt, fx fra et script
account restore
Fortryd en planlagt sletning, så længe den ikke er gået i gang.
System kommandoer
status
Vis systemstatus.
nodes
Vis tilgængelige nodes.
version
Vis CLI version.
Alias kommandoer
Containere får automatisk UUID-navne som app-3ada50d2-5e43-4863-b0fc-eec1f0fd56cc. Et alias er et kort navn du selv vælger, og det kan bruges alle steder hvor en kommando forventer en container.
alias set
nordkraft alias set web app-3ada50d2-5e43-4863-b0fc-eec1f0fd56cc
nordkraft logs web
nordkraft diff web
alias list
alias rm
Fjerner kun aliaset — containeren røres ikke.
Aliaser findes kun på din maskine
De ligger i ~/.nordkraft/aliases.json, og hverken controller'en eller noderne kender dem. Mister du filen, kan de ikke genskabes — se Ny maskine / mistet config.
Registry kommandoer
Dit eget private image-registry kører som en container i dit subnet. Det lader dig deploye images du selv har bygget, uden at lægge dem på Docker Hub.
registry init
Deployer registry-containeren og gemmer adressen i ~/.nordkraft/registry.json.
Registry'et er beskyttet med brugernavn og adgangskode, som registry init genererer og gemmer i samme fil. nordkraft push og nordkraft deploy registry://… bruger dem automatisk; platformen præsenterer kun dine egne credentials, og kun over for dit eget registry. Har du et registry fra før oktober 2026, er det åbent — kør registry destroy og registry init igen og push dine images på ny for at få et beskyttet.
Kun dit eget registry
Et deploy må kun hente images fra dit eget registry (registry://) eller fra offentlige registries via hostnavn. IP-adresser uden for dit eget container-subnet afvises.
Kør kun én gang
Kender CLI'en ikke dit registry — fx på en ny maskine — deployer registry init et nyt ved siden af det du allerede har. Genskab i stedet registry.json, se Ny maskine / mistet config.
registry status
Viser adresse, container og hvilke images der ligger i registry'et.
registry list
push
Sender et lokalt image til dit registry. nordkraft registry push gør det samme.
docker build --platform linux/amd64 -t myapp:v1 .
nordkraft push myapp:v1
nordkraft deploy 172.21.<dit-slot>.<ip>:5001/myapp:v1 --port 3000
Byg til den rigtige arkitektur
Noderne kører x86_64. Bygger du på en Apple Silicon Mac uden --platform linux/amd64, får du et arm64-image der fejler med "exec format error" når containeren starter.
registry destroy
Fjerner registry-containeren og alle images i den.
Forbindelse
setup
Førstegangsopsætning: genererer et nyt WireGuard nøglepar lokalt, claimer dit token, skriver konfigurationen og rejser tunnelen. Se Installation.
connect / disconnect
Rejser eller lukker tunnelen med den config der allerede ligger i ~/.nordkraft/wg.conf.
reset
Fjerner al lokal konfiguration
reset lukker tunnelen og sletter ~/.nordkraft — inklusive din private nøgle, dine specs og dine aliaser. Dine containere bliver ikke rørt, men du skal bruge en ny token for at komme på igen. Tag en kopi først.
Opdatering
update
Henter nyeste release og erstatter binary'en. --check viser kun om der er en nyere version. Din konfiguration i ~/.nordkraft/ røres ikke.
Globale flag
Disse flag virker på alle kommandoer:
| Flag | Beskrivelse |
|---|---|
--help | Vis hjælp |
--json | Output som JSON |
--quiet | Minimal output |
--verbose | Detaljeret output |
Exit koder
| Kode | Betydning |
|---|---|
0 | Succes |
1 | Generel fejl |
2 | Ugyldig kommando/argumenter |
3 | Authentication fejl |
4 | Netværksfejl |
5 | Container ikke fundet |