8e766b540e
- sites.yml — единый источник истины для всех сайтов - generate-configs.sh — генератор nginx конфигов, certbot domains.txt, .env - nginx: per-domain HTTPS (вместо all-or-nothing switch-config) - certbot: единый renew-all.sh, динамический init (без 5 дублирующих скриптов) - backup: контейнер с pg_dump + rclone (Яндекс.Диск), ежедневно в 3AM - Gitea + Gitea Runner в docker-compose (self-hosted Git + CI/CD) - .gitea/workflows/deploy.yml — CI/CD pipeline: push → авто-деплой - Makefile: generate-configs, reconfig, deploy, backup, restore, gitea, help
33 lines
1.1 KiB
Bash
33 lines
1.1 KiB
Bash
#!/bin/sh
|
|
# init-certbot.sh — точка входа certbot контейнера
|
|
set -e
|
|
|
|
echo "=== Certbot init ==="
|
|
|
|
# Получаем сертификаты для всех доменов из DOMAINS_* env
|
|
env | grep '^DOMAINS_' | grep -v '^ALL_DOMAINS' | sort | while IFS='=' read -r var_name domains; do
|
|
primary_domain=$(echo "$domains" | cut -d, -f1)
|
|
|
|
if [ ! -d "/etc/letsencrypt/live/$primary_domain" ]; then
|
|
echo "→ Получаем сертификат для $primary_domain"
|
|
certbot certonly --webroot \
|
|
--config /etc/letsencrypt/config/certbot.ini \
|
|
-w /var/www/certbot \
|
|
-d "$domains"
|
|
echo "✓ Сертификат для $primary_domain получен"
|
|
else
|
|
echo "✓ Сертификат для $primary_domain уже существует"
|
|
fi
|
|
done
|
|
|
|
# Настраиваем cron для ежедневного обновления
|
|
cp /opt/crontab.txt /etc/crontabs/root
|
|
|
|
# Запускаем crond в фоне
|
|
crond -b
|
|
|
|
echo "=== Init завершён, контейнер работает ==="
|
|
|
|
# Держим контейнер живым
|
|
tail -f /dev/null
|