- Lekka implementacja w języku Rust, w pełni kompatybilna z oficjalnymi klientami Bitwarden.
- Uproszczone wdrażanie przy użyciu kontenerów Docker zapewniających pełną kontrolę prywatności.
- Idealne minimalne wymagania sprzętowe dla średnich serwerów lub Raspberry Pi.
Vaultwarden umożliwia hostowanie menedżera haseł kompatybilnego z klientami Bitwarden na własnym serwerze. W ten sposób możesz decydować o miejscu przechowywania informacji, kto może uzyskać dostęp do usługi i sposobie tworzenia kopii zapasowych.
Ważne jest, aby od początku wyjaśnić, że Vaultwarden nie jest oficjalnym serwerem BitwardenTo niezależna, oparta na społeczności implementacja napisana w języku Rust, która replikuje znaczną część API Bitwarden. Dzięki temu można jej używać z oficjalnymi aplikacjami mobilnymi, programami desktopowymi i rozszerzeniami Bitwarden.
Samodzielne hostowanie usługi zapewnia większą kontrolę, ale Nie gwarantuje to automatycznie większego bezpieczeństwaOd tego momentu odpowiadasz za instalowanie aktualizacji, zabezpieczanie dostępu, przeglądanie dzienników, utrzymywanie protokołu HTTPS i zapewnienie możliwości przywracania kopii zapasowych.
Czego potrzebujesz, aby zainstalować Vaultwarden z Dockerem

