Как перенести один из поддоменов, настроенный на Nginx с использованием certbot, на другой сервер?

Как перенести поддомен A.mysite.com на новый сервер, сохранив управление сертификатами от Let's Encrypt с помощью certbot и минимизировав проблемы с браузерами, которые могут ругаться на сертификат? У меня установлен nginx на Ubuntu 22.04, и все текущие сертификаты управляются через certbot. Я уже пытался копировать папку /etc/letsencrypt с основного сервера, но это не решило проблему с сертификатами.
  • 18 января 2025 г. 20:34
Ответы на вопрос 2
Перенос поддомена с одного сервера на другой с сохранением сертификатов Let's Encrypt — задача, которая требует внимательной настройки. Вот пошаговое руководство, как это сделать:

### 1. Подготовка нового сервера

1. **Установите Nginx и Certbot:** 
   На новом сервере установите Nginx и Certbot, если они еще не установлены. Убедитесь, что вы используете ту же версию Certbot и Nginx для минимизации проблем совместимости.
   ```bash
   sudo apt update
   sudo apt install nginx certbot python3-certbot-nginx
   ```

2. **Настройте DNS:** 
   Настройте DNS-записи для поддомена (A.mysite.com) так, чтобы они указывали на новый сервер. Это может занять некоторое время из-за кэширования DNS.

### 2. Перенос конфигурации Nginx

1. **Скопируйте конфигурацию Nginx:**
   На старом сервере найдите конфигурационный файл для поддомена в `/etc/nginx/sites-available/` или `/etc/nginx/conf.d/`. Скопируйте его на новый сервер.
   ```bash
   scp /etc/nginx/sites-available/A.mysite.com user@new_server_ip:/etc/nginx/sites-available/
   ```

2. **Создайте символическую ссылку:**
   Если вы скопировали файл в `sites-available`, создайте символическую ссылку в `sites-enabled` на новом сервере.
   ```bash
   sudo ln -s /etc/nginx/sites-available/A.mysite.com /etc/nginx/sites-enabled/
   ```

3. **Проверьте конфигурацию Nginx:**
   Убедитесь, что конфигурация корректная.
   ```bash
   sudo nginx -t
   ```

### 3. Получение новых сертификатов

1. **Запустите Certbot для получения сертификатов:**
   Теперь вместо переноса старых сертификатов лучше получить новые, чтобы избежать проблем с протекцией и сроками действия. Используйте следующую команду, чтобы получить новый сертификат:
   ```bash
   sudo certbot --nginx -d A.mysite.com
   ```

2. **Настройте автоматическое обновление сертификатов:**
   Убедитесь, что у вас настроено автоматическое обновление сертификатов. Это обычно делается автоматически при установке Certbot, но вы можете проверить с помощью:
   ```bash
   sudo systemctl status certbot.timer
   ```

### 4. Переключение трафика на новый сервер

После успешного получения сертификатов и настройки Nginx, подождите некоторое время (до 24 часов) для распространения DNS, если вы изменили DNS-записи. Вы можете использовать команду `dig` или `nslookup`, чтобы проверить, корректно ли настроены записи.

### 5. Проверка

1. **Проверьте работу поддомена:**
   Убедитесь, что поддомен функционирует правильно, и сертификат валиден, используя браузер или инструменты для проверки сертификатов.

2. **Проверьте автоматическое продление сертификатов:**
   Убедитесь, что сертификаты могут обновляться автоматически, выполнив:
   ```bash
   sudo certbot renew --dry-run
   ```

### Замечания

- Копировать директорию `/etc/letsencrypt` иногда не работает, так как могут быть различия в конфигурациях сертификатов, а также в метаданных, которые Certbot использует для управления сертификатами.
- Никакие сертификаты не должны быть перенесены или копированы между серверами — проще и надежнее получить новый сертификат на новом сервере.

Таким образом, следуя этим шагам, вы сможете успешно перенести поддомен на новый сервер с минимальными проблемами и сохранить управление сертификатами от Let's Encrypt.
Значит что то желаете неправильно. При переносе на другой сервер днс записей, сертификата и приватного ключа - все должно работать.
Похожие вопросы