GuiderFöretag och övervakningTeamlösenord med Passbolt

Dela teamets lösenord med Passbolt och Podman utan root

Passbolt Community Edition på Debian 13, lösenordshanteraren med öppen källkod för team, i rootless Podman med MariaDB under en egen användare bakom Caddy, där lösenorden krypteras i varje användares webbläsare och delas mellan kollegor.

Testad på Passbolt CE 5.16.0 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 14 oktober 2026

Rekommenderad server för guiden

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy · 2 vCPU · 8 GB Minne · 60 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

100 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

Passbolt är en lösenordshanterare för team: de gemensamma inloggningarna till routern, banken, webbutiken och kontona i sociala medier, var och en delad med de kollegor som behöver den, för att läsa, ändra eller äga. Varje användare har en egen OpenPGP-nyckel som skapas och sparas i webbläsaren, och varje lösenord krypteras för var och en det delas med innan det lämnar webbläsaren. Servern lagrar bara krypterade data och kan inte läsa lösenorden. Sedan version 5 krypteras också lösenordens namn, användarnamn och adresser.

Passbolt görs av Passbolt SA, ett bolag i Luxemburg, och Community Edition är öppen källkod under licensen AGPL 3.0. En betald Pro-utgåva lägger till kontoåterställning, enkel inloggning och synkning mot LDAP. Man använder Passbolt via dess tillägg till webbläsaren, för Chrome, Firefox, Edge, Brave och Safari, och det finns appar för Android, iOS och Windows. Tillägget är inget val: det går inte att logga in med bara webbsidan.

Här körs Passbolt som en pod under en egen användare som heter passbolt, med MariaDB för dess data, bakom Caddy från Podman-guiden. Den använder Passbolts officiella avbild utan root, som kör som en vanlig användare även inne i containern.

Varje steg nedan har körts på en nyinstallerad Melonslab VC-P Alloy (2 vCPU, 8 GB) med Debian 13. Vi kunde inte köra tillägget till webbläsaren på servern, så vi gjorde det tillägget gör via Passbolts API, med GnuPG och Passbolts eget kommandoradsverktyg, go-passbolt-cli:

  • Passbolt CE 5.16.0 startade med MariaDB 11.8, och dess hälsokontroll gick igenom, med ett känt undantag som beskrivs under Felsökning.
  • Den första administratören skapades med Passbolts kommando i steg 5. Länken för att sätta upp kontot, och inbjudan till en andra användare, kom med e-post, och båda kontona sattes upp från de länkarna med egna nycklar.
  • Med krypterad metadata påslagen skapade administratören ett lösenord och delade det med läsrätt till den andra användaren, som sedan kunde läsa det. Databasen innehöll bara krypterade data för det, och när den andra användaren försökte ändra ett lösenord med bara läsrätt nekades det.
  • Registrering för allmänheten var stängd. Passbolt loggade varje besökares riktiga adress och struntade i en förfalskad X-Forwarded-For-header.
  • E-post gick ut via en SMTP-server med STARTTLS och lösenord, från hemligheten i steg 2. När SMTP-servern låg nere väntade inbjudan i en kö och gick iväg när den var tillbaka. Med svenska valt för organisationen kom inbjudningarna på svenska.
  • En uppdatering från Passbolt 5.15.0 till 5.16.0 gick igenom med podman auto-update. Passbolt återställdes från en säkerhetskopia till tomma volymer, och allt startade igen av sig självt efter en omstart av servern.

Podden använde omkring 200 MB minne: 135 MB för MariaDB och 65 MB för Passbolt.

Det här har vi inte testat: tilläggets skärmar, apparna för mobil och dator, tvåstegsinloggning och att skicka via en riktig e-postleverantör.

Innan du börjar

Du behöver:

  • en server uppsatt som i Podman-guiden, med Caddy igång;
  • en A-post och en AAAA-post för passbolt.example.com som pekar på din server;
  • ett e-postkonto hos din e-postleverantör som kan skicka via SMTP, för inbjudningar och aviseringar.

Exemplen använder passbolt.example.com för Passbolt, 203.0.113.10 för serverns IPv4-adress, som ip -brief address show eth0 visar, och smtp.example.com med kontot passbolt@example.com för att skicka e-post. Byt ut dem genomgående.

1. Skapa användaren

Som root:

useradd -m -s /bin/bash passbolt
loginctl enable-linger passbolt
machinectl shell passbolt@

Allt fram till steg 4 körs som passbolt.

2. Skapa hemligheterna

openssl rand -hex 24 | tr -d '\n' | podman secret create passbolt-db-password -
printf %s 'the-smtp-password' | podman secret create passbolt-mail-password -

Den första raden skapar databaslösenordet. Den andra sparar lösenordet till ditt e-postkonto, i stället för the-smtp-password. Båda lagras av Podman, inte i filerna nedan.

