|
Шаг 1: Установка Docker и Docker Compose
|
|
Vaultwarden удобнее всего запускать в контейнере.
|
|
|
|
bash
|
|
# Обновляем пакеты
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
# Устанавлием Docker
|
|
sudo apt install docker.io -y
|
|
|
|
# Устанавлием плагин Docker Compose
|
|
sudo apt install docker-compose-plugin -y
|
|
|
|
# Добавляем пользователя в группу docker (чтобы не писать sudo перед docker)
|
|
sudo usermod -aG docker $USER
|
|
# Применим группу без перезагрузки
|
|
newgrp docker
|
|
|
|
|
|
|
|
Шаг 2: Установка Nginx и Certbot
|
|
Nginx будет работать как обратный прокси (принимать запросы из интернета и передавать их в Vaultwarden), а Certbot получит SSL.
|
|
|
|
bash
|
|
sudo apt install nginx certbot python3-certbot-nginx -y
|
|
|
|
|
|
Шаг 3: Получение SSL сертификата
|
|
На этом этапе Nginx должен быть запущен и доступен по порту 80.
|
|
Создайте временный конфиг для Nginx (чтобы Certbot мог проверить домен):
|
|
|
|
bash
|
|
sudo nano /etc/nginx/sites-available/vaultwarden
|
|
|
|
Вставьте следующее (замените vault.example.com на ваш домен):
|
|
|
|
server {
|
|
listen 80;
|
|
server_name vault.example.com;
|
|
|
|
location / {
|
|
return 200 'OK';
|
|
add_header Content-Type text/plain;
|
|
}
|
|
}
|
|
|
|
Включите сайт и перезапустите Nginx:
|
|
|
|
bash
|
|
sudo ln -s /etc/nginx/sites-available/vaultwarden /etc/nginx/sites-enabled/
|
|
sudo nginx -t
|
|
sudo systemctl restart nginx
|
|
|
|
Запустите Certbot для получения сертификата:
|
|
|
|
bash
|
|
sudo certbot --nginx -d vault.example.com
|
|
|
|
|
|
Введите email для уведомлений.
|
|
Согласитесь с условиями.
|
|
Выберите вариант перенаправления на HTTPS (рекомендуется вариант 2).
|
|
|
|
Готово! Certbot автоматически настроил обновление сертификатов через системный таймер (systemd timer).
|
|
Проверить можно командой sudo systemctl list-timers | grep certbot.
|
|
|
|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
root@vw:/home/ub# sudo certbot --nginx -d vw.saria.by
|
|
Saving debug log to /var/log/letsencrypt/letsencrypt.log
|
|
Requesting a certificate for vw.saria.by
|
|
|
|
Successfully received certificate.
|
|
Certificate is saved at: /etc/letsencrypt/live/vw.saria.by/fullchain.pem
|
|
Key is saved at: /etc/letsencrypt/live/vw.saria.by/privkey.pem
|
|
This certificate expires on 2026-06-22.
|
|
These files will be updated when the certificate renews.
|
|
Certbot has set up a scheduled task to automatically renew this certificate in the background.
|
|
|
|
Deploying certificate
|
|
Successfully deployed certificate for vw.saria.by to /etc/nginx/sites-enabled/vaultwarden
|
|
Congratulations! You have successfully enabled HTTPS on https://vw.saria.by
|
|
|
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
If you like Certbot, please consider supporting our work by:
|
|
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
|
|
* Donating to EFF: https://eff.org/donate-le
|
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
root@vw:/home/ub#
|
|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
|
|
Шаг 4: Настройка Nginx для проксирования
|
|
Теперь нужно настроить Nginx так, чтобы он передавал запросы в контейнер Vaultwarden.
|
|
Откройте конфиг снова (Certbot мог его изменить):
|
|
|
|
bash
|
|
sudo nano /etc/nginx/sites-available/vaultwarden
|
|
|
|
#########################################################
|
|
# HTTP на порту 80 → редирект на HTTPS с портом 55641
|
|
server {
|
|
listen 80;
|
|
server_name vw.saria.by;
|
|
return 301 https://$server_name:55641$request_uri;
|
|
}
|
|
|
|
# HTTPS на порту 55641
|
|
server {
|
|
listen 55641 ssl http2;
|
|
server_name vw.saria.by;
|
|
|
|
# Пути к сертификатам (остаются без изменений)
|
|
ssl_certificate /etc/letsencrypt/live/vw.saria.by/fullchain.pem;
|
|
ssl_certificate_key /etc/letsencrypt/live/vw.saria.by/privkey.pem;
|
|
|
|
# Современные настройки SSL
|
|
ssl_protocols TLSv1.2 TLSv1.3;
|
|
ssl_prefer_server_ciphers on;
|
|
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
|
|
|
|
# Отключаем логирование токенов в доступе (опционально, для приватности)
|
|
proxy_hide_header Authorization;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8000;
|
|
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 X-Forwarded-Port 55641; # Важно: сообщаем Vaultwarden о внешнем порте
|
|
|
|
# Для веб-сокетов (уведомления)
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
}
|
|
}
|
|
#########################################################
|
|
|
|
|
|
Примените изменения:
|
|
bash
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|
|
|
|
|
Шаг 5: Обновите docker-compose.yml для Vaultwarden
|
|
Откройте файл:
|
|
|
|
bash
|
|
nano ~/vaultwarden/docker-compose.yml
|
|
|
|
Обновите секцию environment, особенно переменную DOMAIN:
|
|
|
|
|
|
#########################################################
|
|
version: '3'
|
|
services:
|
|
vaultwarden:
|
|
image: vaultwarden/server:latest
|
|
container_name: vaultwarden
|
|
restart: always
|
|
volumes:
|
|
- ${PWD}//data
|
|
ports:
|
|
- 127.0.0.1:8000:80 # Vaultwarden внутри контейнера по-прежнему слушает порт 80
|
|
environment:
|
|
- DOMAIN=https://vw.saria.by:55641 # ← Обязательно укажите порт!
|
|
- WEBSOCKET_ENABLED=true
|
|
- SIGNUPS_ALLOWED=false
|
|
- ADMIN_TOKEN=ПридумайтеОченьСложныйПароль_2026!
|
|
|
|
watchtower:
|
|
image: containrrr/watchtower
|
|
container_name: watchtower
|
|
restart: always
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
command: --interval 86400 --cleanup
|
|
#########################################################
|
|
|
|
|
|
|
|
Перезапустите контейнеры:
|
|
|
|
bash
|
|
cd ~/vaultwarden
|
|
docker compose up -d
|
|
|
|
💡 Переменная DOMAIN с указанием порта критически важна: Vaultwarden использует её для генерации ссылок в письмах, настройки клиентов и проверки безопасности.
|
|
|
|
|
|
Проверка работы
|
|
|
|
bash
|
|
# Проверьте, что Nginx слушает порт 55641
|
|
sudo ss -tlnp | grep 55641
|
|
|
|
# Протестируйте доступ локально
|
|
curl -kI https://127.0.0.1:55641
|
|
|
|
# Проверьте, что контейнер Vaultwarden запущен
|
|
docker ps | grep vaultwarden
|
|
|
|
# Посмотрите логи Nginx на ошибки
|
|
sudo tail -f /var/log/nginx/error.log
|