Unofficial
Na této stránce
  1. 01O aplikaci
  2. 02Snímky obrazovky
  3. 03První spuštění
  4. 04Weby
  5. 05Výchozí web
  6. 06Databáze
  7. 07S ostatními aplikacemi na NAS
  8. 08Bez veřejné adresy
  9. 09Instalace
  10. 10Co potřebuje
  11. 11Související stránky

WebHostPro: webhosting na vašem QNAP NAS

WebHostPro provozuje weby na QNAP NAS: statické weby, weby v PHP s vlastními databázemi a proxy k aplikacím na NAS, každý pod vlastní doménou s certifikátem, vše z jednoho panelu. Je zdarma a instaluje se z repozitáře App Center tohoto webu.

  • Běží na NASu QNAP s procesorem Intel nebo AMD (x86_64), v QTS 6.0 nebo QuTS hero 6.0 a novějších.
  • Instaluje se z repozitáře QNAP Utilities v App Center pod názvem (example) WebHostPro.
  • Panel: https://<NAS>:9541/; weby odpovídají na portech 9542 a 9543, dokud je nepřesunete na 80 a 443.
  • Sestaven ze zdrojových kódů nástrojem App Builder z Bucket & Code Server IDE.

01O aplikaci

WebHostPro provozuje weby na NAS QNAP. Je to sada webových serverů: nginx před každým webem, za ním Apache httpd pro weby, které ho používají, PHP 8.1 až 8.5, MariaDB, Percona Server, PostgreSQL, memcached a Valkey, s panelem v devíti jazycích, který weby přidává, mění a odebírá.

02Snímky obrazovky

WebHostPro: the overview of the sites and services The list of sites with their PHP version and certificate The wizard that adds a site A site's PHP settings

03První spuštění

Tlačítko Otevřít v App Center vede do panelu, https://<NAS>:9541/; port 9540, prostý HTTP, sem přesměruje. Při nové instalaci panel zobrazí First sign-in: heslo o nejméně 10 znacích, zadané dvakrát. Balíček žádné heslo nenastavuje ani negeneruje a panel uchovává jen otisk hesla, které nastavíte.

Stránka přijímá heslo jen z počítače ve vlastní síti NAS (privátní adresa, adresa smyčky nebo link-local) a jen 60 minut po spuštění panelu; dokud ho nikdo nenastaví, zvolí ho první člověk v síti, který panel v té hodině otevře. Chcete-li ji otevřít znovu, restartujte WebHostPro v App Center. Relace trvá 8 hodin a 10 neúspěšných přihlášení z jedné adresy tuto adresu na 15 minut zablokuje.

04Weby

Web je doména s aliasy, druh (statické soubory, PHP nebo proxy ke službě na NAS či v místní síti, i v kontejneru, s websockety), webový server (nginx nebo Apache httpd) a, je-li potřeba, databáze. Cílem proxy je adresa z privátního rozsahu, ne název hostitele. Každý web má vlastní účet ws-<ID>, který vlastní jeho složku a spouští jeho PHP, takže PHP jednoho webu nemůže číst soubory jiného. Složka je ve sdílené složce QTS nebo v datové složce WebHostPro a její public/ je kořen dokumentů.

PHP web spouští vlastní hlavní proces PHP-FPM a jeho karta PHP nese verzi (8.1 až 8.5), časové pásmo, limity, chyby, relace a zabezpečení, OPcache a JIT, APCu, rozšíření, další řádky php.ini a pracovní procesy PHP (fond). Řádek php.ini se kontroluje proti direktivám, které uvádí PHP dané verze; název, který načítá kód, spouští příkaz, jmenuje soubor nebo nese heslo, je odmítnut. Fond má správce procesů (na vyžádání, dynamický nebo statický), počet procesů (ve výchozím stavu na vyžádání s 5), dobu nečinnosti, počet požadavků na proces, časový limit požadavku a protokol pomalých požadavků, který ukazuje karta Logs. Pád nebo přetížené PHP jednoho webu ostatní nechá běžet a změna nastavení PHP jednoho webu restartuje jen PHP tohoto webu. Hlavní proces, který skončí, se spustí znovu a po pěti skončeních během minuty zůstane vypnutý; logs/php8.N-ID.log to uvádí.

