← Zpět na všechny články blogu

Vaultwarden na vlastním VPS, hesla ve svých rukách

Zdeněk Sobotka
Zdeněk Sobotka 21. 5. 2024 - 6 min. čtení
Blog

V dnešním článku vám představíme neocenitelného pomocníka, který ve Váš Hosting hlídá všechna interní hesla – správce hesel Vaultwarden.

Krok za krokem si ukážeme, jak si můžete Vaultwarden spustit na vlastním VPS. Jediné, co potřebujete, je trocha zkušeností s kompilací v příkazové řádce, špetka znalosti v oblasti debugování a vlastní Linux server s operačním systémem Debian 12 bez kontejnerizace (bez Dockeru).

K sepsání článku nás inspiroval návod z komunity Hetzner, který je právě bez Dockeru možné aplikovat i u našich serverů.

Proč Vaultwarden?

Vaultwarden je open-source serverová implementace Bitwarden API napsaná v Rustu. Je kompatibilní s Bitwarden klienty a dokonce slouží jako plnohodnotná náhrada za oficiální Bitwarden server.

VPS Centrum

Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.

V dnešní době digitalizace je ochrana online identit a dat klíčová. Správci hesel, jako je právě Vaultwarden, hrají v tomto směru důležitou roli, jelikož ukládají a šifrují přihlašovací údaje a další citlivé informace. Navíc, díky webovému rozhraní a jeho kompatibilitě s Bitwarden aplikacemi, se ke svým údajům dostanete raz dva.

Výhody Vaultwardenu

Open-source: Kód Vaultwardenu je veřejně dostupný. To znamená, čímž se zajišťuje jeho transparentnost a umožňuje komunitě vývojářů identifikovat a opravovat případné chyby v zabezpečení.

Vlastní server: Vaultwarden můžete rozjet a provozovat na vlastním serveru, jedině tak získáte plnou kontrolu nad svými daty – všechny je máte u sebe – a nic neukládáte na servery třetích stran.

Co je k instalaci potřeba

  • Server s Linuxem, minimálně ve verzi Debian 12 s plným root přístupem.
  • SQLite backend pro Vaultwarden, ale lze použít i MySQL/MariaDB nebo PostgreSQL.
  • Nginx jako reverzní proxy, ale použít můžete i Apache.
  • Hrnek kafe. 🙂 

Krok 1 – Instalace Rustu

Nejprve instalujte Rust a následně sestavte Vaultwarden ze zdrojových kódů. Rust v našem návodu instalujeme v rustupu. V tomto kroku se zároveň instaluje Cargo, správce balíčků pro Rust.

# choose stable version and proceed with installation

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource $HOME/.cargo/env

Krok 2 – Instalace dalších závislostí pro sestavení Vaultwarden

Nyní instalujte další nutné závislosti, jako jsou build-essential, git, libssl-dev, pkg-config atd. Všechny je potřebujete ke komplet sestavení Vaultwardenu ze zdrojových kódů.

apt update && apt install -y build-essential git libssl-dev pkg-config libsqlite3-dev nginx certbot

Krok 3 – Sestavte Vaultwarden ze zdroje

Pak instalujte Vaultwarden ze zdroje.

mkdir ~/source && cd ~/source

git clone https://github.com/dani-garcia/vaultwarden.git # clones the repo

cd vaultwarden        # changes directory to vaultwarden

cargo build --features sqlite --release       # builds vaultwarden with SQLite backend

Krok 4 – Vytvoření adresářů pro ukládání dat Vaultwarden

Nyní si vytvořte adresář pro ukládání dat Vaultwardenu a stáhněte .env template souboru s předdefinovanými hodnotami.

mkdir -p /var/lib/vaultwarden && cd /var/lib/vaultwarden

mkdir -p data

wget https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/.env.template

mv .env.template .env

Krok 4.1 – Stažení webového trezoru Vaultwarden

Pro umožnění přístupu do webového klienta Vaultwardenu, stáhněte „web-vault“.
Pokud však webový přístup nepotřebujete, můžete tento krok vynechat.

Freelo - Nástroj na řízení úkolů a projektů

Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.

Nejnovější verzi najdete na githubu.

cd /var/lib/vaultwarden

wget https://github.com/dani-garcia/bw_web_builds/releases/download/v2023.12.0/bw_web_v2023.12.0.tar.gz

tar -xvf bw_web_v2023.12.0.tar.gz

rm bw_web_v2023.12.0.tar.gz

Krok 4.2 – Konfigurace Vaultwarden

Jakoukoliv konfiguraci Vaultwardenu provedete úpravou .env souboru.

nano /var/lib/vaultwarden/.env

DATA_FOLDER=data

DATABASE_URL=data/db.sqlite3

PUSH_ENABLED=true

PUSH_INSTALLATION_ID=CHANGEME      # source this id from https://bitwarden.com/host

PUSH_INSTALLATION_KEY-CHANGEME     # source this key from https://bitwarden.com/host

