Vaultwarden (менеджер паролей)¶
Self-hosted Bitwarden-совместимый менеджер паролей для команды.
Доступ¶
| URL | https://vault.shivavpn.io |
| Admin panel | https://vault.shivavpn.io/admin |
| Сервер | km-tools01a (10.99.87.76) |
| Порт | 8080 (контейнер → proxy 212.70.189.60 → TLS) |
| DNS | vault.shivavpn.io → 212.70.189.61 (nginx proxy → 10.99.87.76:8080) |
| Данные | /opt/vaultwarden/ (SQLite) |
Назначение¶
Централизованное хранилище секретов команды. Организация: ShivaVPN.
Структура (Collections)¶
| Collection | Что хранится |
|---|---|
| VPN Providers | MonoVM, LLHost, TheHosting, DataPacket, VDSina |
| Databases | MySQL PROD/DEV, Redis |
| Infrastructure | Admin Panel, Docker Registry, 3x-ui |
| GitLab & CI/CD | API tokens, project tokens, GitHub PAT |
| Monitoring | Grafana, Sentry, API tokens |
| Keycloak & Auth | Keycloak admin, client secrets |
| Cloud Providers | Yandex Cloud, VK Cloud |
| Ansible & DevOps | Vault password, wiki credentials |
| Telegram Bots | Bot tokens, webhook secrets |
Что хранится (37 записей)¶
Все credentials перенесены в Vaultwarden (48 записей): - 5 VPN провайдеров с логинами - MySQL PROD/DEV с root и vpn паролями - Redis, Admin Panel, Docker Registry - GitLab API/project tokens, GitHub PAT - Grafana admin + API token, Sentry - Keycloak admin + client secrets - Yandex Cloud OAuth token - 3x-ui panel credentials (все серверы) - Ansible vault password - MkDocs wiki credentials
Клиенты¶
Vaultwarden совместим со всеми клиентами Bitwarden:
- Браузер: Bitwarden расширение (Chrome, Firefox, Safari)
- Desktop: Bitwarden Desktop (macOS, Windows, Linux)
- Мобильный: Bitwarden (iOS, Android)
- CLI:
bw(npm install -g bitwarden/cli)
При настройке клиента указать Self-hosted → https://vault.shivavpn.io
Команда¶
Организация: ShivaVPN
| Имя | Роль | Зона ответственности | |
|---|---|---|---|
| zarudesu@gmail.com | Konstantin Makeikin | Owner | DevOps Lead, полный доступ |
| poslov.yaroslav@gmail.com | Ярослав Послов | Admin | DevOps, инфраструктура |
| sealdontcry@gmail.com | Михаил | Admin | DevOps |
| glebphedsec@gmail.com | Михаил Толмачев | Admin | DevOps |
| m.daurtseff@gmail.com | Марат Даурцев | Admin | DevOps |
| danm20011412@gmail.com | Даниил Гончаров | Admin | DevOps L2, TG proxy |
Роли¶
| Роль | Что может | Кому назначать |
|---|---|---|
| Owner | Всё + удаление орг + управление пользователями | Только zardes |
| Admin | CRUD записей, управление collections и members | DevOps команда |
| Manager | CRUD записей в назначенных collections | Если будут не-DevOps |
| User | Только чтение назначенных collections | Саппорт, внешние |
Добавление нового участника¶
- Участник регистрируется на https://vault.shivavpn.io (Create account)
- Owner/Admin: Admin Console → Members → Invite member → email → роль Admin → Save
- Участник логинится в web vault → видит приглашение
- Owner/Admin: Members → Options → Confirm
Без SMTP
Vaultwarden не отправляет email-уведомления. Приглашения видны только при логине в web vault.
Регистрация и вход¶
- Открыть https://vault.shivavpn.io
- Создать аккаунт (email + master password)
- В клиенте Bitwarden: Settings → Self-hosted →
https://vault.shivavpn.io
Master Password
Master password НЕ восстанавливается. Если забыт — аккаунт потерян.
CLI доступ (API)¶
# Установка
npm install -g @bitwarden/cli
# Настройка self-hosted
bw config server https://vault.shivavpn.io
# Логин
bw login user@example.com
# Получить секрет
bw get password "Ansible Vault"
# Экспорт (для бэкапа)
bw export --format json
Администрирование¶
Admin panel¶
URL: https://vault.shivavpn.io/admin
Admin token хранится в /opt/vaultwarden/vaultwarden.env на сервере:
Конфигурация¶
Файл: /opt/vaultwarden/vaultwarden.env
| Параметр | Значение | Описание |
|---|---|---|
SIGNUPS_ALLOWED |
True | Регистрация открыта |
WEB_VAULT_ENABLED |
True | Web-интерфейс |
WEBSOCKET_ENABLED |
True | Real-time sync |
DATABASE_URL |
/data/db.sqlite3 | SQLite |
Ansible роль¶
Деплой/обновление через Ansible:
cd ansible/shiva-ansible
ansible-playbook -i inventory/servers.ini playbooks/vaultwarden.yml --vault-password-file .vault_pass
Бэкап¶
База данных: /opt/vaultwarden/db.sqlite3
# Ручной бэкап
./scripts/ssh-internal.sh 10.99.87.76 "cp /opt/vaultwarden/db.sqlite3 /opt/vaultwarden/db.sqlite3.bak-\$(date +%Y%m%d)"
Бэкап обязателен
SQLite — единственная копия всех паролей. Потеря = потеря всех секретов. Настроить cron для автоматического бэкапа.
Инфраструктура¶
Пользователь → vault.shivavpn.io (DNS)
→ 212.70.189.61 (dev-api-nginx, Let's Encrypt TLS)
→ 10.99.87.76:8080 (km-tools01a, vaultwarden container)
→ /opt/vaultwarden/db.sqlite3
vault.shiva-app.io
Устаревший альтернативный URL (через 212.70.189.60). Логин через него не работает —
используй только vault.shivavpn.io.
См. также: Секреты · Ansible · Доступы и SSH