3. Definiera podden

mkdir -p ~/.config/containers/systemd
cd ~/.config/containers/systemd

Skapa passbolt.pod:

[Pod]
PodName=passbolt
# Only Caddy, on this server, can reach Passbolt: the port is not open to the internet.
PublishPort=127.0.0.1:8139:8080
# Passbolt's health check calls its own address: send it to Caddy, not back into the pod.
AddHost=passbolt.example.com:host-gateway

[Install]
WantedBy=default.target

Skapa passbolt-db.container:

[Container]
ContainerName=passbolt-db
Image=docker.io/library/mariadb:11.8
Pod=passbolt.pod
Volume=passbolt-db:/var/lib/mysql
Environment=MARIADB_DATABASE=passbolt MARIADB_USER=passbolt MARIADB_RANDOM_ROOT_PASSWORD=1 MARIADB_AUTO_UPGRADE=1
Secret=passbolt-db-password,type=env,target=MARIADB_PASSWORD
HealthCmd=healthcheck.sh --connect --innodb_initialized
HealthInterval=10s
Notify=healthy
AutoUpdate=registry

[Service]
Restart=always

Och passbolt-app.container:

[Unit]
Requires=passbolt-db.service
After=passbolt-db.service

[Container]
ContainerName=passbolt-app
Image=docker.io/passbolt/passbolt:latest-ce-non-root
Pod=passbolt.pod
Volume=passbolt-gpg:/etc/passbolt/gpg
Volume=passbolt-jwt:/etc/passbolt/jwt
Environment=APP_FULL_BASE_URL=https://passbolt.example.com PASSBOLT_SSL_FORCE=true
Environment=PASSBOLT_SECURITY_PROXIES_ACTIVE=true PASSBOLT_SECURITY_PROXIES_TRUSTED_PROXIES=203.0.113.10
Environment=DATASOURCES_DEFAULT_HOST=127.0.0.1 DATASOURCES_DEFAULT_DATABASE=passbolt DATASOURCES_DEFAULT_USERNAME=passbolt
Secret=passbolt-db-password,type=env,target=DATASOURCES_DEFAULT_PASSWORD
Environment=EMAIL_TRANSPORT_DEFAULT_HOST=smtp.example.com EMAIL_TRANSPORT_DEFAULT_PORT=587 EMAIL_TRANSPORT_DEFAULT_TLS=true
Environment=EMAIL_TRANSPORT_DEFAULT_USERNAME=passbolt@example.com EMAIL_DEFAULT_FROM=passbolt@example.com EMAIL_DEFAULT_FROM_NAME=Passbolt
Secret=passbolt-mail-password,type=env,target=EMAIL_TRANSPORT_DEFAULT_PASSWORD
Environment=PASSBOLT_SECURITY_SMTP_SETTINGS_ENDPOINTS_DISABLED=true
AutoUpdate=registry

[Service]
Restart=always

Vad inställningarna gör:

  • APP_FULL_BASE_URL är adressen som Passbolt sätter i varje länk och e-postmeddelande, och den som tillägget kontrollerar att det pratar med. Den måste vara den publika https://-adressen. PASSBOLT_SSL_FORCE skickar vidare varje vanlig http://-förfrågan dit.
  • PASSBOLT_SECURITY_PROXIES_TRUSTED_PROXIES är adressen som Passbolt litar på när den får veta besökarens riktiga adress. Caddys anslutningar kommer in i podden från serverns egen IPv4-adress, som Podman-guiden förklarar, så det är den du anger.
  • Raderna med EMAIL_ skickar e-post via din leverantör på port 587 med STARTTLS. Steg 6 har detaljerna. PASSBOLT_SECURITY_SMTP_SETTINGS_ENDPOINTS_DISABLED döljer e-postinställningarna på administrationssidorna, så att de inte kan ta över från de här raderna.
  • Vid första starten skapar Passbolt serverns egen OpenPGP-nyckel i volymen passbolt-gpg, och nyckeln för mobilappernas inloggning i passbolt-jwt. Lösenord, användare och inställningar ligger i databasen.
  • MariaDB ligger kvar på 11.8, en version med långtidsstöd, och MARIADB_AUTO_UPGRADE uppdaterar dess systemtabeller efter en uppdatering inom den.

Starta den:

systemctl --user daemon-reload
systemctl --user start passbolt-pod
systemctl --user enable --now podman-auto-update.timer

Vid första starten laddas omkring 770 MB avbilder ner, och Passbolt behöver en minut för att sätta upp sin databas. Den är klar när det här skriver ut 302:

podman exec passbolt-app curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/

4. Sätt Caddy framför

Gå tillbaka till root med exit, byt till machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:

passbolt.example.com {
    reverse_proxy 127.0.0.1:8139
}

