Шаг 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