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.
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
VPS Centrum
Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.
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.
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;
}
}
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.
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.
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. 🙂
Často kladené otázky
Je Vaultwarden bezpečný pro ukládání hesel?
Vaultwarden je open-source implementace Bitwarden API napsaná v jazyce Rust, který je známý svou paměťovou bezpečností. Veškerá hesla se šifrují algoritmem AES-256 přímo na straně klienta ještě před odesláním na server. To znamená, že ani v případě kompromitace serveru útočník nezíská vaše hesla v čitelné podobě.
Další výhodou je, že si Vaultwarden provozujete na vlastním serveru. Data nikam neodcházejí a neprocházejí přes servery třetích stran. Máte plnou kontrolu nad tím, kde jsou vaše citlivé údaje uloženy, kdo k nim má přístup a jak často se zálohují.
Pro maximální bezpečnost doporučujeme nasadit Vaultwarden na VPS server s aktualizovaným operačním systémem, aktivním firewallem a platným SSL certifikátem. Přečtěte si také náš článek o bezpečné práci s hesly, abyste správce hesel využívali co nejefektivněji.
Jaký server potřebuji pro provoz Vaultwardenu?
Vaultwarden je nenáročná aplikace, což je jedna z jeho velkých výhod oproti oficiálnímu Bitwarden serveru. Vystačíte si s VPS serverem se základní konfigurací. Bohatě stačí 1 GB RAM, 1 CPU jádro a 20 GB diskového prostoru; náš vstupní VPS tarif nabízí 4 GB RAM, takže máte rezervu.
Operační systém by měl být Debian 12 či 13 nebo Ubuntu 22.04, na kterých je instalace nejlépe zdokumentovaná. Budete potřebovat přístup přes SSH s root oprávněním pro instalaci závislostí, stažení Docker image a konfiguraci webového serveru (Nginx).
Pro provoz Vaultwardenu se hodí naše VPS servery, kde získáte dedikované prostředky a plný root přístup. Pokud s prací na příkazové řádce teprve začínáte, přečtěte si nejdříve průvodce prací s SSH.
Funguje Vaultwarden s mobilními aplikacemi Bitwarden?
Ano, Vaultwarden je plně kompatibilní se všemi oficiálními klienty Bitwarden. Můžete používat mobilní aplikace pro Android i iOS, desktopové aplikace pro Windows, macOS a Linux, rozšíření do prohlížečů (Chrome, Firefox, Edge, Safari) i webové rozhraní (web vault).
Jediné, co musíte udělat, je při prvním přihlášení zadat adresu vašeho serveru místo výchozí adresy bitwarden.com. V nastavení aplikace klikněte na „Self-hosted“ a vyplňte URL vaší instance, například https://vault.mojedomena.cz.
Vaultwarden podporuje i pokročilé funkce jako automatické vyplňování formulářů, generátor hesel, sdílení hesel mezi uživateli (organizace) a dvoufaktorové ověření. Více o výběru správce hesel se dozvíte v článku Co je správce hesel. Pro zabezpečení připojení k serveru zvažte i nasazení vlastní VPN.
Jak Vaultwarden zálohovat, abych nepřišel o hesla?
Zálohování Vaultwardenu je jednoduché, protože ve výchozí konfiguraci používá databázi SQLite, která se skládá z jednoho souboru. Stačí pravidelně kopírovat soubor db.sqlite3 a složku s přílohami (attachments) na bezpečné místo.
Doporučujeme nastavit automatické zálohování pomocí cron jobu, který každou noc zkopíruje databázový soubor na externí úložiště nebo do jiného adresáře. Před kopírováním je vhodné provést SQLite příkaz VACUUM pro optimalizaci databáze. Zálohy ukládejte šifrovaně a ideálně na geograficky oddělené místo.
Pro důkladnou zálohovací strategii na serveru si přečtěte náš článek o instalaci Nextcloudu, kam můžete zálohy automaticky synchronizovat. Základy správy serveru včetně zálohování najdete také v průvodci SSH.
Jaký je rozdíl mezi Vaultwarden a placeným Bitwarden?
Vaultwarden je neoficiální, komunitní implementace serverové části Bitwarden. Hlavní rozdíl je v tom, že Vaultwarden je zcela zdarma, zatímco Bitwarden Premium stojí 10 USD ročně (plán Families 40 USD) a firemní plány jsou dražší.
Funkčně Vaultwarden nabízí většinu prémiových funkcí Bitwarden zdarma: sdílení hesel v organizacích, dvoufaktorové ověření přes TOTP, úložiště pro přílohy (soubory) a emergency access. Oficiální Bitwarden má navíc pokročilý enterprise management, SSO přihlašování a dedikovanou technickou podporu.
Nevýhodou Vaultwardenu je, že si vše spravujete sami. Aktualizace, zabezpečení serveru i zálohování jsou vaše zodpovědnost. Pokud preferujete bezstarostné řešení, zvažte placený Bitwarden. Pokud chcete plnou kontrolu a provozujete vlastní VPS, Vaultwarden je skvělá volba. O výhodách selfhostingu se dočtete i v článku Webhosting nebo VPS.