Starta om Caddy med systemctl --user restart caddy. Gå sedan tillbaka till root, byt till machinectl shell passbolt@ och kör Passbolts hälsokontroll:

podman exec passbolt-app bash -c 'source /etc/environment; /usr/share/php/passbolt/bin/cake passbolt healthcheck'

Den kan sluta med ett fel, "The /etc/passbolt/jwt/ directory should not be writable", som hör till avbilden utan root (se Felsökning). Alla andra rader med [FAIL] säger vad du ska rätta. Kontrollen frågar också GitHub vilken version av Passbolt som är den senaste, och misslyckas om din är äldre.

5. Skapa den första administratören

Ingen kan registrera sig själv, så det första kontot skapas med Passbolts eget kommando, som passbolt:

podman exec passbolt-app /usr/share/php/passbolt/bin/cake passbolt register_user -u you@example.com -f Anna -l Andersson -r admin

Det skriver ut en länk för att sätta upp kontot, https://passbolt.example.com/setup/start/…, och skickar samma länk med e-post. Länken gäller i 10 dagar.

Öppna den i din webbläsare. Passbolt ber dig först installera sitt tillägg, med Download extension. Sedan leder tillägget dig genom uppsättningen:

  1. Det skapar din OpenPGP-nyckel och ber om en lösenfras som skyddar den. Välj en lång: det är det enda lösenordet du skriver från och med nu.
  2. Det erbjuder ditt recovery kit, en fil med din privata nyckel. Förvara den säkert, till exempel på ett USB-minne i ett kassaskåp, och markera I safely stored my recovery kit. Utan filen och lösenfrasen går kontot inte att återställa: Community Edition har ingen kontoåterställning.
  3. Du väljer en färg och tre tecken som din säkerhetstoken (Pick a color and enter three characters.). Tillägget visar dem på varje sida där du skriver din lösenfras, så att du kan skilja en äkta fråga från Passbolt från en falsk.

Sedan är du inloggad. Som första administratör skapar ditt tillägg också organisationens gemensamma metadatanyckel, som krypterar lösenordens namn och adresser; den delen gjorde vi via API:et, som tillägget skulle ha gjort. Kontrollera under Administration > Encrypted Metadata att den är påslagen.

6. E-post

Passbolt skickar e-post för inbjudningar, kontoåterställning och aviseringar när någon delar, ändrar eller tar bort ett lösenord du har tillgång till. Den fungerar inte utan: en ny användare kan bara komma igång via sin inbjudningslänk. För att kontrollera inställningarna från steg 3, som passbolt:

podman exec passbolt-app /usr/share/php/passbolt/bin/cake passbolt send_test_email --recipient=you@example.com

Det visar samtalet med din SMTP-server och slutar med "The message has been successfully sent!". Övrig e-post går via en kö som Passbolt skickar varje minut. Om din SMTP-server inte går att nå:

  • går det fortfarande att skapa en användare, men inbjudan kommer inte fram, och användaren kan inte komma igång;
  • får en användare som har tappat sitt tillägg, till exempel på en ny dator, inget e-postmeddelande för att återställa det;
  • får ingen veta om lösenord som delas med dem eller ändras.

Passbolt behåller e-posten i kön och försöker igen, så inget går förlorat när sändningen väl fungerar. För att se vad som gick fel, som passbolt:

podman exec passbolt-db sh -c 'mariadb -upassbolt -p"$MARIADB_PASSWORD" passbolt -e "select email, subject, sent, error from email_queue order by created desc limit 5"'

Port 587 med EMAIL_TRANSPORT_DEFAULT_TLS=true använder STARTTLS. För port 465, som använder TLS från början, sätter du EMAIL_TRANSPORT_DEFAULT_HOST=ssl://smtp.example.com och EMAIL_TRANSPORT_DEFAULT_PORT=465 och tar bort EMAIL_TRANSPORT_DEFAULT_TLS=true. Kör efter en ändring systemctl --user daemon-reload och systemctl --user restart passbolt-app. Vi testade att skicka med STARTTLS och lösenord till en testserver för e-post på själva servern, inte via en riktig e-postleverantör, och vi testade inte port 465.

Tills e-posten fungerar är kommandot i steg 5 också sättet att lägga till andra användare: det skriver ut länken, som du lämnar vidare själv. Använd -r user för en användare som inte ska vara administratör.

7. Bjud in kollegor och dela ett lösenord

I Passbolt skapar du en användare under Users med e-postadress och namn. Användaren får en inbjudan med e-post och sätter upp sitt konto med tillägget som i steg 5. Administratörer hanterar användarna; en användare som inte är administratör hanterar bara sina egna lösenord.

Så här delar du ett lösenord:

  1. Under Resources väljer du Create och lägger till lösenordet med namn, adress, användarnamn och lösenord.
  2. Markera det och välj Share.
  3. Under Share with people or groups skriver du en kollegas namn och väljer vad kollegan får göra: Can read, Can update eller Is owner. Välj sedan Save.

