VPS वर Vaultwarden कसे इंस्टॉल करायचे
Docker आणि VPS वापरून Bitwarden सुसंगत पासवर्ड मॅनेजर स्वतः होस्ट करा. HTTPS, Admin Token आणि Backup साठी ही संपूर्ण मार्गदर्शिका वापरा.
तुम्ही काय तयार करत आहात
तुमच्या मालकीचे पूर्ण नियंत्रण असलेले पासवर्ड मॅनेजर: HTTPS टर्मिनेट करणारा reverse proxy आणि एका लहान container मध्ये चालणारे Vaultwarden. यामध्ये तुमच्या फोन, लॅपटॉप आणि ब्राउझरवरील अधिकृत Bitwarden apps वापरता येतात. Vaultwarden मध्ये Bitwarden server API, Rust मध्ये पुन्हा तयार केले आहे. हे bitwarden.com प्रमाणेच प्रोटोकॉल वापरते, त्यामुळे सर्व अधिकृत क्लायंट्स कोणत्याही बदलाशिवाय यावर काम करतात. अधिकृत multi-container stack च्या तुलनेत हे फक्त 100 MB RAM मध्ये चालते.
याची installation प्रक्रिया Compose च्या काही ओळींची आहे. खालील तीन गोष्टी अत्यंत महत्त्वाच्या आहेत आणि त्या चुकल्यास समस्या येऊ शकतात: web vault लोड करण्यापूर्वी TLS असणे आवश्यक आहे, तुमचा स्वतःचा account तयार होताच public signups बंद करणे आवश्यक आहे, आणि data volume चा backup घेऊन तो test-restore करणे आवश्यक आहे, कारण त्या एकाच directory मध्ये तुमचे सर्व passwords असतात.
Prerequisites and the honest gotchas
- Docker Engine आणि Compose plugin असलेला VPS; fresh Ubuntu 24.04 KVM box, root किंवा sudo परवान्यांसह. 512 MB RAM पुरेशी आहे; 1 GB अधिक सोयीचे ठरते. हे अत्यंत हलके (lightweight) आहे — self-hosting साठी उपयुक्त सेवांच्या यादीत हे वरच्या क्रमांकावर आहे.
- A record (आणि IPv6 असल्यास AAAA record) असलेला डोमेन, जो VPS कडे
vault.example.comनिर्देशित करतो. TLS certificate याच नावासाठी जारी केले जाते, म्हणून सुरुवात करण्यापूर्वी DNS रिझॉल्व्ह होणे आवश्यक आहे. - इंटरनेटसाठी पोर्ट 80 आणि 443 खुले असावेत आणि ते तुमच्या reverse proxy द्वारे हाताळले गेले पाहिजेत — कधीही थेट Vaultwarden द्वारे नाही. पोर्ट 80 चा वापर फक्त ACME certificate challenge आणि HTTP-to-HTTPS redirect साठी केला जातो.
- सर्वात मोठी अडचण: Bitwarden clients फक्त HTTPS सर्व्हरशी संवाद साधतात. "आधी http वर तपासा" असा कोणताही पर्याय नाही — कारण खालील स्पष्ट कारणास्तव तो मार्ग काम करत नाही.
Vaultwarden का वापर, official Bitwarden stack का नाही
सर्व clients सारखेच आहेत, पण संसाधनांचा वापर खूप कमी आहे. official self-hosted Bitwarden मध्ये अनेक containers (MSSQL, Nginx, Identity, Api, Admin इत्यादी) येतात आणि त्यासाठी साधारणपणे 2 GB RAM आवश्यक असते. Vaultwarden हा एक single binary आहे जो default प्रमाणे सर्व डेटा SQLite database मध्ये साठवतो आणि त्याचा वापर केवळ काही tens of megabytes इतकाच असतो. एक व्यक्ती, कुटुंब किंवा लहान टीमसाठी हा एक उत्तम पर्याय आहे. Vaultwarden मध्ये Bitwarden API ची अचूक अंमलबजावणी केली असल्याने तुमचा डेटा bitwarden.com सोबत सहजपणे transfer करता येतो.
यामध्ये तुम्हाला enterprise वैशिष्ट्ये मिळत नाहीत: यामध्ये SCIM provisioning नाही (जरी 1.35.0 मध्ये experimental OpenID Connect SSO समाविष्ट केले आहे), आणि सर्व व्यवस्थापन तुम्हालाच करावे लागते. म्हणजेच, patching, HTTPS आणि backups करण्याची जबाबदारी तुमची असेल. हा guide या तीन कामांसाठी आहे.
HTTPS अनिवार्य का आहे
Bitwarden web vault आणि browser extensions मध्ये Web Crypto API (window.crypto.subtle) वापरून encryption keys तयार केल्या जातात. Browsers फक्त secure context मध्येच crypto.subtle उपलब्ध करून देतात — जसे की HTTPS किंवा http://localhost चा विशेष प्रकार. Plain http://vault.example.com वर हे undefined असते, त्यामुळे ॲपने की (key) तयार करण्याचा प्रयत्न करताच त्रुटी (error) येते आणि console मध्ये खालीलप्रमाणे संदेश दिसतो:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'importKey')पेज हँग होते किंवा सामान्य crypto error दाखवते, आणि लॉगिन होत नाही. Desktop, mobile आणि browser clients स्वतःची तपासणी (check) करतात. जर URL self-hosted असेल आणि ती http (किंवा unreachable) असेल, तर ते खालील त्रुटी दाखवून प्रक्रिया थांबवतात:
This is not a recognized Bitwarden server. You may need to check with your provider or update your server.या दोन्ही समस्यांचे कारण एकच आहे: वैध HTTPS उपलब्ध नाही. म्हणून, प्रथम TLS सेट करा आणि vault कधीही http वर उघडू नका, अगदी थोड्या वेळासाठी सुद्धा नाही.
Step 1 — DNS आणि reverse proxy (प्रथम TLS)
रेकॉर्ड तुमच्या VPS कडे पॉइंट करा आणि ते योग्य पत्त्यावर रिझॉल्व्ह होते की नाही याची खात्री करा:
dig +short vault.example.comप्रिंट झालेली ओळ तुमच्या VPS IP प्रमाणे असावी. जर ती रिकामी किंवा चुकीची असेल, तर DNS दुरुस्त करा आणि TTL पूर्ण होण्याची वाट पहा — जर नाव रिझॉल्व्ह होत नसेल, तर सर्टिफिकेट इश्यू करण्याची प्रक्रिया अयशस्वी होते.
HTTPS front end साठी या मार्गदर्शकात Traefik वापरले आहे, जे Let's Encrypt सर्टिफिकेट्स आपोआप इश्यू आणि रिन्यू करते आणि थेट Compose मध्ये समाविष्ट होते. जर तुम्ही ते आधीच वापरत नसाल, तर प्रथम Traefik reverse proxy आणि automatic TLS सेटअप फॉलो करा; ते एक external Docker network (खालील proxy) आणि ACME resolver (letsencrypt) तयार करते, ज्याला Vaultwarden सर्व्हिस जोडली जाते. मॅन्युअली इश्यू केलेले सर्टिफिकेट वापरून साधी nginx देखील Vaultwarden च्या बाजूने समानरित्या काम करते.
Traefik ऐवजी nginx आणि Certbot वापरणे अधिक सोयीचे आहे का? Vaultwarden 127.0.0.1:8080 वर ठेवा (सर्व्हिसमध्ये ports: ["127.0.0.1:8080:80"] जोडा आणि Traefik labels काढून टाका), त्यानंतर सर्टिफिकेट इश्यू करा आणि त्याला प्रॉक्सी करा. सर्टिफिकेटचा भाग Certbot आणि nginx सह Let's Encrypt सर्टिफिकेट्स इश्यू करणे मध्ये कव्हर केला आहे. महत्त्वाचा अतिरिक्त भाग म्हणजे notifications पाथवरील 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 ओळ लक्षात घ्या — यामुळेच नंतर Fail2ban ला 127.0.0.1 ऐवजी खरा अटॅकर पाहता येतो. या मार्गदर्शकातील इतर सर्व गोष्टी Traefik किंवा nginx, यांपैकी जे देखील समोर असेल, तशाच राहतील.
Step 2 — the Compose file
प्रथम प्रोजेक्ट डिरेक्टरी तयार करा. या मार्गदर्शकात /opt/vaultwarden वापरले आहे, ज्यामुळे Compose प्रोजेक्टचे नाव — आणि परिणामी डेटा वॉल्यूम, vaultwarden_vw-data — निश्चित राहते; खालील Fail2ban आणि बॅकअप पायऱ्या याच नावावर अवलंबून आहेत.
sudo mkdir -p /opt/vaultwarden
cd /opt/vaultwardenAdmin secret आणि Compose file साठी .env तयार करा आणि त्या डिरेक्टरीमध्ये ठेवा.
# .env
ADMIN_TOKEN=paste-a-strong-token-hereopenssl rand -base64 48 वापरून तो token जनरेट करा आणि तिथे पेस्ट करा. (पुढील भागात अधिक सुरक्षित hashed स्वरूपाबद्दल माहिती दिली आहे; सुरुवातीसाठी एक लांब 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या फाईलमधील दोन गोष्टी संपूर्ण डिझाइन ठरवतात. यामध्ये ports: मॅपिंग नाही, त्यामुळे Vaultwarden फक्त Traefik आणि त्याच्या TLS द्वारेच उपलब्ध होते — होस्टवर पोर्ट पब्लिश केल्यामुळे लोक चुकून http द्वारे व्हॉल्ट सर्व्ह करतात. आणि DOMAIN ही पूर्ण public HTTPS URL असणे आवश्यक आहे: ही URL अटॅचमेंट लिंक्स, WebAuthn 2FA आणि notifications endpoint मध्ये समाविष्ट असते, त्यामुळे चुकीची किंवा http व्हॅल्यू असल्यास साइट लोड झाली तरी त्या गोष्टी काम करणार नाहीत. latest टॅग हा नेहमीच्या never-latest नियमाचा एक जाणीवपूर्वक केलेला अपवाद आहे — Vaultwarden त्याचे stable releases एक सिंगल rolling image म्हणून देते, ज्यामध्ये :testing हा वेगळा pre-release चॅनेल आहे — म्हणून जाणीवपूर्वक अपडेट करा आणि pull करण्यापूर्वी release notes तपासा.
सिस्टम सुरू करा आणि log तपासा:
docker compose up -d
docker compose logs -f vaultwardenयोग्य स्टार्टअप Rocket has launched from http://0.0.0.0:80 सारख्या ओळीने संपते. Traefik ला सर्टिफिकेट मिळवण्यासाठी काही सेकंद द्या, त्यानंतर https://vault.example.com लोड करा — तुम्हाला व्हॅलिड padlock आणि कोणतीही certificate warning शिवाय Bitwarden web vault दिसेल.
Step 3 — एक मजबूत ADMIN_TOKEN, आणि $$ trap
ADMIN_TOKEN हे /admin चे संरक्षण करते; हे पॅनेल तुमच्या instance वरील प्रत्येक user आणि setting वाचू शकते, म्हणून याला root password प्रमाणेच वापरा. दोन पद्धती वापरता येतात.
साधी पद्धत म्हणजे openssl rand -base64 48 वापरून तुम्ही आधीच तयार केलेली random string. base64 मध्ये कधीही $ नसतो, त्यामुळे ते कोणत्याही escaping शिवाय थेट .env मध्ये वापरता येते.
अधिक सुरक्षित पद्धत म्हणजे Argon2 PHC hash; यामुळे plaintext token कधीही disk वर साठवले जात नाही. त्याच image वापरून एक hash तयार करा:
docker run --rm -it vaultwarden/server /vaultwarden hash --preset owaspहे दोनदा prompt विचारते आणि $argon2id$v=19$... ने सुरू होणारी string print करते. येथे एक trap आहे ज्यामुळे लोकांचा एक तास वाया जातो: 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जर तुम्ही एकच $ चिन्ह ठेवले, तर Compose The "argon2id" variable is not set असा इशारा देते आणि token रिकामे (blank) करते, ज्यामुळे /admin तुमचा योग्य password नाकारते. docker compose up -d चालवा, आणि prompt वर तुम्ही टाईप केलेले plaintext तुमच्या स्वतःच्या password store मध्ये सुरक्षित ठेवा.
Step 4 — तुमचे खाते नोंदणीकृत करा, त्यानंतर प्रवेश मर्यादित करा
SIGNUPS_ALLOWED: "true" वापरून, https://vault.example.com उघडा, Create account वर क्लिक करा आणि तुमचा email आणि एक मजबूत master password वापरून नोंदणी करा. हा master password कधीही पुन्हा प्राप्त करता येत नाही — यासाठी कोणताही reset पर्याय नाही — म्हणून तो प्रथम सुरक्षित ठिकाणी लिहून ठेवा.
आता प्रवेश मर्यादित करा. signups बंद करण्यासाठी Compose file संपादित करा:
SIGNUPS_ALLOWED: "false"docker compose up -d वापरून पुन्हा लागू करा. हे hardening चे असे स्वरूप आहे जे तुम्ही नंतरही करू शकता. जर तुम्ही हे उघडे ठेवले, तर ज्या कोणालाही URL सापडेल — आणि crawlers शोधतातच — ते तुमच्या server वर खाते तयार करू शकतात. ते तुमचा vault वाचू शकत नाहीत, परंतु ते resources वापरतात आणि तुमच्या private instance चे रूपांतर एका open service मध्ये करतात. तुम्ही हे उघडे ठेवले आहे हे /admin कडून समजते, ज्यामध्ये तुम्ही कधीही न तयार केलेली accounts दिसतील.
सार्वजनिक signups पुन्हा सुरू न करता नंतर कुटुंब किंवा टीममधील सदस्यांना जोडण्यासाठी, /admin मधील Invite User बटण वापरा; त्या प्रक्रियेसाठी SMTP कॉन्फिगर केलेले असणे आवश्यक आहे जेणेकरून invitee ला त्यांची link मिळेल.
Step 5 — /admin वर पोहोचणे
https://vault.example.com/admin वर जा आणि plaintext admin token प्रविष्ट करा (ही एक random string आहे, किंवा तुम्ही hash केलेली password आहे — स्वतः hash नाही). आत तुम्ही users ची यादी पाहू शकता, settings बदलू शकता, 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 कनेक्ट करा
सर्व अधिकृत clients स्वतःच्या server कडे निर्देश करू शकतात. त्यामुळे Bitwarden desktop, mobile किंवा browser client नेहमीच्या stores मधून install करा — तुम्हाला कोणत्याही विशेष Vaultwarden build ची गरज नाही.
Log in करण्यापूर्वी, login screen वरील settings gear (ज्यावर Self-hosted किंवा Region → Self-hosted असे लिहिलेले आहे) उघडा, Server URL https://vault.example.com वर सेट करा आणि save करा. त्यानंतर, तुम्ही नोंदणीकृत ईमेल आणि master password वापरून log in करा; client लगेच कनेक्ट झाला पाहिजे आणि credentials fill व save करण्याचा पर्याय दाखवला पाहिजे.
जर client This is not a recognized Bitwarden server. You may need to check with your provider or update your server. दाखवत असेल, तर URL चुकीची आहे, http वापरले जात आहे, किंवा certificate विश्वसनीय नाही — प्रथम https://vault.example.com ब्राउझरमध्ये व्यवस्थित लोड होते की नाही ते तपासा. इतर devices वरील slow updates हे WebSocket push मुळे होतात, ज्याबद्दल खाली माहिती दिली आहे.
Step 7 — login endpoint साठी Fail2ban jail
Vaultwarden प्रत्येक अयशस्वी login LOG_FILE मध्ये सेट केलेल्या file मध्ये log करते — brute-force पासून संरक्षणासाठी याची गरज असते. जर तुम्ही आधीच Fail2ban वापरत नसाल, तर त्याची install आणि basics प्रक्रिया Fail2ban SSH hardening guide मध्ये दिली आहे; येथे आपण vault साठी एक jail जोडणार आहोत.
प्रथम host वर named volume कुठे आहे ते शोधा, जेणेकरून Fail2ban log वाचू शकेल:
docker volume inspect vaultwarden_vw-data --format '{{ .Mountpoint }}'हे /var/lib/docker/volumes/vaultwarden_vw-data/_data सारखे काहीतरी print करेल; त्यातील 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 = 3600sudo systemctl restart fail2ban ने reload करा आणि sudo fail2ban-client status vaultwarden ने खात्री करा.
या संरक्षणाचे यश तीन Docker तपशिलांवर अवलंबून आहे. पहिले, जर प्रत्येक अयशस्वी प्रयत्नानंतर log मध्ये IP: 127.0.0.1 किंवा तुमच्या proxy चा address दिसत असेल, तर Vaultwarden proxy ला ban करेल — IP_HEADER मध्ये तुमच्या proxy ने पाठवलेला header सेट करा (Traefik साठी X-Forwarded-For, वरील nginx block साठी X-Real-IP, आणि Cloudflare च्या मागे CF-Connecting-IP). दुसरे, योग्य iptables chain तुमच्या proxy वर अवलंबून आहे: जर Traefik container म्हणून ports publish करून चालत असेल, तर traffic Docker च्या FORWARD path मधून जातो, म्हणून ban वरीलप्रमाणे DOCKER-USER मध्ये असणे आवश्यक आहे; परंतु जर तुम्ही Step 1 मधील host-nginx पर्याय निवडला असेल, तर connections host च्या INPUT chain वर nginx मध्ये संपतात आणि DOCKER-USER ban त्यांना कधीच पाहू शकणार नाही — अशा परिस्थितीत chain = DOCKER-USER ओळ काढून टाका जेणेकरून Fail2ban default INPUT chain वापरेल. तिसरे, port-based default ऐवजी banaction = iptables-allports वापरा — या jail मध्ये कोणताही port परिभाषित केलेला नाही, आणि DOCKER-USER मधील all-ports ban offending user ला machine वरील प्रत्येक published service पासून पूर्णपणे block करेल.
Step 8 — vault चा backup घ्या, आणि नंतर ते restore करा
vw-data volume तुमचा password manager आहे. यामध्ये db.sqlite3 (प्रत्येक entry), attachments/ आणि sends/ directories, login sessions sign करणारे rsa_key.* files, आणि admin panel मधील config.json समाविष्ट असतात. जर backup मध्ये यांपैकी काहीही सुटले, तर गरज पडल्यावर तो fail होईल.
Vaultwarden डेटा लिहित असताना db.sqlite3 copy केल्यास अर्धवट लिहिलेली किंवा corrupt file मिळू शकते, म्हणून cold snapshot घ्या — यासाठी फक्त काही सेकंद लागतात:
#!/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दररोज रात्री cron द्वारे हे रन करा आणि .tgz ला सर्व्हरच्या बाहेर copy करा — ज्या सर्व्हरचे संरक्षण करायचे आहे त्याच सर्व्हरवर backup ठेवणे म्हणजे backup नव्हे. ते सुरक्षितपणे पाठवण्याचा सर्वोत्तम मार्ग म्हणजे दुसऱ्या सर्व्हरवर किंवा object storage वर nightly restic backup घेणे, जे archive encrypt करते आणि repeated snapshots साठी deduplication करते. Admin panel मधील Backup Database बटण हे SQLite file साठी एक सोपा पर्याय आहे, परंतु त्यामध्ये attachments आणि keys समाविष्ट नसतात.
आता खरी backup आणि केवळ एक आशा यातील फरक ठरवणारी प्रक्रिया — एकदा restore करून ते काम करते की नाही याची खात्री करा:
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 करा आणि entries उपलब्ध आहेत की नाही ते तपासा: जर त्या असतील, तर तुमचा database, RSA keys आणि master password व्यवस्थित काम करत आहेत, आणि तुम्ही काही मिनिटांत नवीन VPS वर सर्व काही पुन्हा तयार करू शकता. Ctrl-C दाबून container थांबवा आणि /tmp/vw-restore डिलीट करा.
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 मध्ये वैध padlock दिसत असल्याची खात्री करा, त्यानंतर client च्या self-hosted settings मध्ये ती पुन्हा प्रविष्ट करा.
/admin योग्य पासवर्ड नाकारते. 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 व्यवस्थित काम करते, फक्त sync होण्यासाठी vault उघडणे आवश्यक आहे. v1.31.0 पासून जुना dedicated port 3012 काढून टाकण्यात आला आहे, त्यामुळे आता वेगळ्या WebSocket route ची गरज नाही.
Fail2ban ban दाखवते पण attacker कनेक्ट होत राहतो. IP_HEADER चुकीचे असल्यामुळे 127.0.0.1 ban होत आहे, किंवा ban चुकीच्या iptables chain मध्ये आहे — chain = DOCKER-USER आणि banaction = iptables-allports सेट करा.
Upgrades
नवीन image pull करा आणि recreate करा; named volume आणि तुमचा सर्व डेटा सुरक्षित राहील:
docker compose pull
docker compose up -dVaultwarden चे नियमित releases येतात. patch version फिक्स करण्याऐवजी project's release notes तपासा, कारण काही releases मध्ये migration notes असतात. कोणत्याही major bump पूर्वी नवीन backup घ्या; तुम्ही tarball एका नवीन volume मध्ये restore करून roll back करू शकता.
FAQ
Vaultwarden आणि Bitwarden एकच आहेत का?
हे एक सुसंगत (compatible) आणि स्वतंत्र सर्व्हर आहे, अधिकृत सर्व्हर नाही. Vaultwarden मध्ये Bitwarden सर्व्हर API, Rust मध्ये पुन्हा कार्यान्वित (re-implement) केले आहे. त्यामुळे अधिकृत डेस्कटॉप, मोबाईल, ब्राउझर आणि CLI क्लायंट्स कमी संसाधनांमध्ये (resources) त्यावर काम करू शकतात. व्हॉल्ट फॉरमॅट सारखेच असल्याने, तुम्ही एक्सपोर्ट आणि इम्पोर्ट करून दोन्ही दिशांना डेटा स्थलांतरित (migrate) करू शकता.
मला खरोखर HTTPS ची गरज आहे का, की मी माझ्या LAN वर http वर चालवू शकतो?
localhost टेस्ट सोडून इतर सर्व कामांसाठी तुम्हाला HTTPS आवश्यक आहे. Bitwarden वेब व्हॉल्ट आणि एक्सटेंशन्स ब्राउझरच्या Web Crypto API चा वापर करतात, जे फक्त सुरक्षित कॉन्टेक्स्टमध्ये उपलब्ध असते. त्यामुळे साध्या http वर क्लायंट Cannot read properties of undefined एरर दाखवतो आणि लॉगिन होत नाही. फक्त http://localhost हे http ॲड्रेस काम करते, म्हणूनच Step 8 मधील रिस्टोर टेस्टमध्ये SSH टनेल वापरला जातो.
माझ्या सर्व्हरवर अनोळखी व्यक्तींची नोंदणी (registration) मी कशी थांबवू शकतो?
तुमचे स्वतःचे खाते तयार केल्यावर लगेच Compose फाईलमध्ये SIGNUPS_ALLOWED: "false" सेट करा आणि docker compose up -d रन करा. त्यानंतर, /admin मधील Invite User बटण वापरून नवीन लोकांना आमंत्रित करा. यासाठी SMTP कॉन्फिगर केलेले असणे आवश्यक आहे जेणेकरून त्यांना आमंत्रण लिंक मिळेल. अनपेक्षित खाती तयार झाली नाहीत याची खात्री करण्यासाठी वेळोवेळी ॲडमिन युजर लिस्ट तपासा.
मी माझ्या Vaultwarden व्हॉल्टचा बॅकअप कसा घेऊ?
कंटेनर काही वेळासाठी थांबवा आणि संपूर्ण vw-data व्हॉल्यूम आर्काइव्ह करा — db.sqlite3, attachments/, sends/, config.json आणि rsa_key.* फाईल्स — त्यानंतर आर्काइव्ह सर्व्हरवरून कॉपी करा, यासाठी nightly cron वापरणे उत्तम. सर्व्हर सुरू असताना थेट SQLite फाईल कॉपी केल्यास डेटा करप्ट होण्याचा धोका असतो, म्हणून बॅकअप 'cold' (सर्व्हर थांबवून) घ्यावा. सर्वात महत्त्वाचे म्हणजे, बॅकअपवर अवलंबून राहण्यापूर्वी तो खरा आहे की नाही हे पाहण्यासाठी, एकदा एखाद्या तात्पुरत्या कंटेनरमध्ये तो रिस्टोर करून लॉगिन करून पहा.
पासवर्ड स्वतःच्या सर्व्हरवर होस्ट करणे खरोखर सुरक्षित आहे का?
हो, जेव्हा तुम्ही या मार्गदर्शिकेतील तीन गोष्टी पाळता: खरे HTTPS, बंद केलेली नोंदणी (closed signups) आणि मजबूत ॲडमिन टोकन, आणि तपासलेले बॅकअप्स. तुमचा व्हॉल्ट तुमच्या मास्टर पासवर्डने क्लायंट-साइडला एन्क्रिप्ट केला जातो, त्यामुळे सर्व्हरला देखील तुमचे पासवर्ड कधीही स्पष्ट स्वरूपात दिसत नाहीत — मास्टर पासवर्डशिवाय चोरी झालेली db.sqlite3 फाईल निरुपयोगी आहे. मात्र, पॅचिंग आणि बॅकअपची जबाबदारी आता तुमची असेल, म्हणूनच Fail2ban आणि रिस्टोर करण्याची पद्धत येथे अनिवार्य आहे.