Si të instaloni Vaultwarden me Docker në Ubuntu 22.04
Vaultwarden është një port jozyrtar i serverit Bitwarden i shkruar në gjuhën Rust. Është në përputhje me klientët zyrtarë të Bitwarden dhe është më pak i ngarkuar me burime sesa Bitwarden. Ai zbaton pothuajse të gjitha tiparet e Bitwarden duke përjashtuar disa. Ai përdor API-në Bitwarden për të ofruar veçori të tilla si mbështetja e organizatës, bashkëngjitjet, vërtetuesi, U2F, Yubikey, mbështetje Duo dhe mbështetje për shërbimet e pseudonimeve të postës elektronike.
Në këtë tutorial, do të mësoni se si të konfiguroni kopjen tuaj të Vaultwarden në një server Ubuntu 22.04.
Parakushtet
-
A server running Ubuntu 22.04.
-
A non-root user with sudo privileges.
-
The uncomplicated Firewall(UFW) is enabled and running.
-
A Fully Qualified domain name (FQDN) pointing to the server like,
vaultwarden.example.com
. -
Everything is updated.
$ sudo apt update && sudo apt upgrade
Hapi 1 - Konfiguro Firewall
Para se të instaloni ndonjë paketë, hapi i parë është konfigurimi i murit të zjarrit për të lejuar lidhjet HTTP dhe HTTPS.
Kontrolloni statusin e murit të zjarrit.
$ sudo ufw status
Ju duhet të shihni diçka si më poshtë.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Lejo portet HTTP dhe HTTP.
$ sudo ufw allow http
$ sudo ufw allow https
Kontrolloni përsëri statusin për të konfirmuar.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Hapi 2 - Instaloni Docker dhe Docker Compose
Shto çelësin zyrtar GPG të Dockers.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
Drejtoni komandën e mëposhtme për të shtuar depon e Docker.
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Përditësoni sistemin për të përfshirë depon e Dockers.
$ sudo apt update
Instaloni Docker.
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Ky tutorial do të përdorë shtojcën Docker Compose v2 në vend të binarit të vjetër të vjetër. Prandaj, komanda për ekzekutimin e saj ka ndryshuar nga docker-compose
në docker compose
dhe kjo pasqyrohet këtu.
Docker funksionon me privilegje të ngritura, kështu që do t'ju duhet të përdorni shpesh sudo
për të ekzekutuar komanda. Opsioni më i mirë është të shtoni llogarinë tuaj të përdoruesit Linux në grupin e përdoruesve docker
.
$ sudo usermod -aG docker ${USER}
Variabli $ {USER}
merr llogarinë e sistemit të regjistruar aktualisht. Nëse nuk jeni identifikuar me përdoruesin të cilit dëshironi t'i jepni privilegje, zëvendësoni $ {USER}
me emrin e përdoruesit.
Për të aplikuar për anëtarësimin e ri në grup, dilni nga serveri dhe futuni përsëri ose përdorni komandën e mëposhtme. Do t'ju kërkohet fjalëkalimi i përdoruesit.
$ su - ${USER}
Hapi 3 - Krijoni Docker Compose File për Vaultwarden
Krijo një direktori të re për Vaultwarden.
$ mkdir vaultwarden
Kaloni në drejtori.
$ cd vaultwarden
Krijoni skedarin e kompozimit të Docker dhe hapeni për redaktim.
$ nano docker-compose.yml
Vendos kodin e mëposhtëm në të. Zëvendësoni variablat DOMAIN dhe EMAIL me vlerat e duhura.
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
WEBSOCKET_ENABLED: "true" # Enable WebSocket notifications.
DOMAIN: "https://vaultwarden.example.com"
SMTP_HOST: "<smtp.domain.tld>"
SMTP_FROM: "<>"
SMTP_PORT: "587"
SMTP_SECURITY: "starttls"
SMTP_USERNAME: "<username>"
SMTP_PASSWORD: "<password>"
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: caddy
restart: always
ports:
- 80:80 # Needed for the ACME HTTP-01 challenge.
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-config:/config
- ./caddy-data:/data
environment:
DOMAIN: "https://vaultwarden.example.com" # Your domain.
EMAIL: "" # The email address to use for ACME registration.
LOG_FILE: "/data/access.log"
Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.
Ne po konfigurojmë Vaultwarden dhe serverin e uebit Caddy në një skedar të vetëm kompozimi Docker. Le të hedhim një vështrim në të gjitha opsionet e përcaktuara në skedar.
- imazhi i referohet vendndodhjes së imazheve të Docker të Vaultwarden dhe Caddy në Dockerhub.
- container_name ju lejon të aplikoni një etiketë në kontejnerin tuaj docker, për t'u përdorur kur i referoheni kontejnerit brenda një rrjeti Docker.
- rifillimi specifikon një politikë rinisjeje për kontejnerin. Vendosja e tij në gjithmonë do të thotë që një kontenier nëse del, do të riniset automatikisht. Seksioni
- mjedis vendos variablat e kërkuara nga Vaultwarden dhe Caddy. Nëse porta SMTP e shërbimit tuaj është 587, vendosni vlerën e ndryshores
SMTP_SECURITY
nëstartls
dhe nëse porta SMTP e shërbimit tuaj është 465, vendos vlerën e ndryshoresSMTP_SECURITY
nëforce_tls
. Variabla e domenit është e nevojshme që verifikimi i emailit të funksionojë. Ne kemi aktivizuar prizat në ueb që njoftimet të funksionojnë. - volumi përcakton drejtoritë e pranishme në server për të ruajtur të dhëna të qëndrueshme. Drejtoria
/vw-data
në server është hartuar në drejtorinë/data
në kontejnerin që ruan të gjitha të dhënat që kërkon Vaultwarden. Në të njëjtën mënyrë, vendndodhja e skedarit Caddy, konfigurimi i Caddy dhe të dhënat e caddys janë hartuar në drejtoritë përkatëse në kontejner. Docker do të krijojë automatikisht drejtoritë përkatëse në serverin e konfiguruar nën seksionin Volume. - portet i tregojnë kontejnerit që të publikojë portet ose një sërë portesh te hosti.
Hapi 4 - Konfigurimi shtesë i Vaultwarden
Çaktivizimi i regjistrimit
Nëse nuk dëshironi që instalimi juaj i Vaultwarden të jetë i hapur për regjistrimet e përdoruesve, mund ta çaktivizoni atë duke shtuar variablin e mëposhtëm nën seksionin mjedisi
të skedarit të kompozimit të Docker.
environment:
WEBSOCKET_ENABLED: "true" # Enable WebSocket notifications.
SIGNUPS_ALLOWED: "false"
....
Çaktivizo ftesat
Edhe pas çaktivizimit të regjistrimeve të përdoruesve, një përdorues ekzistues që është pjesë e një organizate mund të ftojë akoma përdorues të rinj. Për ta ndaluar atë, përdorni variablin e mëposhtëm.
INVITATIONS_ALLOWED: "false"
Çaktivizo këshillat e fjalëkalimit
Vaultwarden dërgon sugjerime për fjalëkalimin përmes emailit dhe gjithashtu i tregon ato në faqen e këshillimit të fjalëkalimit. Për të çaktivizuar veçorinë, vendosni vlerën e ndryshores SHOW_PASSWORD_HINT
.
SHOW_PASSWORD_HINT: "false"
Çaktivizimi i panelit të administratorit
Vaultwarden pret skedarë statikë për ndërfaqen e saj në internet. Ju mund ta çaktivizoni këtë duke vendosur variablin e mëposhtëm në false.
WEB_VAULT_ENABLED: "false"
Ju mund të anashkaloni skedarët Vault duke ofruar skedarët tuaj statikë për të pritur duke përdorur konfigurimin nën seksionin volume
në skedarin Përpilimi.
volumes:
- ./vw-data:/data
- /path/to/static/files_directory:/web-vault
Regjistri Vaultwarden
Vaultwarden regjistrohet vetëm në dalje standarde. Mund ta konfiguroni për të hyrë në një skedar.
LOG_FILE: "/data/vaultwarden.log"
Për të reduktuar numrin e mesazheve të regjistrit, mund ta caktoni nivelin e regjistrit në paralajmërim
duke vendosur gjithashtu si të vërtetë variablin EXTENDED_LOGGING
.
LOG_LEVEL: "warn"
EXTENDED_LOGGING: "true"
Hapi 5 - Krijoni skedarin Caddy për Vaultwarden
Tani që kemi konfiguruar Vaultwarden, le të krijojmë një skedar caddy për Vaultwarden dhe ta hapim atë për redaktim.
$ nano Caddyfile
Vendos kodin e mëposhtëm në të.
{$DOMAIN}:443 {
log {
level INFO
output file {$LOG_FILE} {
roll_size 10MB
roll_keep 10
}
}
# Use the ACME HTTP-01 challenge to get a cert for the configured domain.
tls {$EMAIL}
# This setting may have compatibility issues with some browsers
# (e.g., attachment downloading on Firefox). Try disabling this
# if you encounter issues.
encode gzip
# The file size is set to 500MB to support the Vaultwarden (Bitwarden) Send feature.
request_body {
max_size 500MB
}
header {
# Enable cross-site filter (XSS) and tell browser to block detected attacks
X-XSS-Protection "1; mode=block"
# Disallow the site to be rendered within a frame (clickjacking protection)
X-Frame-Options "DENY"
# Prevent search engines from indexing (optional)
X-Robots-Tag "none"
# Server name removing
-Server
}
# Notifications redirected to the WebSocket server
reverse_proxy /notifications/hub vaultwarden:3012
# Proxy everything else to Rocket
reverse_proxy vaultwarden:80 {
# Send the true remote IP to Rocket, so that vaultwarden can put this in the
# log, so that fail2ban can ban the correct IP.
header_up X-Real-IP {remote_host}
}
}
Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.
Hapi 6 - Drejtoni Vaultwarden
Nisni kontejnerin Vaultwarden Docker.
$ docker compose up -d
Ju mund të kontrolloni statusin e kontejnerit duke përdorur komandën e mëposhtme.
$ docker ps
Do të merrni një rezultat të ngjashëm.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ad23954f1d5 caddy:2 "caddy run --config …" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 2019/tcp caddy
d55a037850bc vaultwarden/server:latest "/usr/bin/dumb-init …" About a minute ago Up About a minute (healthy) 80/tcp, 3012/tcp vaultwarden
Hapi 7 - Përdorni Vaultwarden me klientët Bitwarden
Hapni URL-në https://vaultwarden.example.com
në shfletuesin tuaj.
Hapi i parë është krijimi i një llogarie. Klikoni butonin Krijo llogari për të vazhduar.
Futni detajet e llogarisë tuaj dhe kliko butonin Dërgo për të vazhduar. Do të ridrejtoheni në faqen e hyrjes. Futni detajet e llogarisë tuaj për t'u identifikuar.
Ju duhet të zhbllokoni funksionet e plota të llogarive tuaja duke verifikuar emailin tuaj. Klikoni butonin Dërgo email për të dërguar postën e verifikimit.
Ju do të merrni postën e mëposhtme. Klikoni lidhjen për të verifikuar adresën tuaj të emailit.
Tani që e kemi gati llogarinë tonë Vaultwarden, është koha ta përdorim atë me një klient Bitwarden. Për tutorialin tonë, ne po përdorim shtesën e Chrome. Instaloni atë duke e rrëmbyer nga faqja e internetit Bitwardens.
Klikoni në ikonën shtesë për të shfaqur ekranin e hyrjes në Vaultwarden.
Klikoni ikonën e ingranazhit në pjesën e sipërme të majtë të dritares kërcyese për të sjellë faqen e cilësimeve të avancuara. Plotësoni https://vaultwarden.example.com
si URL-në e serverit.
Klikoni butonin Ruaj për të aplikuar cilësimin. Identifikohuni me kredencialet tuaja të Vaultwarden për t'u identifikuar në aplikacion.
Pasi të identifikoheni, do të çoheni në faqen e aplikacionit dhe mund të filloni të përdorni Bitwarden.
Hapi 8 - Backup Vaultwarden
Vaultwarden ruan të dhënat e tij në një bazë të dhënash SQLite. Një mënyrë është thjesht të kopjoni skedarin .sqlite3
nga dosja /vw-data
. Por nuk është zgjidhja e rekomanduar pasi baza e të dhënave nuk do të jetë në një gjendje të qëndrueshme për shkak të funksionimit të Vaultwarden. Për të bërë kopje rezervë në një mënyrë të besueshme, ne do të përdorim komandën e rezervimit SQLite.
Instaloni paketën sqlite3
.
$ sudo apt install sqlite3
Krijoni një direktori për kopjet rezervë.
$ mkdir ~/vw-backups
Hiqni lejet e leximit, shkrimit dhe ekzekutimit nga grupi dhe përdoruesit e tjerë.
$ chmod go-rwx ~/vw-backups
Krijoni skedarin e shërbimit të rezervave të Vaultwarden dhe hapeni për redaktim.
$ sudo nano /etc/systemd/system/vaultwarden-backup.service
Vendos kodin e mëposhtëm në të.
[Unit]
Description=backup the vaultwarden sqlite database
[Service]
Type=oneshot
WorkingDirectory=/home/<username>/vw-backups
ExecStart=/usr/bin/env bash -c 'sqlite3 /home/<username>/vaultwarden/vw-data/db.sqlite3 ".backup backup-$(date -Is | tr : _).sqlite3"'
ExecStart=/usr/bin/find . -type f -mtime +30 -name 'backup*' -delete
Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.
Nisni shërbimin për të testuar shërbimin dhe për të marrë një kopje rezervë.
$ sudo systemctl start vaultwarden-backup.service
Kontrolloni nëse skedari rezervë është i pranishëm.
$ ls -l ~/vw-backups
Ju duhet të shihni listën për skedarin rezervë.
total 192
-rw-r--r-- 1 root root 196608 Jul 31 17:25 backup-2022-07-31T17_25_04+00_00.sqlite3
Për të krijuar një orar të rregullt për kopjet rezervë, krijoni dhe hapni skedarin e njësisë së kohëmatësit systemd. Duhet të siguroheni që emri i skedarit përputhet me emrin e skedarit të shërbimit.
$ sudo nano /etc/systemd/system/vaultwarden-backup.timer
Vendos kodin e mëposhtëm në të.
[Unit]
Description=schedule vaultwarden backups
[Timer]
OnCalendar=04:00
Persistent=true
[Install]
WantedBy=multi-user.target
Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet. Kjo do të planifikojë që rezervimi të bëhet në orën 4 të mëngjesit çdo ditë.
Nisni dhe aktivizoni shërbimin e njësisë së kohëmatësit.
$ sudo systemctl enable vaultwarden-backup.timer
$ sudo systemctl start vaultwarden-backup.timer
Kontrolloni statusin e shërbimit të kohëmatësit.
$ systemctl status vaultwarden-backup.timer
? vaultwarden-backup.timer - schedule vaultwarden backups
Loaded: loaded (/etc/systemd/system/vaultwarden-backup.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Sun 2022-07-31 17:27:03 UTC; 7s ago
Trigger: Mon 2022-08-01 04:00:00 UTC; 10h left
Triggers: ? vaultwarden-backup.service
Jul 31 17:27:03 vaultwarden systemd[1]: Started schedule vaultwarden backups.
Kjo thjesht rezervon të dhënat. Duhet të siguroheni që skedari i bazës së të dhënave të kopjohet rregullisht jashtë vendit ose në sistemin tuaj lokal. Për të rezervuar gjërat e mbetura, mund ta bëni këtë duke kopjuar gjithçka nën dosjen ~/vaultwarden/vw-data
. Nga gjërat e mbetura, drejtoria bashkëngjitje
, skedari config.json
dhe skedarët rsa_key*
duhet të mbështetet. Drejtoritë sends
dhe icon_cache
janë opsionale dhe duhet të rezervohen nëse janë mjaft të mëdha dhe ju nevojiten. Ato janë rreptësisht opsionale.
Hapi 9 - Rivendos Vaultwarden
Për të rivendosur të dhënat e Vaultwarden, sigurohuni që kontejneri të jetë i ndaluar. Mund të zëvendësoni gjithçka nën direktorinë e të dhënave me versionin e tij të rezervuar. Kur rivendosni kopjen rezervë SQLite, sigurohuni që të fshini skedarin ekzistues db.sqlite3-wal
për të shmangur korrupsionin.
Hapi 10 - Përditëso Vaultwarden
Përmirësimi i Vaultwarden është një hap i thjeshtë. Kalo te drejtoria e kompozimit të Vaultwardens Docker.
$ cd ~/vaultwarden
Më pas, ndaloni dhe hiqni enën ekzistuese. Megjithatë, të dhënat tuaja do të ruhen.
$ docker compose down --remove-orphans
Tërhiq versionin më të fundit të imazhit të dokerit të Gitlab.
$ docker compose pull
Nisni përsëri kontejnerët.
$ docker compose up -d
Instalimi juaj i Vaultwarden është përditësuar dhe ka filluar përsëri.
konkluzioni
Kjo përfundon tutorialin tonë për instalimin dhe konfigurimin e Vaultwarden në një server Ubuntu 22.04. Nëse keni ndonjë pyetje, postojini ato në komentet më poshtë.