Поднимаем свой менеджер паролей Vaultwarden на Ubuntu, или Прощай, KeePass!
Решил избавиться от Keepass и поднять какую нибудь Web штуку. Выбор пал на Vaultwarden - это реализация Bitwarden, написанная на Rust. Легкая, быстрая и работает со всеми официальными клиентами Bitwarden. Вот как я это сделал на Ubuntu 24.04.
Что нам понадобится
- Сервер с Ubuntu 24.04 LTS (подойдёт даже самая дешманская VPS)
- Доменное имя (у меня
pass.vashdomen.ru) - Открытые порты 80 и 443
- Прямые руки (опционально, но желательно 😄)
Шаг 1: Устанавливаем всё необходимое
Vaultwarden есть в специальном репозитории, добавляем его:
curl -s https://packagecloud.io/install/repositories/dionysius/vaultwarden/script.deb.sh | sudo bash
sudo apt update
sudo apt install vaultwarden nginx certbot python3-certbot-nginx
Что устанавливается:
- vaultwarden - сам сервер с API
- vaultwarden-web-vault - веб-интерфейс (подтянется автоматически)
- nginx - будет проксировать запросы
- certbot - для бесплатного SSL от Let's Encrypt
Шаг 2: Настраиваем Vaultwarden
Создаём конфиг. Тут всё важное:
sudo tee /etc/default/vaultwarden << 'EOF'
# Ваш домен (обязательно с https://)
DOMAIN=https://pass.vashdomen.ru
ROCKET_ADDRESS=127.0.0.1
ROCKET_PORT=8001
# Где хранятся данные
DATA_FOLDER=/var/lib/vaultwarden
DATABASE_URL=/var/lib/vaultwarden/db.sqlite3
# Веб-интерфейс
WEB_VAULT_FOLDER=/usr/share/vaultwarden-web-vault
WEB_VAULT_ENABLED=true
# Разрешить регистрацию (потом отключим!)
SIGNUPS_ALLOWED=true
# Логи
LOG_FILE=/var/lib/vaultwarden/vaultwarden.log
LOG_LEVEL=info
EOF
Важно: SIGNUPS_ALLOWED=true оставляем временно, чтобы зарегистрировать свой аккаунт. Потом обязательно отключим!
Шаг 3: Настраиваем nginx (временно, для получения сертификата)
Сначала делаем простой конфиг на HTTP:
sudo tee /etc/nginx/sites-available/pass << 'EOF'
server {
listen 80;
server_name pass.vashdomen.ru;
location / {
return 200 'OK';
}
}
EOF
sudo ln -s /etc/nginx/sites-available/pass /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Шаг 4: Получаем SSL-сертификат
Теперь магия Let's Encrypt:
sudo certbot certonly --nginx -d pass.vashdomen.ru
Certbot спросит email (для уведомлений о продлении) и согласие с ToS. Жмём Enter, и через пару секунд сертификат готов!
Шаг 5: Финальная конфигурация nginx с SSL
Теперь делаем нормальный конфиг с HTTPS:
sudo tee /etc/nginx/sites-available/pass << 'EOF'
server {
listen 443 ssl http2;
server_name pass.vashdomen.ru;
ssl_certificate /etc/letsencrypt/live/pass.vashdomen.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pass.vashdomen.ru/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
client_max_body_size 525M;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_http_version 1.1;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 80;
server_name pass.vashdomen.ru;
return 301 https://$host$request_uri;
}
EOF
# Проверяем и применяем
sudo nginx -t && sudo systemctl reload nginx
Шаг 6: Запускаем Vaultwarden
Момент истины:
# Включаем автозапуск и стартуем
sudo systemctl enable --now vaultwarden
# Проверяем статус
sudo systemctl status vaultwarden
# Убеждаемся, что порт 8001 слушается
sudo ss -tlnp | grep 8001
Если всё зелёное - едем дальше!
Шаг 7: Создаём свой аккаунт
- Открываем браузер и идём на
https://pass.vashdomen.ru - Жмём Create Account
- Создаём аккаунт с очень сильным мастер-паролем (это святое!)
- Заходим в аккаунт
Теперь критически важный шаг - отключаем регистрацию, чтобы никто больше не мог зарегистрироваться:
sudo sed -i 's/SIGNUPS_ALLOWED=true/SIGNUPS_ALLOWED=false/' /etc/default/vaultwarden
sudo systemctl restart vaultwarden
Всё, теперь только вы можете пользоваться сервером!
Шаг 8: Включаем админ-панель (опционально, но полезно)
Админ-панель позволяет управлять пользователями и смотреть статистику:
# Генерируем случайный токен
ADMIN_TOKEN=$(openssl rand -base64 48)
echo "Сохраните этот токен: $ADMIN_TOKEN"
echo "ADMIN_TOKEN=$ADMIN_TOKEN" | sudo tee -a /etc/default/vaultwarden
sudo systemctl restart vaultwarden
Сохраните токен! Он понадобится для входа в админку.
Админ-панель доступна по адресу: https://pass.vashdomen.ru/admin
Полезные команды для жизни
# Смотрим статус
sudo systemctl status vaultwarden
# Живые логи
sudo journalctl -u vaultwarden -f
# Или из файла
sudo tail -f /var/lib/vaultwarden/vaultwarden.log
# Перезапуск
sudo systemctl restart vaultwarden
# Смотрим, что в базе данных
ls -la /var/lib/vaultwarden/
Бэкапы - не забываем!
Все данные лежат в /var/lib/vaultwarden/. Бэкапить их - святая обязанность:
sudo systemctl stop vaultwarden
sudo tar -czvf vaultwarden-backup-$(date +%Y%m%d).tar.gz /var/lib/vaultwarden/
sudo systemctl start vaultwarden
Архив можно закинуть куда угодно - на другой сервер, в облако, на флешку. Главное - делать это регулярно!
Обновление
Когда выйдет новая версия:
sudo apt update
sudo apt upgrade vaultwarden vaultwarden-web-vault
sudo systemctl restart vaultwarden
Всё, обновились!
Подключаем клиенты
Самое крутое в Vaultwarden - он совместим со всеми официальными клиентами Bitwarden:
- Браузеры: расширения для Chrome, Firefox, Edge, Safari
- Мобильные: приложения из App Store и Google Play
- Desktop: программы для Windows, macOS, Linux
При настройке любого клиента выбираете Self-hosted и указываете URL: https://pass.vashdomen.ru
Вот и всё! Теперь все пароли хранятся на вашем сервере, и никакие облачные сервисы не имеют к ним доступа.
Что получили в итоге?
✅ Свой менеджер паролей на своём сервере
✅ Все пароли под контролем
✅ Работает с любых устройств
✅ Бесплатно (если не считать стоимость VPS)
✅ Совместим с экосистемой Bitwarden
✅ HTTPS с автоматическим продлением сертификата
Весь процесс занял минут 15-20. Vaultwarden отлично работает даже на самой слабой VPS, потому что написан на Rust и очень экономичен к ресурсам.