Something is changing 'listen' directive on nginx.conf of the Hestia

ip -d -j link show | jq . 
[ 
  { 
    "ifindex": 1, 
    "ifname": "lo", 
    "flags": [ 
      "LOOPBACK", 
      "UP", 
      "LOWER_UP" 
    ], 
    "mtu": 65536, 
    "qdisc": "noqueue", 
    "operstate": "UNKNOWN", 
    "linkmode": "DEFAULT", 
    "group": "default", 
    "txqlen": 1000, 
    "link_type": "loopback", 
    "address": "00:00:00:00:00:00", 
    "broadcast": "00:00:00:00:00:00", 
    "promiscuity": 0, 
    "allmulti": 0, 
    "min_mtu": 0, 
    "max_mtu": 0, 
    "inet6_addr_gen_mode": "eui64", 
    "num_tx_queues": 1, 
    "num_rx_queues": 1, 
    "gso_max_size": 65536, 
    "gso_max_segs": 65535, 
    "tso_max_size": 524280, 
    "tso_max_segs": 65535, 
    "gro_max_size": 65536 
  }, 
  { 
    "ifindex": 2, 
    "ifname": "eno1np0", 
    "flags": [ 
      "BROADCAST", 
      "MULTICAST", 
      "SLAVE", 
      "UP", 
      "LOWER_UP" 
    ], 
    "mtu": 1500, 
    "qdisc": "mq", 
    "master": "bond0", 
    "operstate": "UP", 
    "linkmode": "DEFAULT", 
    "group": "default", 
    "txqlen": 1000, 
    "link_type": "ether", 
    "address": "92:dc:4b:f7:5a:8a", 
    "broadcast": "ff:ff:ff:ff:ff:ff", 
    "permaddr": "ac:1f:6b:56:7f:2e", 
    "promiscuity": 0, 
    "allmulti": 0, 
    "min_mtu": 68, 
    "max_mtu": 9702, 
    "linkinfo": { 
      "info_slave_kind": "bond", 
      "info_slave_data": { 
        "state": "ACTIVE", 
        "mii_status": "UP", 
        "link_failure_count": 1, 
        "perm_hwaddr": "ac:1f:6b:56:7f:2e", 
        "queue_id": 0, 
        "prio": 0, 
        "ad_aggregator_id": 1, 
        "ad_actor_oper_port_state": 63, 
        "ad_actor_oper_port_state_str": [ 
          "active", 
          "short_timeout", 
          "aggregating", 
          "in_sync", 
          "collecting", 
          "distributing" 
        ], 
        "ad_partner_oper_port_state": 61, 
        "ad_partner_oper_port_state_str": [ 
          "active", 
          "aggregating", 
          "in_sync", 
          "collecting", 
          "distributing" 
        ] 
      } 
    }, 
    "inet6_addr_gen_mode": "none", 
    "num_tx_queues": 16, 
    "num_rx_queues": 16, 
    "gso_max_size": 65536, 
    "gso_max_segs": 65535, 
    "tso_max_size": 65536, 
    "tso_max_segs": 65535, 
    "gro_max_size": 65536, 
    "phys_port_name": "p0", 
    "phys_port_id": "ac1f6b567f2e", 
    "phys_switch_id": "2e7f56ffff6b1fac", 
    "parentbus": "pci", 
    "parentdev": "0000:1b:00.0", 
    "vfinfo_list": [] 
  }, 
  { 
    "ifindex": 3, 
    "ifname": "eno2np1", 
    "flags": [ 
      "BROADCAST", 
      "MULTICAST", 
      "SLAVE", 
      "UP", 
      "LOWER_UP" 
    ], 
    "mtu": 1500, 
    "qdisc": "mq", 
    "master": "bond0", 
    "operstate": "UP", 
    "linkmode": "DEFAULT", 
    "group": "default", 
    "txqlen": 1000, 
    "link_type": "ether", 
    "address": "92:dc:4b:f7:5a:8a", 
    "broadcast": "ff:ff:ff:ff:ff:ff", 
    "permaddr": "ac:1f:6b:56:7f:2f", 
    "promiscuity": 0, 
    "allmulti": 0, 
    "min_mtu": 68, 
    "max_mtu": 9702, 
    "linkinfo": { 
      "info_slave_kind": "bond", 
      "info_slave_data": { 
        "state": "ACTIVE", 
        "mii_status": "UP", 
        "link_failure_count": 1, 
        "perm_hwaddr": "ac:1f:6b:56:7f:2f", 
        "queue_id": 0, 
        "prio": 0, 
        "ad_aggregator_id": 1, 
        "ad_actor_oper_port_state": 63, 
        "ad_actor_oper_port_state_str": [ 
          "active", 
          "short_timeout", 
          "aggregating", 
          "in_sync", 
          "collecting", 
          "distributing" 
        ], 
        "ad_partner_oper_port_state": 61, 
        "ad_partner_oper_port_state_str": [ 
          "active", 
          "aggregating", 
          "in_sync", 
          "collecting", 
          "distributing" 
        ] 
      } 
    }, 
    "inet6_addr_gen_mode": "none", 
    "num_tx_queues": 16, 
    "num_rx_queues": 16, 
    "gso_max_size": 65536, 
    "gso_max_segs": 65535, 
    "tso_max_size": 65536, 
    "tso_max_segs": 65535, 
    "gro_max_size": 65536, 
    "phys_port_name": "p1", 
    "phys_port_id": "ac1f6b567f2f", 
    "phys_switch_id": "2e7f56ffff6b1fac", 
    "parentbus": "pci", 
    "parentdev": "0000:1b:00.1", 
    "vfinfo_list": [] 
  }, 
  { 
    "ifindex": 4, 
    "ifname": "bond0", 
    "flags": [ 
      "BROADCAST", 
      "MULTICAST", 
      "MASTER", 
      "UP", 
      "LOWER_UP" 
    ], 
    "mtu": 1500, 
    "qdisc": "noqueue", 
    "operstate": "UP", 
    "linkmode": "DEFAULT", 
    "group": "default", 
    "txqlen": 1000, 
    "link_type": "ether", 
    "address": "92:dc:4b:f7:5a:8a", 
    "broadcast": "ff:ff:ff:ff:ff:ff", 
    "promiscuity": 0, 
    "allmulti": 0, 
    "min_mtu": 68, 
    "max_mtu": 65535, 
    "linkinfo": { 
      "info_kind": "bond", 
      "info_data": { 
        "mode": "802.3ad", 
        "miimon": 100, 
        "updelay": 0, 
        "downdelay": 0, 
        "peer_notify_delay": 0, 
        "use_carrier": 1, 
        "arp_interval": 0, 
        "arp_missed_max": 2, 
        "arp_validate": null, 
        "arp_all_targets": "any", 
        "primary_reselect": "always", 
        "fail_over_mac": "none", 
        "xmit_hash_policy": "layer2", 
        "resend_igmp": 1, 
        "num_peer_notif": 1, 
        "all_slaves_active": 0, 
        "min_links": 0, 
        "lp_interval": 1, 
        "packets_per_slave": 1, 
        "ad_lacp_active": "on", 
        "ad_lacp_rate": "fast", 
        "ad_select": "stable", 
        "ad_info": { 
          "aggregator": 1, 
          "num_ports": 2, 
          "actor_key": 15, 
          "partner_key": 15, 
          "partner_mac": "2a:99:3a:7d:61:ed" 
        }, 
        "ad_actor_sys_prio": 65535, 
        "ad_user_port_key": 0, 
        "ad_actor_system": "00:00:00:00:00:00", 
        "tlb_dynamic_lb": 1 
      } 
    }, 
    "inet6_addr_gen_mode": "eui64", 
    "num_tx_queues": 16, 
    "num_rx_queues": 16, 
    "gso_max_size": 65536, 
    "gso_max_segs": 65535, 
    "tso_max_size": 65536, 
    "tso_max_segs": 65535, 
    "gro_max_size": 65536 
  } 
]

