Hoppa till innehåll
Installation

Installera Vaultwarden

Ge företaget ett gemensamt lösenordsvalv som ni äger själva, med Bitwardens appar pekade mot er egen server.

Vad ni får ut av det här

Fråga företaget var lösenordet till Instagram-kontot står. Svaret är oftast ett meddelande i en gruppchatt för länge sedan, eller en lapp hos den som råkade skapa kontot. Sedan ska någon annan komma åt samma konto, och då börjar letandet.

Vaultwarden löser det. Företaget får ett gemensamt valv där alla inloggningar ligger krypterade, var och en har sitt eget konto med sitt eget huvudlösenord, och ni delar det som ska delas i stället för att skicka det. Ni slipper också det andra problemet: när samma lösenord används överallt räcker det att en tjänst läcker för att alla konton ska stå öppna.

Det här behöver ni innan ni börjar

  • Docker på Windows eller Linux Mint. Installera Docker går igenom installationen, och den här guiden bygger vidare på den.
  • Väldigt lite av datorn. Vaultwarden är skrivet i Rust och drar under 100 MB minne, vilket gör det till det snällaste systemet i hela den här sektionen.
  • Ett huvudlösenord per person i företaget. Det ska vara långt, det ska vara unikt, och det ska gå att komma ihåg. Fyra slumpvis valda ord i rad är både säkrare och lättare att minnas än Hejsan123!.
  • Webbläsaren Chrome, Edge eller Firefox på allas datorer. Tillägget installeras därifrån.
  • En bestämd person som ansvarar för att säkerhetskopian tas. Ett lösenordsvalv utan kopia är ett enda hårddiskhaveri från katastrof.

Tidsåtgång och svårighetsgrad

Servern är igång på tio minuter. Räkna med en timme till för att lägga upp konton, installera tillägget på allas datorer och flytta in de lösenord ni redan har. Svårighetsgraden är låg tekniskt sett. Det som kräver eftertanke är rutinerna: vem som får se vad, och vad ni gör den dagen någon glömmer sitt huvudlösenord.

Vad Vaultwarden är, och hur det förhåller sig till Bitwarden

Bitwarden är en känd lösenordshanterare med appar för dator, webbläsare och mobil. Servern bakom är öppen källkod men tung att köra själv. Vaultwarden är en omskrivning av den servern, gjord för att vara liten nog att köra på en enkel maskin, och den pratar samma språk som Bitwarden.

Det betyder att ni använder Bitwardens vanliga appar och tillägg, men pekar dem mot er egen server i stället för mot Bitwardens. Ni får funktioner som annars kostar, till exempel delade samlingar och filbilagor, och ni betalar ingenting.

En sak ska sägas rakt ut: krypteringen sker i er webbläsare innan något skickas till servern. Servern lagrar bara oläsbara block, och huvudlösenordet lämnar aldrig datorn. Det är också därför ingen, varken ni eller någon annan, kan återställa ett glömt huvudlösenord. Tappar någon sitt, är det kontot borta och måste läggas upp på nytt.

Filerna ni klistrar in

Skapa en mapp som heter vaultwarden och en fil i den som heter compose.yaml:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    restart: unless-stopped
    ports:
      - "8000:80"
    environment:
      - DOMAIN=http://localhost:8000
      - SIGNUPS_ALLOWED=true
      - ADMIN_TOKEN=BYT_UT_MIG
    volumes:
      - vw_data:/data

volumes:
  vw_data:

Ersätt ADMIN_TOKEN med en lång slumpsträng. På Mint ger openssl rand -base64 48 en bra sådan, på Windows tar ni lösenordsgeneratorn i webbläsaren. Den strängen är nyckeln till administrationssidan och ska behandlas som ett rootlösenord: den sparas hos den som ansvarar för servern, och delas inte med hela företaget.

Vaultwarden accepterar en vanlig sträng som token men skriver samtidigt en varning i loggen om att en hashad token är bättre. För en installation som bara nås från företagets egen dator går det bra som det står. Kör ni servern på internet ska ni följa varningen, och hashningen görs inuti containern, alltså först efter att den startat en gång:

docker compose exec vaultwarden /vaultwarden hash

