Raspberry Pi als Password Manager met Bitwarden & zo doe je het!
Veel internetgebruikers hebben te maken met een opstapeling van toegangsgegevens tot portals en diensten, wat een gevaarlijke situatie kan opleveren. Het is vrijwel onmogelijk om voor elk account een uniek en veilig wachtwoord te bedenken en te onthouden.
Lees verder na de advertentie
In deze workshop laten we zien hoe je een Raspberry Pi kunt gebruiken als Password Manager en server met behulp van Bitwarden. Hierdoor kun je toegangsgegevens synchroniseren tussen meerdere apparaten zonder dat je je database in vreemde handen hoeft te geven.
De beloftes van wachtwoordmanagers
Hoewel wachtwoordmanagers beloven je te helpen, hangen deze vaak aan hun eigen cloud. Bovendien synchroniseren ze de wachtwoordverzameling tussen meerdere apparaten alleen als je daar een maandelijks bedrag voor betaalt. Daarnaast moet je een hoge mate van vertrouwen hebben in de betreffende aanbieder, omdat de virtuele bos sleutels wordt bewaard in een kluisje van een externe derde partij.
Tip!
Ontworpen voor creators en professionals: configureer jouw eigen ASUS ProArt P16 nu.

Raspberry Pi als password manager met open-source wachtwoordmanager Bitwarden
Je kunt de opensource wachtwoordmanager Bitwarden zelf hosten. Bitwarden bestaat uit twee delen:
- de server, die de wachtwoorden beheert en verstrekt
- de clients, die ze opvragen
Bitwarden_RS: afgeslankte versie van de officiële server
Het communityproject Bitwarden_RS heeft een afgeslankte versie van de officiële Bitwarden-server gemaakt die de Bitwarden-API implementeert. Hiermee kan de Raspberry Pi de rol als password manager op zich nemen terwijl hij compatibel blijft met de officiële Bitwarden-applicaties. Dit is een mooi voorbeeld van praktische Raspberry Pi projects.
Ontvang gratis meer praktische Raspberry Pi Projects en tips, schrijf je in voor de nieuwsbrief:
Minimale vereisten: Raspberry Pi 3 en commandline toegang
Om Bitwarden te installeren heb je minimaal een Raspberry Pi 3 nodig. Je kunt Raspberry Pi OS gebruiken met een grafische gebruikersinterface of verbinding maken via SSH. Voor het installeren heb je alleen toegang tot de commandline nodig.
Configuratie via Vault en admin-panel
Na installatie kun je met meerdere accounts via Bitwarden-clients of een webinterface (web-vault) toegang krijgen tot de server en Bitwarden vanaf elk apparaat met een browser configureren. De webinterface omvat een webtoepassing (Vault) waarmee gebruikers hun account kunnen beheren en biedt beheertools via een admin-panel.

