From 3551fb233508cc40ae5d5ecf1e811d76472693f3 Mon Sep 17 00:00:00 2001 From: Badanin Maksim Date: Sun, 24 Mar 2024 09:21:21 +0300 Subject: [PATCH] init --- .env | 5 +++++ Dockerfile | 12 ++++++++++++ README.md | 34 ++++++++++++++++++++++++++++++++++ docker-compose.yml | 24 ++++++++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 .env create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 docker-compose.yml diff --git a/.env b/.env new file mode 100644 index 0000000..c8119eb --- /dev/null +++ b/.env @@ -0,0 +1,5 @@ +NPM_IMAGE=jc21/nginx-proxy-manager +NPM_VERSION=2.11.1 +NPM_HOSTNAME= #npm +DOMAIN_NAME= #example.com +CA_HOSTNAME= #ca diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a804780 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +ARG NPM_IMAGE +ARG NPM_VERSION + +FROM $NPM_IMAGE:$NPM_VERSION + +ARG DOMAIN_NAME +ARG CA_HOSTNAME +ENV CA_FQDN=${CA_HOSTNAME}.${DOMAIN_NAME} + +RUN echo -e "server=https://$CA_FQDN/acme/acme/directory\nno-verify-ssl = true" >> /etc/letsencrypt.ini + +RUN sed -i "s\Let's Encrypt\\$CA_FQDN\g" /app/frontend/js/*.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..8753e3a --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +## Установка NGINX PROXY MANAGER в связке с локальним STEP-CA + +Позволяем автоматически выпуска и перевыпускать сертификаты для проксирумых хостов. +Педполагает что уже развернут и работает локальный экземпляр [step-ca](https://git.badms.ru/bms/step-ca). + +#### Параметры переменных в файле `.env` + +``` +NPM_IMAGE=jc21/nginx-proxy-manager # имя образа контейнера +NPM_VERSION=2.11.1 # версия контейнера +NPM_HOSTNAME= # имя хоста(контейнера). Например: npm +DOMAIN_NAME= # имя домена хоста. Например: example.com +CA_HOSTNAME= # имя хоста(контейнера) локального step-ca. Например: ca +``` + + +### Запуск + +``` +git clone https://git.badms.ru/bms/npm-step-ca.git +cd npm-step-ca +docker compose up -d +``` + +### ToDo + +При работе с `Let's Encrypt` сертификаты выпускаются на `90 дней`, и продлеваются если осталось менее `30 дней` до истечения. `NPM` запускает процедуру перевыпуска сертификатов каждый `1 час` и сверяет дату кончания сертификатов, чтобы сделать запрос для устаревающих. + +`STEP-CA` по умолчанию выпускает сертификаты на `1 день`, из-за этого `NPM` производит перевыпуск сертификата каждый час. В связи с этим, остается много старых файлов сертификатов в директории `data/npm-letsencrypt/archive`. + +Варианты решения: + +[ ] организовать очистку старых сертификатов +[ ] изменить максимальный срок выпуска сертификатов в `step-ca` diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f243626 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3.8' +services: + npm: + image: '${NPM_IMAGE}-step-ca:${NPM_VERSION}' + container_name: npm + hostname: ${NPM_HOSTNAME}.${DOMAIN_NAME} + restart: unless-stopped + build: + context: ./ + args: + NPM_IMAGE: ${NPM_IMAGE} + NPM_VERSION: ${NPM_VERSION} + NPM_HOSTNAME: ${NPM_HOSTNAME} + DOMAIN_NAME: ${DOMAIN_NAME} + CA_HOSTNAME: ${CA_HOSTNAME} + ports: + - '80:80' + - '443:443' + - '81:81' + environment: + DISABLE_IPV6: 'true' + volumes: + - ./data/npm-data:/data + - ./data/npm-letsencrypt:/etc/letsencrypt