Kommandot frågar efter er token två gånger och skriver sedan ut en lång sträng som börjar med $argon2id$. Den strängen ska in på raden ADMIN_TOKEN, och där finns en fälla som låser ute fler än den borde: dollartecken har en egen betydelse i compose.yaml. Varje $ i hashen ska därför skrivas som två, alltså $$, annars läser Docker strängen som något annat än den är och administrationssidan tar inte emot ert lösenord. Skriv inte in citattecken kring värdet, för då blir citattecknen en del av strängen och tokenen matchar aldrig:

- ADMIN_TOKEN=$$argon2id$$v=19$$m=65540,t=3,p=4$$...

Kontrollera att ni kommer in på /admin innan ni går vidare. Det är här ett företag låser sig ute från sin egen server.

SIGNUPS_ALLOWED=true gör att vem som helst som når adressen kan skapa ett konto. Ni behöver det medan företaget registrerar sig, och ni ska stänga det direkt efteråt. Det står i ett eget avsnitt längre ner, och det är det viktigaste steget i hela guiden.

Windows: starta Vaultwarden

Kontrollera att Docker Desktop är igång, öppna PowerShell och kör:

cd $HOME\Documents\vaultwarden
docker compose up -d

Avbilden är liten, så nedladdningen tar under en minut. Kontrollera med docker compose ps och öppna sedan http://localhost:8000. Klicka på Skapa konto och registrera det första kontot med företagets gemensamma mejladress.

Linux Mint: starta Vaultwarden

Öppna Terminal och kör:

cd ~/vaultwarden
docker compose up -d
docker compose logs --tail 20

I loggen ska det stå att servern lyssnar på port 80 inuti containern. Öppna http://localhost:8000 och skapa det första kontot.

Här kommer den begränsning som avgör hur ni kan använda installationen. Webbläsare kräver en säker anslutning för den sortens kryptering Bitwarden-tillägget använder, med ett enda undantag: adresser som börjar med http://localhost räknas som säkra ändå. Servern fungerar alltså perfekt på den dator den står på, och vägrar i tillägget så fort en kollega surfar till http://192.168.1.42:8000.

Ni har två vägar därifrån. Antingen kör var och en sin egen Vaultwarden lokalt, vilket fungerar men inte ger något delat valv. Eller så lägger ni servern på en molnserver med ett domännamn och HTTPS, och då når hela företaget samma valv från sina egna datorer och telefoner. En liten molnserver räcker, Domän och mejl tar domänen, och certifikatet sköter en omvänd proxy som Caddy åt er.

Ändra i så fall DOMAIN i compose-filen till https://valv.erdoman.se eller vad ni väljer. Raden används för länkar i mejl och för tvåfaktorsinloggning, och står den fel slutar de delarna fungera.

Konton till företaget

  1. Låt varje person i företaget gå till adressen och skapa ett eget konto med sin egen mejladress. Dela aldrig ett konto mellan flera personer, hela poängen är att se vem som gjort vad.
  2. Skapa en organisation från det första kontot: klicka på Nytt och välj Organisation. Döp den till företagets namn.
  3. Bjud in de andra kontona till organisationen. Inbjudningarna syns under Medlemmar, och eftersom ingen mejlserver är inkopplad godkänner ni dem manuellt där.
  4. Skapa samlingar för det som ska delas, till exempel Sociala medier, Webbhotell och Ekonomi. Ge ekonomiansvarig tillgång till ekonomisamlingen, inte till allt.
  5. Slå på tvåfaktorsinloggning på ert eget konto under Säkerhet. Appen Aegis, Bitwarden Authenticator eller Google Authenticator fungerar alla.

Stäng registreringen

När alla i företaget har konto ändrar ni raden i compose-filen till SIGNUPS_ALLOWED=false och kör docker compose up -d igen. Nu kan ingen ny skapa konto på egen hand, och nya medlemmar bjuds in från organisationen i stället.

Hoppar ni över det här steget står företagets lösenordsserver öppen för vem som helst som hittar adressen. Sätt en påminnelse samma dag ni installerar.

Tillägget i webbläsaren och appen i mobilen

