Вышел NPMPlus - форк Nginx Proxy Manager с улучшениями

Не зря я ругался на NPM
Сообщество решило форкнуть проект и выпустить NPM Plus

Основные отличия (NPMplus vs оригинальный Nginx Proxy Manager)

Фича Оригинальный Nginx Proxy Manager NPMplus
HTTP/3 (QUIC) Нет официальной поддержки HTTP/3 в большинстве версий (только через ручные настройки или патчи). Поддерживается.
Web Application Firewall (WAF) / IPS / ModSecurity Стандартно нет интегрированной WAF или IPS, кроме базовых возможностей. Требуются внешние решения. Есть поддержка CrowdSec IPS, ModSecurity + Core Rule Set.
Логи / аналитика В базовой версии логирование, но нет продвинутой встроенной аналитики или реального времени с красивыми дашбордами. Включен GoAccess для просмотра логов / аналитики.
UI / Темы / Удобства Интерфейс работает, базовые функции по настройке прокси, SSL, редиректов и т.п. Есть дополнения: тёмный режим, улучшенные настройки TLS, улучшенные опции для продвинутых пользователей.
TLS / сертификаты Поддержка Let’s Encrypt, загрузка пользовательских certs. То же + оптимизации: ускорение создания сертификатов, OCSP Stapling, возможность более гибкой настройки ACME, кастомные CA и chain.pem, поддержка многих доменов на один сертификат (до ~99) и пр.
Безопасность Хорошая, но в базовой версии меньше встроенных защит. Улучшенная за счёт WAF, IPS, более строгих TLS-протоколов, скрытия заголовков и пр.
Поддержка и активность разработки Оригинальный проект развивается, но некоторые пользователи жалуются, что обновления медленные. ([Reddit][3]) По отзывам, форк более активно развивается, добавляются новые функции, баги исправляются.
Сложность / надстройки Проще, меньше дополнительных компонентов, легче поддерживать минимальную установку. Более сложный набор возможностей, больше зависимостей, потенциально более высокая нагрузка и больше параметров, которые надо конфигурировать. Это может быть как плюсом (гибкость), так и минусом (сложность).

Плюсы NPMplus

  • Более современная безопасность (HTTP/3, WAF, IPS).
  • Дополнительные функции аналитики (логи, GoAccess).
  • Богатая настройка TLS и сертификатов.
  • Дополнительные удобства в UI, темная тема и др.
  • Активное развитие и сообщество, добавление новых опций.

Минусы / недостатки NPMplus по сравнению с оригиналом

  • Более высокая сложность конфигурации (больше настроек, больше возможностей — больше того, что может пойти не так).
  • Потенциально выше требования к ресурсам, особенно при включённых WAF/IPS, HTTP/3 и других дополнительных службах.
  • Совместимость: если есть плугины/настройки, ориентированные на оригинальный NPM, могут быть несовместимости.
  • Более частые изменения: может потребоваться чаще обновлять, следить за изменениями в форке.
Полный список изменений на Английском
  • Supports HTTP/3 (QUIC) protocol, requires you to expose https with udp
  • Supports CrowdSec IPS. Please see here to enable it
  • Goaccess included, see compose.yaml to enable, runs by default on https://<ip>:91 (nginx config from here)
  • Supports ModSecurity (which tends to overblocking, so not recommended), with coreruleset as an option. You can configure ModSecurity/coreruleset by editing the files in the /opt/npmplus/modsecurity folder (no support from me, you need to write the rules yourself - for CoreRuleSet I can try to help you)
    • By default NPMplus UI does not work when you proxy NPMplus through NPMplus and you have CoreRuleSet enabled, see below
    • ModSecurity by default blocks uploads of big files, you need to edit its config to fix this, but it can use a lot of resources to scan big files by ModSecurity
    • ModSecurity overblocking (403 Error) when using CoreRuleSet? Please see here and edit the /opt/npmplus/modsecurity/crs-setup.conf file
      • Try to whitelist the Content-Type you are sending (for example, application/activity+json for Mastodon and application/dns-message for DoH)
      • Try to whitelist the HTTP request method you are using (for example, PUT is blocked by default, which also blocks NPMplus UI)
    • CoreRuleSet plugins are supported, you can find a guide in this readme
  • Option to load the openappsec attachment module, see compose.yaml for details
  • Darkmode button in the footer for comfortable viewing (CSS done by @theraw)
  • Load balancing possible (requires custom configuration), see below
  • Only enables TLSv1.2 and TLSv1.3 protocols, also ML-KEM support
  • Faster creation of TLS certificates is achieved by eliminating unnecessary nginx reloads and configuration creations
  • Supports OCSP Stapling/Must-Staple for enhanced security (manual certs not supported, see compose.yaml for details)
  • Resolved dnspod plugin issue
    • To migrate manually, delete all dnspod certs and recreate them OR change the credentials file as per the template given here
  • Smaller docker image based on alpine linux
  • Admin backend interface runs with https
  • Default page also runs with https
  • Option to change default TLS cert
  • Option to use fancyindex if used as webserver
  • Exposes INTERNAL backend api only to localhost
  • Basic security headers are added if you enable HSTS (HSTS has always subdomains and preload enabled)
  • access.log is disabled by default, unified and moved to /opt/npmplus/nginx/access.log
  • Error Log written to console
  • Server response header hidden
  • PHP optional, with option to add extensions; available packages can added using envs in the compose file, recommended to be used together with PUID/PGID
  • Allows different acme servers using env
  • Supports Brotli compression
  • punycode domain support
  • HTTP/2 always enabled with fixed upload
  • Allows infinite upload size (may be limited if you use ModSecurity)
  • Automatic database vacuum (only sqlite)
  • Automatic cleaning of old invalid certbot certs (set CLEAN to true)
  • Password reset (only sqlite) using docker exec -it npmplus password-reset.js USER_EMAIL PASSWORD
  • Multi language support, if you want to add a language, see this commit as an example: add de-lang · ZoeyVid/NPMplus@a026b42 · GitHub (implementation based on @lateautumn233 fork)
  • See the compose file for all available options
  • Many env options optimized for network_mode host (ports/ip bindings)
  • Allow port range in streams and $server_port as a valid input
  • Improved regex checks for inputs
  • Merge of upstreams OIDC PR
  • DNS secrets are not mounted anymore, since they are saved in the db and rewritten on every container start, so they don’t need to be mounted
  • Fixed smaller issues/bugs
  • Other small changes/improvements
