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.
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. 🙂