Installera Bitwarden Password Manager från Chrome Web Store, Microsoft Edge Add-ons eller Firefox Add-ons. Innan ni loggar in väljer ni Self-hosted i rullistan Logging in on på inloggningsrutan och skriver serverns adress, alltså http://localhost:8000 eller ert domännamn. Missar ni det steget loggar tillägget in mot Bitwardens egen molntjänst och hittar inga av era lösenord.

Mobilappen heter också Bitwarden och fungerar likadant: välj egen server i inloggningsrutan, ange adress, logga in. Appen kräver att servern nås över HTTPS, så den fungerar bara om ni har lagt servern på en riktig adress.

Flytta sedan in lösenorden ni redan har. Låt tillägget spara varje inloggning i en vecka framåt, och byt samtidigt ut de lösenord som återanvänds på flera ställen. Generatorn i tillägget skapar nya åt er.

Säkerhetskopiera

Allt ligger i volymen vw_data: databasen, bilagorna och nycklarna. Ta en kopia så här, och gör det varje månad:

docker compose stop
docker run --rm -v vaultwarden_vw_data:/data -v "$PWD":/backup alpine tar czf /backup/vaultwarden-backup.tar.gz /data
docker compose start

Servern stängs av under kopieringen, och det är med flit: en databasfil som kopieras mitt i en skrivning kan bli oanvändbar. Det tar tio sekunder. Kontrollera volymnamnet med docker volume ls först, det består av mappens namn plus volymens. Lägg kopian på en annan disk eller en annan maskin.

Kör ni kommandot i PowerShell på Windows, skriv -v "${PWD}:/backup" med måsvingarna. $PWD fungerar i grunden även i PowerShell, men utan måsvingarna kan citattecknet direkt efter tolkas som ett eget argument, så den säkra formen har dem.

Innehållet i kopian är krypterat, men behandla den ändå som känslig. Den som har filen kan försöka gissa huvudlösenord i lugn och ro, och det är precis därför huvudlösenorden ska vara långa.

Testa återläsningen minst en gång om året. En säkerhetskopia som aldrig lästs tillbaka är en förhoppning, inte en kopia.

Så här vet ni att det funkade

  • docker compose ps visar vaultwarden som running.
  • Ni loggar in i webbvalvet på http://localhost:8000.
  • Ett sparat lösenord finns kvar efter docker compose restart.
  • Tillägget i webbläsaren fyller i inloggningen automatiskt på en riktig sajt.
  • Ett lösenord i en delad samling syns hos en annan person i företaget.
  • SIGNUPS_ALLOWED står på false och nya konton går inte att skapa utifrån.
  • Säkerhetskopian ligger på en annan maskin än servern.

Om det går fel

Tillägget säger att servern inte går att nå. Nio gånger av tio är serveradressen inte inställd i tillägget, eller så saknas http:// och portnumret.

Allt fungerar i webbläsaren men inte i tillägget från en annan dator. Det är kravet på säker anslutning. Se avsnittet om Linux Mint ovan.

"You need to log in as a user" på administrationssidan. Token i ADMIN_TOKEN matchar inte den ni skriver in, eller så har raden kommenterats bort. Adressen är http://localhost:8000/admin.

Någon har glömt sitt huvudlösenord. Det går inte att återställa, och det är avsiktligt. Radera kontot från administrationssidan, låt personen skapa ett nytt och dela samlingarna på nytt. Lösenorden som bara låg i det kontot är borta.

Port 8000 är upptagen. Byt vänstra siffran i ports, till exempel till 8001:80, och ändra DOMAIN till samma port.

Vad ni gör härnäst

Bestäm två rutiner och skriv ner dem där företaget skriver ner saker. Den första: varje nytt konto ni skapar under året läggs in i valvet samma dag, inte sedan. Den andra: säkerhetskopian tas den första i månaden av en namngiven person.

Sedan har ni en plats att lägga alla de lösenord som de andra guiderna skapar. Installera Nextcloud ger företaget en filyta, Installera n8n automatiserar det som görs för hand, och Installera Odoo sätter upp affärssystemet. Alla tre skapar lösenord ni kommer att behöva igen.