2 лайка

Можно ли комментарии NPMPlus vs Traeffik ?

NPMPlus это тоже NPM, Plus не сделал из него трафик, но пытается слегка

NPM больше про

  • Ориентированность на пользователей с начальным уровнем знаний и маленькие компании
  • WebUI админку, с которой справится кто угодно
  • Ручное заведение конфигурации
  • Базовые функции обратного прокси
  • Один инстанс

Traefik больше про

  • Ориентированность на Middle+ специалистов, DevOps мастеров и крупные корпоративные решения
  • Cloud Native решения типа docker/k8s
  • Подтягивание динамической конфигурации из различных источников
  • CI/CD, IaC и прочее, с предыдущим пунктом имеем возможность создания кластера из Traefik за счет подтягивания конфигурации несколькими нодами трафика из одной базы
  • Плагины, в том числе интеграция с crowdsec и прочими штуками
  • Отправка метрик и логов в единую систему
  • Более сложную настройку за счет более гибких конфигурационных инструментов

Разные задачи и целевые аудитории

  • NPM - дает быстрый старт, но по мере усложнения задач приходится лезть внутрь и что-то ковырять.
  • Traefik - это когда ты заморачиваешься с IT ландшафтом, тратишь кучу времени, а потом у тебя все самые крутые практики и уведомления в телугу
  • Envoy - когда traefik уже не вывозит, у тебя 100500 сервисов за ним, сложные REST API правила, Валидация JWT токена на шлюзе, версионирование API и правила вида https://api.domain.com/api/v{version}/{service name}/{method}https://{service name}.prod.msk.corp/v{version}/{method} и это уже не reverse-proxy, а api-gateway. А у тебя не просто IT-ландшафт, а IT-ландшафт, проработанный и согласованный на всех местах
  • ha-proxy - когда у тебя куча гигабитных каналов и traefik уже совсем не вывозит, а envoy кряхтит в одно лицо и ты, начинаешь балансировать сырой трафик между reverse-proxy и apl-gateway, а внутри у тебя куча СУБД, которые ты тоже пытаешься отбалансировать
  • Angie - когда traefik не вывозит, но у тебя есть свободные программисты и сисадмины и вы пилите свой продукт c автоматизированной подготовкой конфигов
  • Nginx - когда ты бородатый админ, но до пенсии еще далеко (ха, конечно, на пару раз моргнуть), у тебя пару десятков сайтов и vim в сердце. А nginx работает так, что не прикопаешься ни по конфигурации ни по производительности, главное не пускать падавана на продакшин, а то он все ушатает там
  • Apache - это когда ты бордатый и свитератый админ, и девочками называешь бабушек пенсионного возраста. Скорее всего, у тебя сайт на PHP или Perl, а может и модуль веб публикации 1C, в локальной сети kerberos токены шныряют как блохи на тузике, а каждый Apache имеет свой keytab
  • IIS - когда ты из всего моего поста понял только Kerberos
  • Caddy - это когда ты вообще ничего не понял из того, что было написано выше

Disclaimer
Описанные в сообщении люди, технологии, события и обстоятельства – вымышлены. У админов и админь из этого сравнения нет конкретных прототипов в реальном мире. Любые утверждения об обратном являются хайпом или провокацией.

Всякое сходство с экстралингвистической действительностью случайно. Любая попытка обнаружить в сообщении какие-то оскорбления, намеки и параллели является рептильной проекцией антинаучного ума и подсознательным вредительством.

Высказывания и мнения автора не выражают позицию владельца ресурса, не являются его прямой речью и служат исключительно целям выпуклой лепки художественно убедительных образов.

3 лайка

А еще я посмотрел конфиги и NPMPlus прям очень круто интегрировать с собственным CA, особенно в свете [Подготовка ролика] Зачем Домашний сервер в 2026 году? - #3 от пользователя vk_hlab

1 лайк

На всякий случай - у Траеффик тем более нет проблем с интеграцией с локальным CA

1 лайк