Когда возникла необходимость публиковать несколько разных вебсервисов из локальной сети, искал решение, которое бы позволяло это делать, через простой и удобный интерфейс. В итоге нашел "Nginx Proxy Manager" - web ui для управления хостами в Nginx, а также позволяющий получать/обновлять сертификаты Let's Encrypt.
Ссылка на офсайт: https://nginxproxymanager.com/
Установка может быть произведена несколькими способами:
установка в docker описана неплохо на офсайте, по умолчанию ставится вместе с MYSQL, но можно вместо него использовать Sqlite.
Для этого нужно изменить файл docker-compose.yml,следующим образом:
version: "3"
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: always
ports:
# Public HTTP Port:
- '8080:80'
# Public HTTPS Port:
- '443:443'
# Admin Web Port:
- '81:81'
environment:
# If you would rather use Sqlite uncomment this
# and remove all DB_MYSQL_* lines above
DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
после чего запускаем
docker-compose up -d
Также можно установить в контейнер LXC на Proxmox. Опиcание и ссылка на установку тут.
UPD: недавно простая установка через скрипт который автоматически создает LXC контейнер с alpine сломалась, поэтому лучше использовать второй способ. А именно: создать вручную контейнер с Debian установить обновления, затем зайти внутрь контейнера и запустить там скрипт установки указанный тут
UPD2: еще один вариант со скриптом установки NPM есть тут (а также скрипты для других продуктов)
Далее входим на Admin Web панель по адресу http://Your_IP:81 (вместо Your_IP подставляем IP адрес)
И настраиваем через веб интерфейс
Пример настройки:
Дополнительно необходимо на вашем маршрутизаторе пробросить порты 443 и 80 на адрес "Nginx Proxy Manager". Порт 443 будет использоваться для Reverse Proxy, а порт 80 для продления сертификатов Let's Encrypt.
Если вы публикуете наружу вебсервера по протоколу https, а http не используете, можно настроить чтобы по 80 порту не долбились боты. Для этого перейдите в раздел "Settings" нам в строке "Default Site" нажмите на три точки и выберите как будете обрабатывать обращения на неизвестные хосты. По умолчанию стоит "Congratulations Page" можно выбрать "Redirect" или "404 Page".
PS: Если хотите чтобы я вам точно ответил, пишите в Telegram, )