Každý web může spouštět naplánované úlohy jako svůj vlastní účet a se svým vlastním PHP: soubor PHP, příkaz nebo vlastní adresu webu, každou minutu nebo podle libovolného plánu cronu. Stránka webu ukazuje výsledek a výstup každého běhu a MailServerPro pošle zprávu, když úloha začne selhávat.

Každý web s PHP má vlastní Valkey (mluví protokolem Redisu) a vlastní memcached, každý na soketu ve složce, kterou otevře jen tento web, takže ani jeden nepotřebuje heslo ani síťový port; karta Mezipaměť webu ukazuje oba sokety. Každý pojme až 64 MB a restart oba vyprázdní. Každá verze PHP má imagick s ImageMagick, který čte a zapisuje JPEG, PNG, WebP, GIF a AVIF a čte HEIC. Jeho pravidla odmítají formáty, které čtou jiné soubory nebo spouštějí programy, například SVG a MSL.

Soubory .htaccess webů na Apache mohou používat také ověřování Digest, skupiny ze souboru skupin, Substitute pro nahrazení textu na stránce a filtr RATE_LIMIT pro omezení rychlosti stahování.

Web s PHP může mít i vlastní rozšíření PECL: jeho karta PHP je sestaví pod vlastním účtem webu, bez sítě, v sestavovacím prostředí Bucket & Code Server IDE, a načte je jen PHP tohoto webu.

WebHostPro může jedním kliknutím převzít roli webového serveru NAS a nová instalace se na to jednou zeptá: správa QTS se přesune z portu 443 na 44443 a webový server QTS z 80 na 8880, každý krok se ověří před dalším, weby QTS přejdou za WebHostPro a jedno kliknutí na stránce Front and ports vrátí porty 80 a 443.

Průvodce vede od standardních portů a TurboDNS k prvnímu webu a po kontrole nastavení DNS navrhne šířit adresu serveru DNS přes DHCP routeru.

PHP nebo statický web, který servíruje nginx, má kartu Cache. nginx komprimuje textové odpovědi kromě gzip také pomocí Brotli a zstd. PHP web může zapnout mezipaměť stránek, ve výchozím stavu vypnutou: návštěvníci s přihlašovací cookie dostanou vždy čerstvou stránku, hlavička X-Cache říká HIT, MISS, STALE, UPDATING nebo BYPASS a Purge the cache ji vyprázdní. Statické soubory si prohlížeče mohou ponechat 1, 7, 30 nebo 365 dní. nginx přijme tělo požadavku až do největšího požadavku webu (post_max_size na kartě PHP) a nad ním odpoví 413; proxy web nemá na frontu žádný limit těla.

Add site je průvodce doménou: Domain, DNS, Registrar, Website, Database (u PHP webu), Certificate a Review. Krok DNS se ptá, kdo za zónu odpovídá (TurboDNS na tomto NAS; servery registrátora či poskytovatele DNS; nebo Cloudflare či OVHcloud ze zóny, kterou TurboDNS na tomto NAS vede) a jaké veřejné adresy tento NAS má. Krok Registrar vypisuje, co zadat tam, kde byla doména koupena, každou hodnotu s tlačítkem kopírování, a pod tím přesměrování routeru a stav frontu. Zkušební průchod v kroku Review ukáže plán webu a plán TurboDNS společně a jedno použití odešle oba. Certifikát pochází od Let’s Encrypt (HTTP-01, kde front servíruje soubor na portu 80, nebo DNS-01 přes TurboDNS či Cloudflare; WebHostPro ho obnoví, když zbývá 30 dní nebo méně), nebo je to nahraný certifikát, certifikát samotného NAS či samopodepsaný.

Po použití má přehled webu (Overview) kartu Finish setting up <name>: Site applied, Records in TurboDNS, At the registrar, Live check, Certificate a Finish. Check now přečte jmenné servery nadřazené zóny, TurboDNS tohoto NAS, tři veřejné resolvery a front a říká, že nevidí, zda porty 53, 80 a 443 dosáhnou na NAS z internetu; řádek Certificate požádá Let’s Encrypt o certifikát. Řádek Records in TurboDNS je hotový, když plán TurboDNS pro doménu nenajde nic ke změně, stejně po zkušebním průchodu průvodce, po Send records v tomto řádku i po opakovaném odeslání, a ukáže pak In TurboDNS since <čas>; web, jehož záznamy už v zóně jsou, to dostane už po zkušebním průchodu.

Každá změna je nejdřív koncept. Zkušební průchod zapíše celou webovou vrstvu do pracovní složky, spustí v ní nginx -t, httpd -t a php-fpm -t a ukáže přidané, změněné a odebrané soubory s jejich rozdíly. Použití provede přesně tento plán, nejdřív uchová snímek běžících souborů, načte konfiguraci šetrně a snímek vrátí, když krok selže. Smazání webu vyžaduje napsat jeho název; jeho složka a databáze zůstanou.

U proxy webu nabízí App on this NAS nainstalované aplikace, pro které má WebHostPro šablonu: Rtorrent 16 a jeho doplňky, Radarr, Sonarr, Prowlarr, Lidarr, Bazarr, Seerr, Tautulli, qBittorrent, Transmission, TunerHub, Weblate, Tolgee, Bucket & Code Server IDE, Plex Media Server a Jellyfin. Výběr aplikace doplní cíl portem, který používá její balíček, a zapne websockety, pokud je aplikace potřebuje. Front pak aplikaci posílá X-Forwarded-Host a X-Real-IP, dává aplikaci s dlouhými požadavky až hodinu na odpověď a média a události streamuje bez vyrovnávací paměti u aplikací, které je posílají. Nastavení, které může změnit jen aplikace sama, například URL Base aplikace *arr, je uvedeno na jednom řádku pod výběrem.

05Výchozí web

Požadavek na název, který nemá žádný web, například na adresu nebo název NAS, skončí na výchozím webu: ve sdílené složce Web v QTS, když ji NAS má a WebHostPro ji může použít, jinak na úvodní stránce v datové složce WebHostPro. Obsluhuje ho Apache httpd, takže soubory .htaccess ve složce fungují, jen řádky Options httpd ignoruje. Jeho PHP běží pod vlastním účtem. Po instalaci nebo aktualizaci je zapnutý jako koncept: další zkušební průchod a použití změn ho zveřejní. Odpovídá na portech frontu: na portu 80 po přesunutí frontu (stránka Front and ports), dříve na portu 9542. Dokud port 80 drží webový server QTS, uvádí stránka výchozího webu ve WebHostPro nastavení, které je třeba v QTS vypnout. Nikdy neposkytuje složky ostatních webů uložené ve složce Web, soubory a složky, jejichž název začíná tečkou (kromě .well-known), ani složky QTS začínající znakem @ a nezobrazuje výpis složek. WebHostPro oprávnění složky nemění. Složky ve sdílené složce Web, které jsou odkazy na jiné sdílené složky nebo svazky, fungují jako s webovým serverem QTS, včetně PHP.

Přes HTTPS odpovídá vlastním certifikátem NAS, tím, který QTS používá pro své stránky; dokud jde o certifikát QNAP podepsaný sám sebou, prohlížeče zobrazují varování. Požadavek TLS na web bez TLS je odmítnut.

WebHostPro si své logy rotuje sám: při 10 MiB nebo po týdnu ponechá pět kopií komprimovaných gzipem a nginx a httpd své logy znovu otevřou, aniž by se ztratil jediný požadavek.

06Databáze

Web dostane databázi a uživatele MariaDB, Percona Server nebo PostgreSQL na stránce Databases nebo na své kartě Database. Percona Server 8.4 se nastaví při vytvoření první databáze Percona a naslouchá na 127.0.0.1:9555 a na socketu; NAS, který ho nikdy nepoužije, ho nikdy nespustí. Stránka Databases má kartu pro MariaDB a kartu pro Percona Server s osmi nastaveními (buffer pool, spojení, největší paket, redo log, dočasné tabulky, cache tabulek, doba nečinnosti, čas pomalého dotazu) a dalšími řádky my.cnf, kontrolovanými proti seznamu voleb samotného serveru. Změna je koncept; použití server restartuje, takže jeho databáze několik sekund neodpovídají.

07S ostatními aplikacemi na NAS

Když na NAS běží TurboDNS, krok DNS průvodce mu zónu nabídne a použití záznamy odešle. Bez MailServerPro nenesou žádné poštovní záznamy: nová zóna dostane jmenné servery ns a ns1, oba tento NAS, pokud nezadáte druhý jmenný server, a záznamy A a AAAA názvů webu, ns a ns1; zóna, kterou TurboDNS už obsluhuje, si ponechá vlastní jmenné servery. S nainstalovaným MailServerPro dostane zóna hostingovou šablonu TurboDNS s veřejnými adresami NAS, které potvrdíte, záznamy A a AAAA vlastních názvů webu (šablona pokrývá doménu, www, ns, ns1 a poštovní názvy, takže druhý web, třeba shop.example.com, dostane své vlastní) a záznamy DKIM, MTA-STS, TLS-RPT a TLSA z MailServerPro. Do TurboDNS se nic nezapíše před použitím a krok Review napřed ukáže každý záznam.

Třetí odpověď kroku DNS, Cloudflare či OVHcloud ze zóny, kterou TurboDNS na tomto NAS vede, pošle TurboDNS tytéž záznamy jako první odpověď a za doménu odpovídá poskytovatel DNS. TurboDNS odešle zónu přes API poskytovatele, a jen na váš pokyn: otevřete zónu v TurboDNS, její kartu Cloudflare and OVH, Review the changes, potom Push the changes. Krok Registrar pak neuvádí jmenné servery, záznamy glue ani port 53: registrátor ponechá jmenné servery poskytovatele a zóna nepotřebuje přesměrování portu 53 na routeru. Live check pak projde na veřejných resolverech a na frontu, řádky Name servers at the registrar a Glue records jsou přeskočené.

S nainstalovaným Bucket & Code Server IDE otevře karta Files webu jeho složku v editoru.

08Bez veřejné adresy

NAS za CGNAT nebo za routerem, který nepřesměrovává žádné porty, může vybrané weby zveřejnit na internetu přes Cloudflare Tunnel. Karta Reach the sites from the internet through Cloudflare na stránce Front and ports převezme token API vašeho účtu Cloudflare a zónu, jejíž jmenné servery patří Cloudflare. WebHostPro pak vytvoří vlastní tunel a spustí cloudflared, který se sám připojí ke Cloudflare. Každý použitý web dostane přepínač, který jeho názvům v zóně dá záznam CNAME na tunel (přes proxy Cloudflare); WebHostPro odmítne název, který už má záznam A, AAAA nebo CNAME, jenž sám nevytvořil. Vypnutí tunelu smaže záznamy, které WebHostPro vytvořil, i samotný tunel. Cloudflare ukončuje TLS a vidí provoz a v bezplatném tarifu může jeden požadavek nahrát nejvýše 100 MB.

09Instalace

Doporučeno: z App Center. Jednou přidejte repozitář tohoto webu; pak se balíček instaluje a aktualizuje z App Center jako každá jiná aplikace.

  1. App Center → ⚙ Nastavení → Depozitář aplikací → Přidat.
  2. Pojmenujte ho QNAP Utilities, vložte https://www.qnaputilities.com/repo.xml a klikněte na Přidat.
  3. V levém panelu otevřete QNAP Utilities a nainstalujte (example) WebHostPro.

Panel repozitáře: všechny balíčky ve zdroji →

10Co potřebuje

NAS QNAP s procesorem x86_64 (Intel nebo AMD) se systémem QTS 6.0 nebo QuTS hero 6.0 či novějším.

Panel je na portu 9541 (HTTPS; 9540 sem přesměruje), front (nginx) na 9542 (HTTP) a 9543 (HTTPS a UDP pro HTTP/3, když ho nginx má) a za ním httpd na 127.0.0.1:9544. Databáze, mezipaměti a volitelné služby naslouchají jen na 127.0.0.1. Front přejde na porty 80 a 443 až po kliknutí na stránce Front and ports, která vypisuje kroky v QTS uvolňující tyto porty a co každý z nich rozbije; WebHostPro nastavení QTS nikdy nemění sám.

V QuTS hero nemůže sdílená složka s pokročilými oprávněními složek obsahovat weby: použití se zastaví, pojmenuje složku a zeptá se znovu. WebHostPro 0.14.4 byl vyzkoušen na QTS 6.1.0 a QuTS hero 6.1.0.

11Související stránky