Привязка BPMSoft к привилегированным портам в
Linux
Симптомы
При попытке перенастроить приложение BPMSoft на использование порта 443 (стандартный HTTPS‑порт) можно столкнуться с ошибкой при запуске:
2025-10-10 17:54:44,086 [.NET TP Worker] FATAL Microsoft.AspNetCore.Server.Kestrel ExecutionContextCallback - Unable to bind to 'https://::443' on config reload.|System.Net.Sockets.SocketException (13): Permission denied
Причина
В Linux порты ниже 1024 считаются привилегированными. Для привязки к ним процессу нужна capability CAP_NET_BIND_SERVICE. Процессы, запущенные от root, получают эту возможность автоматически. Процессы обычных пользователей — нет, поэтому попытка привязки заканчивается отказом в доступе.
Решение
Способы решения:
- Выдать BPMSoft право на привязку к привилегированным портам через systemd. Подробнее: Настройка через systemd;
- Настроить обратный прокси-сервер (например, HAProxy). Подходит, если нужны функции прокси-сервера. Подробнее: Настройка HAProxy.
Настройка через systemd
- В файле appsettings.json измените адрес HTTPS, указав порт 443:
"Url": "https://::443"
- В секции [Service] systemd-юнита BPMSoft добавьте следующие строки:
[Service] User=dotnetuser Group=dotnetuser AmbientCapabilities=CAP_NET_BIND_SERVICE CapabilityBoundingSet=CAP_NET_BIND_SERVICE NoNewPrivileges=yes
User, Group - пользователь, от которого работает BPMSoft (не root).
- Примените изменения и перезапустите сервис
sudo systemctl daemon-reload sudo systemctl restart <имя сервиса BPMSoft>
Теперь BPMSoft сможет привязываться только к портам ниже 1024 и будет работать без root-прав. Это ограничение действует только на процессы данного сервиса.
Настройка HAProxy
- Обновите список пакетов:
sudo apt update
- Установите HAProxy:
sudo apt install haproxy
- Включите и запустите сервис:
sudo systemctl enable haproxy sudo systemctl start haproxy
Подробнее: Установка HAProxy.
- Убедитесь, что BPMSoft слушает порт 5002 (замените example.com на ваш домен/IP):
curl https://example.com:5002
- Создайте файл конфигурации:
sudo nano /etc/haproxy/haproxy.cfg
- Вставьте следующий текст для минимальной настройки HAProxy:
frontend main
bind :443 ssl crt /etc/ssl/private/your_cert_and_key.pem
default_backend app
backend app
server app1 127.0.0.1:5002 check ssl verify required ca-file /etc/ssl/certs/ca.pem
Укажите корректные пути к SSL‑сертификату и приватному ключу в формате pem (вместо /etc/ssl/private/your_cert_and_key.pem и /etc/ssl/certs/ca.pem). Подробнее: Настройка конфигурации HAProxy.
- Проверьте синтаксис конфигурации:
sudo haproxy -f /etc/haproxy/haproxy.cfg -c
Сообщение Configuration file is valid означает, что конфигурация корректна.
- Если ошибок нет, перезагрузите HAProxy:
sudo systemctl reload haproxy
- Проверьте работоспособность, открыв BPMSoft в браузере (замените example.com на ваш домен/IP):
https://example.com:443
Рекомендуем изучить
Общие принципы диагностики проблем при развертывании BPMSoft
Развертывание BPMSoft на Linux