Advies van Bitwarden: Docker-container
De ontwikkelaars van Bitwarden_RS raden aan om de server op te zetten als een Docker-container. Dit voorkomt dat de wachtwoordmanager andere diensten op de Raspberry Pi belemmert.
Ingrediënten: Reverse-proxy en containerized edgerouter Traefik
Voor de installatie zijn een reverse-proxy en een containerized edgerouter Traefik nodig om de webinterface en API versleuteld op internet te krijgen. De TCP-poorten 80 en 443 op de Raspberry Pi mogen nog niet bezet zijn. Traefik haalt de benodigde TLS-certificaten zelf op en vernieuwt deze automatisch.
Voorbeeldbestanden; downloadlinks & naslag
Docker-compose bespaart je lange docker run-commando’s. De configuraties van de containers worden daarbij in een compose-bestand samengevoegd, dat door een .env-bestand met omgevingsvariabelen wordt aangevuld.
We stellen voorbeeldbestanden beschikbaar in een GitHub-repository.
|
Om ervoor te zorgen dat browsers en clients de Raspberry Pi kunnen aansturen, heb je een vaste hostnaam nodig die naar het WAN-IPv4-adres van de router verwijst. Daar kun je een DynDNS-service voor gebruiken. Die stuurt verzoeken die bij de geconfigureerde DynDNS-hostnaam aankomen door naar het betreffende WAN-IPv4-adres van de router. Het maakt verder niet uit welke DynDNS-service je gebruikt.
In deze tutorial dient het adres bitwarden.example.com als voorbeeld.
Blijf op de hoogte van de nieuwste informatie en tips! Schrijf je in voor de nieuwsbrief:
Fase 1: Raspberry Pi OS met Bitwarden voorbereiden
De eerste stap is om het systeem up-to-date te brengen en met een script de Docker-engine voor de container-runtime-omgeving te installeren. Als het een nieuw systeem is, herstart de Raspberry Pi dan na het toepassen van de updates alvorens Docker te installeren.
sudo apt upgrade
sudo reboot
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Als de Apache2-utilities en de versiebeheertool Git niet op je systeem staan, installeer die pakketten dan ook.
sudo apt install apache2-utils
sudo apt install git
Docker-compose kun je het beste installeren met de Python-pakketmanager ‘pip’.
sudo apt install python3-pip
sudo pip3 install docker-compose
Voor interactie met de Docker-daemon heb je wel systeembeheerdersrechten nodig. Als je daarbij Docker-commando’s wilt gebruiken zonder daar sudo voor te zetten, moet je gebruiker pi toevoegen aan de groep docker en opnieuw inloggen. Als dat nog niet gebeurd is, is het nu ook een mooi moment om het standaard wachtwoord van de gebruiker pi te veranderen.
sudo usermod -aG docker pi
passwd
De benodigde software is dan geïnstalleerd en Docker is klaar voor gebruik.
Alvorens de containers op te zetten, moet je er echter voor zorgen dat de Raspberry Pi – en dus de webinterface en API – bereikbaar zijn vanaf internet.
Netwerkverkeer dirigeren, vast IP adres
Om ervoor te zorgen dat de verzoeken betrouwbaar aankomen bij de Raspberry Pi en niet bij een ander netwerkapparaat, moet je een vast IP-adres toewijzen. Voer het IP-adres voor de actieve netwerkinterface in bij het bestand /etc/dhcpcd.conf met behulp van een teksteditor. Als de Pi via ethernet met het netwerk verbonden is, selecteer dan de interface eth0 (of wlan0 voor wifi).Pas de volgende vier regels in het bestand aan je lokale netwerk aan, bijvoorbeeld zo:
interface eth0
static ip_address=192.168.0.184/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
- Start het systeem opnieuw op met sudo reboot zodat de wijzigingen toegepast worden.
- Stel dan portforwarding in de webinterface van je router in.
- Verzoeken van buitenaf die binnenkomen op TCP-poort 80 en 443 moeten worden doorgestuurd naar de Raspberry Pi en eindigen bij de reverse-proxy Traefik.
- Selecteer TCP als protocol en voer poort 80 in.
- Je kunt de service een willekeurige naam geven. Die is vervolgens hetzelfde voor poort 443.
DynDNS-service koppelen aan huidige WAN-IPv4-adres van router
Om de DynDNS-service te laten verwijzen naar het huidige WAN-IPv4-adres van de router, heeft de router een bron nodig die hem de juiste informatie verschaft. De meeste moderne routers kunnen dit zelf doen.
Selecteer je provider in het bijbehorende menu en vul de gevraagde gegevens in, zoals de inloggegevens en een update-url. Als je provider niet in de lijst staat, kun je er zelf een instellen.
Fase 2: de containerarchitectuur
Na die voorbereidingen is het tijd voor de containerarchitectuur. Als opslaglocatie voor de containerconfiguraties en compose-bestanden op het Linux-bestandssysteem ligt de directory /srv voor de hand. Als je daar bestanden naartoe wilt schrijven, moet je werken met sudo of jezelf rootrechten toekennen. Kloon de GitHub-repository naar /srv en ga er dan in.
sudo git clone https://github.com/ndi-ct/raspi-pwm /srv/raspi-pwm
cd /srv/raspi-pwm
Als container-blueprint staat er in de gedownloade repository een YAML-bestand klaar. Dat specificeert welke containerimages uit de Docker Hub geladen moeten worden en worden geconfigureerd.
Omgevingsvariabelen worden opgeslagen in het bijbehorende .env-bestand, dat standaard niet wordt weergegeven. Zo nodig kun je daar met ls -a een overzicht van krijgen.
De reverse-proxy heeft daarnaast nog de bestanden traefik.toml en dynamic.yml nodig, waarin instructies staan voor het verkrijgen van certificaten en het regelen van het netwerkverkeer.
Open traefik.toml met je favoriete teksteditor en voer een geldig e-mailadres in op de regel mail = “[email protected]” (de aanhalingstekens moeten blijven staan). Let’s Encrypt stuurt waarschuwingen naar dat mailadres als er problemen zijn met het uitgegeven certificaat.
Traefik slaat de certificaten, die het automatisch ophaalt met het ACME-protocol, op in het bestand acme.json. Dat bestand mag alleen voor root leesbaar zijn. Maak een leeg bestand aan met de naam acme.json in de directory config-files en pas de rechten aan.
sudo touch acme.json
sudo chmod 600 acme.json
Maak vervolgens een virtueel netwerk voor de reverse-proxy aan.
sudo docker network create
traefik_reverse_proxy

