Если у вас уже работает nginx с другими доменами и сайтами, настройка SSL для панели x-ui может вызвать конфликты на порту 80. В этой статье мы покажем, как безопасно получить SSL-сертификат для панели x-ui, используя webroot метод с acme.sh, не нарушая работу других сайтов.

 

1. Создание webroot для проверки Let's Encrypt

Создаём отдельную папку для проверки сертификата:

sudo mkdir -p /var/www/acme-panel
sudo chown -R www-data:www-data /var/www/acme-panel

Это будет директория для .well-known/acme-challenge, куда Let's Encrypt будет записывать временные файлы проверки.

2. Настройка nginx для нового домена панели

Создаём новый конфиг для nginx, чтобы обслуживать только проверку ACME:

sudo nano /etc/nginx/sites-available/panel.example.com

Пример конфигурации:

server {
    listen 80;
    server_name panel.example.com;

    location /.well-known/acme-challenge/ {
        root /var/www/acme-panel;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}
  • panel.example.com — замените на ваш домен панели.
  • Этот блок обеспечит работу проверки Let's Encrypt, не затрагивая другие сайты.
sudo ln -s /etc/nginx/sites-available/panel.example.com /etc/nginx/sites-enabled/panel.example.com
sudo nginx -t
sudo systemctl reload nginx

Проверяем синтаксис и перезагружаем nginx.

4. Получение сертификата через acme.sh (webroot)

Теперь можно получить сертификат для панели:

/root/.acme.sh/acme.sh --issue -d panel.example.com --webroot /var/www/acme-panel

Если сертификат уже был получен ранее и действителен:

/root/.acme.sh/acme.sh --issue -d panel.example.com --webroot /var/www/acme-panel --force

Сертификат и ключ будут в директории:

~/.acme.sh/panel.example.com/fullchain.cer
~/.acme.sh/panel.example.com/privkey.key

5. Установка сертификата в x-ui

  • Открываем x-ui → SSL Certificate Management → Set Cert paths for the panel.
  • Указываем пути к сертификату и приватному ключу:
/full/path/to/fullchain.cer
/full/path/to/privkey.key
  • Выбираем команду перезагрузки после обновления:
systemctl reload nginx ; x-ui restart
  • Проверяем доступ по HTTPS:
https://panel.example.com:8443

6. Автообновление сертификата

acme.sh автоматически обновляет сертификат и выполняет команду перезагрузки, чтобы x-ui и nginx всегда использовали актуальный SSL.

7. Важные рекомендации

  • Не используйте порт 80 для панели, если уже есть сайты на nginx, обслуживающие HTTP.
    Используйте webroot метод, чтобы избежать конфликтов.
    Храните пути к сертификатам отдельно и делайте резервные копии.
    Для безопасной работы панели рекомендуется использовать сложный и уникальный URI подписки.

Заключение

С помощью webroot метода и acme.sh можно настроить SSL для панели x-ui на сервере с уже работающими сайтами. Этот подход безопасен и удобен для серверов с множеством доменов, позволяя получать и обновлять сертификаты автоматически, не останавливая nginx.