diff --git a/npm_install.py b/npm_install.py
index f0faeaf..3f45d89 100644
--- a/npm_install.py
+++ b/npm_install.py
@@ -1262,7 +1262,7 @@ def ensure_nginx_symlink():
# ========== Angie / NPM template ==========
-ANGIE_CONF_TEMPLATE = """# run angie in foreground
+ANGIE_CONF_TEMPLATE = r"""# run angie in foreground
#daemon off;
load_module /etc/angie/modules/ngx_http_headers_more_filter_module.so;
@@ -1270,6 +1270,7 @@ load_module /etc/angie/modules/ngx_http_brotli_filter_module.so;
load_module /etc/angie/modules/ngx_http_brotli_static_module.so;
load_module /etc/angie/modules/ngx_http_zstd_filter_module.so;
load_module /etc/angie/modules/ngx_http_zstd_static_module.so;
+load_module /etc/angie/modules/ngx_http_echo_module.so;
# other modules
include /data/nginx/custom/modules[.]conf;
@@ -1321,7 +1322,7 @@ http {
# QUIC settings
quic_retry on;
- quic_gso on; # Performance boost dla Linux z UDP_SEGMENT
+ quic_gso on;
quic_active_connection_id_limit 2;
# Enable BPF for connection migration (Linux 5.7+)
@@ -1498,6 +1499,7 @@ def setup_angie(ipv6_enabled: bool):
"angie-module-headers-more",
"angie-module-brotli",
"angie-module-zstd",
+ "angie-module-echo"
]
optional = ["angie-module-prometheus", "angie-console-light"]
apt_install(base)
@@ -1526,10 +1528,72 @@ exec sudo -n /usr/sbin/angie "$@"
def write_metrics_files():
"""Create /etc/angie/metrics.conf (port 82 with console & status)."""
- with step("Adding Angie metrics & console on :82"):
+ with step("Adding Angie metrics & console on :82 / :8282 (https)"):
metrics = """include /etc/angie/prometheus_all.conf;
+server {
+ listen 8282 ssl;
+ http2 on;
+ access_log off;
+
+ ssl_certificate {cert_path};
+ ssl_certificate_key {key_path};
+
+ location / {
+ default_type text/html;
+ echo '';
+ echo '
Status Page';
+ echo 'Server Status
';
+ echo '';
+ echo '';
+ }
+
+ location /nginx_status {
+ stub_status on;
+ access_log off;
+ allow all;
+ }
+
+ auto_redirect on;
+
+ location /status/ {
+ api /status/;
+ api_config_files on;
+ }
+
+ location /console/ {
+ alias /usr/share/angie-console-light/html/;
+ index index.html;
+ }
+
+ location /console/api/ {
+ api /status/;
+ }
+
+ location =/p8s {
+ prometheus all;
+ }
+}
+
server {
listen 82;
+ access_log off;
+
+ location / {
+ default_type text/html;
+ echo '';
+ echo 'Status Page';
+ echo 'Server Status
';
+ echo '';
+ echo '';
+ }
location /nginx_status {
stub_status on;
@@ -3080,7 +3144,7 @@ server {{
status_zone npm_admin;
root {root_path};
- access_log /dev/null;
+ access_log off;
location /api {{
return 302 /api/;
@@ -3272,12 +3336,14 @@ def update_motd(
################################ NPM / ANGIE ################################
OS: {OSREL['PRETTY']} ({OSREL['ID']} {OSREL['VERSION_ID']})
{npm_line}
-Angie & Prometheus stats: http://{ip}:82/console | http://{ip}:82/p8s
+Angie & Prometheus stats: http://{ip}:82/console | http://{ip}:82/p8s
+ or https://{ip}:8282/console | https://{ip}:8282/p8s
+
Angie: {angie_v} (conf: /etc/angie -> /etc/nginx, reload: angie -s reload)
Node.js: v{node_v} Yarn: v{yarn_v}
NPM: {npm_v}
{npm_source}
-Paths: app=/opt/npm data=/data cache=/var/lib/angie/cache
+Paths: app=/opt/npm data=/data cache=/var/lib/angie/cache certbot=/opt/certbot
{ipv6_line}
###########################################################################
"""
@@ -3318,7 +3384,9 @@ def print_summary(
else:
print(f"NPM panel address: http://{ip}:{NPM_ADMIN_HTTP_PORT}")
- print(f"Angie & Prometheus stats: http://{ip}:82/console | http://{ip}:82/p8s")
+ print(f"Angie & Prometheus stats: http://{ip}:82/console | http://{ip}:82/p8s")
+ print(f"Angie & Prometheus stats (https): https://{ip}:8282/console | http://{ip}:8282/p8s")
+
print(f"Angie: v{angie_v}")
print(f"Node.js: v{node_v}")
print(f"Yarn: v{yarn_v}")
@@ -3326,7 +3394,7 @@ def print_summary(
print(f"IPv6: {'ENABLED' if ipv6_enabled else 'DISABLED'}")
print(
- "Paths: /opt/npm (app), /data (data), /etc/angie (conf), /var/log/angie (logs)"
+ "Paths: /opt/npm (app), /data (data), /etc/angie (conf), /opt/certbot (cerbot venv)"
)
print("Services: systemctl status angie.service / npm.service")