Fase 3: beveiligingsinstellingen – kluis dichtmaken
Ga naar de directory /srv/raspi-pwm. Om een overzicht te krijgen van de containerstructuur, kun je de inhoud van het composebestand laten weergeven met het commando:
cat docker-compose.yaml
De images ‘bitwarden_rs/server’ en ‘traefik’ zijn gelabeld met versienummers om je voor onaangename verrassingen te behoeden. Zonder die tag zal Docker altijd de laatste image downloaden van Docker Hub. Dat kan ertoe leiden dat de container plotseling niet meer start omdat de nieuwe versie wijzigingen in de configuratiebestanden vereist.
Controleer regelmatig op updates voor images
Controleer regelmatig of er (beveiligings)updates zijn voor je images. Zo ja, vervang dan de oude image door een nieuwe.
De parameter restart: unless-stopped zorgt ervoor dat de containers ook na een reboot van de Raspberry Pi opnieuw starten – tenzij je een container voordien handmatig gestopt hebt.
Gegevens opslaan – locatie
De sectie volumes specificeert waar de Bitwarden-container persistente gegevens opslaat:
volumes:
– /var/docker/bitwarden:/data
De directory /data in het containerbestandssysteem komt overeen met /var/docker/bitwarden in het hostbestandssysteem. Daar bevindt zich ook het SQLite-databasebestand db.sqlite3.
Regelmatig back-up
Zorg dat je regelmatig een back-up maakt van de directory /var/docker/bitwarden.
In het composebestand staan de variabelen ${BITWARDEN_URL}, ${WEBSOCKET_ENABLED} en ${ADMIN_TOKEN}. Docker-compose haalt de waarden uit het .env-bestand. Open het bestand met een teksteditor.
BITWARDEN_URL=bitwarden.example.com
WEBSOCKET_ENABLED=true
ADMIN_TOKEN=
Zet je DynDNS-adres achter BITWARDEN_URL=. Het adres wordt als host aan Traefik doorgegeven. De regel WEBSOCKET_ENABLED=true zorgt ervoor dat de wachtwoorden en andere items in de kluis gesynchroniseerd worden telkens als ze gewijzigd worden – als de betreffende client dat ondersteunt (LiveSync).

