Inloggen
Inloggen

Bitwarden installeren in Docker

Bitwarden installeren in Docker
Hostman Team
Technical writer
Docker-platform
07.11.2025
Reading time: 5 min

Bitwarden is een gratis en open-source wachtwoordmanager die gevoelige informatie opslaat in een versleutelde kluis.

Het is geschreven in C# en maakt gebruik van .NET Core en ASP.NET Core. De database is gebaseerd op T-SQL/SQL Server.

Bitwarden is een clouddienst die toegankelijk is via verschillende client-applicaties en daardoor cross-platform is: via het web, desktop-apps (Windows, macOS, Linux), mobiele apps, browserextensies (Chrome, Firefox, Safari, Edge, Opera, Vivaldi, Brave, Tor) of via de opdrachtregelinterface (CLI).

Een van de belangrijkste redenen om Bitwarden te gebruiken, is om te voorkomen dat wachtwoorden op externe servers van derden worden opgeslagen. In plaats daarvan kun je Bitwarden op je eigen beveiligde server hosten.

Bitwarden bestaat uit een groep containers, waarbij elke container een afzonderlijke functionele component bevat — zoals de database of de webserver.

Voor de installatie en werking van Bitwarden is een containeromgeving nodig, namelijk Docker.

Belangrijkste functies van Bitwarden

  • Open-source

  • Bescherming van gebruikersgegevens met 256-bit AES-versleuteling

  • Ondersteuning voor twee-stapsverificatie (2FA)

  • Wachtwoord-auditing en -controle

  • Ondersteuning voor biometrische authenticatie

  • Mogelijkheid om de server lokaal te hosten

  • Cross-platform-clients op alle grote platforms

Vereisten

Deze handleiding gebruikt commando’s voor UNIX-achtige besturingssystemen, met name Debian/Ubuntu, die vaak worden gebruikt voor het hosten van servers.

Voordat je Bitwarden installeert en configureert, zorg ervoor dat alle noodzakelijke systeem-pakketten zijn bijgewerkt:

sudo apt update

sudo apt upgrade

Als je server nieuw is, installeer dan enkele basis-hulpprogramma’s:

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Controleer vervolgens of Docker en Docker Compose zijn geïnstalleerd om de Bitwarden-containers te beheren.

Stap 1: Docker en componenten installeren

Voeg eerst de Docker GPG-sleutel toe, die wordt gebruikt om pakketten te ondertekenen:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Voeg daarna de Docker-repository toe om de nieuwste versie te downloaden:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Werk het systeem opnieuw bij:

sudo apt update

Installeer daarna Docker en Docker Compose:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose

Stap 2: Bitwarden-installatie beveiligen

Om de veiligheid te verbeteren, maak je een aparte gebruiker aan met beperkte rechten.

Maak een map voor Bitwarden aan:

sudo mkdir /opt/bitwarden

Maak de gebruiker aan:

sudo adduser bitwarden

Ken het eigendom van de map toe aan de Bitwarden-gebruiker:

sudo chmod -R 700 /opt/bitwarden

sudo chown -R bitwarden:bitwarden /opt/bitwarden

Sta toe dat de Bitwarden-gebruiker Docker-commando’s uitvoert:

sudo usermod -aG docker bitwarden

Schakel vervolgens over naar de Bitwarden-gebruiker:

su bitwarden

cd /opt/bitwarden

Stap 3: Bitwarden in Docker installeren en starten

Zelfs als je weinig ervaring hebt met Docker, heeft het Bitwarden-team een installatiescript ontwikkeld dat het proces automatiseert.

Download het script en maak het uitvoerbaar:

curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod 700 bitwarden.sh

Start het script:

./bitwarden.sh install

Het script vraagt om configuratie-informatie zoals:

  • Domeinnaam voor Bitwarden

  • Naam van de database

  • Of Let’s Encrypt moet worden gebruikt voor een gratis SSL-certificaat

Je hebt ook een installatie-ID en een sleutel nodig, die je kunt genereren op de officiële Bitwarden-website.

Stap 4: SMTP-mailserver configureren

Het instellen van een SMTP-server is optioneel maar wordt aanbevolen voor beheerderstoegang en meldingen.

Bewerk het bestand ./bwdata/env/global.override.env en voeg de SMTP-instellingen toe, bijvoorbeeld:

globalSettings__mail__smtp__host=smtp.gmail.com

globalSettings__mail__smtp__port=587

globalSettings__mail__smtp__ssl=true

globalSettings__mail__smtp__username=your_email@gmail.com

globalSettings__mail__smtp__password=your_password

adminSettings__admins=your_email@gmail.com

Als je ervaring hebt met Docker, kun je overwegen een eigen mailserver te gebruiken, zoals docker-mailserver, die goed werkt met Bitwarden.

In een eenvoudiger scenario kun je ook een publieke mailserver gebruiken, bijvoorbeeld Gmail:

globalSettings__mail__replyToEmail=your_email@gmail.com

globalSettings__mail__smtp__host=smtp.gmail.com

globalSettings__mail__smtp__username=your_email

globalSettings__mail__smtp__password=your_password

globalSettings__mail__smtp__ssl=true

globalSettings__mail__smtp__port=587

globalSettings__mail__smtp__useDefaultCredentials=false

globalSettings__disableUserRegistration=true

Na het instellen worden Bitwarden-meldingen verzonden via Gmail. Zorg ervoor dat in je Gmail-account de optie toegang voor minder veilige apps is ingeschakeld, anders blokkeert Google de verbinding.

Gebruik je een andere mailprovider, dan kun je de SMTP-instellingen van die dienst opzoeken en op dezelfde manier toevoegen. Als e-mails niet worden afgeleverd, kun je een online SMTP-tester gebruiken om de configuratie te controleren.

Stap 5: Server starten en werking controleren

Start de server met hetzelfde script:

./bitwarden.sh start

Open vervolgens in je browser het IP-adres of het domein van de server.

Voor toegang tot het beheerderspaneel voeg je /admin toe aan het adres.

Voer het e-mailadres in dat je eerder hebt ingesteld in het global.override.env-bestand.

De mailserver stuurt een inloglink zonder wachtwoord.

Vanaf dit moment kun je de Bitwarden-desktop- of mobiele clients gebruiken om je server te verbinden en je wachtwoorden veilig te beheren.

Server stoppen en verwijderen

Als er problemen optreden of je een herinstallatie wilt uitvoeren, stop Bitwarden volledig:

./bitwarden.sh stop

Verwijder daarna het gegevensdirectory:

rm -r ~/bwdata

Installeer vervolgens Bitwarden opnieuw indien nodig:

./bitwarden.sh install

Conclusie

De installatie van Bitwarden is eenvoudig dankzij het geautomatiseerde installatiescript van de ontwikkelaars. Na de installatie kun je je gevoelige gegevens veilig beheren met deze krachtige wachtwoordmanager, inclusief ondersteuning voor DNS, SSL en SMTP. Meer praktische tips vind je in de officiële Bitwarden-documentatie.

Docker-platform
07.11.2025
Reading time: 5 min

Vergelijkbaar

Docker-platform

Externe Docker-registers configureren

Externe Docker-registers configureren Bij het werken met Docker gebruik je images — uitvoerbare bestanden die alles bevatten wat nodig is om een toepassing te draaien, inclusief de broncode, bibliotheken en afhankelijkheden. Deze images worden opgeslagen in speciale opslagplaatsen die registers worden genoemd. Ze kunnen privé of publiek zijn. Het bekendste openbare register is Docker Hub, waar je veel officiële images kunt vinden zoals Nginx, PostgreSQL, Alpine, Ubuntu, Node en MongoDB. Gebruikers kunnen zich registreren op Docker Hub en hun eigen images opslaan — standaard met één openbaar en drie privéregisters.Docker Hub is het standaardregister dat Docker gebruikt om images op te halen (pull). Deze handleiding legt uit hoe je het standaardregister van Docker kunt wijzigen naar een ander register. Externe Docker-registers gebruiken Een eenvoudige manier om externe registers te gebruiken is door derde-partijregisters van bedrijven zoals Google en Amazon te benutten.  Hieronder vind je een lijst met openbare registers die je kunt gebruiken: Register-URL Eigenaar https://mirror.gcr.io Google https://public.ecr.aws Amazon https://quay.io Red Hat https://registry.access.redhat.com Red Hat https://registry.redhat.io Red Hat ⚠️ Let op: het gebruik van externe registers kan veiligheidsrisico’s met zich meebrengen. Wees dus voorzichtig. Volg de onderstaande stappen om het standaardregister (Docker Hub) te vervangen door een ander register. Linux-configuratie Open het bestand daemon.json met een teksteditor.  Als Docker niet in rootless-modus is geïnstalleerd, bevindt dit bestand zich hier: /etc/docker/daemon.json Als het bestand niet bestaat, maak je het aan met: nano /etc/docker/daemon.json Voor rootless Docker bevindt het bestand zich in de thuismap van de gebruiker: ~/.config/docker/daemon.json Maak het bestand aan indien nodig met: nano ~/.config/docker/daemon.json Voeg de volgende parameter toe om een nieuw standaardregister in te stellen (in dit voorbeeld het Google-mirrorregister): {   "registry-mirrors": ["https://mirror.gcr.io"] } Sla het bestand op en sluit het. Herstart vervolgens de Docker-dienst om de wijziging toe te passen: systemctl reload docker Vanaf nu zal Docker het nieuwe register gebruiken wanneer je een image ophaalt. Voorbeeld: haal het Alpine-image op uit het Google-register: docker pull mirror.gcr.io/alpine Je kunt ook een specifieke versie opgeven, bijvoorbeeld: docker pull mirror.gcr.io/nginx:1.25.2 Windows-configuratie (Docker Desktop) Open het bestand daemon.json, dat zich hier bevindt: C:\Users\<jouw_gebruikersnaam>\.docker\daemon.json Voeg de parameter toe: {   "registry-mirrors": ["https://mirror.gcr.io"] } Sla het bestand op en start Docker opnieuw. Klik met de rechtermuisknop op het Docker-pictogram in het systeemvak en kies Restart. Je kunt dit ook instellen via de Docker Desktop-interface:Ga naar Settings → Docker Engine en voeg dit toe: {   "registry-mirrors": ["https://mirror.gcr.io"] } Klik daarna op Apply & Restart om de wijziging toe te passen. Na de herstart gebruikt Docker het nieuwe register om images op te halen. Voorbeeld: download een curl-image: docker pull mirror.gcr.io/curlimages/curl Of een specifieke versie: docker pull mirror.gcr.io/node:21-alpine Nexus gebruiken als Docker-register Je kunt ook Nexus gebruiken om Docker-images te beheren. Nexus ondersteunt proxy-repositories, die images cachen die zijn opgehaald uit externe registers zoals Docker Hub. Zo kan Nexus fungeren als caching-proxyregister voor Docker-images — handig als externe registers tijdelijk niet beschikbaar zijn. Een proxy-repository instellen in Nexus Log in op Nexus als beheerder of een gebruiker met rechten om repositories aan te maken. Ga naar Server Administration and Configuration → Repositories. Klik op Create repository en kies het type docker (proxy). Vul de vereiste velden in: Name: geef het repository een unieke naam. Online: vink dit aan om het repository actief te maken. Proxyserver: als Nexus achter een proxy (zoals Nginx) draait, hoef je geen poort voor authenticatie te gebruiken.Zonder proxy wijs je een unieke poort toe voor HTTP of HTTPS. Allow anonymous docker pull: vink dit aan om images zonder login te kunnen downloaden.Als het uitstaat, moet je eerst inloggen. Remote storage: geef de URL van het externe register op, bijvoorbeeld https://registry-1.docker.io voor Docker Hub. Nadat het repository is aangemaakt, log je in (indien vereist) met: docker login <nexus_registry_adres> Om een image op te halen: docker pull <nexus_registry_adres>/image_naam:tag Voorbeeld: om een Python-image te downloaden met tag 3.8.19-alpine: docker pull nexus-repo.com/python:3.8.19-alpine ⚠️ Veiligheidstip: gebruik niet de tag latest, omdat deze mogelijk bugs of kwetsbaarheden bevat. Conclusie In dit artikel hebben we verschillende manieren besproken om Docker-images op te halen en op te slaan. Het gebruik van externe registers kan nuttig zijn als Docker Hub niet beschikbaar is. Vertrouw je externe registers niet volledig? Dan kun je altijd een eigen privé- of openbaar Docker-register opzetten, bijvoorbeeld met Nexus of Harbor.
05 November 2025 · 5 min to read
Docker-platform

Selenium met Chrome uitvoeren in Docker

Soms is het handig om Selenium in Python binnen een Docker-container te gebruiken. Dit roept vragen op over de voordelen van deze aanpak, de versiecompatibiliteit tussen ChromeDriver en Chromium, en de details van de implementatie. In dit artikel bespreken we de belangrijkste overwegingen en bieden we oplossingen voor veelvoorkomende problemen. Waarom Selenium in Docker draaien? Het uitvoeren van Selenium in een container biedt meerdere voordelen: 🧩 Draagbaarheid – Het test- of ontwikkelomgeving kan eenvoudig tussen machines worden verplaatst, zonder versieconflicten of OS-specifieke afhankelijkheden. 🧱 Isolatie – De Selenium-container kan snel worden vervangen of bijgewerkt zonder andere serveronderdelen te beïnvloeden. ⚙️ CI/CD-compatibiliteit – Dockerized Selenium integreert uitstekend met CI/CD-pipelines: je kunt voor elke test een schone omgeving opbouwen en weer afbreken. Ubuntu-server voorbereiden voor Selenium met Docker Controleer eerst of Docker en Docker Compose zijn geïnstalleerd: docker --version && docker compose version 💡 In sommige versies heet het commando docker-compose in plaats van docker compose. Als de tools aanwezig zijn, verschijnt hun versienummer. Zo niet, installeer ze dan voordat je verder gaat. Voorbeeld: Selenium uitvoeren in Docker Bij het inzetten van Selenium in Docker-containers moet je letten op: de host-architectuur, de functionele vereisten, en de prestaties. De officiële selenium/standalone-*-afbeeldingen zijn bedoeld voor AMD64 (x86_64)-CPU’s, terwijl seleniarm/standalone-* geoptimaliseerd is voor ARM-architecturen (zoals Apple Silicon of ARM64-servers). Maak in de hoofdmap van je project een bestand docker-compose.yml aan: version: "3" services: app: build: . restart: always volumes: - .:/app depends_on: - selenium platform: linux/amd64 selenium: image: selenium/standalone-chromium:latest # For AMD64 # image: seleniarm/standalone-chromium:latest # For ARM64 container_name: selenium-container restart: unless-stopped shm_size: 2g ports: - "4444:4444" # Selenium WebDriver API - "7900:7900" # VNC Viewer environment: - SE_NODE_MAX_SESSIONS=1 - SE_NODE_OVERRIDE_MAX_SESSIONS=true - SE_NODE_SESSION_TIMEOUT=300 - SE_NODE_GRID_URL=http://localhost:4444 - SE_NODE_DETECT_DRIVERS=false Kies het juiste image voor jouw systeemarchitectuur door de juiste regel te activeren. De service app bevat je Python-code. Gebruik hiervoor een standaard Dockerfile: # Use a minimal Python image FROM python:3.11-slim # Set working directory WORKDIR /app # Install Python dependencies COPY requirements.txt /app/ RUN pip install --no-cache-dir -r requirements.txt # Copy project files COPY . /app/ # Set environment variables (Chromium is in a separate container) ENV SELENIUM_REMOTE_URL="http://selenium:4444/wd/hub" # Run Python script CMD ["python", "main.py"] Deze configuratie gebruikt een lichte Python-basisimage en installeert automatisch alle vereiste pakketten. Hoofdscript (main.py) import time # Used to create a delay for checking browser functionality import os from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # WebDriver settings chrome_options = Options() chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--disable-webrtc") chrome_options.add_argument("--hide-scrollbars") chrome_options.add_argument("--disable-notifications") chrome_options.add_argument("--start-maximized") SELENIUM_REMOTE_URL = os.getenv("SELENIUM_REMOTE_URL", "http://selenium:4444/wd/hub") driver = webdriver.Remote( command_executor=SELENIUM_REMOTE_URL, options=chrome_options ) # Open a test page driver.get("https://www.hostman.com") time.sleep(9999) # Shut down WebDriver driver.quit() requirements.txt attrs==25.1.0 certifi==2025.1.31 h11==0.14.0 idna==3.10 outcome==1.3.0.post0 PySocks==1.7.1 selenium==4.28.1 sniffio==1.3.1 sortedcontainers==2.4.0 trio==0.28.0 trio-websocket==0.11.1 typing_extensions==4.12.2 urllib3==2.3.0 websocket-client==1.8.0 wsproto==1.2.0 Containers starten Start de containers met: docker compose up -d Docker bouwt de images en start ze op de achtergrond. Controleer of alles werkt: docker compose ps Als beide containers actief zijn, is de installatie geslaagd en kun je Selenium gebruiken om websites te automatiseren. Selenium debuggen in Docker met VNC In de officiële Selenium-afbeeldingen (zoals selenium/standalone-chrome of seleniarm/standalone-chromium) wordt de directe toegang tot het Chrome DevTools Protocol (CDP) beheerd door Selenium Grid. Elke sessie krijgt een eigen WebSocket-poort, waardoor externe toegang niet mogelijk is. De vlag --remote-debugging-port=9229 wordt genegeerd of overschreven. Daarom wordt gebruikgemaakt van een ingebouwde VNC-server (Virtual Network Computing), vergelijkbaar met TeamViewer of AnyDesk. ⚠️ De headless-modus moet worden uitgeschakeld, anders is er geen zichtbaar scherm om te streamen. Open de VNC-webinterface op: http://<server_ip>:7900 Bij de eerste verbinding wordt om een wachtwoord gevraagd. Maak dit wachtwoord in de container aan: docker exec -it selenium-container bash Then enter: x11vnc -storepasswd Voer het wachtwoord in, bevestig het, en gebruik het vervolgens in de VNC-interface. Je krijgt nu toegang tot de browser die binnen Docker door Selenium wordt bestuurd. Hier kun je de DevTools openen, DOM-elementen inspecteren of netwerkverzoeken analyseren. Conclusie Het uitvoeren van Selenium in Docker-containers maakt je omgeving draagbaar, vermindert versieconflicten en integreert naadloos met CI/CD-workflows. Bovendien kun je via VNC visueel debuggen wanneer dat nodig is. Let er bij het gebruik op om: de juiste image voor je systeem (AMD64 of ARM64) te kiezen, en de headless-modus uit te schakelen als je een grafische interface wilt gebruiken. Deze aanpak biedt een flexibele, betrouwbare en reproduceerbare testinfrastructuur voor geautomatiseerde browser-tests met Selenium en Docker.
30 October 2025 · 5 min to read

Heb je vragen,
opmerkingen of zorgen?

Onze professionals staan altijd klaar om je te helpen,
of je nu hulp nodig hebt of gewoon niet weet waar te beginnen
E-mail ons
Hostman's Support