Jinsi ya kusakinisha Vaultwarden kwenye VPS
Jifunze kusakinisha Vaultwarden kwa kutumia Docker kwenye VPS. Pata mwongozo wa kuweka HTTPS, kuzuia usajili wa umma, na kuhakikisha backup za nywila zako.
Unachojenga
Msimbo wa nywila (password manager) unaomiliki kikamilifu: Vaultwarden inayojiendesha kwenye container ndogo nyuma ya reverse proxy inayotumia HTTPS, huku apps rasmi za Bitwarden kwenye simu, laptop, na kivinjari (browser) zikiunganishwa nayo. Vaultwarden inatekeleza upya Bitwarden server API kwa kutumia Rust na inatumia itifaki sawa na bitwarden.com, hivyo kila client rasmi inafanya kazi nayo bila mabadiliko — lakini inatumia takriban RAM ya 100 MB badala ya stack rasmi inayotumia container nyingi.
Usakinishaji wenyewe ni mistari 12 ya Compose. Mambo matatu muhimu — na yanayoweza kusababisha hitilafu — ni haya: TLS lazima iwepo kabla ya kufungua web vault, usajili wa umma lazima ufungwe mara tu akaunti yako inapoundwa, na volume ya data lazima iwekwe kwenye backup na ifanyiwe majaribio ya kurejesha (test-restore), kwa sababu directory hiyo moja ina kila nywila unayomiliki.
Mahitaji ya awali na changamoto za kweli
- VPS yenye Docker Engine na plugin ya Compose, kwenye seva mpya ya Ubuntu 24.04 KVM yenye root au sudo. RAM ya 512 MB inatosha; 1 GB ni nzuri zaidi. Hii ni moja ya programu nyepesi zaidi unazoweza kuendesha — iko juu kwenye orodha ya huduma zinazostahili kujihostia.
- Domain yenye rekodi ya A (na AAAA ikiwa una IPv6) inayoelekeza
vault.example.comkwenye VPS. Cheti cha TLS hutolewa kwa jina hili hasa, hivyo DNS lazima itatue kabla ya kuanza. - Port 80 na 443 zikiwa wazi kwa mtandao, zikihudumiwa na reverse proxy yako — usitumie Vaultwarden moja kwa moja. Port 80 hutumika tu kwa ACME certificate challenge na kuelekeza HTTP kwenda HTTPS.
- Changamoto kubwa ya kwanza: Bitwarden clients hukataa kuwasiliana na seva ambayo haina HTTPS. Hakuna njia ya "jaribu kupitia http kwanza" — njia hiyo haifanyi kazi kwa sababu maalum itakayozingatiwa baadaye.
Kwa nini Vaultwarden, na si stack rasmi ya Bitwarden
Inatumia client zilezile, lakini ina matumizi madogo sana ya rasilimali. Bitwarden rasmi ya self-hosted inakuja kama mkusanyiko wa container (MSSQL, Nginx, Identity, Api, Admin na nyinginezo) na inahitaji takriban RAM ya GB 2. Vaultwarden ni binary moja inayohifadhi kila kitu kwenye database ya SQLite kwa kiofao, na inatumia megabytes chache tu wakati ikiwa imetulia. Kwa mtu mmoja, familia, au timu ndogo, ndio chaguo bora, na kwa sababu inatekeleza Bitwarden API kwa usahihi, data yako inaweza kuhamishwa kati yake na bitwarden.com.
Unapoteza sehemu kubwa ya vipengele vya enterprise: hakuna SCIM provisioning (ingawa OpenID Connect SSO ya majaribio ilionekana kwenye 1.35.0), na wewe ndiye msimamizi, hivyo kutoa patch, HTTPS, na backup ni kazi yako. Mwongozo huu unahusu kazi hizo tatu.
Kwa nini HTTPS si hiari
Bitwarden web vault na browser extensions hutumia Web Crypto API (window.crypto.subtle) kutengeneza funguo za usimbaji (encryption keys) kwenye kivinjari. Kivinjari huweka crypto.subtle wazi kwenye secure context pekee — yaani HTTPS, au hali maalum ya http://localhost. Kupitia http://vault.example.com ya kawaida, ni undefined, hivyo programu inatoa kosa mara tu inapotengeneza funguo, na console huonyesha:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'importKey')Ukurasa hukwama au huonyesha kosa la jumla la crypto, na hakuna anayeingia (login). Client za desktop, mobile, na browser hufanya ukaguzi wao wenyewe dhidi ya URL inayojihosti, na dhidi ya endpoint ya http (au isiyofikika) hukataa kwa kusema:
This is not a recognized Bitwarden server. You may need to check with your provider or update your server.Zote zina sababu moja: hakuna HTTPS halali. Kwa hivyo, weka TLS kwanza na usifungue vault kupitia http, hata mara moja kwa ajili ya kuangalia haraka.
Hatua ya 1 — DNS na reverse proxy (TLS kwanza)
Elekeza rekodi kwenye VPS yako na uthibitishe kuwa inatoa anwani sahihi:
dig +short vault.example.comMstari unaochapishwa lazima uwe IP ya VPS yako. Ikiwa ni tupu au si sahihi, rekebisha DNS na usubiri muda wa TTL — utoaji wa cheti hushindwa dhidi ya jina ambalo halitambuliki.
Kwa sehemu ya mbele ya HTTPS, mwongozo huu unatumia Traefik, ambayo hutoa na kuhuisha cheti za Let's Encrypt kiotomatiki na kuunganishwa moja kwa moja kwenye Compose. Ikiwa bado haujatumia, fuata usimbuaji wa reverse proxy wa Traefik na usanidi wa TLS wa kiotomatiki kwanza; inatengeneza mtandao wa nje wa Docker (proxy hapa chini) na ACME resolver (letsencrypt) ambapo huduma ya Vaultwarden huunganishwa. Nginx ya kawaida yenye cheti iliyotolewa kwa mkono hufanya kazi sawa upande wa Vaultwarden.
Unapendelea nginx na Certbot badala ya Traefik? Weka Vaultwarden kwenye 127.0.0.1:8080 (ongeza ports: ["127.0.0.1:8080:80"] kwenye huduma na uondoe lebo za Traefik), kisha toa cheti na uweke proxy kwake. Sehemu ya cheti imeelezewa kwenye kutoa cheti za Let's Encrypt kwa kutumia Certbot na nginx. Hatua muhimu ya ziada ni WebSocket upgrade kwenye njia ya arifa:
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";
}
}Zingatia mstari wa X-Real-IP — ndio unaoruhusu Fail2ban baadaye kuona mshambuliaji halisi badala ya 127.0.0.1. Kila kitu kingine katika mwongozo huu ni sawa iwe Traefik au nginx iko mbele.
Hatua ya 2 — faili ya Compose
Tengeneza kundi la folda la mradi kwanza. Mwongozo huu unatumia /opt/vaultwarden, ambayo hufanya jina la mradi wa Compose — na hivyo kuleta utabiri wa volume ya data, vaultwarden_vw-data — hatua za Fail2ban na backup hapa chini zinategemea jina hilo sahihi.
sudo mkdir -p /opt/vaultwarden
cd /opt/vaultwardenTengeneza .env kwa ajili ya siri ya admin na faili ya Compose kwenye folda hiyo.
# .env
ADMIN_TOKEN=paste-a-strong-token-hereZalisha token hiyo kwa kutumia openssl rand -base64 48 na ubandike hapo. (Njia imara zaidi ya hashing itafundishwa baadaye; mfululizo mrefu wa herufi za nasibu unatosha kwa kuanza.)
# 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: trueMambo mawili kuhusu faili hii ndiyo msingi wa usanifu mzima. Hakuna ports: mapping, kwa hivyo Vaultwarden inaweza kufikiwa kupitia Traefik na TLS yake pekee — kuchapisha port yake kwenye host husababisha watu kutumia vault kupitia http kwa bahati mbaya. Pia, DOMAIN lazima iwe URL kamili ya HTTPS ya hadhara: imewekwa ndani ya viungo vya viambatisho, WebAuthn 2FA, na endpoint ya arifa, hivyo thamani isiyo sahihi au ya http itavuruga vitu hivyo hata kama tovuti inafunguka. Tag ya latest ni ukiukaji wa makusudi wa sheria ya kawaida ya kutotumia latest — Vaultwarden hutoa matoleo yake ya stable kama picha moja inayobadilika (rolling image), huku :testing ikiwa kama njia tofauti ya pre-release — hivyo sasisha kwa makusudi na upitie maelezo ya toleo kabla ya ku-pull.
Iwashe na uangalie log:
docker compose up -d
docker compose logs -f vaultwardenKuanza kwa usahihi huisha na mstari kama Rocket has launched from http://0.0.0.0:80. Mpe Traefik sekunde chache ili achukue cheti, kisha pakia https://vault.example.com — unapaswa kupata Bitwarden web vault ikiwa na alama ya kufuli halali na bila onyo la cheti.
Hatua ya 3 — ADMIN_TOKEN imara, na mtego wa $$
ADMIN_TOKEN hulinda /admin, panel inayoweza kusoma kila mtumiaji na mipangilio kwenye instance yako, hivyo itumie kama nywila ya root. Njia mbili zinafanya kazi.
Njia rahisi ni mfululizo wa herufi (string) wa nasibu uliotengeneza tayari kwa kutumia openssl rand -base64 48. Kwa sababu base64 haijawahi kuwa na $, inaingia moja kwa moja kwenye .env bila kuhitaji escaping.
Njia iliyoboreshwa ni hash ya Argon2 PHC, hivyo token ya plaintext haihifadhiwi kwenye diski. Tengeneza moja kwa kutumia picha (image) hiyo hiyo:
docker run --rm -it vaultwarden/server /vaultwarden hash --preset owaspInakuuliza mara mbili na kuchapisha mfululizo wa herufi unaoanza na $argon2id$v=19$.... Hapa kuna mtego unaowapotezea watu saa moja: Docker Compose inachukulia $ kama variable interpolation, hivyo lazima uongeze kila $ kuwa $$ unapobandika hash hiyo kwenye faili ya Compose. Iweke moja kwa moja chini ya environment:, si kupitia .env, na usiiweke ndani ya alama za nukuu (quotes):
environment:
ADMIN_TOKEN: $$argon2id$$v=19$$m=19456,t=2,p=1$$c29tZXNhbHQ$$RdescudvJCsgt3ub+b+dWRWJTmaaJObGUkiacha alama za $ pekee, Compose itatoa onyo la The "argon2id" variable is not set na kufuta token, kisha /admin itakataa nywila yako sahihi. Kimbiza docker compose up -d, na uhifadhi plaintext uliyoweka wakati wa kuulizwa kwenye mfumo wako wa kuhifadhi nywila.
Hatua ya 4 — usajili akaunti yako, kisha funga mlango
Tumia SIGNUPS_ALLOWED: "true", fungua https://vault.example.com, bonyeza Create account, na usajili kwa barua pepe yako na nywila kuu (master password) imara. Nywila hii kuu haiwezi kupatikana tena — hakuna chaguo la kuifuta — hivyo iweke mahali salama kwanza.
Sasa funga mlango. Hariri faili ya Compose ili kuzima usajili wa wapya:
SIGNUPS_ALLOWED: "false"Tumia tena docker compose up -d. Hii si hatua ya kuimarisha mfumo (hardening) ambayo unaweza kuiahirisha. Ikiachwa wazi, mtu yeyote atakayepata URL — ikiwemo roboti za utafutaji (crawlers) — anaweza kujisajili kwenye seva yako. Hawataweza kusoma vault yako, lakini watatumia rasilimali zako na kuifanya instance yako ya kibinafsi kuwa huduma ya wazi. Dalili ya kuacha usajili wazi ni: /admin inaonyesha akaunti ambazo hukuwahi kuzitengeneza.
Ili kuongeza familia au wafanyakazi baadaye bila kufungua tena usajili wa hadhara, tumia kitufe cha Invite User kwenye /admin; njia hiyo inahitaji SMTP iwe imesanidiwa ili mwaliki apokee kiungo chake.
Hatua ya 5 — kufikia /admin
Nenda kwenye https://vault.example.com/admin na uingize admin token ya plaintext (string ya nasibu, au password uliyoi-hash — usitumie hash yenyewe). Ndani yake unaweza kuorodhesha watumiaji, kurekebisha mipangilio, kutuma barua pepe ya majaribio, na kuchukua snapshot ya database.
Ikiwa ukurasa unarudisha 404 Not Found, ADMIN_TOKEN imekosa au haijapangwa, hali hii inazima panel nzima — hii ni chaguo sahihi ikiwa hutahitaji kamwe. Ikiwa ukurasa unafunguka lakini unakataa token yako, angalia tatizo la escaping la $$ kwenye orodha ya makosa hapa chini. Umesahau token? Hakuna sehemu ya kurejesha nenosiri; hariri .env au Compose file, weka token mpya, na docker compose up -d.
Hatua ya 6 — unganisha client za Bitwarden
Kila client rasmi inaweza kuunganishwa na server inayojihosti, hivyo pakua Bitwarden desktop, mobile, au browser client kutoka kwenye maduka ya kawaida — hauhitaji build maalum ya Vaultwarden.
Kabla ya kuingia, fungua alama ya mipangilio (settings gear) kwenye skrini ya kuingia (yenye lebo Self-hosted au Region → Self-hosted), weka Server URL kuwa https://vault.example.com, kisha hifadhi. Baada ya hapo, ingia ukitumia barua pepe na password kuu uliyojisajili; client inapaswa kuunganishwa mara moja na kutoa chaguo la kujaza na kuhifadhi taarifa zako.
Ikiwa client inaonyesha This is not a recognized Bitwarden server. You may need to check with your provider or update your server., URL ni mbaya, inatumia http, au cheti (certificate) hakiamini — hakikisha kwanza kuwa https://vault.example.com inafunguka vizuri kwenye browser. Masuala ya kuchelewa kwa updates kwenye vifaa vingine yanatokana na WebSocket push, ambayo imeelezwa hapa chini.
Hatua ya 7 — jail ya Fail2ban kwa ajili ya login endpoint
Vaultwarden huweka rekodi ya kila jaribio la kuingia ambalo limeshindwa kwenye faili iliyowekwa na LOG_FILE — hii ndiyo inayohitajika kwa ulinzi dhidi ya brute-force. Ikiwa bado haujatumia Fail2ban, maelezo ya usakinishaji na misingi yapo kwenye mwongozo wa kuimarisha Fail2ban SSH; hapa tunaongeza jail moja kwa ajili ya vault.
Kwanza, tafuta mahali ambapo named volume ilipo kwenye host, ili Fail2ban iweze kusoma log:
docker volume inspect vaultwarden_vw-data --format '{{ .Mountpoint }}'Hii itatoa matokeo kama /var/lib/docker/volumes/vaultwarden_vw-data/_data; log ipo ndani ya vaultwarden.log. Tengeneza filter:
# /etc/fail2ban/filter.d/vaultwarden.conf
[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =Na 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 = 3600Pakia upya kwa kutumia sudo systemctl restart fail2ban na uthibitishie kwa sudo fail2ban-client status vaultwarden.
Maelezo matatu ya Docker huamua kama ulinzi huu utafanya kazi. Kwanza, ikiwa log inaonyesha IP: 127.0.0.1 au anwani ya proxy yako kwenye kila jaribio lililoshindwa, Vaultwarden itamzuia proxy — weka IP_HEADER kuwa header inayotumwa na proxy yako (X-Forwarded-For kwa Traefik, X-Real-IP kwa nginx block iliyo juu, CF-Connecting-IP nyuma ya Cloudflare). Pili, iptables chain sahihi inategemea proxy yako: ikiwa Traefik inafanya kazi kama container yenye ports zilizowaziwa, trafiki hupitia njia ya FORWARD ya Docker, hivyo ban lazima iwe kwenye DOCKER-USER kama ilivyo juu; lakini ikiwa ulichagua chaguo la host-nginx kutoka Hatua ya 1, miunganisho inaishia kwenye nginx kwenye chain ya INPUT ya host na ban ya DOCKER-USER haitaiona — katika hali hiyo futa mstari wa chain = DOCKER-USER ili Fail2ban itumie chain ya INPUT ya kawaida. Tatu, tumia banaction = iptables-allports badala ya default inayotegemea port — jail hii haibainishi port yoyote, na ban ya port zote kwenye DOCKER-USER itamzuia mtendaji kutoka kwenye kila huduma iliyowaziwa kwenye mashine hiyo.
Hatua ya 8 — nakili vault, kisha urejeshe (restore)
Volume ya vw-data ndiyo programu yako ya usimamizi wa nywila. Inahifadhi db.sqlite3 (kila ingizo), directory za attachments/ na sends/, faili za rsa_key.* zinazotia saini vikao vya kuingia, na config.json kutoka kwenye jopo la admin. Nakala ya fahali (backup) inayopuuza sehemu yoyote kati ya hizi itashindwa wakati unahitaji.
Kunakili db.sqlite3 wakati Vaultwarden inaandika kunaweza kusababisha upatikanaji wa faili iliyoandikwa nusu na kuharibika, hivyo chukua snapshot wakati mfumo umesimama — muda wa kusimama ni sekunde chache tu:
#!/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 vaultwardenIruni kupitia cron kila usiku na uhamishe .tgz nje ya mfumo — nakala inayobaki kwenye seva unayolinda haina maana. Njia bora ya kuihifadhi ni nakala ya restic kila usiku kwenda kwenye seva nyingine au object storage, ambayo inafunga (encrypt) faili na kuondoa nakala zinazojirudia. Kitufe cha Backup Database kwenye jopo la admin ni njia ya haraka ya kuchukua snapshot ya faili ya SQLite pekee, lakini haijumuishi viambatisho na funguo (keys).
Sasa hatua inayotofautisha nakala halisi na ile ya matumaini — irejeshe mara moja ili kuthibitisha inafanya kazi:
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/serverKutoka kwenye laptop yako, tumia ssh -L 8888:127.0.0.1:8888 you@your-vps kuunganisha na ufungue http://localhost:8888. Kwa sababu localhost ni mazingira salama, crypto.subtle inapatikana na vault itafunguka (decrypt) kupitia http ya kawaida hapa — ndiyo sehemu pekee inayoruhusiwa. Ingia kwa kutumia nywila yako kuu (master password) na uhakikishe ingizo zako zipo: ikiwa zipo, database yako, funguo za RSA, na nywila yako kuu zote zimepitia mzunguko mzima, na unaweza kujenga mfumo mpya kwenye VPS mpya ndani ya dakika chache. Simamisha container kwa kutumia Ctrl-C na ufute /tmp/vw-restore.
Njia za kushindili, pamoja na maandishi utakayoyaona
Cannot read properties of undefined (reading 'importKey') kwenye console ya kivinjari. Vault ilipakiliwa kupitia http, hivyo crypto.subtle haipo; iwasiliane kupitia https:// pekee na uongeze mwelekeo (redirect) wa HTTP-to-HTTPS kwenye proxy.
This is not a recognized Bitwarden server... kwenye mteja (client). URL ya Server ni http, imekosewa, au cheti si cha kuaminika; hakikisha https://vault.example.com inaonyesha kufuli halali, kisha iandike tena kwenye mipangilio ya self-hosted ya mteja.
/admin inakataa nywila sahihi. Hash ya Argon2 imepoteza escaping yake — kila $ lazima iwe $$ kwenye Compose — au umeingiza hash badala ya maandishi plain (plaintext) yanayowakilishwa.
Sync ya vifaa tofauti ni ya polepole; console inaonyesha WebSocket connection to 'wss://vault.example.com/notifications/hub' failed. Proxy haipitishi (forwarding) header za Upgrade/Connection; Traefik hufanya hivi kiotomatiki, nginx inahitaji mistari miwili ya upgrade kutoka Hatua ya 1. Vault bado inafanya kazi, inasawazisha (syncing) tu wakati inafunguliwa. Port ya zamani ya 3012 haipo tangu v1.31.0, hivyo huna haja ya njia (route) tofauti ya WebSocket.
Fail2ban inaripoti ban lakini mshambuliaji anaendelea kuunganishwa. Inaban 127.0.0.1 kwa sababu IP_HEADER ni mbaya, au ban imewekwa kwenye iptables chain isiyo sahihi — weka chain = DOCKER-USER na banaction = iptables-allports.
Upgrades
Pakua picha (image) mpya na uunda upya; volume iliyopewa jina na data yako vyote vitabaki:
docker compose pull
docker compose up -dVaultwarden hutoa matoleo mapya mara kwa mara. Fuatilia maelezo ya matoleo ya mradi badala ya kubandika toleo la patch, kwa sababu baadhi ya matoleo yana maelezo ya uhamishaji (migration). Fanya nakala ya ziada (backup) kabla ya mabadiliko makubwa yoyote; unaweza kurudisha hali ya awali kwa kuweka faili ya tarball kwenye volume mpya.
FAQ
Je, Vaultwarden ni sawa na Bitwarden?
Ni seva inayojitegemea na inayozingatia utangamano, siyo ile rasmi. Vaultwarden imetengenezwa upya kwa kutumia Bitwarden server API katika Rust, hivyo wateja rasmi wa desktop, mobile, browser na CLI yote hufanya kazi nayo kwa kutumia rasilimali kidogo zaidi kuliko stack rasmi. Muundo wa vault ni ule ule, hivyo unaweza kuhama upande wowote kwa kusafirisha (export) na kuingiza (import) data.
Je, nina hitaji la HTTPS, au naweza kuitumia kupitia http kwenye LAN yangu?
Unahitaji HTTPS kwa lolote isipokuwa kwa majaribio ya localhost. Bitwarden web vault na extensions hutumia Web Crypto API ya kivinjari, ambayo inapatikana tu katika mazingira salama. Kwa kutumia http ya kawaida, mteja hutoa Cannot read properties of undefined na hautaweza kuingia (log in). Anwani pekee ya http inayofanya kazi ni http://localhost, ndiyo maana jaribio la kurejesha (restore) katika Hatua ya 8 linatumia SSH tunnel.
Ninawezaje kuwazuia watu wasiojulikana wasijiunge kwenye seva yangu?
Weka SIGNUPS_ALLOWED: "false" kwenye Compose file na uendeshe docker compose up -d mara baada ya kutengeneza akaunti yako mwenyewe. Baada ya hapo, ongeza watu wapya kupitia kitufe cha Invite User kwenye /admin, ambacho kinahitaji SMTP iwe imesanidiwa ili wapokee kiungo cha mwaliko. Kagua orodha ya watumiaji wa admin mara kwa mara ili kuhakikisha hakuna akaunti zisizotarajiwa zilizojitokeza.
Ninawezaje kuhifadhi nakala ya backup ya Vaultwarden yangu?
Simamisha container kwa muda mfupi na uweke kwenye kifurushi (archive) volume nzima ya vw-data — db.sqlite3, attachments/, sends/, config.json na faili za rsa_key.* — kisha nakili kifurushi hicho nje ya seva, ikiwezekana kwa kutumia cron ya kila usiku. Kunakili faili ya SQLite inayotumika wakati seva inafanya kazi kuna hatari ya kuharibu snapshot, hivyo itumie wakati seva imesimama. Muhimu zaidi, irejeshe mara moja kwenye container ya majaribio na uingie, ili ujue backup ni halisi kabla ya kuitegemea.
Je, ni salama kweli kuweka nywila zangu mwenyewe (self-host)?
Ndiyo, unapotekeleza mambo matatu yanayofundishwa mwongozo huu: HTTPS halisi, kusitisha usajili wa watu wapya pamoja na token ya admin yenye nguvu, na backup zilizojaribiwa. Vault yako imefungwa (encrypted) upande wa mteja kwa kutumia nywila yako kuu, hivyo hata seva haitaona nywila zako wazi — db.sqlite3 iliyoibiwa haina faida bila hiyo nywila. Changamoto ni kwamba ukarabati (patching) na backup sasa ni jukumu lako, ndiyo maana Fail2ban na taratibu za kurejesha (restore ritual) siyo za lazima hapa.