LOG_FILE=data/vaultwarden.log

LOG_LEVEL=error

DOMAIN=https://static.<your-ip-in-reverse>.clients.vas-server.cz

ROCKET_ADDRESS=127.0.0.1

ROCKET_PORT=8000

SMTP_HOST=smtp.domain.tld        # CHANGE THIS

SMTP_FROM=vaultwarden@domain.tld

SMTP_PORT=587

SMTP_SECURITY=starttls

SMTP_USERNAME=username

SMTP_PASSWORD=password

SMTP_TIMEOUT=15

Pro začátek použijte .env výše a změňte hodnoty podle svých vlastních požadavků. Před jakoukoliv úpravou nejprve doporučujeme přečíst dokumentaci šablony.

Krok 5 – Vytvoření systemd služby pro Vaultwarden

Vytvořte službu systemd pro Vaultwarden a změňte oprávnění k adresáři.

Binární soubor také přesuňte do /usr/local/bin/, aby šel spustit odkudkoliv.

cp ~/source/vaultwarden/target/release/vaultwarden /usr/local/bin/vaultwarden

chmod +x /usr/local/bin/vaultwarden

useradd -m -d /var/lib/vaultwarden vaultwarden

chown -R vaultwarden:vaultwarden /var/lib/vaultwarden

Případné varování o tom, že domovský adresář již existuje, můžete ignorovat. Uživatel by měl být i tak vytvořený. Pro kontrolu můžete použít cat /etc/passwd.

Následně vytvořte i službu systemd pro Vaultwarden.

nano /etc/systemd/system/vaultwarden.service  # use the configuration below

systemctl daemon-reload

systemctl enable vaultwarden

systemctl start vaultwarden

Konfigurace pro /etc/systemd/system/vaultwarden.service:

[Unit]

Description=Bitwarden Server (Rust Edition)

Documentation=https://github.com/dani-garcia/vaultwarden

After=network.target

[Service]

User=vaultwarden

Group=vaultwarden

ExecStart=/usr/local/bin/vaultwarden

LimitNOFILE=1048576

LimitNPROC=64

PrivateTmp=true

PrivateDevices=true

ProtectHome=true

ProtectSystem=strict

WorkingDirectory=/var/lib/vaultwarden

ReadWriteDirectories=/var/lib/vaultwarden

AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]

WantedBy=multi-user.target

Krok 6 – Konfigurace nginx

Pomocí následujícího příkazu nakonfigurujete nginx jako reverzní proxy pro Vaultwarden a webový trezor:

cd /etc/nginx/sites-available

nano vaultwarden.conf       # use the configuration below

ln -s /etc/nginx/sites-available/vaultwarden.conf /etc/nginx/sites-enabled/vaultwarden.conf

nginx -t        # check if the configuration is valid

Konfigurace pro/etc/nginx/sites-available/vaultwarden.conf

# configuration adapted from GitHub repo.

upstream vaultwarden-default {

  zone vaultwarden-default 64k;

  server 127.0.0.1:8000;

  keepalive 2;

}

map $http_upgrade $connection_upgrade {

    default upgrade;

    ''      "";

}

server {

    listen 80;

    server_name static.<your-ip-in-reverse>.clients.vas-server.cz;

    client_max_body_size 525M;

    location / {

      proxy_http_version 1.1;

      proxy_set_header Upgrade $http_upgrade;

      proxy_set_header Connection $connection_upgrade;

      proxy_set_header Host $host;

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_pass http://vaultwarden-default;

    }

}

Krok 7 – Konfigurace firewallu na přístup pouze z vaší IP adresy

V posledním kroku byste měli nakonfigurovat firewall tak, aby umožňoval přístup do Vaultwardenu pouze z vaší IP adresy. Otevíraný port, kde běží Nginx, je 443 a protokol by měl být TCP.

Nastavení firewallu je komplexní záležitost a je nad rámec našeho návodu. Pokud byste však chtěli s nastavením na našich serverech pomoci, neváhejte kontaktovat naše šikovné adminy. Rádi Vám s konfigurací pomohou.

Závěr

Vaultwarden je robustní a bezpečná alternativa k oficiálnímu Bitwarden serveru, se kterou máte plnou kontrolu nad svými daty. Pokud máte dostatečné technické znalosti a zkušenosti s prací v Linuxu, instalace Vaultwarden ze zdrojových kódů vám poskytne maximální flexibilitu a kontrolu. Kdybyste s instalací jakkoliv zápolili, napište nám. 🙂

Zůstaňte s námi v kontaktu

Jednou za měsíc posíláme souhrn novinek. Nemusíte se bát, spam neposíláme a odhlásit se můžete kdykoliv...

Karel Dytrych
Tým Váš Hosting
Vyzkoušejte náš trial na týden zdarma

Garance 14denní záruky vrácení peněz

Vyzkoušejte server na týden zdarma

Vyzkoušet server