SSD Nodes Learn
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-07-24

VPS पर Vaultwarden कैसे install करें

Docker और VPS का उपयोग करके Vaultwarden self-host करें। इसमें HTTPS setup, admin token और backup strategies के बारे में विस्तार से जानकारी दी गई है।

आप क्या बना रहे हैं

एक ऐसा password manager जिसका पूर्ण नियंत्रण आपके पास हो: एक reverse proxy के पीछे एक छोटे container में running Vaultwarden जो HTTPS को terminate करता है। आपके phone, laptop और browser पर official Bitwarden apps इसे point करेंगे। Vaultwarden, Rust में Bitwarden server API को re-implement करता है और bitwarden.com के समान ही protocol का उपयोग करता है। इसलिए, हर official client बिना किसी बदलाव के इसके साथ काम करता है — लेकिन यह multi-container official stack के बजाय केवल 100 MB RAM में फिट हो जाता है।

Installation के लिए Compose की केवल कुछ lines की आवश्यकता होती है। तीन मुख्य बातें जो महत्वपूर्ण हैं — और जिनके कारण समस्या आ सकती है — वे ये हैं: web vault लोड करने से पहले TLS का होना अनिवार्य है, आपका अपना account बनते ही public signups बंद होने चाहिए, और data volume का backup और test-restore किया जाना चाहिए, क्योंकि उस एक directory में आपके सभी passwords होते हैं।

Prerequisites और महत्वपूर्ण सावधानियां

  • एक VPS जिसमें Docker Engine और Compose plugin हो। इसके लिए एक नया Ubuntu 24.04 KVM box चाहिए जिसमें root या sudo access हो। 512 MB RAM पर्याप्त है; 1 GB बेहतर रहेगा। यह सबसे हल्के प्रोग्राम्स में से एक है — यह self-hosting के लिए उपयोगी सेवाओं की सूची में सबसे ऊपर आता है।
  • एक domain जिसमें A record (और IPv6 के लिए AAAA) हो, जो vault.example.com को VPS पर point करता हो। TLS certificate इसी नाम के लिए जारी किया जाता है, इसलिए काम शुरू करने से पहले DNS resolve होना चाहिए।
  • Internet के लिए Port 80 और 443 खुले होने चाहिए, जिन्हें आपका reverse proxy handle करे — कभी भी Vaultwarden को सीधे handle न करने दें। Port 80 का उपयोग केवल ACME certificate challenge और HTTP-to-HTTPS redirect के लिए किया जाता है।
  • सबसे बड़ी समस्या: Bitwarden clients उस server से कनेक्ट नहीं होते जो HTTPS पर नहीं है। "पहले http पर test करें" जैसा कोई विकल्प नहीं है — वह तरीका काम नहीं करता, जिसका कारण नीचे दिया गया है।

Vaultwarden क्यों, official Bitwarden stack क्यों नहीं

Clients समान हैं, लेकिन resource usage बहुत कम है। Official self-hosted Bitwarden कई containers (MSSQL, Nginx, Identity, Api, Admin आदि) के bundle के रूप में आता है और इसे लगभग 2 GB RAM की आवश्यकता होती है। Vaultwarden एक single binary है जो default रूप से सब कुछ SQLite database में store करता है और idle होने पर केवल कुछ tens of megabytes ही consume करता है। एक व्यक्ति, परिवार या छोटी team के लिए यह सबसे अच्छा विकल्प है। क्योंकि यह Bitwarden API को पूरी तरह implement करता है, इसलिए आपका data Vaultwarden और bitwarden.com के बीच portable रहता है।

इसमें आप enterprise features का उपयोग नहीं कर पाएंगे: जैसे कि SCIM provisioning (हालाँकि 1.35.0 में experimental OpenID Connect SSO आया है)। यहाँ आप ही operator हैं, इसलिए patching, HTTPS और backups की जिम्मेदारी आपकी होगी। यह guide इन्हीं तीन कार्यों के बारे में है।

HTTPS अनिवार्य क्यों है

Bitwarden web vault और browser extensions, Web Crypto API (window.crypto.subtle) का उपयोग करके browser में आपके encryption keys derive करते हैं। Browsers crypto.subtle को केवल एक secure context में ही expose करते हैं — जैसे HTTPS, या http://localhost का विशेष मामला। Plain http://vault.example.com पर यह undefined है, इसलिए जैसे ही app key derive करने की कोशिश करता है, वह fail हो जाता है, और console यह दिखाता है:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'importKey')