Från och med då visar kollegans tillägg lösenordet, och kollegan får ett e-postmeddelande om det. Med grupper, under Users, delar du med ett helt team på en gång. Tillägget fyller också i inloggningar på webbplatser, och dess generator skapar nya lösenord.

Under Administration kan du också slå på tvåstegsinloggning med TOTP, under Multi Factor Authentication, och ställa in regler för lösenord. Vi har inte testat dem här.

8. Använd Passbolt på svenska

Passbolt är översatt till svenska. Under Administration > Internationalisation väljer du Svenska som standardspråk för organisationen och sedan Save. Då kommer även e-posten på svenska, för användare som inte har valt ett annat språk. Varje användare kan välja sitt eget språk i sin profil, under Manage account.

9. Säkerhetskopiera

Som passbolt:

umask 077
mkdir -p ~/backup
podman exec passbolt-db sh -c 'mariadb-dump -upassbolt -p"$MARIADB_PASSWORD" --single-transaction passbolt' > ~/backup/passbolt-db.sql
podman volume export passbolt-gpg > ~/backup/passbolt-gpg.tar
podman volume export passbolt-jwt > ~/backup/passbolt-jwt.tar

Det är databasen, med alla krypterade lösenord, användare och inställningar, och serverns egna nycklar. Spara servernyckeln: varje användares tillägg kommer ihåg den och vägrar logga in på en server med en annan. Lösenorden i säkerhetskopian är fortfarande krypterade för varje användare, så säkerhetskopian ensam avslöjar dem inte, men förvara den säkert ändå. Kopiera ~/backup till en annan maskin, till exempel med restic.

Användarnas egna nycklar finns inte på servern. Varje användares recovery kit och lösenfras är deras del av säkerhetskopian.

För att återställa till en tom pod, som passbolt, med säkerhetskopian i ~/backup:

systemctl --user stop passbolt-pod
podman volume rm passbolt-db passbolt-gpg passbolt-jwt
podman volume create passbolt-gpg
podman volume import passbolt-gpg ~/backup/passbolt-gpg.tar
podman volume create passbolt-jwt
podman volume import passbolt-jwt ~/backup/passbolt-jwt.tar
systemctl --user start passbolt-db
podman exec -i passbolt-db sh -c 'mariadb -upassbolt -p"$MARIADB_PASSWORD" passbolt' < ~/backup/passbolt-db.sql
systemctl --user start passbolt-app

Genom att bara starta databasen först läses säkerhetskopian in innan Passbolt sätter upp en tom databas. På en ny server skapar du först de två hemligheterna i steg 2; databaslösenordet kan vara ett nytt.

10. Uppdatera

podman auto-update letar en gång om dagen efter nya avbilder av Passbolt och MariaDB och startar om podden när någon har ändrats. Passbolt uppdaterar sin databas när den startar. För att uppdatera direkt:

podman auto-update

Taggen latest-ce-non-root följer varje version av Community Edition. Vill du hellre uppdatera för hand byter du den i passbolt-app.container mot en versionstagg, till exempel 5.16.0-1-ce-non-root, tar bort raden AutoUpdate=registry och byter tagg när du vill uppdatera. Håll i båda fallen dina säkerhetskopior aktuella, och läs Passbolts versionsinformation före större uppdateringar. Tillägget uppdaterar sig självt via webbläsarens butik.

Felsökning

Hälsokontrollen misslyckas med "The /etc/passbolt/jwt/ directory should not be writable". I avbilden utan root tillhör katalogen användaren som Passbolt kör som, så den kan alltid skriva där. Nycklarna i den fungerar, och mobilapparna loggar in med dem. Det här felet kan du strunta i.

Hälsokontrollen säger "Could not reach the /healthcheck/status with the url specified in App.fullBaseUrl". Raden AddHost i passbolt.pod saknas eller anger en annan adress. Rätta den, kör sedan daemon-reload och starta om passbolt-pod.

Inbjudningar kommer inte fram. Skicka testmeddelandet i steg 6 och titta i kolumnen error i kön.

En användare har tappat bort sin lösenfras eller sitt recovery kit. Community Edition kan inte återställa kontot. Ta bort användaren under Users, bjud in den igen och dela lösenorden med den på nytt. Lösenord som bara den användaren hade tillgång till är förlorade.

Tillägget säger att servernyckeln har ändrats. Servern har en annan OpenPGP-nyckel än den tillägget kommer ihåg, till exempel efter en återställning utan passbolt-gpg.tar. Återställ den volymen från säkerhetskopian.

Kör det på din egen server

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy

100 kr/mån

vCPU
2
Minne
8 GB
Lagring
60 GB
Trafik
10 TB
Performance
SSD · RAID 1
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider