Cookie Consent by Free Privacy Policy website Lze na alpine linuxu provozovat hestia control panel? - jetoonas.cz

Lze na alpine linuxu provozovat hestia control panel?


Lze na alpine linuxu provozovat hestia control panel?

ChatGPT řekl:

HestiaCP oficiálně nepodporuje Alpine Linux a instalace na něm by byla velmi komplikovaná.
Důvodem je, že HestiaCP je navržen pro Debian a Ubuntu (resp. systémy s apt a standardním FHS), zatímco Alpine:

  1. Používá musl libc místo glibc → některé binárky a skripty mohou selhat.

  2. minimální základní systém – mnoho závislostí, které HestiaCP potřebuje (Postfix, Dovecot, PHP-FPM, MariaDB, Bind, atd.) by se muselo ručně doinstalovat a zkompilovat.

  3. Používá OpenRC místo systemd, přičemž HestiaCP počítá se systemd nebo sysvinit skripty.

  4. Instalátor HestiaCP je psaný v bash a očekává konkrétní strukturu /etc/, /var/ a /usr/, kterou Alpine nemá.

  5. apk balíčky v Alpine se jmenují jinak než apt balíčky – instalační skript HestiaCP by je nepoznal.


Možné přístupy

Pokud chceš HestiaCP za každou cenu provozovat na Alpine, existují tyto varianty:

1. Docker s Debianem/Ubuntu uvnitř (doporučeno)

  • Alpine běží jako host OS (malý a rychlý).

  • HestiaCP běží uvnitř Docker kontejneru založeného na Debianu nebo Ubuntu.

  • Alpine zůstane čistý a odlehčený, HestiaCP bude mít vše, co potřebuje.

Příklad:

docker run -d --name hestia \
-p 8083:8083 \
-p 80:80 -p 443:443 \
ubuntu:22.04

Pak se do kontejneru přihlásíš:

docker exec -it hestia bash

A nainstaluješ HestiaCP klasicky:

apt update && apt upgrade -y
wget [https]://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
bash hst-install.sh

Výhoda: čistý Alpine, snadná správa, oficiálně podporované prostředí pro HestiaCP.
Nevýhoda: malý overhead navíc díky kontejneru.


2. Chroot prostředí s Debianem/Ubuntu

  • Na Alpine vytvoříš chroot s Debianem pomocí debootstrap.

  • V chrootu pak nainstaluješ HestiaCP.

Postup je podobný Dockeru, jen bez kontejnerizace.
Hodí se, pokud nechceš Docker, ale potřebuješ nativní integraci do host systému.


3. Portace HestiaCP na Alpine (náročné)

  • Úprava instalačního skriptu, aby používal apk.

  • Psaní nových OpenRC init skriptů.

  • Testování kompatibility musl vs. glibc (například postfix a dovecot mají s musl problémy).

  • Dlouhodobá údržba.

  • Prakticky nový projekt – silně nedoporučuji.


Shrnutí

  • Ne, HestiaCP na Alpine nativně nespustíš bez velkých úprav.

  • Nejlepší řešení: provozovat HestiaCP v Docker kontejneru na Debian/Ubuntu obrazu → jednoduché, stabilní a oficiálně podporované.

  • Pokud Docker nechceš, použij chroot s Debianem.

Chceš, abych ti připravil konkrétní Dockerfile pro HestiaCP? 🐳


Jak na OpenWRT nasměřovat https požadavky různých domén na různé IP ve vnitřní síti pomocí "L4 + SNI"?

ChatGPT řekl:

Nastavení L4 + SNI v HAProxy znamená, že neukončuješ TLS (terminaci necháš až na cílovém serveru) a jenom se na základě SNI přeposílají celé TCP streamy.
To je ideální pro tvůj router s OpenWRT a slabším CPU – výkonově je to skoro jako NAT.

Níže popíšu kompletní konfiguraci, krok za krokem.


1. Zapnutí HAProxy v OpenWRT

Na OpenWRT musíš mít nainstalovaný balíček haproxy:

opkg update
opkg install haproxy

Po instalaci budeš mít konfigurační soubor zde:

/etc/haproxy/haproxy.cfg

2. Princip fungování

  • HAProxy běží na portu 443 na veřejné IP.

  • Pro každý HTTPS request se nejdřív podívá na první část TLS handshaku (ClientHello).

  • V SNI najde, jakou doménu klient požaduje.

  • Podle domény rozhodne, na který vnitřní server přepošle data – bez rozšifrování.

Internet → HAProxy (L4 + SNI) → vnitřní server s HTTPS

3. Základní konfigurace – příklad

Příklad:

  • www.uforing.cz → 192.168.10.10

  • api.uforing.cz → 192.168.10.20

  • blog.uforing.cz → 192.168.10.30

/etc/haproxy/haproxy.cfg

global
log /dev/log local0
log /dev/log local1 notice
maxconn 2048
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option tcplog
timeout connect 5s
timeout client 50s
timeout server 50s# Frontend - naslouchá na portu 443
frontend https_front
bind *:443
# Čeká na první pakety TLS, aby přečetl SNI
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }# Směrování podle SNI
use_backend be_www if { req_ssl_sni -i www.uforing.cz }
use_backend be_api if { req_ssl_sni -i api.uforing.cz }
use_backend be_blog if { req_ssl_sni -i blog.uforing.cz }

# Defaultní server, pokud žádné SNI neodpovídá
default_backend be_default

# Backend pro www.uforing.cz
backend be_www
mode tcp
server web1 192.168.10.10:443 check

# Backend pro api.uforing.cz
backend be_api
mode tcp
server api1 192.168.10.20:443 check

# Backend pro blog.uforing.cz
backend be_blog
mode tcp
server blog1 192.168.10.30:443 check

# Výchozí backend - třeba chybová stránka
backend be_default
mode tcp
server default1 192.168.10.50:443 check


4. Vysvětlení klíčových direktiv

Direktiva Význam
mode tcp HAProxy běží na L4, jen přeposílá šifrovaná data.
tcp-request inspect-delay 5s Počká max. 5 sekund na první data z klienta, aby mohl přečíst SNI z TLS handshaku.
req_ssl_hello_type 1 Podmínka – jedná se o TLS ClientHello (začátek šifrovaného spojení).
req_ssl_sni -i www.uforing.cz Podmínka – pokud SNI obsahuje danou doménu.
check Zdravotní kontrola cílového serveru.

5. Ověření funkčnosti

  1. Restart HAProxy:

    /etc/init.d/haproxy restart
  2. Podívej se do logu:

    logread -f
  3. Otestuj z klienta:

    curl -vk https://www.uforing.cz --resolve www.uforing.cz:443:TVA_PUBLIC_IP

Pokud vše funguje správně, měl by se request přeposlat na vnitřní server 192.168.10.10.


6. Výkonnostní optimalizace

a) Zapnout TCP Fast Open

Do sekce global přidej:

tune.ssl.default-dh-param 2048
tune.bufsize 32768

tune.ssl.default-dh-param je spíš pro L7 režim, ale zvětšení bufferu pomáhá i pro L4.


b) Použít nbproc nebo nbthread

MT7621 má dvě jádra, takže můžeš povolit více procesů:

global
nbproc 2

7. Shrnutí

Prvek Výhoda Nevýhoda
L4 + SNI TLS zůstává šifrované, žádné certifikáty na HAProxy, vysoký výkon Nelze směrovat podle cesty (/wp-admin/), jen podle domény
L7 (TLS terminace) Plná kontrola nad HTTP, možnost přepisovat hlavičky Výkonově drahé, potřebuješ certifikáty

8. Doporučení pro tvůj router

  • Na MediaTek MT7621 používej výhradně L4 + SNI.

  • Terminaci TLS přenech koncovým serverům (např. webserver s Nginx/Apache, nebo Hestia panel).

  • Pokud máš hodně domén, můžeš doplnit wildcard pravidla:

    use_backend be_wp if { req_ssl_sni -m end .uforing.cz }

    Toto pošle všechny subdomény *.uforing.cz na jeden server.