Vaultwarden — это легковесный сервер паролей, совместимый с Bitwarden. Вы пользуетесь обычными приложениями и расширениями браузера Bitwarden, но ваше хранилище находится на сервере, который вы контролируете. Он потребляет очень мало памяти, так что небольшого VPS более чем достаточно. Поскольку на нём хранятся ваши пароли, настраивайте его внимательно.
Перед началом
- VPS с Docker. См. установку Docker.
- Домен, указывающий на сервер. См. объяснение DNS-записей.
- План резервного копирования данных. См. резервные копии VPS.
Дополнительную информацию вы найдёте на нашей странице Vaultwarden на собственном сервере.
Шаг 1: файл Docker Compose
mkdir -p ~/vaultwarden && cd ~/vaultwarden
cat > compose.yaml <<'EOF'
services:
vaultwarden:
image: vaultwarden/server:latest
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true" # switch to false after you create your account
ADMIN_TOKEN: "${ADMIN_TOKEN}"
volumes:
- ./data:/data
ports:
- "127.0.0.1:8081:80"
EOF
Шаг 2: создайте токен администратора
Страница администратора позволяет управлять пользователями. Храните хэшированный токен, а не обычный текст. В образ Vaultwarden включена вспомогательная команда:
docker run --rm -it vaultwarden/server /vaultwarden hash
# paste the result into a .env file as ADMIN_TOKEN='$argon2id$...'
Шаг 3: запустите сервис
docker compose up -d
docker compose logs -f
Шаг 4: HTTPS с помощью Caddy
Клиенты Bitwarden требуют HTTPS.
vault.example.com {
reverse_proxy 127.0.0.1:8081
}
Перезагрузите конфигурацию Caddy и откройте сайт. Создайте свою учётную запись, затем установите для SIGNUPS_ALLOWED значение false и снова выполните docker compose up -d, чтобы посторонние не могли зарегистрироваться.
Шаг 5: включите двухэтапный вход
В веб-хранилище включите двухэтапный вход с помощью приложения-аутентификатора или аппаратного ключа. Сохраните код восстановления в автономном режиме.
Резервное копирование хранилища
Все данные находятся в ./data, в основном это база данных SQLite и вложения. Делайте согласованную копию по расписанию и храните её вне сервера:
sqlite3 data/db.sqlite3 ".backup '/backup/vaultwarden-$(date +%F).sqlite3'"
tar czf /backup/vw-files-$(date +%F).tgz data/attachments data/rsa_key*
Проверьте восстановление хотя бы один раз. Резервная копия, которую вы ни разу не проверяли, — это лишь надежда.