Configureren via het admingedeelte
Het is raadzaam Bitwarden_RS te configureren via het admingedeelte van de webinterface. Om het adminpanel te activeren, voeg je een token toe achter ADMIN_TOKEN=. Daarvoor maak je op de commandline een lange string aan met het volgende commando:
openssl rand -base64 48 | tr -d /=
Je kunt de ingevoerde token gebruiken om jezelf later te authenticeren in het adminpanel van de webinterface. De instellingen die het adminpanel biedt kun je handmatig aanpassen door extra omgevingsvariabelen in te stellen in het .env-bestand en daar naar te verwijzen in het bestand docker-compose.yaml
De ontwikkelaars van Bitwarden_RS bieden een uitgebreid voorbeeldbestand op de GitHub-wiki van het project, die je via de link kunt vinden. Verwijder in dit geval de regel ADMIN_TOKEN= uit het .env-bestand en de betreffende referentie uit het composebestand.
Extra beveiligd met een basisauthenticatie
In dit voorbeeld hebben we het adminpanel extra beveiligd met een basisauthenticatie, bestaande uit een gebruikersnaam met een wachtwoord. Daarvoor dient een middleware van de reverse-proxyTraefik, die al in het composebestand aangemaakt is. Als je in je browser naar bitwarden.example.com/admin gaat, moet je eerst de inloggegevens invoeren om de pagina te zien en kun je je pas bij de tweede stap met de token als admin authenticeren. Je kunt de benodigde inloggegevens genereren met het volgende commando:
htpasswd -nb user password | sed -e s/$/$/g
Dat commando genereert het inlogdatapaar ‘user:password’, waarbij ‘password’ wordt uitgevoerd als een hash. Vervang user en password door veilige inloggegevens. Open daarna het bestand docker-compose.yaml met een teksteditor en vervang ‘user:password’ in de onderstaande regel door de uitvoer van het commando.
– “traefik.http.middlewares.admin-auth.basicauth.users=user:password”
Sla tot slot het bestand docker-compose.yaml op en start de beide containers:
sudo docker-compose up -d
Docker laadt dan eerst de images uit de container-registry. De reverse-proxy zorgt voor het certificaat van Let’s Encrypt en levert de webvault en het adminpanel van Bitwarden via het geconfigureerde DynDNS-adres. Geef de containers wat tijd om op te starten. Op een RaspberryPi 4 met 4 GB geheugen neemt de eerste keer opstarten een paar minuten om beslag. Je kunt de status van de containers controleren met het commando docker ps. Zodra de Bitwarden-container de status ‘up x minutes (healthy)’ toont, kun je de webvault oproepen in een browser op bitwarden.example.com. Voor het adminpanel voeg je /admin toe aan de url. Als je ergens een fout hebt gemaakt, zal het commando docker logs gevolgd door de naam van de container helpen bij de diagnose.
Fase 4: vergrendelen – masterwachtwoord maken
Registreer een nieuwe gebruiker en maak een veilig masterwachtwoord aan. Log vervolgens in op de webvault en stel je gebruikersaccount in. Als je al eerder een andere wachtwoordmanager hebt gebruikt, vind je snel je weg.
Mijn kluis
De categorie ‘Mijn kluis’ bevat items zoals opgeslagen inloggegevens en beveiligde notities. Je kunt ze markeren als favorieten of sorteren in mappen.
Hulpmiddelen
Onder Hulpmiddelen vind je een wachtwoordgenerator, rapportages over zwakke of gelekte wachtwoorden en de functies om wachtwoordverzamelingen te importeren en exporteren. Bitwarden ondersteunt de meest voorkomende formaten (.csv, .json, .xml, .txt).
Tweefactorauthenticatie instellen
Stel absoluut tweefactorauthenticatie in om te voorkomen dat aanvallers toegang krijgen tot je wachtwoorddatabase. Wijzig de instellingen in het submenu Tweestapsaanmelding.
Bitwarden_RS biedt tweefactorauthenticatie via 2FA-apps zoals Authy, Duo en Microsoft Authenticator, via e-mail en met FIDO-compatibele hardwarematige beveiligingssleutels.
Menu Tweestapsaanmelding – een herstelcode
Zodra tweefactorauthenticatie is ingesteld, kun je in het menu Tweestapsaanmelding een herstelcode laten weergeven. Noteer deze code en bewaar hem op een veilige plaats. Dit is de laatste mogelijkheid om nog toegang te krijgen tot je kluis als je je mobiele telefoon verliest en geen toegang meer hebt tot de tweede factor.
Verschillende methoden instellen
Als je meteen verschillende methoden voor tweefactorauthenticatie instelt, zul je nooit in de situatie terechtkomen dat je de herstelcode nodig hebt.
URL staat nog open – nieuwe registraties deactiveren
Om te voorkomen dat anderen toegang krijgen tot je Bitwarden-account, moet je ongewenste gebruikersregistraties beperken. Ga naar het adminpanel op bitwarden.example.com/admin om enkele instellingen te wijzigen en aanvalsmogelijkheden op je wachtwoordserver te verkleinen.
Wijzig instellingen in het adminpanel
Onder de sectie General moet je de juiste waarde invoeren in het veld ‘Domain URL’, zodat automatisch verzonden e-mails de juiste links bevatten. Verwijder bij ‘Allow new signups’ het vinkje om inschrijvingen op de hoofdpagina te voorkomen.
Verhinder dat anderen gebruikers uitnodigen
Je kunt andere gebruikers nog steeds via e-mail uitnodigen, ook als het registreren op de hoofdpagina is uitgeschakeld. Als je de wachtwoordserver met vrienden deelt, kun je het beste verhinderen dat zij nog meer gebruikers uitnodigen. Ga naar de sectie General en verwijder het vinkje bij ‘Allow Invitations’.
Extra beveiligingsopties
Als dat niet genoeg is, kun je de webvault deactiveren met de omgevingsvariabele WEB_VAULT_ENABLED=false of Bitwarden_RS uitsluitend in het lokale netwerk gebruiken met zelf gegenereerde certificaten. Om van buitenaf toegang te krijgen tot de wachtwoordserver, zou je een VPN-oplossing moeten gebruiken.
Beveiliging via reverse-proxy Caddy en Let's Encrypt
De ontwikkelaars raden het gebruik van de geïntegreerde ROCKET_TLS-methode voor HTTPS af. In plaats daarvan raden zij aan om privé-instanties te beveiligen met de reverse-proxy Caddy en Let’s Encrypt-certificaten. Je kunt een handleiding voor deze procedure vinden op GitHub in de wiki van het project.
Raspberry Pi als Password Manager met Bitwarden is gereed
De Raspberry Pi als Password Manager met Bitwarden is gereed. Bitwarden_RS biedt veel functies waarvoor je normaal gesproken een Premium-account van Bitwarden nodig hebt. Sommige functies ontbreken echter, zoals LiveSync en pushnotificaties voor iOS en Android, Single-Sign-On en Emergency Access. De ontwikkelaars hebben een lijst van de verschillen met de officiële Bitwarden-server in de wiki van het project gezet.