Page hang हो जाता है या generic crypto error दिखाता है, और login काम नहीं करता। Desktop, mobile और browser clients self-hosted URL के विरुद्ध अपना स्वयं का check चलाते हैं, और http (या unreachable) endpoint के विरुद्ध वे यह error देते हैं:

This is not a recognized Bitwarden server. You may need to check with your provider or update your server.

दोनों का कारण एक ही है: कोई valid HTTPS नहीं है। इसलिए, सबसे पहले TLS setup करें और vault को कभी भी http पर न खोलें, भले ही वह केवल एक बार देखने के लिए हो।

Step 1 — DNS और reverse proxy (पहले TLS)

Record को अपने VPS पर point करें और पुष्टि करें कि यह सही address को resolve कर रहा है:

dig +short vault.example.com

प्रिंट की गई line आपका VPS IP होनी चाहिए। यदि यह blank या गलत है, तो DNS ठीक करें और TTL समाप्त होने का इंतज़ार करें — यदि name resolve नहीं होता है, तो certificate issuance fail हो जाएगा।

HTTPS front end के लिए यह guide Traefik का उपयोग करती है, जो Let's Encrypt certificates को automatically issue और renew करता है और सीधे Compose में integrate हो जाता है। यदि आप इसे पहले से run नहीं कर रहे हैं, तो पहले the Traefik reverse proxy and automatic TLS setup का पालन करें; यह एक external Docker network (नीचे proxy) और एक ACME resolver (letsencrypt) बनाता है जिससे Vaultwarden service जुड़ती है। Vaultwarden की तरफ से hand-issued certificate के साथ plain nginx भी समान रूप से कार्य करता है।

Traefik के बजाय nginx और Certbot को प्राथमिकता देते हैं? Vaultwarden को 127.0.0.1:8080 पर रखें (service में ports: ["127.0.0.1:8080:80"] जोड़ें और Traefik labels हटा दें), फिर एक certificate issue करें और उसे proxy करें। Certificate वाला हिस्सा issuing Let's Encrypt certificates with Certbot and nginx में कवर किया गया है। महत्वपूर्ण अतिरिक्त step notifications path पर WebSocket upgrade है:

server {
    listen 443 ssl;
    server_name vault.example.com;

    client_max_body_size 525M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

X-Real-IP line पर ध्यान दें — यही वह चीज़ है जो बाद में Fail2ban को 127.0.0.1 के बजाय वास्तविक attacker को देखने की अनुमति देती है। इस guide में बाकी सब कुछ समान है, चाहे Traefik हो या nginx front में हो।

Step 2 — Compose file

सबसे पहले project directory बनाएँ। यह guide /opt/vaultwarden का उपयोग करती है, जिससे Compose project name — और इस प्रकार data volume, vaultwarden_vw-data — predictable हो जाता है; नीचे दिए गए Fail2ban और backup steps इसी सटीक name पर निर्भर करते हैं।

sudo mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

Admin secret और Compose file के लिए उस directory में एक .env बनाएँ।

# .env
ADMIN_TOKEN=paste-a-strong-token-here

openssl rand -base64 48 का उपयोग करके वह token generate करें और उसे paste करें। (अगले चरण में एक मजबूत hashed form के बारे में बताया गया है; शुरुआत के लिए एक लंबा random string पर्याप्त है।)

# docker-compose.yml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"          # closed in Step 4, keep true just to register
      ADMIN_TOKEN: "${ADMIN_TOKEN}"
      IP_HEADER: "X-Forwarded-For"     # X-Real-IP if your proxy sends that instead
      LOG_FILE: "/data/vaultwarden.log"
      LOG_LEVEL: "warn"
    volumes:
      - vw-data:/data
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vw.rule=Host(`vault.example.com`)"
      - "traefik.http.routers.vw.entrypoints=websecure"
      - "traefik.http.routers.vw.tls.certresolver=letsencrypt"
      - "traefik.http.services.vw.loadbalancer.server.port=80"

volumes:
  vw-data:

networks:
  proxy:
    external: true

इस file की दो बातें पूरे design का आधार हैं। इसमें कोई ports: mapping नहीं है, इसलिए Vaultwarden केवल Traefik और उसके TLS के माध्यम से ही reachable है — host पर अपना port publish करने से लोग गलती से vault को http पर serve कर देते हैं। और DOMAIN का full public HTTPS URL होना अनिवार्य है: यह attachment links, WebAuthn 2FA और notifications endpoint में शामिल होता है, इसलिए गलत या http value होने पर site लोड होने के बावजूद ये सभी काम करना बंद कर देंगे। latest tag, सामान्य never-latest rule का एक जानबूझकर किया गया अपवाद है — Vaultwarden अपने stable releases को एक single rolling image के रूप में भेजता है, जिसमें :testing एक अलग pre-release channel है — इसलिए update करने का निर्णय सोच-समझकर लें और image pull करने से पहले release notes देख लें।

इसे start करें और log देखें:

docker compose up -d
docker compose logs -f vaultwarden

सही start का अंत Rocket has launched from http://0.0.0.0:80 जैसी line के साथ होता है। Certificate fetch करने के लिए Traefik को कुछ सेकंड दें, फिर https://vault.example.com load करें — आपको एक valid padlock और बिना किसी certificate warning के Bitwarden web vault मिलना चाहिए।

Step 3 — एक मजबूत ADMIN_TOKEN, और $$ ट्रैप

ADMIN_TOKEN, /admin की रक्षा करता है। यह पैनल आपके instance के हर user और setting को पढ़ सकता है, इसलिए इसे root password की तरह ही सुरक्षित रखें। दो तरीके काम करते हैं।

पहला सरल तरीका वह random string है जिसे आपने पहले ही openssl rand -base64 48 से generate कर लिया है। क्योंकि base64 में कभी भी $ नहीं होता, इसलिए इसे बिना किसी escaping के सीधे .env में डाला जा सकता है।

दूसरा अधिक सुरक्षित तरीका Argon2 PHC hash है, जिससे plaintext token कभी भी disk पर store नहीं होता। इसी image के लिए इसे generate करें:

docker run --rm -it vaultwarden/server /vaultwarden hash --preset owasp

यह दो बार prompt करेगा और $argon2id$v=19$... से शुरू होने वाली एक string प्रिंट करेगा। यहाँ वह ट्रैप है जिससे लोगों का एक घंटा बर्बाद होता है: Docker Compose, $ को variable interpolation मानता है, इसलिए जब आप hash को Compose file में paste करें, तो आपको हर $ को $$ में बदलना होगा। इसे सीधे environment: के नीचे रखें, .env के माध्यम से नहीं, और इसे quotes में न रखें:

    environment:
      ADMIN_TOKEN: $$argon2id$$v=19$$m=19456,t=2,p=1$$c29tZXNhbHQ$$RdescudvJCsgt3ub+b+dWRWJTmaaJObG

यदि आप single $ signs छोड़ देते हैं, तो Compose The "argon2id" variable is not set की चेतावनी देगा और token को खाली (blank) कर देगा, जिसके कारण /admin आपके सही password को reject कर देगा। docker compose up -d चलाएँ, और prompt पर टाइप किए गए plaintext को अपने स्वयं के password store में सुरक्षित रखें।

Step 4 — अपना account register करें, फिर door lock करें

SIGNUPS_ALLOWED: "true" का उपयोग करके, https://vault.example.com खोलें, Create account पर click करें, और अपने email और एक strong master password के साथ register करें। इस master password को कभी recover नहीं किया जा सकता — इसे reset करने का कोई तरीका नहीं है — इसलिए इसे पहले कहीं सुरक्षित स्थान पर store करें।

अब door close करें। Compose file को edit करें ताकि signups बंद हो सकें:

      SIGNUPS_ALLOWED: "false"

docker compose up -d के साथ इसे re-apply करें। यह hardening का हिस्सा नहीं है जिसे आप बाद के लिए टाल सकें। यदि इसे open रखा गया, तो URL मिलने वाला कोई भी व्यक्ति — और crawlers भी — आपके server पर account बना सकता है। वे आपका vault नहीं पढ़ सकते, लेकिन वे resources consume करते हैं और आपके private instance को एक open service में बदल देते हैं। यदि आपने इसे open छोड़ा है, तो इसका संकेत यह है: /admin उन accounts की list दिखाता है जो आपने कभी create नहीं किए।

Public signups को बिना दोबारा खोले बाद में family या teammates को add करने के लिए, /admin में Invite User button का उपयोग करें; इस path के लिए SMTP configured होना आवश्यक है ताकि invitee को उनका link मिल सके।

Step 5 — /admin तक पहुँचना

https://vault.example.com/admin पर जाएँ और plaintext admin token दर्ज करें (या तो random string, या वह password जिसे आपने hash किया है — hash स्वयं नहीं)। इसके अंदर आप users को list कर सकते हैं, settings को tune कर सकते हैं, एक test email भेज सकते हैं और database snapshot ले सकते हैं।

यदि page 404 Not Found लौटाता है, तो इसका अर्थ है कि ADMIN_TOKEN खाली या unset है, जिससे panel पूरी तरह से disable हो जाता है — यदि आपको इसकी कभी आवश्यकता नहीं है, तो यह एक सही विकल्प है। यदि page लोड होता है लेकिन आपका token reject कर देता है, तो नीचे दी गई failure list में $$ escaping trap देखें। क्या आप token भूल गए हैं? यहाँ कोई recovery prompt नहीं है; .env या Compose file को edit करें, एक नया token सेट करें, और docker compose up -d

Step 6 — Bitwarden clients को connect करें

सभी official clients को self-hosted server से point किया जा सकता है। इसलिए, normal stores से Bitwarden desktop, mobile या browser client install करें — आपको kisi special Vaultwarden build की आवश्यकता नहीं है।

Login करने से पहले, login screen पर settings gear खोलें (जिस पर Self-hosted या Region → Self-hosted लिखा हो), Server URL को https://vault.example.com पर set करें, और save करें। इसके बाद, अपने registered email और master password से login करें; client तुरंत connect हो जाना चाहिए और credentials fill तथा save करने का option देना चाहिए।

यदि client This is not a recognized Bitwarden server. You may need to check with your provider or update your server. दिखाता है, तो URL गलत है, http का उपयोग कर रहा है, या certificate untrusted है — पहले यह check करें कि क्या https://vault.example.com browser में सही ढंग से load हो रहा है। अन्य devices पर slow updates का कारण WebSocket push है, जिसका विवरण नीचे दिया गया है।

Step 7 — login endpoint के लिए a Fail2ban jail

Vaultwarden, LOG_FILE द्वारा निर्धारित file में हर failed login को log करता है — यह brute-force सुरक्षा के लिए आवश्यक है। यदि आप पहले से Fail2ban का उपयोग नहीं कर रहे हैं, तो installation और basics the Fail2ban SSH hardening guide में दिए गए हैं; यहाँ हम vault के लिए एक jail जोड़ रहे हैं।

सबसे पहले host पर named volume का location पता करें, ताकि Fail2ban log को पढ़ सके:

docker volume inspect vaultwarden_vw-data --format '{{ .Mountpoint }}'

यह /var/lib/docker/volumes/vaultwarden_vw-data/_data जैसा कुछ output देगा; इसके अंदर log vaultwarden.log है। Filter बनाएँ:

# /etc/fail2ban/filter.d/vaultwarden.conf
[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =

और jail बनाएँ:

# /etc/fail2ban/jail.d/vaultwarden.local
[vaultwarden]
enabled   = true
filter    = vaultwarden
logpath   = /var/lib/docker/volumes/vaultwarden_vw-data/_data/vaultwarden.log
banaction = iptables-allports
chain     = DOCKER-USER
maxretry  = 5
findtime  = 600
bantime   = 3600

sudo systemctl restart fail2ban के साथ reload करें और sudo fail2ban-client status vaultwarden से confirm करें।

तीन Docker details यह तय करते हैं कि क्या यह सुरक्षा काम करेगी। पहला, यदि हर failed attempt पर log में IP: 127.0.0.1 या आपके proxy का address दिखता है, तो Vaultwarden proxy को ban कर देगा — IP_HEADER को उस header पर set करें जो आपका proxy वास्तव में भेजता है (Traefik के लिए X-Forwarded-For, ऊपर दिए गए nginx block के लिए X-Real-IP, और Cloudflare के पीछे CF-Connecting-IP)। दूसरा, सही iptables chain आपके proxy पर निर्भर करती है: यदि Traefik एक container के रूप में published ports के साथ चल रहा है, तो traffic Docker के FORWARD path से गुजरता है, इसलिए ban DOCKER-USER में होना चाहिए जैसा कि ऊपर बताया गया है; लेकिन यदि आपने Step 1 से host-nginx option चुना है, तो connections host के INPUT chain पर nginx पर समाप्त होते हैं और DOCKER-USER ban उन्हें कभी नहीं देख पाएगा — उस स्थिति में chain = DOCKER-USER line को delete कर दें ताकि Fail2ban default INPUT chain का उपयोग करे। तीसरा, port-based default के बजाय banaction = iptables-allports का उपयोग करें — यह jail किसी port को define नहीं करता है, और DOCKER-USER में all-ports ban अपराधी को machine की हर published service से प्रभावी ढंग से ब्लॉक कर देता है।

Step 8 — vault का backup लें, फिर उसे restore करें

vw-data volume आपका password manager है। इसमें db.sqlite3 (सभी entries), attachments/ और sends/ directories, login sessions को sign करने वाली rsa_key.* files, और admin panel से config.json शामिल है। यदि backup में इनमें से कोई भी चीज़ छूट जाती है, तो ज़रूरत पड़ने पर वह fail हो जाएगा।

जब Vaultwarden डेटा लिख रहा हो, तब db.sqlite3 को copy करने से corrupt file मिल सकती है। इसलिए, cold snapshot लें — इसमें केवल कुछ सेकंड का downtime लगेगा:

#!/usr/bin/env bash
set -euo pipefail
STAMP=$(date +%F)
DEST=/root/vw-backups
VOL=$(docker volume inspect vaultwarden_vw-data --format '{{ .Mountpoint }}')
mkdir -p "$DEST"
docker compose -f /opt/vaultwarden/docker-compose.yml stop vaultwarden
tar czf "$DEST/vw-$STAMP.tgz" -C "$VOL" .
docker compose -f /opt/vaultwarden/docker-compose.yml start vaultwarden

इसे nightly cron से चलाएं और .tgz को server से बाहर copy करें — यदि backup केवल उसी server पर है जिसे आप protect कर रहे हैं, तो वह backup नहीं है। इसे सुरक्षित तरीके से भेजने का सही तरीका दूसरे server या object storage पर nightly restic backup है, जो archive को encrypt करता है और repeated snapshots को deduplicate करता है। Admin panel का Backup Database button SQLite file का एक quick snapshot है, लेकिन इसमें attachments और keys शामिल नहीं होते।

अब वह प्रक्रिया जो एक असली backup को केवल एक उम्मीद से अलग करती है — इसे एक बार restore करें और verify करें कि यह काम करता है:

mkdir -p /tmp/vw-restore
tar xzf /root/vw-backups/vw-2026-07-15.tgz -C /tmp/vw-restore
docker run --rm -p 127.0.0.1:8888:80 -v /tmp/vw-restore:/data vaultwarden/server

अपने laptop से, ssh -L 8888:127.0.0.1:8888 you@your-vps के माध्यम से tunnel करें और http://localhost:8888 खोलें। चूंकि localhost एक secure context है, इसलिए crypto.subtle उपलब्ध है और यहाँ vault plain http पर decrypt होता है — यह एकमात्र स्थान है जहाँ इसकी अनुमति है। अपने master password से log in करें और check करें कि आपकी entries मौजूद हैं या नहीं: यदि वे मौजूद हैं, तो आपका database, RSA keys और master password सभी सही ढंग से काम कर रहे हैं, और आप कुछ ही मिनटों में एक नए VPS पर इसे rebuild कर सकते हैं। Ctrl-C से container को रोकें और /tmp/vw-restore को delete करें।

Failure modes, with the strings you will see

Browser console में Cannot read properties of undefined (reading 'importKey'). Vault http पर लोड हुआ है, इसलिए crypto.subtle undefined है; इसे केवल https:// के माध्यम से एक्सेस करें और proxy पर HTTP-to-HTTPS redirect जोड़ें।

Client में This is not a recognized Bitwarden server.... Server URL http है, गलत टाइप किया गया है, या certificate untrusted है; पुष्टि करें कि https://vault.example.com में valid padlock दिख रहा है, फिर इसे client की self-hosted settings में दोबारा दर्ज करें।

/admin सही password को reject करता है। Argon2 hash का escaping खो गया है — Compose में हर $ को $$ होना चाहिए — या आपने plaintext के बजाय hash दर्ज किया है।

Slow cross-device sync; console में WebSocket connection to 'wss://vault.example.com/notifications/hub' failed दिखता है। Proxy, Upgrade/Connection headers को forward नहीं कर रहा है; Traefik यह काम अपने आप करता है, nginx को Step 1 से दो upgrade lines की आवश्यकता होती है। Vault अभी भी काम करता है, बस open होने पर sync करता है। v1.31.0 के बाद पुराना dedicated port 3012 हटा दिया गया है, इसलिए अलग WebSocket route की आवश्यकता नहीं है।

Fail2ban ban रिपोर्ट करता है लेकिन attacker कनेक्ट करना जारी रखता है। यह 127.0.0.1 को ban कर रहा है क्योंकि IP_HEADER गलत है, या ban गलत iptables chain में है — chain = DOCKER-USER और banaction = iptables-allports सेट करें।

Upgrades

Nayi image pull karein aur container ko recreate karein; named volume aur aapka saara data surakshit rahega:

docker compose pull
docker compose up -d

Vaultwarden ke naye releases aksar aate rehte hain. Patch version ko fix karne ke bajaye project's release notes ko follow karein, kyunki kuch releases mein migration notes hote hain. Kisi bhi bade update se pehle naya backup le lein; aap tarball ko naye volume mein restore karke rollback kar sakte hain.

FAQ

क्या Vaultwarden और Bitwarden एक ही हैं?

यह एक compatible, independent server है, official server नहीं। Vaultwarden, Bitwarden server API को Rust में re-implement करता है। इसलिए official desktop, mobile, browser और CLI clients इसके साथ काम कर सकते हैं, और यह official stack के मुकाबले बहुत कम resources का उपयोग करता है। Vault format समान है, इसलिए आप export और import के माध्यम से किसी भी दिशा में migrate कर सकते हैं।

क्या मुझे वास्तव में HTTPS की आवश्यकता है, या क्या मैं इसे अपने LAN पर http पर चला सकता हूँ?

localhost test के अलावा आपको HTTPS की आवश्यकता है। Bitwarden web vault और extensions browser के Web Crypto API का उपयोग करते हैं, जो केवल secure context में उपलब्ध होता है। इसलिए plain http पर client Cannot read properties of undefined error देता है और login नहीं कर पाता। केवल http://localhost http address काम करता है, इसीलिए Step 8 में restore test के लिए SSH tunnel का उपयोग किया जाता है।

मैं अपने server पर अजनबियों को register होने से कैसे रोकूँ?

अपना account बनाने के तुरंत बाद Compose file में SIGNUPS_ALLOWED: "false" सेट करें और docker compose up -d चलाएँ। उसके बाद, /admin में Invite User button के माध्यम से नए लोगों को जोड़ें। इसके लिए SMTP configured होना चाहिए ताकि उन्हें invitation link मिल सके। यह सुनिश्चित करने के लिए कि कोई अनचाखा account न बने, समय-समय पर admin user list चेक करते रहें।

मैं अपने Vaultwarden vault का backup कैसे लूँ?

Container को कुछ समय के लिए रोकें और पूरे vw-data volume को archive करें — db.sqlite3, attachments/, sends/, config.json और rsa_key.* files — फिर archive को server से बाहर copy करें, इसके लिए nightly cron का उपयोग करना सबसे अच्छा है। Server चलते समय live SQLite file को copy करने से snapshot corrupt होने का खतरा रहता है, इसलिए इसे offline (cold) backup लें। सबसे महत्वपूर्ण बात यह है कि इसे एक throwaway container में एक बार restore करके login करके देखें, ताकि आप सुनिश्चित हो सकें कि backup सही है।

क्या अपने passwords को self-host करना वास्तव में सुरक्षित है?

हाँ, यदि आप वे तीन काम करते हैं जो इस guide में बताए गए हैं: real HTTPS, closed signups और एक strong admin token, और tested backups। आपका vault आपके master password के साथ client-side पर encrypt होता है, इसलिए server भी आपके passwords को plain text में कभी नहीं देख पाता — इसके बिना चोरी किया गया db.sqlite3 बेकार है। इसके बदले में, patching और backups की जिम्मेदारी अब आपकी है, इसीलिए यहाँ Fail2ban और restore ritual अनिवार्य हैं।