Kontaktløs betaling med et enkelt tapp er allerede normalen i norske butikker, men de fleste Bitcoin-betalinger krever fortsatt at kunden åpner en app og skanner en QR-kode. LNbits og utvidelsen Boltcard fjerner det trinnet. Sammen lar de deg knytte en fysisk NFC-brikke til en Lightning-lommebok, slik at en kunde kan betale ved å tappe kortet mot en leser, nøyaktig som med et bankkort. I denne guiden setter vi opp en komplett LNbits-instans fra grunnen, kobler den til en finansieringskilde, programmerer et Boltcard og bygger et fungerende kasseapparat du kan ta i bruk i en butikk, på en markedsdag eller på et arrangement.
Du trenger ingen forhåndskunnskap om Lightning-utvikling for å komme gjennom denne guiden, men du må være komfortabel med en terminal, en tekstredigerer og litt tålmodighet med NFC-maskinvare. Vi går gjennom alt fra provisjonering av serveren, via databasevalg og tilkobling til en finansieringskilde, til programmering av det fysiske kortet og et komplett kasseapparat. På veien ser vi også på hvilke fallgruver som oftest sender nybegynnere ut på villspor, og hvordan du feilsøker de vanligste problemene når kortet ikke tappes som forventet.
Hva er LNbits og Boltcard?
LNbits er en selvhostet programvare for Lightning Network-lommebøker, bygget i Python med FastAPI. Den fungerer som et kontolag på toppen av en eksisterende Lightning-node, ikke som en node i seg selv. I stedet for at hver bruker, ansatt eller kunde trenger sin egen node med egen kanalkapasitet, lar LNbits deg opprette et ubegrenset antall underlommebøker fra én enkelt finansieringskilde. Det gjør programvaren populær blant butikker, pop-up-arrangementer, familier og utviklere som vil bygge betalingsløsninger uten å drifte en hel node per bruker.
Boltcard er en utvidelse til LNbits som knytter en fysisk NFC-brikke til en lommebok. Brikken bruker en NTAG424 DNA-chip fra NXP, som støtter AES-128-kryptering og en mekanisme kalt SUN (Secure Unique NFC). Hver gang kortet tappes mot en leser, genereres en ny kryptert kode. Det gjør at samme signal aldri kan gjenbrukes, siden LNbits dekrypterer SUN-dataen og sjekker både kortets UID og en løpende teller for å stoppe gjentatte forsøk, ifølge LNbits sin egen tekniske dokumentasjon av LNURL-protokollen i Boltcard-utvidelsen. Prosjektet Bolt Card, som Boltcard-standarden er navngitt etter, beskriver selv løsningen som en kombinasjon av åpen programvare og rimelig NFC-maskinvare, satt sammen slik at hvem som helst kan bygge en fungerende butikkløsning uten å betale lisens til en tredjepart.
Kombinasjonen har blitt en de facto-standard i Bitcoin-miljøet for fysiske Lightning-betalinger, fra kaffebarer til meetup-er og festivaler. Prosjektet er åpen kildekode. Den nyeste store utgivelsen på GitHub er v1.1.0, med kodenavnet “Alan Bits”, publisert 13. mai 2025, ifølge LNbits sitt eget utgivelsesarkiv. Sjekk alltid repoet for nyere utgivelser før du installerer, siden Lightning-økosystemet endrer seg raskt. Vi har tidligere skrevet om BTCPay Server for å ta imot Bitcoin-betaling med QR-kode i nettbutikk. LNbits og Boltcard løser et annet behov: rask tapp-betaling i fysisk disk, der kunden ikke skal måtte ta opp mobilen.
Hvorfor NFC-betaling med Lightning er relevant i Norden nå
Nordmenn tapper kort eller mobil i kassen flere ganger daglig, og kortlesere med kontaktløs funksjon finnes i nesten alle butikker, fra matbutikken til kaffebaren på hjørnet. Lightning Network løser et problem tradisjonelle kort ikke kan: raske betalinger med lave gebyrer, uten at en bank eller korttilbyder sitter mellom kjøper og selger og tar sin andel av marginen. Et Boltcard gjør denne teknologien tilgjengelig for en vanlig kunde, uten at hun trenger å forstå hvordan en Lightning-faktura fungerer under panseret. Hun tapper bare kortet, akkurat som hun allerede gjør hundre ganger i måneden med bankkortet sitt.
For butikker og foreninger i Norge og Norden handler dette like mye om praktiske grenser som om ideologi. En frivillig forening som arrangerer en helgefestival, vil sjelden ha budsjett eller kompetanse til å drifte en egen Lightning-node med god kanallikviditet. En liten kaffebar vil kanskje teste Bitcoin-betaling uten å binde seg til en stor investering i maskinvare og drift. Begge scenarioer er nettopp det LNbits og Boltcard er bygget for: lav inngangsbarriere, programvare som ikke krever lisenskostnad, og muligheten til å starte i det små og skalere opp etter hvert som behovet vokser.
Et viktig poeng for norske og nordiske lesere: LNbits krever ikke at du selv drifter en fullstendig Lightning-node med kjedesynkronisering fra dag én. Du kan koble instansen til en ekstern finansieringskilde, eller bruke en hostet LNbits SaaS-løsning via my.lnbits.com dersom du vil unngå serveradministrasjon helt, ifølge LNbits sin egen installasjonsveiledning. Dette senker inngangsbarrieren for små butikker og frivillige arrangører uten egen IT-avdeling. Mange driftere kjører for øvrig flere løsninger parallelt: BTCPay for netthandel, og LNbits med Boltcard for fysisk salg i samme butikk.
Forutsetninger: dette trenger du før du starter
Du trenger ikke være Lightning-utvikler for å følge denne guiden, men noen byggeklosser må være på plass før du begynner. Sjekk listen under, og se tabellen for konkrete minimumskrav til servermaskinvare. Sett gjerne av en hel ettermiddag til det første gjennomløpet, selv om de fleste enkeltstegene tar bare noen minutter. Det meste av tidsbruken går til å vente på DNS-propagering for domenet, generere et TLS-sertifikat og bli komfortabel med NFC-programmeringen, ikke til selve kommandolinjearbeidet.
Vi anbefaler at du tester hele oppsettet med små beløp, gjerne noen hundre sats per transaksjon, før du setter et Boltcard i aktiv bruk med kunder. Dette gir deg mulighet til å fange opp feilkonfigurasjon av funding-kilden, databasen eller NFC-programmeringen uten at et reelt kjøp blir stående uavklart i kassen midt i en handel.
- En VPS eller hjemmeserver med Docker og Docker Compose installert
- Python 3.10 eller nyere, kun nødvendig hvis du installerer uten Docker
- Et domene eller lokal nettverkstilgang, samt en omvendt proxy for HTTPS
- En finansieringskilde: en Lightning-node du selv drifter, eller en ekstern tilbyder konfigurert i LNbits sine innstillinger
- Minst ett NTAG424 DNA NFC-kort. Dette må være nøyaktig denne chip-typen, ikke eldre NTAG213-, NTAG215- eller NTAG216-kort, siden disse mangler SUN-støtte
- En Android-telefon med NFC for å lese kortets UID og skrive data til kortet, eller en dedikert NFC-leser/skriver
- Grunnleggende terminalkunnskap: cd, docker compose, og en tekstredigerer som nano eller vim
| Komponent | Minimumskrav | Anbefalt for produksjon |
|---|---|---|
| CPU | 1 kjerne | 2 kjerner |
| RAM | 512 MB | 2 GB |
| Diskplass | 1 GB | 10 GB eller mer, med plass til backup |
| Database | SQLite | PostgreSQL |
| Kjøremiljø | Docker eller Python 3.10+ | Docker, med automatiske restarts |
| NFC-kort | NTAG424 DNA | NTAG424 DNA, kjøpt i flertall med reserve |
Disse tallene kommer direkte fra LNbits sin offisielle installasjonsdokumentasjon, som lister 1 CPU, 512 MB RAM og 1 GB diskplass med SQLite som absolutt minimum, og 2 CPU med 2 GB RAM og PostgreSQL som anbefalt oppsett for reell drift. For en butikk med jevnlig trafikk bør du alltid velge den anbefalte konfigurasjonen. SQLite fungerer fint for testing, men gir flaskehalser når flere betalinger behandles samtidig.
Steg 1 og 2: Sett opp serveren og installer LNbits med Docker
Steg 1. Skaff en VPS fra en leverandør du har tillit til, eller bruk en hjemmeserver du allerede drifter. Velg en Ubuntu- eller Debian-basert distribusjon, siden det gir deg det bredeste utvalget av ferdige guider dersom noe går galt senere. Oppdater pakkelisten og installer Docker:
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
Steg 2. Opprett en mappe for prosjektet og en docker-compose.yml-fil. LNbits sin egen dokumentasjon lister Docker som den anbefalte metoden for produksjon, foran alternativene uv, Poetry eller node-plattformer som Umbrel, RaspiBlitz og Start9. Under er et komplett oppsett med LNbits og en PostgreSQL-database, som til sammen utgjør hele prosjektet du bygger videre på i resten av guiden:
mkdir -p ~/lnbits-boltcard && cd ~/lnbits-boltcard
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
lnbits-db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: lnbits
POSTGRES_PASSWORD: endre_dette_passordet
POSTGRES_DB: lnbits
volumes:
- ./data/postgres:/var/lib/postgresql/data
lnbits:
image: lnbits/lnbits:latest
restart: unless-stopped
depends_on:
- lnbits-db
env_file:
- .env
ports:
- "5000:5000"
volumes:
- ./data/lnbits:/app/data
EOF
echo "Mappe og docker-compose.yml er klar"
Bruk alltid latest-taggen med måtehold i produksjon. Når instansen er testet og fungerer som den skal, kan du låse til et spesifikt versjonsnummer fra GitHub-utgivelsene for å unngå at en fremtidig oppdatering endrer oppsettet uten varsel. Legg merke til at vi her kjører PostgreSQL som en egen container i samme docker-compose.yml, i stedet for SQLite-filen LNbits bruker som standard. Dette er det samme valget LNbits sin egen dokumentasjon anbefaler for alt utover ren testing, og det sparer deg for en smertefull migrering senere når butikken får mer trafikk enn testoppsettet var dimensjonert for.
Steg 3: Konfigurer database og miljøvariabler
LNbits leser konfigurasjonen sin fra en .env-fil. Opprett denne i samme mappe som docker-compose.yml, og pass på at databasepassordet matcher det du satte i forrige steg:
cat > .env << 'EOF'
LNBITS_DATABASE_URL=postgres://lnbits:endre_dette_passordet@lnbits-db:5432/lnbits
LNBITS_SITE_TITLE=Min Butikk Lightning-kasse
LNBITS_ADMIN_UI=true
LNBITS_ALLOWED_CURRENCIES=NOK,USD,EUR
LNBITS_DISABLED_EXTENSIONS=
LNBITS_BASEURL=https://din-lnbits-instans.no
EOF
docker compose up -d
Når du kjører docker compose up -d for første gang, bør du se noe tilsvarende dette i loggen:
[+] Running 3/3
✔ Network lnbits-boltcard_default Created
✔ Container lnbits-boltcard-lnbits-db-1 Started
✔ Container lnbits-boltcard-lnbits-1 Started
Bekreft at begge containerne kjører med docker compose ps, og åpne deretter http://din-server-ip:5000 i nettleseren. Du bør møte LNbits sin oppsettsside, der du lager en administratorbruker for første gang.
Steg 4: Koble LNbits til en Lightning-node
LNbits er et kontolag, ikke en Lightning-node i seg selv, og den trenger derfor en ekstern finansieringskilde for å behandle reelle betalinger. Dette bekreftes direkte i LNbits sin offisielle brukerveiledning, som slår fast at tjenesten krever en konfigurert finansieringskilde (funding source) før betalinger kan sendes eller mottas. I praksis velger du dette under admin-panelets innstillinger for node-tilkobling, der du fyller inn endepunkt, port og eventuell autentisering for din Lightning-node.
Hvis du allerede drifter en egen node, finner du oppsettet i vår guide om hvordan sette opp en Lightning-node. Har du ikke en node fra før, er det raskeste alternativet å starte med en ekstern tilbyder som støttes i LNbits sin konfigurasjonsmeny, og flytte til egen node senere når volumet øker. Uansett hvilket alternativ du velger, bør du sjekke den oppdaterte listen over støttede finansieringskilder direkte i admin-grensesnittet, siden denne listen endres etter hvert som nye integrasjoner legges til.
# Eksempel på strukturen i admin-panelets node-innstillinger
# (feltnavn varierer litt mellom finansieringskilder)
{
"backend_wallet_class": "VelgDinBackendHer",
"endpoint": "https://din-node-adresse:port",
"macaroon_eller_cert_path": "/sti/til/fil",
"fee_limit_sats": 50
}
Lagre innstillingene og restart LNbits-containeren med docker compose restart lnbits. Gå tilbake til admin-panelet og se etter en grønn status ved siden av node-tilkoblingen. En rød eller gul status betyr at endepunktet, porten eller autentiseringen ikke er riktig, og du bør dobbeltsjekke verdiene før du går videre.
Dette er ofte punktet der nybegynnere bruker mest tid, og det er helt normalt. En feilkonfigurert finansieringskilde gir sjelden en tydelig feilmelding, men vises heller som en grå eller rød indikator uten videre forklaring. Sjekk alltid tre ting i denne rekkefølgen: at endepunktet er nåbart fra LNbits-containeren (ikke bare fra din egen laptop), at portnummeret stemmer med det noden faktisk lytter på, og at eventuelle sertifikat- eller nøkkelfiler er montert inn i containeren med riktig filrettighet. Et vanlig feilgrep er å referere til en fil på serverens filsystem uten å ha lagt den til som et volum i docker-compose.yml, slik at containeren rett og slett ikke finner filen.
Steg 5: Opprett lommebok og test første betaling
Når node-tilkoblingen viser grønt, logg inn og opprett din første lommebok fra hovedsiden. Hver lommebok får en unik Invoice-nøkkel og Admin-nøkkel, synlig under "API info" i lommebokvisningen. Disse nøklene brukes til å sende forespørsler til LNbits sitt REST-API, for eksempel for å generere en faktura programmatisk:
curl -X POST https://din-lnbits-instans.no/api/v1/payments \
-H "X-Api-Key: DIN_INVOICE_NOKKEL" \
-H "Content-Type: application/json" \
-d '{"out": false, "amount": 1000, "memo": "Testbetaling i butikken"}'
Et vellykket svar ser omtrent slik ut, forkortet for lesbarhet:
{
"payment_hash": "a1b2c3d4e5f6...",
"payment_request": "lnbc10u1p3xnhl2pp5...",
"checking_id": "a1b2c3d4e5f6...",
"lnurl_response": null
}
Betal fakturaen med en annen Lightning-lommebok for å bekrefte at pengene faktisk kommer frem, og se at saldoen i LNbits-lommeboken øker tilsvarende. Lykkes dette steget, er resten av oppsettet rent konfigurasjon av Boltcard-utvidelsen, uten behov for å feilsøke betalingsveien videre. Noter deg gjerne Invoice-nøkkelen og Admin-nøkkelen et sikkert sted allerede nå, siden Admin-nøkkelen gir full kontroll over lommeboken og bør behandles med samme forsiktighet som et bankkort-PIN-kode.
Steg 6 og 7: Aktiver Boltcard og forstå NTAG424 DNA og SUN
Steg 6. Gå til "Extensions" i admin-panelet, finn "Bolt Cards" i listen, og trykk aktiver. LNbits dokumenterer selv dette som en standard utvidelse blant dusinvis av tilgjengelige extensions, deriblant TPoS, Inventory, Orders, WebShop, Tabs, WebPages og Chat. Etter aktivering dukker "Bolt Cards" opp som et nytt menypunkt i lommeboken din.
Steg 7. Før du programmerer et fysisk kort, er det verdt å forstå hvorfor chip-valget betyr noe. NTAG424 DNA er en Type 4 NFC Forum-chip fra NXP, med AES-128-kryptering og støtte for SUN, altså Secure Unique NFC, ifølge en detaljert teknisk gjennomgang av chip-typen og Boltcard-oppsettet. SUN gjør at kortet genererer en ny, kryptert melding hver gang det tappes. LNbits-koden dekrypterer denne meldingen med funksjonen decrypt_sun() for å hente ut kortets UID og en løpende teller, og bruker disse to verdiene til å avvise alle forsøk på å spille av en tidligere avlest melding på nytt, dokumentert i den tekniske gjennomgangen av Boltcard sin LNURL-implementasjon.
Eldre NTAG213-, NTAG215- og NTAG216-kort, som ofte brukes til enklere NFC-klistremerker og visittkort, har ikke den nødvendige SUN-funksjonaliteten. De kan skrives og kopieres uten den dynamiske autentiseringen, noe som i praksis betyr at et avlest signal kan spilles av på nytt av hvem som helst som har fanget det opp. Et NTAG424 DNA-kort med full replay-beskyttelse via Boltcard-utvidelsen beskrives spesifikt i LNbits sin egen nettbutikk, som selger slike kort direkte tilpasset formålet. Velg aldri et billigere kort uten å bekrefte chip-typen først, siden hele sikkerhetsmodellen bygger på denne spesifikke maskinvaren, ikke på selve LNbits-programvaren.
Steg 8: Programmer ditt første Boltcard
Med utvidelsen aktivert og et NTAG424 DNA-kort i hånden, følger du denne rekkefølgen, dokumentert i LNbits sin maskinvare- og handel-FAQ:
- Legg til nytt kort: Velg hvilken lommebok kortet skal knyttes til, og sett en daglig grense og en grense per transaksjon
- Registrer kortets UID: Skriv inn UID manuelt, eller tapp kortet mot en Android-telefon for å hente UID automatisk
- Skriv nøklene til kortet: Bruk den åpne kildekode-appen Boltcard NFC Card Creator til å skrive krypteringsnøklene til selve NTAG424-chipen
- Test tappingen: Hold kortet mot en NFC-leser eller telefon igjen, og bekreft at en betalingsforespørsel dukker opp i LNbits
Boltcard NFC Card Creator har siden versjon 0.1.2 også støttet å nullstille nøklene og deaktivere SUN-funksjonen, slik at et kort kan viskes helt og brukes på nytt som en ny Boltcard eller som en vanlig statisk NFC-tag. Dette er nyttig hvis en ansatt forlater butikken og kortet skal gis til en ny bruker, eller hvis du programmerer feil wallet-ID og må starte om. Test alltid et nyprogrammert kort flere ganger i rad før du setter det i omløp, siden en feil i skriveprosessen er lettere å fange opp før kortet er i kundens hender.
Steg 9: Sett daglige grenser og transaksjonsgrenser
Hvert Boltcard har to grenser du bør sette med omhu: en daglig grense for totalt beløp som kan brukes per 24 timer, og en grense per enkelttransaksjon. Disse feltene fylles inn samtidig som du legger til kortet i Steg 8, og kan justeres senere fra admin-panelet uten å programmere kortet på nytt.
For en butikkansattes arbeidskort er det vanlig å sette en lav daglig grense, siden kortet typisk ligger fremme ved kassen og er mer utsatt for tap eller tyveri enn en personlig lommebok. For et kort du selv bruker til egne innkjøp, kan grensen settes høyere, men fortsatt lavt nok til at et tapt kort ikke representerer en stor økonomisk risiko. Tenk på grensene som en forsikring mot verst tenkelig utfall, ikke som en håndbrems på normal bruk.
En vanlig tilnærming er å sette grensene ulikt etter rolle. Et kort knyttet til en kasselommebok som mottar betaling fra kunder, trenger i praksis ingen øvre grense siden det bare tar imot penger, ikke sender dem ut. Et kort som derimot kan brukes til å betale ut fra butikkens lommebok, for eksempel til en vareleverandør eller en ansatt sin lønnskonto, bør ha en streng daglig og per-transaksjon grense, siden det er dette kortet som representerer en reell risiko hvis det kommer på avveie. Skill alltid mellom "kort som mottar" og "kort som sender" når du planlegger grensene for en hel butikk med flere ansatte og flere kort i omløp.
Steg 10: Bygg et kasseapparat med TPoS-utvidelsen
TPoS, kort for Terminal Point of Sale, er en av LNbits sine innebygde utvidelser og gir deg et enkelt kasseapparat direkte i nettleseren, uten behov for egen kasseprogramvare. Aktiver TPoS fra "Extensions" på samme måte som du aktiverte Bolt Cards, og opprett en ny terminal knyttet til butikkens lommebok.
Sett valuta til NOK under instillingene, slik at ansatte kan taste inn prisen i norske kroner mens LNbits regner om til sats i bakgrunnen ved hjelp av en valutakurskilde. Terminalen viser en QR-kode for kunder som vil betale med mobilen, samtidig som den aksepterer et Boltcard-tapp for kunder som foretrekker fysisk kort. Legg terminalen på en tablet eller skjerm ved kassen, og du har et fungerende, dobbelt betalingsoppsett: QR for mobilbrukere, NFC-tapp for Boltcard-brukere, begge mot samme underliggende LNbits-lommebok.
Vurder å feste en liten plakat eller et skilt ved kassen som forklarer at butikken tar imot Boltcard-betaling, siden de fleste kunder ennå ikke har sett konseptet. Et skilt med et kort forklarende bilde av tapp-prosessen senker terskelen betydelig for kunder som er nysgjerrige, men usikre på hvordan de skal gå frem. Du kan også la ansatte demonstrere en testbetaling på forespørsel, slik at kunden ser hele forløpet før de stoler nok på løsningen til å bruke sitt eget kort eller sin egen mobil.
Steg 11 og 12: Sikkerhetshardening og produksjonsklar drift
Steg 11. Eksponer aldri LNbits-admin-panelet direkte på internett over ren HTTP. Sett opp en omvendt proxy med Nginx og et gyldig TLS-sertifikat fra Let's Encrypt:
server {
listen 443 ssl;
server_name din-lnbits-instans.no;
ssl_certificate /etc/letsencrypt/live/din-lnbits-instans.no/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/din-lnbits-instans.no/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name din-lnbits-instans.no;
return 301 https://$host$request_uri;
}
Steg 12. Før butikken går i reell drift, gå gjennom denne sjekklisten: begrens innkommende trafikk med en brannmur som bare åpner port 443 og SSH, sett et sterkt og unikt admin-passord, aktiver automatisk sertifikatfornyelse med certbot i en cron-jobb, ta regelmessig backup av både PostgreSQL-databasen og .env-filen til et sted utenfor serveren selv, og hold LNbits-containeren oppdatert mot nye utgivelser. Siden den underliggende Lightning-noden også er en kritisk del av oppsettet, bør du sjekke vår guide om watchtower-beskyttelse av Lightning-kanaler dersom du drifter noden selv, slik at kanaltilstanden er beskyttet mot utdaterte lukkinger mens butikken er i drift.
Komplett eksempelprosjekt: alle filene samlet
Med alle tolv stegene fullført, består det ferdige prosjektet av fire filer i samme mappe på serveren: docker-compose.yml som definerer LNbits- og database-containerne, .env som holder databasetilkobling og instansinnstillinger, en Nginx-konfigurasjonsfil for HTTPS-terminering, og mappene data/postgres og data/lnbits der selve betalingsdataen lagres. Mappestrukturen ser slik ut når alt er på plass:
~/lnbits-boltcard/
├── docker-compose.yml
├── .env
├── data/
│ ├── postgres/
│ └── lnbits/
└── nginx/
└── lnbits.conf
Dette er alt som trengs for et fullverdig, produksjonsklart kasseapparat: en lommebok med saldo, et aktivert Boltcard knyttet til den lommeboken med riktige grenser, og en TPoS-terminal som tar imot både QR- og NFC-betaling. Hele prosjektet kan sikkerhetskopieres med en enkel tar-kommando av mappen, og gjenopprettes på en ny server ved å kopiere filene tilbake og kjøre docker compose up -d på nytt. Test alltid en full gjenoppretting på en separat testserver minst én gang, slik at du vet prosedyren fungerer den dagen du faktisk trenger den.
Vanlige fallgruver du bør unngå
De fleste problemene som dukker opp etter lansering, kan spores tilbake til én av disse seks fallgruvene. Gå gjennom listen før du setter systemet i reell drift, og bruk den gjerne som en sjekkliste sammen med sikkerhetshardeningen fra forrige steg.
- Bruke feil korttype: NTAG213-, 215- eller 216-kort ser identiske ut som NTAG424 DNA, men mangler SUN-støtte og gir ingen reell sikkerhet mot gjenbruk av avlyttede signaler
- Kjøre SQLite i produksjon: Fungerer fint i test, men blir en flaskehals så snart flere kunder betaler samtidig i en reell butikk
- Glemme grenser før utlevering: Et kort uten daglig grense og transaksjonsgrense er en åpen sjekkbok hvis det kommer på avveie
- Eksponere admin-panelet uten HTTPS: Admin-nøkler sendt i klartekst over nettverket kan avlyttes og misbrukes til å styre hele lommeboken
- Ikke teste tapping i reelle forhold: En NFC-leser som fungerer på kontorpulten kan oppføre seg annerledes i en kald, travel butikk med andre elektroniske signaler i nærheten
- Lagre backup kun på serveren selv: Hvis serveren går tapt uten en ekstern kopi av databasen, er hele butikkens betalingshistorikk og lommebokoppsett borte
- Bruke standard databasepassord i produksjon: Mange kopierer eksempelverdier rett fra en guide uten å endre dem, noe som gjør databasen sårbar dersom porten ved en feil blir eksponert utenfor containernettverket
- Anta at Boltcard fungerer identisk på alle telefoner: NFC-implementasjonen varierer mellom Android-produsenter, og noen eldre modeller krever at kortet holdes helt stille mot et spesifikt punkt på bakdekselet for å bli lest korrekt
Feilsøking: de vanligste problemene og løsningene
Selv et korrekt oppsatt system opplever av og til feil, og det er sjelden grunn til panikk. Tabellen under samler de ni mest rapporterte problemene fra driftere av LNbits og Boltcard, sammen med den vanligste årsaken og hvordan du retter det. Start alltid med docker compose logs lnbits, siden loggen i de fleste tilfeller peker direkte på hvilken av disse ni kategoriene problemet hører til.
| Problem | Sannsynlig årsak | Løsning |
|---|---|---|
| Telefonen leser ikke kortet | NFC er avslått, eller kortet er ikke NTAG424 DNA | Aktiver NFC i telefoninnstillingene, bekreft korttype |
| "Invalid signature" ved tapping | SUN-telleren er desynkronisert, eller feil nøkler ble skrevet | Programmer kortet på nytt med Boltcard NFC Card Creator |
| Betaling feiler selv om saldo trekkes | Finansieringskilden (noden) er nede, eller kanalkapasiteten er for lav | Sjekk nodestatus og tilgjengelig utgående likviditet |
| Docker-containeren restarter kontinuerlig | Feil databasepassord eller miljøvariabler i .env | Kjør docker compose logs lnbits og sammenlign med .env |
| Admin-panelet laster ikke etter oppgradering | Databasemigrering ble ikke fullført | Restart containeren og se gjennom loggen for migreringsfeil |
| Kortets daglige grense treffes uventet tidlig | Klokkedrift på serveren mellom UTC og lokal tid | Synkroniser servertiden med NTP |
| TLS-sertifikatet har utløpt | Automatisk fornyelse med certbot er ikke konfigurert | Sett opp en cron-jobb for certbot renew |
| TPoS viser feil valutakurs | Valutakurskilden som brukes er nede eller forsinket | Bytt rate-kilde i TPoS-innstillingene |
| Flere kort ser ut til å dele samme wallet-ID | UID-feil under programmering av flere kort på rad | Verifiser UID individuelt for hvert kort før skriving |
Avanserte tips og neste steg
Når grunnoppsettet fungerer stabilt, finnes det flere veier å bygge videre på. LNURL-withdraw lar deg lage engangskuponger eller lønn til ansatte som kan hentes ut uten en forhåndsdefinert lommebok, mens LNURL-pay gir deg en statisk betalingsadresse som fungerer som en Lightning-variant av et Vipps-nummer. En Nostr-utvidelse gjør det mulig å ta imot såkalte zaps, altså mikrobetalinger knyttet til innhold på det desentraliserte sosiale nettverket Nostr, direkte inn i samme lommebok som butikkens kasse.
Inventory- og Orders-utvidelsene lar deg koble en enkel produktkatalog direkte til lommeboken, slik at hver vare har en fast pris og en egen betalingslenke, uten at du behøver å taste inn beløpet manuelt for hvert salg. Dette er nyttig for butikker med et avgrenset vareutvalg, som en kiosk eller en bokhandel, der det samme settet av varer selges gjentatte ganger. WebShop-utvidelsen går et skritt videre og gir deg en fullverdig, enkel nettbutikk-fasade bygget inn i samme LNbits-instans, dersom du ønsker å selge de samme varene på nett og i fysisk butikk fra én og samme lommebok.
For butikker som selger varer med fast prising i stabil valuta, er det verdt å se på Taproot Assets for stablecoin-betaling over Lightning, som løser problemet med sats-kursvolatilitet for kunder som ikke vil eksponeres mot Bitcoin-prisen i selve transaksjonen. Hvis administrasjon av server, oppdateringer og backup blir for tidkrevende, er LNbits sin egen hostede SaaS-løsning via my.lnbits.com et reelt alternativ, spesielt for pop-up-butikker, workshops og engangsarrangementer der en permanent server ikke er verdt investeringen.
Driver du flere ansatte med hvert sitt kort, kan du administrere alle lommebøkene fra samme admin-panel, og justere grenser individuelt uten å måtte programmere kortene på nytt. Dette gjør LNbits til noe mer enn et kasseapparat: det blir et helt styringssystem for Lightning-baserte underkontoer i en organisasjon, enten det er en kafé med fem ansatte eller en frivillig forening som samler inn donasjoner på et arrangement.
LNbits og Boltcard sammenlignet med andre betalingsløsninger
Det finnes ikke én riktig løsning for alle. Tabellen under oppsummerer hvordan LNbits med Boltcard skiller seg fra andre vanlige måter å ta imot Bitcoin- og Lightning-betaling på, slik at du kan velge riktig verktøy for ditt bruksområde.
| Løsning | Betalingsmetode | Krever egen node | Best til |
|---|---|---|---|
| LNbits + Boltcard | NFC-tapp eller QR | Nei, kan bruke ekstern finansieringskilde | Fysisk butikk, kiosk, arrangement med flere kort |
| BTCPay Server | QR-kode, netthandel-plugin | Valgfritt | Nettbutikk og fakturering |
| Egen Lightning-node med lommebok-app | QR-kode, manuell | Ja | Enkeltbruker som vil ha full kontroll |
| LNbits SaaS (hostet) | NFC-tapp eller QR | Nei | Pop-up og engangsarrangement uten IT-ressurser |
Legg merke til at LNbits og BTCPay Server ikke konkurrerer direkte. Mange driftere kombinerer dem: BTCPay for fakturering og netthandel, LNbits med Boltcard for raske tapp-betalinger ved disken. Begge bygger til syvende og sist på samme underliggende Lightning Network, bare med ulikt brukergrensesnitt mot kunden.
Praktisk utrulling: fra testoppsett til ekte butikk
Et oppsett som fungerer på kontorpulten, trenger ikke å fungere like godt bak en kasse en lørdag formiddag. Før du setter kortet i reell sirkulasjon, bør du kjøre gjennom en kort pilotperiode der du selv, eller en kollega, bruker Boltcard til faktiske, små kjøp over noen dager. Dette avdekker praktiske detaljer som hvor på disken leseren bør stå, hvor lenge kunden må holde kortet stille, og om valutakursvisningen i TPoS-terminalen oppdateres ofte nok til at prisen i kroner stemmer med det kunden faktisk betaler.
Ha alltid en reserveplan for betaling klar ved lansering. Selv et velfungerende Lightning-oppsett kan oppleve kortvarig nedetid, enten på grunn av en serveroppdatering, et strømbrudd, eller midlertidig mangel på utgående likviditet i noden. Butikkansatte bør vite at de kan falle tilbake på kort eller kontanter uten at det oppleves som en krise, og ikke sitte fast med en kunde i kø mens de feilsøker en container.
Tren opp minst to ansatte på hele flyten, ikke bare den personen som satte opp systemet. Vis dem hvordan de leser statusen i TPoS-terminalen, hvordan et avvist Boltcard-tapp ser ut for kunden, og hvor de finner admin-panelet dersom et kort må deaktiveres raskt. Et system som bare én person forstår, er et system som stopper butikken den dagen personen er på ferie eller sykemeldt. Skriv ned en kort, ett sides rutine for "Boltcard fungerer ikke" som kan ligge ved kassen, med de tre-fire vanligste årsakene og hva den ansatte skal gjøre i hvert tilfelle, slik at førstelinjen kan løse de enkleste problemene selv uten å ringe deg.
Regelverk og bokføring du bør kjenne til
Å ta imot Bitcoin-betaling via Lightning endrer ikke de grunnleggende kravene til bokføring og regnskap for en norsk virksomhet. Hver transaksjon bør registreres med beløp i sats og tilhørende verdi i norske kroner på betalingstidspunktet, slik at regnskapet følger de samme prinsippene som for annen omsetning. LNbits sitt admin-panel viser betalingshistorikk med tidsstempel, men det er fortsatt ditt ansvar å eksportere og arkivere disse dataene i tråd med bokføringsregelverket som gjelder din virksomhetsform.
Siden dette området utvikler seg og kan variere mellom virksomhetstyper, bør du rådføre deg med en regnskapsfører eller revisor før du tar en Boltcard-løsning i reell kommersiell bruk, særlig hvis omsetningen er av en størrelse som utløser rapporteringsplikt. Dette gjelder uavhengig av om du bruker LNbits, BTCPay Server, eller en helt annen betalingsløsning, siden utfordringen ligger i regnskapsføringen av kryptobetaling generelt, ikke i det spesifikke verktøyet du velger.
Et praktisk grep mange driftere bruker, er å eksportere betalingsloggen fra LNbits til et regneark ved jevne mellomrom, for eksempel ukentlig, i stedet for å samle alt til årsoppgjøret. Det gjør avstemmingen mot bokføringssystemet enklere, og reduserer risikoen for at en enkelt transaksjon blir glemt eller feilregistrert måneder etter at den fant sted.
Ofte stilte spørsmål
Må jeg drifte min egen Lightning-node for å bruke LNbits?
Nei. LNbits er et kontolag som kan kobles til en ekstern finansieringskilde. Du kan starte uten egen node og flytte til en selvdriftet node senere, dersom volumet rettferdiggjør det.
Kan jeg bruke vanlige NFC-klistremerker i stedet for NTAG424 DNA-kort?
Nei. Boltcard-utvidelsen krever spesifikt NTAG424 DNA for SUN-basert replay-beskyttelse. Eldre NTAG213-, 215- og 216-kort fungerer ikke med den sikkerhetsmodellen.
Hva skjer hvis jeg mister et Boltcard?
Så lenge du har satt en daglig grense og en transaksjonsgrense, er det maksimale tapet begrenset til disse verdiene per døgn frem til du deaktiverer kortet fra admin-panelet.
Kan jeg bruke LNbits og Boltcard i en norsk butikk i dag?
Teknisk sett ja, siden programvaren er åpen kildekode og fritt tilgjengelig. Vurder alltid gjeldende regelverk for betalingsformidling og bokføring for din virksomhetstype før du tar det i reell kommersiell bruk.
Er LNbits trygt å eksponere på internett?
Ja, forutsatt at du følger grunnleggende hardening: HTTPS via en omvendt proxy, sterke admin-passord, begrenset brannmuråpning og regelmessige oppdateringer. Ingen offentlig dokumentert sårbarhet i LNbits eller Boltcard-utvidelsen er kjent per oktober 2026, men det underliggende sikkerhetsnivået avhenger uansett av hvordan du drifter serveren.
Kan jeg bruke LNbits SaaS i stedet for å selvhoste?
Ja. LNbits tilbyr en hostet SaaS-variant via my.lnbits.com, rettet mot butikker, pop-up-arrangementer og workshops som ikke vil administrere egen server.
Hvordan skiller et Boltcard seg fra et vanlig bankkort med kontaktløs betaling?
Et bankkort kommuniserer med et kortnettverk og en bank. Et Boltcard kommuniserer direkte med Lightning Network via din egen LNbits-instans, uten mellomledd mellom kjøper og selger utover selve nettverket.
Hva koster det å komme i gang?
Hovedkostnadene er en billig VPS og selve NTAG424 DNA-kortene, som kan kjøpes direkte fra LNbits sin nettbutikk. Programvaren selv, inkludert LNbits og Boltcard-utvidelsen, er gratis og åpen kildekode. Legg heller tid i budsjettet enn penger: det første oppsettet tar lengst tid, mens drift etter det går på rutine.
Kan flere ansatte dele samme Boltcard?
Teknisk er det mulig, men det frarådes. Hvert kort bør knyttes til en egen lommebok eller en egen person, slik at grenser, historikk og eventuell deaktivering kan håndteres individuelt uten å påvirke andre brukere av samme underkonto.
Trenger jeg internett i butikken for at Boltcard skal fungere?
Ja. Selve tappingen skjer lokalt mellom kortet og leseren, men leseren eller telefonen som håndterer tappingen må ha nettverkstilgang til LNbits-instansen for å sjekke SUN-signaturen og registrere betalingen. Uten nettverkstilgang kan ikke betalingen fullføres.
