No description
Find a file
2026-09-06 14:48:34 +03:00
app edit install fille for client 2026-09-06 14:29:09 +03:00
.env.example add .env template 2026-09-04 14:36:15 +03:00
.gitignore edit install fille for client 2026-09-06 14:29:09 +03:00
install_client.sh edit install fille for client 2026-09-06 14:29:09 +03:00
install_server.sh add open port 2026-09-04 15:50:42 +03:00
README.md add README.md 2026-09-06 14:48:34 +03:00

CertSync

CertSync — сервис для автоматической синхронизации SSL-сертификатов между сервером (машина с белым IP) и клиентами (локальными серверами) .

Сервис состоит из двух частей:

  • Server на сервере создаются и обновляются SSL-сертификаты с помощью Let's Encrypt, а также предоставляется API для клиентов.
  • Client периодически подключается к серверу, проверяет сертификаты и обновляет их на локали.

Синхронизация выполняется для доменов, указанных в SYNC_DOMAINS.


Server

Серверная часть запускается как systemd-сервис и автоматически стартует после загрузки системы.
Сервер:

  • предоставляет API для клиентов;
  • работает с сертификатами;
  • выполняет авторизацию клиентов;
  • работает постоянно в фоне.
    После установки проверить статус:
sudo systemctl status CertSyncServer

Client

Клиентская часть запускается автоматически через cron.
Клиент:

  • подключается к серверу;
  • получает необходимые сертификаты;
  • обновляет сертификаты на локальной машине;
  • запускается автоматически каждые 4 часа.

Проверить установленную задачу:

sudo crontab -l

Пример:

0 */4 * * * /home/user/Soft/CertSync/app/.venv/bin/python /home/user/Soft/CertSync/app/Client.py

Настройка .env

Перед установкой необходимо настроить файл .env. Пример конфигурации:

# Настройки сервера
SERVER_IP=10.0.13.1
SERVER_PORT=5013
SEVER_PATH_CERT=/etc/letsencrypt/live/
SECRET_KEY=your-secret-key

# Настройки клиента
CLIENT_IP=10.0.13.10
CLIENT_PATH_CERT=/etc/letsencrypt/live/

# Общие настройки
SYNC_DOMAINS=example.com,example.ru

# Пользователь для авторизации
USER_LOGIN=admin
USER_PASSWORD=your-password

Настройки сервера

Параметр Описание Пример
SERVER_IP IP-адрес сервера 10.0.13.1
SERVER_PORT Порт сервера 5013
SEVER_PATH_CERT Путь к сертификатам на сервере /etc/letsencrypt/live/
SECRET_KEY Секретный ключ your-secret-key

Настройки клиента

Параметр Описание Пример
CLIENT_IP IP-адрес клиента 10.0.13.10
CLIENT_PATH_CERT Путь к сертификатам на клиенте /etc/letsencrypt/live/

Общие настройки

SYNC_DOMAINS — список доменов, сертификаты которых необходимо синхронизировать. Несколько доменов указываются через запятую:

SYNC_DOMAINS=example.com,example.ru,test.example.com

Авторизация

USER_LOGIN и USER_PASSWORD используются для авторизации клиента на сервере. На сервере и клиенте должны быть указаны одинаковые значения:

USER_LOGIN=admin
USER_PASSWORD=your-password

Установка Server

Запустить установочный скрипт:

sudo bash install_server.sh

Скрипт автоматически:

  • создаст виртуальное окружение Python;
  • установит необходимые зависимости;
  • настроит systemd;
  • добавит сервер в автозапуск;
  • запустит сервер.

Установка Client

Запустить установочный скрипт:

sudo bash install_client.sh

Скрипт автоматически:

  • создаст виртуальное окружение Python;
  • установит необходимые зависимости;
  • настроит cron;
  • добавит запуск клиента каждые 4 часа.

Важно

Файл .env содержит секретные данные:

SECRET_KEY=
USER_LOGIN=
USER_PASSWORD=

Не передавайте .env третьим лицам и не добавляйте его в Git-репозиторий.