Ak si čítal môj článok o Vaultwarden, vieš prečo to chceš. Tu je kompletný postup — od reverse proxy cez ADMIN_TOKEN po Argon2 zabezpečenie. Vaultwarden nie je úplne triviálna inštalácia kvôli emailom a admin panelu, ale ak postupuješ krok za krokom, za hodinu máš vlastný Bitwarden server bežiaci doma.
Čo potrebuješ
Docker a Portainer nainštalované. Prístup zvonka — buď reverse proxy s vlastným HTTPS certifikátom (Synology má vstavané, inak Nginx/Caddy/Traefik) alebo Cloudflare Tunnel — tá druhá možnosť je jednoduchšia a bez otvárania portov. Email — Gmail alebo vlastný SMTP server (pre verifikáciu účtov a pozvánky). Možnosť upraviť súbory v /volume1/docker alebo ekvivalente.
Vaultwarden drží všetky tvoje heslá. Berieš na seba zodpovednosť za zálohu a zabezpečenie. Odporúčam pravidelné zálohy priečinka /volume1/docker/vaultwarden, HTTPS povinne a v admin paneli po prvom prihlásení vypnúť registrácie.
1. Reverse Proxy alebo Cloudflare Tunnel
Vaultwarden beží na HTTP internom porte — pre prístup zvonka musí byť za HTTPS. Dve možnosti:
Možnosť A — Reverse Proxy (Synology príklad)
Na Synology NAS máš wildcard certifikát z synology.me DDNS automaticky. Postup:
- Control Panel → Login Portal → Advanced → Reverse Proxy → Create
- Source: Protocol
HTTPS, Hostnamevaultwarden.tvojemeno.synology.me, Port443, zaškrtni Enable HSTS - Destination: Protocol
HTTP, Hostnamelocalhost, Port4080 - V Custom Header tab klikni Create → WebSocket (automaticky sa doplnia dva headery)
- Control Panel → Network → Connectivity — zaškrtni Enable HTTP/2
- Control Panel → Security → Advanced — zaškrtni Enable HTTP Compression
Na Linuxe/Windowse použi Nginx, Caddy alebo Traefik — princíp rovnaký: HTTPS → localhost:4080 s WebSocket podporou.
Možnosť B — Cloudflare Tunnel
Jednoduchšia cesta — žiadne otváranie portov, žiadny vlastný certifikát. Kompletný postup je v mojom článku o Cloudflare Tunnel. Stručne: v Cloudflare Zero Trust vytvor nový tunel, pridaj public hostname vaultwarden.tvojadomena.sk → http://localhost:4080, v Additional settings zapni No TLS Verify a zaškrtni WebSocket.
Ak máš Synology alebo už beží reverse proxy — ideálne je ostať pri nej (menej pohyblivých častí). Cloudflare Tunnel je skvelá voľba ak nechceš otvárať porty v routeri alebo chceš DDoS ochranu a filtrovanie priamo z Cloudflare.
2. Vytvor priečinky
Vaultwarden potrebuje dva priečinky — data pre vaultwarden samotný a db pre Postgres databázu.
mkdir -p /volume1/docker/vaultwarden/data
mkdir -p /volume1/docker/vaultwarden/db
3. Zisti UID a GID (len Synology/Linux)
Vaultwarden kontajner beží pod tvojím používateľom — treba zistiť jeho UID a GID. V SSH spusti:
id tvoje_meno
Výstup vyzerá takto: uid=1026(tvoje_meno) gid=100(users). Hodnoty 1026 a 100 si zapamätaj — použiješ ich v compose v poli user: 1026:100.
4. SMTP email — Gmail alebo vlastný server
Vaultwarden potrebuje SMTP pre verifikačné emaily a pozvánky do organizácií. Dve možnosti:
Možnosť A — Gmail s App Password
1. Ísť na myaccount.google.com/security a zapnúť 2-Step Verification (bez toho App Password nefunguje)
2. Po zapnutí 2FA ísť na myaccount.google.com/apppasswords
3. Vygenerovať nový App Password — pomenovať ho napr. "Vaultwarden"
4. Google zobrazí 16-znakový kód (bez medzier) — toto je tvoj SMTP_PASSWORD
5. Uložiť si ho hneď — Google ho druhýkrát neukáže
Možnosť B — Vlastný SMTP server
Ak používaš iný email (ProtonMail, Fastmail, vlastná doména cez iCloud, Office 365, alebo vlastný mailserver), budeš potrebovať tieto údaje:
- SMTP host — napr.
smtp.office365.com,smtp.mail.me.com,mail.tvojadomena.sk - SMTP port —
587pre STARTTLS alebo465pre implicit TLS - Username — zvyčajne tvoja celá emailová adresa
- Password — buď štandardné heslo alebo app-specific password (Office 365, iCloud)
Hodnoty zadáš v compose súbore v ďalšom kroku. Pre STARTTLS použi SMTP_SECURITY: starttls, pre implicit TLS SMTP_SECURITY: force_tls.
5. Vygeneruj ADMIN_TOKEN
ADMIN_TOKEN je 64-znakový náhodný reťazec ktorým sa neskôr prihlásiš do admin panela. Vygeneruj ho:
- Online: lab.jurek.xyz/tools/token-generator (nastav dĺžku 64)
- Linux/Synology SSH:
openssl rand -base64 48 - Windows PowerShell:
-join ((48..57) + (65..90) + (97..122) | Get-Random -Count 64 | %{[char]$_})
Výsledok bude niečo ako dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr. Ulož si ho — bez neho sa nedostaneš do admin panela.
6. Docker Compose stack
V Portainer: Stacks → Add stack → Web editor. Vyber platformu:
services:
db:
image: postgres:18
container_name: Vaultwarden-DB
hostname: vaultwarden-db
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "vaultwarden", "-U", "vaultwardenuser"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume1/docker/vaultwarden/db:/var/lib/postgresql:rw
environment:
POSTGRES_DB: vaultwarden
POSTGRES_USER: vaultwardenuser
POSTGRES_PASSWORD: SEM_VLOZ_SILNE_HESLO_DB
restart: on-failure:5
vaultwarden:
image: vaultwarden/server:latest
container_name: Vaultwarden
hostname: vaultwarden
security_opt:
- no-new-privileges:true
user: 1026:100
ports:
- 4080:4020
volumes:
- /volume1/docker/vaultwarden/data:/data:rw
environment:
ROCKET_PORT: 4020
DATABASE_URL: postgresql://vaultwardenuser:SEM_VLOZ_SILNE_HESLO_DB@vaultwarden-db:5432/vaultwarden
ADMIN_TOKEN: SEM_VLOZ_64_ZNAKOVY_TOKEN_Z_KROKU_5
DISABLE_ADMIN_TOKEN: false
DOMAIN: https://vaultwarden.tvojemeno.synology.me
SMTP_HOST: smtp.gmail.com
SMTP_FROM: tvoj@gmail.com
SMTP_PORT: 587
SMTP_SECURITY: starttls
SMTP_USERNAME: tvoj@gmail.com
SMTP_PASSWORD: tvoj_16_znakovy_app_password
restart: on-failure:5
depends_on:
db:
condition: service_started
POSTGRES_PASSWORD a v DATABASE_URL — vymysli silné heslo pre DB (rovnaké na oboch miestach)
ADMIN_TOKEN — 64-znakový token z kroku 5
DOMAIN — tvoja doména s https:// na začiatku (zo kroku 1)
user (len Synology) — UID a GID z kroku 3
SMTP_* — údaje z kroku 4 (Gmail alebo vlastný server)
Klikni Deploy the stack a počkaj na "Success Stack successfully deployed".
7. Vytvor prvý účet
Otvor v prehliadači svoju doménu, napríklad https://vaultwarden.tvojemeno.synology.me. Uvidíš Vaultwarden welcome screen.
- Klikni Create account
- Zadaj email a meno → Continue
- Vytvor silné Master password (ideálne passphrase, min 16 znakov) — toto heslo si zapamätaj, nedá sa resetovať
- Klikni Create account → prihlás sa
- V dashboarde klikni Send email pre overenie adresy
Ak Master password zabudneš, tvoje dáta vo vaulte sú nenávratne stratené. Vaultwarden ho nepozná — všetko je šifrované lokálne v prehliadači. Odporúčam passphrase z 5-6 náhodných slov (napr. pomocou Diceware) — ľahké zapamätať, ťažké prelomiť.
8. Argon2 hash — zabezpečenie ADMIN_TOKEN
Aktuálne máš ADMIN_TOKEN uložený ako plain text v docker-compose súbore. Keď sa prihlásiš do admin panela na /admin, Vaultwarden ti ukáže varovanie o nebezpečnej konfigurácii. Fix: vygeneruj Argon2 PHC hash.
Krok 1 — v Portaineri choď do Containers → Vaultwarden → Console → Connect.
Krok 2 — v terminále spusti:
/vaultwarden hash
Krok 3 — systém vyzve na heslo. Pozor — toto NIE JE tvoj ADMIN_TOKEN z compose, toto je nové heslo ktorým sa budeš odteraz prihlasovať do admin panela. Zadaj heslo (min 8 znakov), potvrď ho.
Krok 4 — výstup bude dlhý reťazec začínajúci $argon2id$v=19$.... Skopíruj ho bez úvodných a koncových apostrofov.
Krok 5 — prihlás sa do admin panela: https://vaultwarden.tvojadomena.sk/admin → zadaj pôvodný ADMIN_TOKEN zo compose.
Krok 6 — General settings → nájdi pole Admin page token/Argon2 PHC → vlož Argon2 hash z kroku 4 → Save.
Od tejto chvíle sa do admin panela prihlasuješ heslom z kroku 3 (to čo si zadával do terminálu), NIE 64-znakovým ADMIN_TOKEN z compose. Ten už slúži len ako "fallback" v compose súbore. Plain text varovanie zmizne.
9. Vypni registrácie (dôležité)
Po vytvorení svojho účtu vypni možnosť že si ktokoľvek cudzí vytvorí účet na tvojom servery.
- Prihlás sa do admin panela:
https://vaultwarden.tvojadomena.sk/admin - Klikni General settings
- Odškrtni Allow new signups
- Klikni Save
Od teraz si nikto cudzí nevytvorí účet. Ak chceš pozvať rodinu alebo priateľov, použi Organizations → Invite — pozvánky fungujú cez email.
10. Nainštaluj klientov
Vaultwarden je kompatibilný s oficiálnymi Bitwarden klientmi. Pri nastavení servera zadaj svoju doménu:
- Prehliadač: Bitwarden extension pre Chrome, Firefox, Edge, Safari
- Mobil: Bitwarden app v Google Play / App Store
- Desktop: Bitwarden aplikácia pre Windows, macOS, Linux
V nastaveniach klienta: Server URL → zadaj svoju doménu (napr. https://vaultwarden.tvojadomena.sk) → prihlás sa svojím účtom.
Troubleshooting
Skontroluj v Portaineri Containers → Vaultwarden → Logs. Časté problémy: nesprávny SMTP_PASSWORD (pri Gmaile použiť App Password, nie bežné heslo), blokovaný port 587 providerom, alebo nesprávny SMTP_SECURITY (starttls vs force_tls).
Zlé UID/GID v user: field. Spusti id tvoje_meno a zadaj správne hodnoty. Potom zmaž obsah /volume1/docker/vaultwarden/data a redeploy stack.
Chýba WebSocket podpora v reverse proxy. Na Synology skontroluj že v Reverse Proxy → Custom Header máš Upgrade a Connection headery. Na Cloudflare Tunnel zaškrtni WebSocket v public hostname settings.
Nedá sa obnoviť. Ak máš v admin paneli zapnuté Account Deletion, môžeš zmazať účet a vytvoriť nový — ale stratíš všetky heslá. Prevencia: passphrase zapísaný v bezpečnom fyzickom mieste (sejf, obálka u niekoho dôveryhodného).