Naast de webvault kun je ook gebruik maken van de Bitwarden-browserextensies en de apps voor Android en iOS om wachtwoorden op te slaan, beheren en synchroniseren. Er zijn desktopclients voor Windows, Linux, macOS, en zelfs tools voor de commandline. Een lijst van alle clients staat op de Bitwarden-website.
Verborgen optie
Om de applicaties te laten communiceren met de server-API op de Raspberry Pi, moet je de url van je Bitwarden-instantie invoeren. De optie daarvoor zit verborgen achter het tandwiel in de linker bovenhoek van het inlogvenster.
Voorzichtig! Uitlogknop is uitloggen van de server
Wees voorzichtig bij het uitloggen uit Bitwarden: de knop ‘uitloggen’ in de clients is misleidend. Het betekent ‘uitloggen van de server’. Als je je volledig uitlogt en de server-API niet toegankelijk is, zal Bitwarden een nieuwe aanmelding weigeren.
Vergrendel je gebruikersaccount
Om opnieuw in te loggen, moet je verbonden zijn met de server. Kies daarom altijd de optie ‘Nu vergrendelen’ om je gebruikersaccount te vergrendelen. Tenzij je van plan bent om van gebruikersaccount te wisselen of de client op een andere server aan te melden.
Gebruik de browserextensie om de wachtwoordkluis te vullen
Dan kun je aan de slag met Bitwarden en de wachtwoordkluis vullen. Wanneer je in de toekomst bijvoorbeeld een inlogpagina op een website bezoekt en inloggegevens invoert, biedt de browserextensie aan de inloggegevens in de kluis op te slaan.
Maak gebruik van de wachtwoordgenerator
Voor nieuwe aanmeldingen kan de geïntegreerde wachtwoordgenerator willekeurige, veilige wachtwoorden aanmaken. Als de inloggegevens al zijn opgeslagen in je kluis, kan Bitwarden automatisch inlogformulieren invullen. Je kunt het auto-fill-gedrag aan je wensen voor verschillende websites aanpassen.
Synchroniseer automatisch opgeslagen wachtwoorden
Opgeslagen wachtwoorden worden voortaan automatisch gesynchroniseerd.
Conclusie Raspberry Pi als Password Manager met Bitwarden
Bitwarden_RS maakt het mogelijk om je Raspberry Pi als Password Manager te gebruiken met cloudfunctionaliteit. Hou er wel rekening mee dat als je gebruikmaakt van Bitwarden_RS, het belangrijk is om regelmatig back-ups te maken en de containerimages te controleren op beveiligingsupdates. Al met al kan Bitwarden_RS een betaalde password manager vervangen en is ideaal voor gebruik in kleine teams of met vrienden en familie.
Deze informatie is afkomstig uit een artikel in c’t magazine, dat is geschreven door Niklas Dierking en Noud van Kruysbergen.
- Ontdek hoe je veilig blijft zonder nieuwe pc te kopen.
- Big Tech onder de loep
- Alles over Wi-Fi 8
Tip!
Ben je opzoek naar nieuwe hardware, software of accessoires?
Je vindt het in onze computerwinkel!
Meer over
- De beloftes van wachtwoordmanagers
- Raspberry Pi als password manager met open-source wachtwoordmanager Bitwarden
- Bitwarden_RS: afgeslankte versie van de officiële server
- Minimale vereisten: Raspberry Pi 3 en commandline toegang
- Configuratie via Vault en admin-panel
- Advies van Bitwarden: Docker-container
- Ingrediënten: Reverse-proxy en containerized edgerouter Traefik
- Voorbeeldbestanden; downloadlinks & naslag
- Fase 1: Raspberry Pi OS met Bitwarden voorbereiden
- Netwerkverkeer dirigeren, vast IP adres
- DynDNS-service koppelen aan huidige WAN-IPv4-adres van router
- Fase 2: de containerarchitectuur
- Fase 3: beveiligingsinstellingen - kluis dichtmaken
- Controleer regelmatig op updates voor images
- Gegevens opslaan - locatie
- Regelmatig back-up
- Configureren via het admingedeelte
- Extra beveiligd met een basisauthenticatie
- Fase 4: vergrendelen - masterwachtwoord maken
- Mijn kluis
- Hulpmiddelen
- Tweefactorauthenticatie instellen
- Menu Tweestapsaanmelding - een herstelcode
- Verschillende methoden instellen
- URL staat nog open - nieuwe registraties deactiveren
- Wijzig instellingen in het adminpanel
- Verhinder dat anderen gebruikers uitnodigen
- Extra beveiligingsopties
- Beveiliging via reverse-proxy Caddy en Let's Encrypt
- Raspberry Pi als Password Manager met Bitwarden is gereed
- Verborgen optie
- Voorzichtig! Uitlogknop is uitloggen van de server
- Vergrendel je gebruikersaccount
- Gebruik de browserextensie om de wachtwoordkluis te vullen
- Maak gebruik van de wachtwoordgenerator
- Synchroniseer automatisch opgeslagen wachtwoorden
- Conclusie Raspberry Pi als Password Manager met Bitwarden


Praat mee