I don’t see any IPs in this output.

Ok, I see the problem and it’s in a previous command:

ip -d -j link show | jq -r '.[] | if .link_type == "loopback" // .linkinfo.info_kind then empty else .ifname end'

That command doesn’t found your bond interface.

Could you please test this command and check that you see the 3 interfaces?

ip -d -j link show | jq -r '.[] | if .link_type == "loopback" then empty elif .linkinfo.info_kind == "bond" then .ifname elif .linkinfo.info_kind then empty else .ifname end'

If tou see the 3 interfaces, edit this file /usr/local/hestia/func/syshealth.sh and in this function syshealth_adapt_hestia_nginx_listen_ports replace this:

        physical_nics="$(ip -d -j link show | jq -r '.[] | if .link_type == "loopback" // .linkinfo.info_kind then empty else .ifname end')"

With this:

        physical_nics="$(ip -d -j link show | jq -r '.[] | if .link_type == "loopback" then empty elif .linkinfo.info_kind == "bond" then .ifname elif .linkinfo.info_kind then empty else .ifname end')"

Save the file and try again apt upgrade

Yes, it shows all 3 interfaces:

ip -d -j link show | jq -r '.[] | if .link_type == "loopback" then empty elif .linkinfo.info_kind == "bond" then .ifname elif .linkinfo.info_ki
nd then empty else .ifname end' 
eno1np0 
eno2np1 
bond0

Now replace the file as I said and try apt upgrade.

Yes, now after the upgrade, hestia service is launched:

systemctl status hestia  
● hestia.service - LSB: starts the hestia control panel 
     Loaded: loaded (/etc/init.d/hestia; generated) 
     Active: active (running) since Thu 2026-10-01 14:41:58 UTC; 23s ago 
       Docs: man:systemd-sysv-generator(8) 
    Process: 4153566 ExecStart=/etc/init.d/hestia start (code=exited, status=0/SUCCESS) 
      Tasks: 3 (limit: 76647) 
     Memory: 10.7M (peak: 15.0M) 
        CPU: 72ms 
     CGroup: /system.slice/hestia.service 
             ├─4153571 "nginx: master process /usr/local/hestia/nginx/sbin/hestia-nginx" 
             ├─4153572 "nginx: worker process" 
             └─4153574 "php-fpm: master process (/usr/local/hestia/php/etc/php-fpm.conf)" 
 
Oct 01 14:41:58 systemd[1]: Starting hestia.service - LSB: starts the hestia control panel... 
Oct 01 14:41:58 hestia[4153566]:  * Starting hestia-nginx hestia-nginx 
Oct 01 14:41:58 hestia[4153566]:    ...done. 
Oct 01 14:41:58 hestia[4153566]:  * Starting hestia-php hestia-php 
Oct 01 14:41:58 hestia[4153566]:    ...done. 
Oct 01 14:41:58 systemd[1]: Started hestia.service - LSB: starts the hestia control panel. 

netstat -anp | grep :8778 
tcp        0      0 0.0.0.0:8778            0.0.0.0:*               LISTEN      4153571/nginx: mast 

Ok, I’ve created this PR to support bond interfaces in hestia-nginx port detection: