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-composedocker 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_SECURITYstartls dhe nëse porta SMTP e shërbimit tuaj është 465, vendos vlerën e ndryshores SMTP_SECURITYforce_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ë.