Hosting Vaultwarden na Managed VPS oznacza, że hasła Państwa i Państwa zespołu trafiają na maszynę, która należy do Państwa, a nasze zespoły dbają o jej aktualność i nadzorują ją dniem i nocą. Vaultwarden to wolne oprogramowanie na licencji AGPL-3.0. Ten poradnik podąża za jego oficjalną dokumentacją: instalacja przez Docker Compose, HTTPS, zamknięcie rejestracji, token administratora, to, co chroni sejf, baza danych, e-maile, kopie zapasowe i aktualizacje.
Autor: Simon Vasconcelos Lee
Opublikowano 8 listopada 2026Czas czytania: 15 minut
DOMAIN.SIGNUPS_ALLOWED: domyślnie zarejestrować się może każdy, kto dotrze do instancji. Sejf chronią następnie solidne hasło główne i uwierzytelnianie dwuskładnikowe.docker compose pull.Vaultwarden to serwer do zarządzania hasłami napisany w Ruście, przeznaczony do samodzielnego hostingu. Jego wiki kieruje go do osób prywatnych, rodzin i organizacji o ludzkiej skali. Sejf webowy jest dostarczany w jego obrazach Docker.
Udostępnia API zgodne z oficjalnymi klientami Bitwarden w przeglądarce, na komputerze i na telefonie. README zaznacza, że projekt nie jest powiązany z Bitwarden ani z Bitwarden, Inc., i prosi o zgłaszanie wszelkich problemów bezpośrednio jemu, niezależnie od używanego klienta, a nie oficjalnym kanałom pomocy.
/admin z ustawieniami, kontami i diagnostyką.Wiki wymienia też to, czego brakuje w porównaniu z serwerem oficjalnym, na przykład logowania kluczem dostępu, ról niestandardowych i niektórych polityk firmowych. Zaznacza, że funkcje przydatne głównie dużym organizacjom nie są priorytetem projektu: jeśli ich Państwo potrzebują, proszę przeczytać tę listę.
Vaultwarden jest udostępniany na GNU Affero General Public License, wersja 3. Tekst potwierdza nieograniczone prawo do uruchamiania niezmodyfikowanego programu. Mogą więc Państwo używać obrazu opublikowanego przez projekt dla swojej firmy i zespołu, bez zakupu licencji.
Artykuł 13 dodaje warunek właściwy dla AGPL: jeśli Państwo zmodyfikują program, Państwa wersja musi oferować każdemu, kto korzysta z niej zdalnie, przez sieć, możliwość bezpłatnego uzyskania jej kodu źródłowego.
README zaleca obrazy kontenerów. Na serwerze z zainstalowanym Dockerem proszę utworzyć katalog i umieścić w nim ten compose.yaml, zaczerpnięty z README i wiki:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data/:/data/
ports:
- 127.0.0.1:8000:80
docker compose up -d
127.0.0.1: jak w README, Vaultwarden jest osiągalny wyłącznie przez odwrotne proxy, postawione na tym samym serwerze.DOMAIN: podstawowy adres Państwa instancji, w https. Wiki ostrzega, że bez tego przestają działać pewne funkcje, w tym załączniki i linki z zaproszeniami.vw-data na dysku lokalnym: przechowuje wszystkie dane. Wiki wskazuje kłopoty SQLite na woluminie CIFS lub Samba, który nie obsługuje blokad.latest podąża za ostatnią opublikowaną wersją, a wiki poleca go w większości zastosowań. Tag taki jak 1.37.5 przypina wersję, a latest-alpine daje to samo na bazie Alpine.Państwa nazwa domeny wskazuje na serwer rekordami A i AAAA, a odwiedzający docierają na porty 80 i 443. Dopóki odwrotne proxy nie jest uruchomione, sejf webowy pozostaje bezużyteczny: proszę przejść od razu do następnej sekcji.
Projekt nie podaje wymagań dotyczących pamięci ani procesora; przedstawia się jedynie jako rozwiązanie na przypadki, w których oficjalna usługa, wymagająca dużo zasobów, nie pasuje. Rozmiar zależy od liczby kont i objętości załączników. Na Managed VPS wystarczy opisać nam swoje zastosowanie, a polecimy odpowiedni rozmiar.
Sejf webowy korzysta z API Web Crypto, które przeglądarki udostępniają tylko w kontekstach bezpiecznych: README podaje, że działa on dopiero po włączeniu HTTPS, a wiki uznaje HTTPS za „pretty much required”, czyli niemal obowiązkowy. Projekt zaleca odwrotne proxy przed Vaultwarden i odradza wbudowany TLS jego frameworka Rocket.
Proszę wybrać certyfikat uznawany powszechnie, jak te z Let’s Encrypt, które poleca wiki: przy certyfikacie samopodpisanym niektóre platformy odmawiają połączenia. Certyfikat musi zawierać pełny łańcuch, w przeciwnym razie urządzenia z Androidem się nie połączą.
Powiadomienia WebSocket, domyślnie włączone, informują przeglądarkę, aplikację na komputer i rozszerzenie, że wpis się zmienił. Przechodzą przez główny port HTTP, a proxy musi przekazywać nagłówki Upgrade i Connection. Aplikacje mobilne korzystają z natywnych powiadomień swojego systemu, które konfiguruje się osobno.
Wiki radzi, by jeśli nie mają Państwo preferencji, spojrzeć najpierw na Caddy: sam włącza HTTPS, uzyskuje certyfikat Let’s Encrypt i obsługuje WebSocket. Ustawienie z wiki przekazuje też Vaultwarden rzeczywisty adres odwiedzającego, na potrzeby jego dzienników:
vault.example.com {
reverse_proxy 127.0.0.1:8000 {
header_up X-Real-IP {remote_host}
}
}
Ten blok powtarza przykład Nginx z wiki, zredukowany do portu 80, aby Certbot mógł zainstalować HTTPS:
upstream vaultwarden-default {
zone vaultwarden-default 64k;
server 127.0.0.1:8000;
keepalive 2;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' "";
}
server {
listen 80;
listen [::]:80;
server_name vault.example.com;
client_max_body_size 525M;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
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;
location / {
proxy_pass http://vaultwarden-default;
}
}
Certbot następnie instaluje certyfikat i zajmuje się jego odnawianiem:
sudo certbot --nginx
Proszę otworzyć narzędzia deweloperskie przeglądarki, zakładkę sieci, filtr WS, a następnie ponownie połączyć się z sejfem: odpowiedź 101 na /notifications/hub potwierdza połączenie. Inny test z wiki: proszę otworzyć sejf w dwóch przeglądarkach, zmienić nazwę wpisu w jednej, a zmiana natychmiast pojawi się w drugiej.
Domyślnie każdy, kto dotrze do Państwa instancji, może w niej utworzyć konto. Jest to przydatne dla pierwszego konta, a wiki zaleca potem zamknąć rejestrację, aby uniemożliwić atakującemu założenie własnego.
SIGNUPS_ALLOWED na "false" w compose.yaml.docker compose up -d: zmienna środowiskowa jest związana z kontenerem, który trzeba utworzyć na nowo, by ją uwzględnił.SIGNUPS_ALLOWED: "false"
INVITATIONS_ALLOWED ustawione na "false" odbiera tę możliwość, a wiki zostawia ten wybór zależnie od zaufania do użytkowników.SIGNUPS_DOMAINS_WHITELIST ogranicza rejestrację do wybranych domen e-mail, a SIGNUPS_VERIFY ustawione na true wymusza wtedy weryfikację adresu. Gdy ta lista jest ustawiona, SIGNUPS_ALLOWED jest ignorowane.Gdy tylko zapiszą Państwo konfigurację ze strony administracji, w katalogu z danymi powstaje plik config.json i ma on pierwszeństwo przed zmiennymi środowiskowymi. Dotyczące go ustawienia zmienia się wtedy z tej strony: edycja compose.yaml już nie wystarcza.
Strona /admin służy do konfigurowania Vaultwarden, przeglądania i usuwania kont oraz organizacji, usuwania uwierzytelniania dwuskładnikowego użytkownika, zapraszania i czytania diagnostyki. Bez ADMIN_TOKEN pozostaje wyłączona: jeśli nie jest Państwu potrzebna, proszę ją tak zostawić.
Wiki gorąco zaleca włączenie HTTPS przed użyciem tej strony. Token pełni rolę hasła i można go przechowywać w postaci zahaszowanej, argon2id, zamiast jawnie w konfiguracji. Vaultwarden dostarcza do tego polecenie: dwukrotnie prosi o hasło, a następnie zwraca ciąg PHC.
docker run --rm -it vaultwarden/server /vaultwarden hash
Ten ciąg proszę umieścić w pliku .env, obok compose.yaml, w apostrofach, a następnie wywołać go z usługi:
VAULTWARDEN_ADMIN_TOKEN='$argon2id$...'
ADMIN_TOKEN: ${VAULTWARDEN_ADMIN_TOKEN}
Proszę sprawdzić wynik, uruchomić ponownie, a następnie zalogować się na /admin swoim hasłem, a nie ciągiem PHC:
docker compose config
docker compose up -d
ADMIN_SESSION_LIFETIME. Otwarta sesja pozostaje ważna po zmianie tokenu. Aby przerwać wszystkie, proszę usunąć rsa_key.pem z katalogu z danymi i zrestartować, co wyloguje także użytkowników i unieważni trwające zaproszenia./admin tylko dla wybranych adresów albo dodać do niego uwierzytelnianie HTTP.DISABLE_ADMIN_TOKEN usuwa jakąkolwiek kontrolę: jest przewidziane dla odrębnej warstwy uwierzytelniania umieszczonej przed nim, a wiki zastrzega je dla tych, którzy wiedzą, co robią.Pierwszą ochroną jest hasło główne. Dane sejfu są szyfrowane kluczami osobistymi lub organizacji: kto zdobędzie kopię bazy albo przejmie sesję, musi jeszcze złamać to hasło, aby je odczytać. Najważniejsza jest więc jego siła. Sama sesja administracyjna pozwala usunąć konto lub odebrać uwierzytelnianie dwuskładnikowe, ale nie daje dostępu do danych sejfu.
| Ochrona | Co daje | Gdzie się ją ustawia |
|---|---|---|
| Hasło główne | Utrzymuje dane zaszyfrowane, nawet jeśli kopia bazy trafi w obce ręce | Każdy użytkownik wybiera je sam, długie i przeznaczone tylko dla tego sejfu |
| Uwierzytelnianie dwuskładnikowe | Bez niego, jak przypomina wiki, odgadnięcie hasła metodą siłową pozostaje teoretycznie możliwe | W każdym koncie; polityka organizacji może go wymagać |
| HTTPS | Szyfruje drogę między klientem a serwerem | Odwrotne proxy |
| Zamknięte rejestracje | Nie pozwala obcej osobie założyć konta | SIGNUPS_ALLOWED |
| Podpowiedzi do hasła | Wyświetlane na stronie, ułatwiłyby odgadnięcie hasła; wersja 1.37.5 domyślnie je ukrywa | Proszę zostawić SHOW_PASSWORD_HINT na false; PASSWORD_HINTS_ALLOWED usuwa je całkowicie |
| Limit prób | Spowalnia próby z jednego adresu, logowanie i /admin | LOGIN_RATELIMIT_SECONDS i ADMIN_RATELIMIT_SECONDS |
| Fail2ban | Blokuje adresy po zbyt wielu niepowodzeniach, co wiki uznaje za szczególnie ważne dla instancji publicznej | Na serwerze, na podstawie dziennika LOG_FILE |
Na zapomnienie hasła głównego proszę przygotować się, zanim do niego dojdzie: włączyć dostęp awaryjny swojego konta, a w organizacji odzyskiwanie konta, które wymaga skonfigurowanego e-maila.
root, a wiki uważa za lepsze nadanie mu minimum uprawnień. Proszę dodać user: 1000:1000 do usługi, z katalogiem vw-data należącym do tego użytkownika.access_token. Jeśli Państwa proxy przechowuje dzienniki albo wysyła je do usługi zewnętrznej, wiki zaleca ukrycie tej wartości./var/run/docker.sock.Ten sam obraz obsługuje wszystkie trzy bazy. Wiki opisuje SQLite jako najczęściej używaną i najlepiej przetestowaną i poleca ją w większości zastosowań, chyba że jest konkretna potrzeba innej.
| Baza | Konfiguracja | Kopia zapasowa |
|---|---|---|
| SQLite | Żadna: jeden plik, vw-data/db.sqlite3 | Polecenie /vaultwarden backup albo kopia katalogu przy zatrzymanej usłudze |
| MariaDB lub MySQL | Państwa serwer bazy i DATABASE_URL w postaci mysql:// | Eksport bazy, oprócz katalogu vw-data |
| PostgreSQL | Państwa serwer bazy i DATABASE_URL w postaci postgresql:// | Eksport bazy, oprócz katalogu vw-data |
DATABASE_URL: "postgresql://user_name:user_password@db_host:5432/vaultwarden"
Proszę utworzyć pustą bazę i jej użytkownika: przy starcie Vaultwarden sam zakłada w niej swój schemat. Hasło ze znakami specjalnymi zapisuje się w tym adresie w kodowaniu procentowym.
Wyboru proszę dokonać, zanim sejf zostanie zapełniony. Wiki opisuje przejście z SQLite na PostgreSQL za pomocą pgloader, zaznaczając, że projekt nie wspiera tej drogi, że odbywa się to na Państwa ryzyko i że zaczyna się od kopii zapasowej.
Vaultwarden startuje bez e-maila, ale kilka funkcji od niego zależy: zaproszenia, weryfikacja adresów, wysyłanie podpowiedzi do hasła, uwierzytelnianie dwuskładnikowe e-mailem i odzyskiwanie konta.
Na VPS Simafri wysyłka odbywa się przez uwierzytelniony przekaźnik SMTP, na porcie 587: adres posiadanego już konta pocztowego albo Simafri Suite. Hasło umieszcza się w pliku .env, tak jak token administratora:
SMTP_HOST: "smtp.example.com"
SMTP_FROM: "vault@example.com"
SMTP_PORT: "587"
SMTP_SECURITY: "starttls"
SMTP_USERNAME: "vault@example.com"
SMTP_PASSWORD: ${VAULTWARDEN_SMTP_PASSWORD}
DOMAIN i pozostają ważne 5 dni.No compatible authentication mechanism was found.config.json.Jeśli nic nie wychodzi, wiki proponuje przetestować połączenie z przekaźnikiem z serwera. Polecenie zwraca 0, gdy przekaźnik odpowiada:
timeout 5 bash -c 'cat < /dev/null > /dev/tcp/smtp.example.com/587'; echo $?
README przypomina, że projekt nie ponosi odpowiedzialności za utratę danych, i gorąco zaleca regularne kopie zapasowe. Wiki radzi, by były automatyczne, z co najmniej jedną kopią w innym miejscu. Oto, co zawiera katalog z danymi przy SQLite:
| Element | Co przechowuje | Do skopiowania |
|---|---|---|
db.sqlite3 | Niemal wszystkie dane: konta, organizacje, sejfy | Obowiązkowo |
attachments/ | Załączniki, przechowywane poza bazą | Obowiązkowo |
config.json | Konfiguracja strony administracji, w tym dane wrażliwe jawnym tekstem | Zalecane, szyfrowane |
rsa_key* | Klucze podpisujące sesje; ich utrata wylogowuje użytkowników | Zalecane, szyfrowane |
sends/ | Pliki wysłane przez Send, z natury tymczasowe | Opcjonalnie |
icon_cache/ | Ikony stron, w razie potrzeby pobierane ponownie | Opcjonalnie |
Od wersji 1.32.1 Vaultwarden potrafi sam wykonać kopię swojej bazy SQLite, bez zatrzymywania usługi:
docker exec -it vaultwarden /vaultwarden backup
Polecenie zapisuje plik db_AAAAMMJJ_HHMMSS.sqlite3 obok bazy, w vw-data. Obraz nie zawiera ani sqlite3, ani cron: wiki radzi zaplanować zadanie na serwerze, co najmniej raz dziennie. Wtedy proszę usunąć -it, ponieważ zadanie cykliczne nie ma terminala, i porządkować te pliki, które się gromadzą.
Gdy baza nie jest używana, wystarczy zwykła kopia wszystkich jej plików. To metoda przy zatrzymanej usłudze, którą wiki podaje jako przykład dla Dockera, i obejmuje ona także załączniki:
docker compose down
tar -czf vaultwarden-$(date +%F).tar.gz vw-data
docker compose up -d
Wiki uważa warstwę szyfrowania za przydatną, zwłaszcza gdy kopia zawiera token administratora i dane dostępowe SMTP, i wymienia rclone, restic i rustic do wysyłania kopii w inne miejsce. Przy MariaDB lub PostgreSQL do katalogu vw-data proszę dodać eksport bazy.
Wiki prosi, by nie polegać wyłącznie na migawkach dysku, trudniejszych do przywrócenia. Proszę więc zachować te kopie właściwe aplikacji: umieszczone na dysku serwera, trafiają także do jego nocnych kopii zapasowych.
vw-data jego skopiowaną wersją./vaultwarden backup, proszę nadać jej nazwę db.sqlite3 i najpierw usunąć każdy istniejący plik db.sqlite3-wal: niepasujący dziennik może uszkodzić bazę. Jeśli pochodzi z bezpośredniej kopii, proszę przywrócić razem db.sqlite3 i jego db.sqlite3-wal.Wiki radzi powtarzać to ćwiczenie od czasu do czasu, zachowując kopię danych na miejscu: w ten sposób sprawdzają Państwo, że kopia zapasowa działa.
Wiki podaje dwa polecenia, wydawane z katalogu z compose.yaml. Katalog z danymi pozostaje na miejscu:
docker compose pull
docker compose up -d
Te aktualizacje liczą się bardziej niż gdzie indziej. Aplikacje mobilne i rozszerzenia przeglądarek aktualizują się same, a wiki ostrzega, że różnica wersji względem serwera może powodować nagłe awarie. Sejf webowy, dostarczany w obrazie, zawsze pozostaje dopasowany do swojego serwera.
Projekt nie ma kalendarza wydań: proszę śledzić jego informacje o wydaniach i wykonać kopię zapasową tuż przed każdą aktualizacją. Niektóre zawierają poprawki bezpieczeństwa, jak wersja 1.37.5 z 1 listopada 2026 roku, której notatki zalecają aktualizację jak najszybciej. Te same notatki ostrzegają również, że od wersji 1.37.5 nieprawidłowa wartość konfiguracji uniemożliwia uruchomienie Vaultwarden: proszę przejrzeć plik ze zmiennymi środowiskowymi przed aktualizacją. Strona diagnostyczna w /admin wskazuje, czy istnieje nowsza wersja.
Samodzielny hosting wymaga prowadzenia serwera, oprócz samej aplikacji. Na Managed VPS nasze zespoły przejmują serwer i proaktywnie czuwają nad Państwa instancją; Vaultwarden pozostaje Państwa oprogramowaniem, z Państwa ustawieniami i danymi.
| Temat | Nasze zespoły | Państwo |
|---|---|---|
| Serwer | Aktualizacje systemu i zabezpieczeń, w tym interwencje na serwerze | Moment dogodny dla Państwa działalności |
| Nadzór | Serwer pod opieką całą dobę, 7 dni w tygodniu, z interwencją bez czekania na Państwa telefon | Czytanie dzienników Państwa instancji |
| Vaultwarden | Proaktywna opieka: wychwytujemy błędy, spowolnienia i brak miejsca na dysku oraz polecamy poprawkę | Instalacja, aktualizacje i ustawienia, które wdrażają Państwo sami albo Państwa asystent AI |
| Konta i sejf | Serwer, który je utrzymuje, nadzorowany i objęty kopiami zapasowymi | Użytkownicy, zaproszenia, hasła główne i uwierzytelnianie dwuskładnikowe |
| Kopie zapasowe | Co noc, szyfrowane i przechowywane poza maszyną; przywracanie w cenie | Kopie właściwe dla Vaultwarden oraz zgłoszenie prośby o przywrócenie, gdy będzie potrzebne |
| Migracja | Migracja Państwa obecnego serwera, bezpłatna | Moment przełączenia |
Jeśli wolą Państwo, aby nasze zespoły interweniowały w samej aplikacji, usługa ta jest rozliczana godzinowo lub ryczałtowo, z wyceną przekazaną przed interwencją.
Z Managed VPS od Simafri nasze zespoły utrzymują serwer Państwa instancji Vaultwarden w aktualności, nadzorują go dniem i nocą i interweniują bez czekania na Państwa telefon; proaktywnie czuwają także nad Państwa instancją i polecają przydatne poprawki, które wdrażają Państwo sami albo Państwa asystent AI. Kopie zapasowe są szyfrowane co noc i przechowywane poza maszyną, ich przywracanie jest w cenie, a migracja obecnego serwera jest bezpłatna.
Tak. Vaultwarden jest udostępniany na licencji AGPL-3.0: mogą Państwo uruchomić go w firmie bez zakupu licencji. Jeśli go Państwo zmodyfikują, Państwa wersja musi oferować kod źródłowy tym, którzy korzystają z niej przez sieć. Pozostaje koszt serwera, na którym działa.
Tak. README przedstawia Vaultwarden jako zgodny z oficjalnymi klientami Bitwarden, zaznaczając jednocześnie, że projekt nie jest powiązany z Bitwarden ani z Bitwarden, Inc. Problem zgłasza się więc projektowi Vaultwarden, niezależnie od używanego klienta.
Proszę utworzyć compose.yaml z obrazem vaultwarden/server, katalogiem z danymi i portem opublikowanym na 127.0.0.1, a następnie uruchomić docker compose up -d. Potem proszę postawić przed nim odwrotne proxy z HTTPS: bez HTTPS sejf webowy nie działa. Proszę też wpisać swój adres w DOMAIN.
Po utworzeniu konta proszę zmienić SIGNUPS_ALLOWED na false w compose.yaml, a następnie uruchomić ponownie docker compose up -d. Organizacje nadal mogą zapraszać: INVITATIONS_ALLOWED ustawione na false odbiera tę możliwość. Jeśli strona administracji zapisała już swoją konfigurację, proszę dokonać tej zmiany z niej.
Proszę uruchomić polecenie vaultwarden hash, które zwraca ciąg argon2id, a następnie umieścić go w ADMIN_TOKEN, przy Docker Compose z pliku .env. Potem loguje się Państwo na /admin swoim hasłem. Bez ADMIN_TOKEN strona pozostaje wyłączona.
Najpierw hasło główne: dane są szyfrowane, a kopię bazy da się odczytać dopiero po jego złamaniu. Dochodzą do tego uwierzytelnianie dwuskładnikowe, HTTPS, zamknięte rejestracje, zahaszowany token administratora i szyfrowane kopie zapasowe.
Przy SQLite proszę codziennie uruchamiać w kontenerze polecenie /vaultwarden backup, a także kopiować katalog attachments, config.json i pliki rsa_key. Przy MariaDB lub PostgreSQL proszę dodać eksport bazy. Przywracanie proszę regularnie testować.
Managed VPS obejmuje serwer: system, bezpieczeństwo, nadzór i kopie zapasowe. Nasze zespoły proaktywnie czuwają też nad Państwa instancją i polecają przydatne poprawki, które wdrażają Państwo sami. Interwencja w aplikacji jest rozliczana godzinowo lub ryczałtowo.
Simafri
Porozmawiajmy o Państwa projekcie
Proszę powiedzieć nam w kilku słowach, czego Państwo potrzebują: odpowiemy szybko.
Dziękujemy! Państwa zapytanie zostało wysłane. Wkrótce się odezwiemy.
Wolą Państwo e-mail? Proszę napisać do nas na support@simafri.com.