Zanim zaczniesz, będziesz potrzebować systemu kompatybilnego z Dockerem, który pozostanie włączony, gdy będziesz chciał synchronizować hasła. Może to być serwer Linux, serwer NAS, minikomputer PC lub Raspberry Pi z architekturą obsługiwaną przez obraz.
Będziesz także potrzebować:
- Silnik Dockera Zainstalowano i działa.
- Obecny dodatek Docker Compose.
- Folder, w którym dane mogą być trwale przechowywane.
- Dostęp do terminala z uprawnieniami do zarządzania Dockerem.
- Bezpieczna metoda dostępu, jeśli będziesz korzystać z usługi na innych urządzeniach.
Nie ma uniwersalnych wymagań dotyczących pamięci ani przestrzeni dyskowej dla wszystkich instalacji. Zużycie zależy od liczby użytkowników, załączników, rozmiaru pamięci masowej i innych usług uruchomionych na tym samym komputerze. Do użytku domowego jest to zazwyczaj lekka aplikacja, ale należy zarezerwować wystarczająco dużo miejsca. dane i ich kopie zapasowe.
Sprawdź instalację za pomocą:
docker --version
docker compose version
Jeśli oba polecenia pokazują wersję, możesz kontynuować.
Jak zainstalować Vaultwarden za pomocą Docker Compose
Utwórz dedykowany folder i wejdź do niego:
mkdir vaultwarden
cd vaultwarden
W folderze utwórz plik o nazwie compose.yml z tą początkową konfiguracją:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
ports:
- "127.0.0.1:8080:80"
Zgromadzenie ./vw-data:/data To jest niezbędne. Folder /data Zawiera bazę danych, załączniki, konfigurację i klucze używane przez serwer. Jeśli usuniesz kontener bez zachowania tego folderu, utracisz zapisane w nim informacje.
Adres 127.0.0.1 Ta początkowa instalacja odpowiada tylko na samym serwerze. Jest to odpowiednia konfiguracja do testowania Vaultwarden bez udostępniania portu w sieci.
Uruchom kontener:
docker compose up -d
Sprawdź jego status:
docker compose ps
docker compose logs --tail=100 vaultwarden
Z tego samego urządzenia możesz otworzyć:
http://localhost:8080
Dostęp przez localhost Służy to do dokończenia konfiguracji początkowej. Aby połączyć się z innego komputera, aplikacji mobilnej lub rozszerzenia, należy skonfigurować bezpieczny adres za pomocą protokołu HTTPS.
Jak założyć pierwsze konto i zamknąć rejestrację
Otwórz interfejs sieciowy, utwórz pierwsze konto i sprawdź, czy możesz się zalogować. Użyj długie, unikalne i łatwe do zapamiętania hasło główne, ponieważ zabezpiecza dostęp do całego magazynu.
Po utworzeniu niezbędnych kont edytuj compose.yml i zmiany:
SIGNUPS_ALLOWED: "true"
przez:
SIGNUPS_ALLOWED: "false"
Zastosuj zmianę poprzez ponowne utworzenie kontenera:
docker compose up -d
Vaultwarden domyślnie pozwala anonimowym użytkownikom na tworzenie kont. Niepotrzebne pozostawianie otwartej rejestracji ułatwia osobom trzecim zajmowanie miejsca lub korzystanie z serwera bez pozwolenia.
Jeśli później włączysz panel administracyjny, będziesz mógł wysyłać zaproszenia nawet przy wyłączonej rejestracji publicznej.
Dlaczego Vaultwarden potrzebuje protokołu HTTPS
Sklep internetowy korzysta z interfejsu API Web Crypto przeglądarki. Te funkcje kryptograficzne są zazwyczaj dostępne tylko w bezpieczne konteksty, takie jak HTTPS lub localhost.
Z tego powodu otwarcie http://192.168.1.50:8080 Na innym komputerze mogą być wyświetlane błędy, nawet jeśli kontener jest uruchomiony. Opublikowanie portu w sieci nie zastępuje konfiguracji HTTPS.
Istnieją trzy najpopularniejsze sposoby korzystania z Vaultwarden:
- Tylko serwer: dostęp przez
localhost, przydatne do testowania. - W sieci prywatnej lub VPN: ograniczony dostęp, ale zachowujący ważny certyfikat HTTPS.
- Z Internetu: domena, odwrotny serwer proxy, ważny certyfikat i poprawnie skonfigurowana zapora sieciowa.
Nie musisz otwierać Vaultwarden publicznie, aby korzystać z niego poza domem. Sieć VPN może ograniczyć dostęp do autoryzowanych urządzeń, ale adres używany przez klientów nadal musi mieć rozpoznawalny przez nich certyfikat.
Jak skonfigurować protokół HTTPS za pomocą Caddy
Caddy to jedna z najprostszych opcji, ponieważ może automatycznie żądać i odnawiać certyfikaty za pośrednictwem ACME. Aby skorzystać z certyfikatu publicznego, domena musi być kojarzona z Twoim serwerem, a niezbędne porty muszą być dostępne.
Wspólna konfiguracja Vaultwarden i Caddy może korzystać z tego pliku. compose.yml:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "false"
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: vaultwarden-caddy
restart: unless-stopped
depends_on:
- vaultwarden
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
Zastępuje vault.example.com dla Twojej domeny. Następnie utwórz plik o nazwie Caddyfile:
vault.example.com {
reverse_proxy vaultwarden:80 {
header_up X-Real-IP {remote_host}
}
}
Aktywuj usługi:
docker compose up -d
Caddy będzie wysyłać żądania do kontenera przez sieć wewnętrzną utworzoną przez Compose. Obecna konfiguracja obsługuje również powiadomienia WebSocket przez to samo miejsce docelowe, więc nie ma potrzeby publikowania kolejnego portu Vaultwarden.
Zmienna DOMAIN musi zawierać dokładny zewnętrzny adres URL, w tym https://Nieprawidłowy adres może powodować problemy z załącznikami, łączami, uwierzytelnianiem lub klientami.
Jak połączyć oficjalne aplikacje Bitwarden
Na ekranie logowania rozszerzenia, aplikacji mobilnej lub programie na komputerze otwórz selektor serwerów i wybierz opcję Samodzielnie hostowany.
Wpisz pełny adres:
https://vault.example.com
Zapisz ustawienia przed zalogowaniem. Aby zmiany zostały poprawnie zsynchronizowane, każdy klient musi być połączony z tym samym serwerem.
Jeśli korzystasz z certyfikatu wydanego przez prywatny urząd certyfikacji, musisz poprawnie zainstalować ten urząd i zaufać mu na wszystkich urządzeniach. Aby uniknąć problemów ze zgodnością, lepiej jest użyć ważnego certyfikatu publicznego lub rozwiązania prywatnego, którego łańcuch zaufania możesz właściwie kontrolować.
Po połączeniu klienta możesz Importuj hasła Chrome do Vaultwarden i sprawdź, czy wyświetlają się na wszystkich Twoich urządzeniach.
Jak zabezpieczyć panel administracyjny
Vaultwarden oferuje opcjonalny panel w /adminStąd możesz przeglądać użytkowników, organizacje, diagnostykę i niektóre opcje serwera.
Jeśli nie potrzebujesz panelu, najbezpieczniej będzie zostaw to wyłączoneAby włączyć tę opcję, należy ją skonfigurować ADMIN_TOKENZamiast przechowywać hasło w postaci zwykłego tekstu, generuje skrót Argon2id:
docker run --rm -it vaultwarden/server /vaultwarden hash
Polecenie poprosi o podanie hasła dwa razy i zwróci ciąg rozpoczynający się od $argon2id$.
Wygodnym sposobem na uniknięcie problemów ze znakami dolara jest zapisanie ich w pliku .env znajduje się obok compose.yml:
VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=...'
Następnie dodaj do usługi:
environment:
ADMIN_TOKEN: "${VAULTWARDEN_ADMIN_TOKEN}"
Jeśli wpiszemy skrót bezpośrednio w środku compose.yml, musisz podwoić każdy znak dolara jako $$ aby uniemożliwić Docker Compose interpretowanie go jako zmiennej.
Sprawdź przetworzoną konfigurację za pomocą:
docker compose config
Dostęp do panelu powinien być możliwy wyłącznie przez HTTPS. W miarę możliwości należy ograniczyć jego ścieżkę do sieci lokalnej, sieci VPN lub określonych adresów IP.
Należy pamiętać, że po zapisaniu opcji z /adminVaultwarden tworzy config.jsonJego wartości mają pierwszeństwo przed równoważnymi zmiennymi środowiskowymi. To pierwszeństwo wyjaśnia wiele przypadków, w których edycja polecenia Compose wydaje się nie powodować żadnych zmian.
Niezbędne środki ochrony Vaultwardenów
Bezpieczeństwo nie kończy się na włączeniu protokołu HTTPS. Przynajmniej zastosuj następujące środki:
- Wyłącz otwarty rejestr za pomocą
SIGNUPS_ALLOWED=false. - Użyj unikalnego i silnego hasła głównego.
- Aktywny uwierzytelnianie dwuetapowe dla wszystkich kont.
- Zapisz kod odzyskiwania uwierzytelnienia w innym bezpiecznym miejscu.
- Regularnie aktualizuj obraz i system hosta.
- Nie montuj niepotrzebnych folderów ani gniazda Docker wewnątrz kontenera.
- Ogranicz za pomocą zapory porty, które są naprawdę niezbędne.
- Nie udostępniaj publicznie bazy danych ani folderu
vw-data.
Fail2ban może blokować adresy, które gromadzą nieudane próby logowania, ale należy go starannie skonfigurować w przypadku obecności odwrotnego serwera proxy. Caddy lub Nginx muszą przesyłać prawdziwy adres IP; w przeciwnym razie Fail2ban może zablokować adres samego serwera proxy.
Możesz również wyłączyć wyświetlanie podpowiedzi dotyczących hasła. Podpowiedzi te mogą ułatwiać ataki polegające na odgadywaniu hasła, gdy serwer jest publicznie dostępny.
Aby dowiedzieć się więcej o tych praktykach, możesz zapoznać się z informacjami korzystaj z menedżerów haseł bezpiecznie.
Jak skonfigurować powiadomienia e-mail
Konfiguracja SMTP umożliwia wysyłanie zaproszeń, weryfikacji i powiadomień. Należy określić serwer, nadawcę, port, metodę zabezpieczeń i dane uwierzytelniające dostarczone przez usługę poczty e-mail.
Nie myl wiadomości e-mail SMTP z kopią zapasową sejfu. Nie powinieneś też polegać na nich jako jedynym sposobie odzyskiwania konta. Jeśli zapomnisz hasła głównego i nie masz skonfigurowanej innej metody odzyskiwania, możesz utracić dostęp do zaszyfrowanych danych.
Po zapisaniu ustawień wyślij wiadomość testową i sprawdź logi, jeśli nie dotrze. Sprawdź również foldery ze spamem i ograniczenia dostawcy SMTP.
Jak wykonać pełną kopię zapasową Vaultwarden
Baza danych SQLite przechowuje użytkowników, elementy, urządzenia i organizacje, ale Nie zawiera wszystkich plikówZałączniki i niektóre przesyłki są przechowywane w oddzielnych katalogach.
Pełna kopia powinna zawierać:
db.sqlite3lub spójną kopię bazy danych.- Folder
attachments. - Folder
sends, jeśli chcesz zachować te pliki. - Plik
config.json, jeśli używasz panelu. - Pliki
rsa_key*. - Pliki Compose, Caddy i ich zmienne.
Aby uzyskać prostą i spójną kopię zapasową, możesz tymczasowo zatrzymać Vaultwarden i zarchiwizować folder:
docker compose stop vaultwarden
tar -czf vaultwarden-backup-$(date +%F).tar.gz vw-data compose.yml Caddyfile .env
docker compose start vaultwarden
Plik może zawierać token administracyjny i dane uwierzytelniające SMTP. Zaszyfruj przed skopiowaniem do innego komputera lub zdalnego magazynu.
Jeśli nie chcesz zatrzymywać usługi, Vaultwarden zawiera polecenie wykorzystujące mechanizm kopiowania SQLite:
docker exec vaultwarden /vaultwarden backup
To polecenie chroni bazę danych, ale nadal należy tworzyć kopie zapasowe załączników, plików konfiguracyjnych i kluczy. Zautomatyzuj tworzenie kopii zapasowych, przechowuj co najmniej jedną kopię poza serwerem i okresowo testuj przywracanie.
Jak zaktualizować Vaultwarden za pomocą Dockera
Przed aktualizacją utwórz zweryfikowaną kopię. Następnie uruchom:
docker compose pull
docker compose up -d
Sprawdź status i najnowsze wiadomości:
docker compose ps
docker compose logs --tail=100 vaultwarden
Docker pobierze obraz i utworzy ponownie kontener, zachowując vw-dataNie należy używać poleceń globalnego czyszczenia bez wcześniejszego sprawdzenia, które kontenery, obrazy i sieci zostaną usunięte.
W instalacjach, w których stabilność ma kluczowe znaczenie, można naprawić konkretną wersję obrazu zamiast zawsze używać wersji domyślnej. latestW ten sposób możesz przejrzeć informacje o wydaniach i zdecydować, kiedy zastosować daną aktualizację.
Typowe błędy podczas instalacji Vaultwarden za pomocą Dockera
Interfejs działa na komputerze lokalnym, ale nie na innym komputerze.
Port jest ograniczony do 127.0.0.1 Albo przeglądarka odrzuca funkcje kryptograficzne podczas dostępu przez HTTP. Skonfiguruj adres HTTPS przed skorzystaniem z usługi z innych urządzeń.
Oficjalny klient nie może połączyć się z serwerem
Wybierz środowisko Samodzielnie hostowany i wprowadź dokładny adres https://Sprawdź certyfikat, DNS, serwer proxy i zmienną DOMAIN.
Kontener uruchamia się, ale dane znikają po jego ponownym utworzeniu.
Regulator głośności nie jest zainstalowany prawidłowo. Sprawdź, czy ./vw-data:/data pojawia się w ustawieniach i że uruchamiasz Compose z oczekiwanego folderu.
Nie mogę utworzyć innego konta
Si SIGNUPS_ALLOWED jest w falseDziałanie jest prawidłowe. Wyślij zaproszenie z panelu lub tymczasowo włącz rejestrację tylko na czas tworzenia konta.
Skrót ADMIN_TOKEN nie działa
Sprawdź interpolację znaków $Użyj pliku .env za pomocą pojedynczych cudzysłowów lub podwójnych symboli, jeśli wstawiasz ciąg bezpośrednio do Compose.
Zmienne środowiskowe wydają się być ignorowane
Sprawdź czy istnieje vw-data/config.jsonOpcje zapisane z panelu mogą zastąpić zmienne zdefiniowane w compose.yml.
Certyfikaty działają w przeglądarce, ale nie na urządzeniu mobilnym.
Urządzenie może nie ufać całemu łańcuchowi certyfikatów. Użyj uznanego urzędu certyfikacji lub poprawnie zainstaluj swój urząd prywatny i jego certyfikaty.
Załączniki nie działają
Sprawdź to DOMAIN Dopasuj adres zewnętrzny i upewnij się, że serwer proxy zezwala na wymagany rozmiar żądania. Sprawdź również dostępną przestrzeń i uprawnienia. vw-data.
Vaultwarden nie może zapisywać wewnątrz vw-data
Folder hosta ma niezgodne uprawnienia. Sprawdź właściciela i uprawnienia na podstawie błędu wyświetlanego w logach. Nie używaj. chmod 777 jako rozwiązanie trwałe.
Fail2ban blokuje niepoprawny adres
Serwer proxy nie przesyła prawdziwego adresu IP lub Fail2ban odczytuje niewłaściwe pole. Skonfiguruj go poprawnie. X-Real-IP lub nagłówek odpowiadający Twojemu serwerowi proxy.
Przywrócona kopia nie zawiera załączników
Kopia zapasowa dotyczyła tylko bazy SQLite. Proszę również przywrócić foldery. attachments y sends, oprócz konfiguracji i kluczy RSA.
Vaultwarden umożliwia korzystanie z organizacji i kolekcji udostępniaj hasła rodzinne Używając zgodnych klientów. Przed dodaniem kolejnych użytkowników sprawdź, czy protokół HTTPS, uwierzytelnianie dwuetapowe i kopie zapasowe działają poprawnie.
Rezultatem może być szybki, prywatny i elastyczny menedżer haseł, ale jego bezpieczeństwo zależy od konserwacji. Kontrola nad serwerem przynosi korzyści tylko wtedy, gdy towarzyszą jej aktualizacje, ograniczony dostęp i sprawdzona strategia odzyskiwania.
Jestem entuzjastą technologii, który swoje „geekowskie” zainteresowania przekształcił w zawód. Spędziłem ponad 10 lat mojego życia, korzystając z najnowocześniejszych technologii i majsterkując przy wszelkiego rodzaju programach z czystej ciekawości. Teraz specjalizuję się w technologii komputerowej i grach wideo. Dzieje się tak dlatego, że od ponad 5 lat piszę dla różnych serwisów poświęconych technologii i grom wideo, tworząc artykuły, których celem jest dostarczenie potrzebnych informacji w języku zrozumiałym dla każdego.
Jeśli masz jakieś pytania, moja wiedza obejmuje wszystko, co jest związane z systemem operacyjnym Windows, a także Androidem dla telefonów komórkowych. Moje zaangażowanie jest wobec Ciebie. Zawsze jestem gotowy poświęcić kilka minut i pomóc Ci rozwiązać wszelkie pytania, jakie możesz mieć w tym internetowym świecie.


