Unofficial
På den här sidan
  1. 01Om appen
  2. 02Skärmbilder
  3. 03Första start
  4. 04Webbplatser
  5. 05Standardwebbplats
  6. 06Databaser
  7. 07Med de andra apparna på NAS:en
  8. 08Utan publik adress
  9. 09Installation
  10. 10Vad som krävs
  11. 11Relaterade sidor

WebHostPro: webbhotell på din QNAP NAS

WebHostPro kör webbplatser på en QNAP NAS: statiska sidor, PHP-sidor med egna databaser och proxyer till appar på NAS:en, var och en under egen domän med certifikat, allt från en panel. Den är gratis och installeras från den här webbplatsens App-förråd.

  • Körs på en QNAP NAS med Intel- eller AMD-processor (x86_64), på QTS 6.0 eller QuTS hero 6.0 eller senare.
  • Installeras som (example) WebHostPro från QNAP Utilities i App Centers App-förråd.
  • Panel: https://<NAS>:9541/; webbplatserna svarar på portarna 9542 och 9543 tills du flyttar dem till 80 och 443.
  • Byggd från källkod med App Builder i Bucket & Code Server IDE.

01Om appen

WebHostPro kör webbplatser på en QNAP NAS. Det är en webbserverstack: nginx framför varje webbplats, bakom den Apache httpd för de webbplatser som använder den, PHP 8.1 till 8.5, MariaDB, Percona Server, PostgreSQL, memcached och Valkey, med en panel på nio språk som lägger till, ändrar och tar bort webbplatserna.

02Skärmbilder

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

03Första start

App Centers Öppna leder till panelen, https://<NAS>:9541/; port 9540, vanlig HTTP, skickar vidare dit. Vid en ny installation visar panelen Första inloggningen: ett lösenord på minst 10 tecken, skrivet två gånger. Paketet sätter inget lösenord och genererar inget, och panelen sparar bara en hash av det lösenord du sätter.

Sidan tar emot lösenordet bara från en dator i NAS:ens eget nätverk (en privat adress, loopback eller link-local) och i 60 minuter efter att panelen startat; tills någon har satt det väljer den första personen i nätverket som öppnar panelen under den timmen det. Starta om WebHostPro i App Center för att öppna den igen. En session varar i 8 timmar, och 10 misslyckade inloggningar från en adress spärrar den adressen i 15 minuter.

04Webbplatser

En webbplats är en domän med sina alias, en sort (statiska filer, PHP eller en proxy till en tjänst på NAS:en eller i det lokala nätverket, även i en container, med websockets), en webbserver (nginx eller Apache httpd) och, om den behöver en, en databas. Ett proxymål är en adress i ett privat intervall, inte ett värdnamn. Varje webbplats har ett eget konto, ws-<ID>, som äger dess mapp och kör dess PHP, så en webbplats PHP kan inte läsa en annans filer. Mappen ligger i en delad mapp i QTS eller i WebHostPros datamapp, och dess public/ är dokumentroten.

En PHP-webbplats kör sin egen PHP-FPM-master, och dess flik PHP rymmer versionen (8.1 till 8.5), tidszonen, gränser, fel, sessioner och säkerhet, OPcache och JIT, APCu, tilläggen, fler php.ini-rader och PHP-arbetarna (poolen). En php.ini-rad kontrolleras mot de direktiv som versionens eget PHP listar; ett namn som läser in kod, kör ett kommando, namnger en fil eller rymmer ett lösenord avvisas. Poolen har processhanteraren (på begäran, dynamiskt eller statiskt), antalet processer (som standard på begäran med 5), overksamhetstiden, begäranden per process, en tidsgräns per begäran och en logg över långsamma begäranden, som fliken Loggar visar. En krasch eller en belastad PHP på en webbplats låter de andra fortsätta, och en ändring av en webbplats PHP-inställningar startar om bara den webbplatsens PHP. En master som avslutas startas om och förblir nere efter fem avslut inom en minut; logs/php8.N-ID.log säger det.

Varje webbplats kan köra schemalagda uppgifter som sitt eget konto med sitt eget PHP: en PHP-fil, ett kommando eller webbplatsens egen adress, varje minut eller enligt vilket cron-schema som helst. Webbplatsens sida visar resultatet och utdata för varje körning, och MailServerPro skickar en rapport när en uppgift börjar misslyckas.

Varje PHP-webbplats har en egen Valkey (som talar Redis protokoll) och en egen memcached, var och en på en socket i en mapp som bara den webbplatsen kan öppna, så ingen av dem behöver lösenord eller nätverksport; webbplatsens flik Cache visar båda socketarna. Var och en rymmer upp till 64 MB, och en omstart tömmer båda. Varje PHP-version har imagick, med ImageMagick som läser och skriver JPEG, PNG, WebP, GIF och AVIF och läser HEIC. Dess policy vägrar de format som läser andra filer eller startar program, som SVG och MSL.

En Apache-webbplats .htaccess-filer kan också använda Digest-autentisering, grupper från en gruppfil, Substitute för att byta ut text på en sida och filtret RATE_LIMIT för att begränsa hastigheten för en nedladdning.

En PHP-webbplats kan också ha egna PECL-tillägg: dess flik PHP bygger dem som webbplatsens eget konto, utan nätverk, i Bucket & Code Server IDE:s byggmiljö, och bara den webbplatsens PHP läser in dem.

WebHostPro kan ta över NAS:ens roll som webbserver med ett klick, och en ny installation frågar en gång: QTS administration flyttar från port 443 till 44443 och QTS webbserver från 80 till 8880, varje steg kontrolleras före nästa, QTS webbplatser hamnar bakom WebHostPro, och ett klick på sidan Front och portar lämnar tillbaka 80 och 443.

En guidad tur leder från standardportarna och TurboDNS till din första webbplats och föreslår, efter en kontroll av DNS-inställningarna, att routerns DHCP delar ut DNS-serverns adress.

En PHP-webbplats eller statisk webbplats som nginx serverar har en flik Cache. nginx komprimerar textsvar med Brotli och zstd utöver gzip. En PHP-webbplats kan slå på en sidcache, av som standard: besökare med en inloggningskaka får alltid en färsk sida, huvudet X-Cache säger HIT, MISS, STALE, UPDATING eller BYPASS, och Töm cachen tömmer den. Statiska filer får webbläsare behålla i 1, 7, 30 eller 365 dagar. nginx tar emot en begärandekropp upp till webbplatsens största begäran (fliken PHP:s post_max_size) och svarar 413 ovanför; en proxywebbplats har ingen kroppsgräns vid fronten.

Lägg till webbplats är en domänguide: Domän, DNS, Registrar, Webbplats, Databas (för en PHP-webbplats), Certifikat och Granska. DNS frågar vem som svarar för zonen (TurboDNS på den här NAS:en; registrarens eller en DNS-leverantörs servrar; eller Cloudflare eller OVHcloud, från zonen som TurboDNS håller på den här NAS:en) och vilka publika adresser den här NAS:en har. Registrar listar vad som ska anges där domänen köptes, varje värde med en kopieringsknapp, med routerns vidarebefordringar och frontens tillstånd under. Förhandsgranskningen under Granska visar webbplatsens plan och TurboDNS plan tillsammans, och en tillämpning skickar båda. Certifikatet kommer från Let’s Encrypt (HTTP-01, där fronten serverar filen på port 80, eller DNS-01 via TurboDNS eller Cloudflare; WebHostPro förnyar det när 30 dagar eller mindre återstår), eller är ett uppladdat, NAS:ens eget eller ett självsignerat.

Efter tillämpningen har webbplatsens Översikt kortet Slutför konfigurationen av <namn>: Webbplatsen är tillämpad, Poster i TurboDNS, Hos registraren, Direktkontroll, Certifikat och Avsluta. Kontrollera nu läser den överordnade zonens namnservrar, den här NAS:ens TurboDNS, tre publika resolvrar och fronten, och säger att den inte kan se om portarna 53, 80 och 443 når NAS:en från internet; raden Certifikat ber Let’s Encrypt om certifikatet. Raden Poster i TurboDNS är klar när TurboDNS plan för domänen inte hittar något att ändra, efter guidens förhandsgranskning, efter Skicka posterna på raden eller efter en upprepad sändning lika, och visar då I TurboDNS sedan <tid>; en webbplats vars poster redan finns i zonen får det av förhandsgranskningen ensam.

Varje ändring är först ett utkast. Förhandsgranskningen skriver hela webbskiktet till en arbetsmapp, kör nginx -t, httpd -t och php-fpm -t på den och visar de tillagda, ändrade och borttagna filerna med deras skillnader. Tillämpningen utför exakt den planen, sparar först en ögonblicksbild av de körande filerna, läser in på nytt skonsamt och återställer ögonblicksbilden om ett steg misslyckas. Att ta bort en webbplats kräver att dess namn skrivs in; dess mapp och databaser blir kvar.

För en proxywebbplats listar App på den här NAS:en de installerade appar som WebHostPro har en mall för: Rtorrent 16 och dess tillägg, Radarr, Sonarr, Prowlarr, Lidarr, Bazarr, Seerr, Tautulli, qBittorrent, Transmission, TunerHub, Weblate, Tolgee, Bucket & Code Server IDE, Plex Media Server och Jellyfin. När du väljer en app fylls målet i med porten som appens paket använder, och websockets slås på om appen behöver dem. Fronten skickar då X-Forwarded-Host och X-Real-IP till appen, ger en app med långa förfrågningar upp till en timme på sig att svara och strömmar media och händelser utan buffring för de appar som skickar dem. En inställning som bara appen själv kan ändra, till exempel URL Base i en *arr-app, anges på en rad under valet.

05Standardwebbplats

En förfrågan för ett namn som ingen webbplats har, till exempel NAS:ens adress eller namn, hamnar på standardwebbplatsen: QTS delade mapp Web när NAS:en har en som WebHostPro kan använda, annars en startsida i WebHostPros datamapp. Apache httpd levererar den, så mappens .htaccess-filer fungerar, utom rader med Options, som httpd ignorerar. Dess PHP körs under ett eget konto. Efter installationen eller uppdateringen är den på som ett utkast: nästa förhandsgranskning och tillämpning publicerar den. Den svarar på frontens portar: på 80 när fronten har flyttats dit på sidan Front och portar, annars på 9542. Så länge QTS webbserver använder port 80 anger dess sida i WebHostPro inställningen som ska stängas av i QTS. Den levererar aldrig andra webbplatsers mappar i mappen Web, filer och mappar vars namn börjar med en punkt (utom .well-known) eller QTS mappar som börjar med @, och visar ingen mapplista. WebHostPro ändrar inte mappens behörigheter. Mappar i den delade mappen Web som är länkar till andra delade mappar eller volymer fungerar som med QTS webbserver, även för PHP.

Över HTTPS svarar den med NAS:ens eget certifikat, det som QTS använder för sina egna sidor; så länge det är QNAP:s självsignerade certifikat visar webbläsare en varning. En TLS-förfrågan till en webbplats utan TLS avvisas.

WebHostPro roterar sina egna loggar: vid 10 MiB eller efter en vecka, fem kopior sparas komprimerade med gzip, och nginx och httpd öppnar sina loggar igen utan att tappa någon förfrågan.

06Databaser

En webbplats får en databas och en användare i MariaDB, Percona Server eller PostgreSQL på sidan Databaser eller på sin flik Databas. Percona Server 8.4 sätts upp när den första Percona-databasen skapas och lyssnar på 127.0.0.1:9555 och på en socket; en NAS som aldrig använder den startar den aldrig. Sidan Databaser har ett kort för MariaDB och ett för Percona Server, med åtta inställningar (buffertpoolen, anslutningar, största paketet, redologgen, temporära tabeller, tabellcachen, overksamhetstiden, tiden för långsamma frågor) och fler my.cnf-rader, kontrollerade mot serverns egen lista över alternativ. En ändring är ett utkast; tillämpningen startar om servern, så dess databaser svarar inte under några sekunder.

07Med de andra apparna på NAS:en

När TurboDNS körs på NAS:en erbjuder guidens DNS-steg den zonen, och tillämpningen skickar posterna. Utan MailServerPro bär de inga e-postposter: en ny zon får namnservrarna ns och ns1, båda den här NAS:en om du inte anger en andra namnserver, och A- och AAAA-posterna för webbplatsens namn, för ns och för ns1; en zon som TurboDNS redan serverar behåller sina egna namnservrar. Med MailServerPro installerat får zonen TurboDNS hostingmall med NAS:ens publika adresser som du bekräftar, A- och AAAA-posterna för webbplatsens egna namn (mallen täcker domänen, www, ns, ns1 och e-postnamnen, så en andra webbplats som shop.example.com får sina egna) och DKIM-, MTA-STS-, TLS-RPT- och TLSA-posterna från MailServerPro. Inget skrivs till TurboDNS före tillämpningen, och Granska visar varje post först.

DNS-stegets tredje svar, Cloudflare eller OVHcloud, från zonen som TurboDNS håller på den här NAS:en, skickar samma poster till TurboDNS som det första svaret, och en DNS-leverantör svarar för domänen. TurboDNS överför zonen via leverantörens API, och bara när du ber om det: öppna zonen i TurboDNS, fliken Cloudflare och OVH, Granska ändringarna, sedan Överför ändring(ar). Steget Registrar nämner då inga namnservrar, glue-poster eller port 53: registraren behåller leverantörens namnservrar, och zonen behöver ingen vidarebefordran av port 53 på routern. Direktkontrollen går då igenom på de publika resolvrarna och fronten, med raderna Namnservrar hos registraren och Glue-poster överhoppade.

Med Bucket & Code Server IDE installerat öppnar fliken Filer på en webbplats dess mapp i redigeraren.

08Utan publik adress

En NAS bakom CGNAT, eller bakom en router som inte vidarebefordrar några portar, kan publicera valda webbplatser på internet genom en Cloudflare Tunnel. Kortet Nå webbplatserna från internet via Cloudflare på sidan Front och portar tar en API-token för ditt Cloudflare-konto och en zon vars namnservrar är Cloudflares. WebHostPro skapar då en egen tunnel och startar cloudflared, som själv ansluter till Cloudflare. Varje tillämpad webbplats får en brytare som ger dess namn i zonen en proxad CNAME-post till tunneln; WebHostPro vägrar ett namn som redan har en A-, AAAA- eller CNAME-post som WebHostPro inte skapade. När du slår av tunneln raderas posterna som WebHostPro skapade och tunneln. Cloudflare avslutar TLS och ser trafiken, och på gratisplanen kan en begäran ladda upp högst 100 MB.

09Installation

Rekommenderat: från App Center. Lägg till den här sajtens förråd en gång; sedan installeras och uppdateras paketet från App Center som vilken app som helst.

  1. App Center → ⚙ Inställningar → Appförråd → Lägg till.
  2. Döp det till QNAP Utilities, klistra in https://www.qnaputilities.com/repo.xml, Lägg till.
  3. Öppna QNAP Utilities i vänsterspalten och installera (example) WebHostPro.

Förrådspanelen: alla paket i flödet →

10Vad som krävs

En QNAP NAS med en x86_64-processor (Intel eller AMD) på QTS 6.0 eller QuTS hero 6.0 eller nyare.

Panelen ligger på port 9541 (HTTPS; 9540 skickar vidare dit), fronten (nginx) på 9542 (HTTP) och 9543 (HTTPS och UDP för HTTP/3 när nginx har det), och httpd på 127.0.0.1:9544 bakom den. Databaserna, cacharna och de valfria tjänsterna lyssnar bara på 127.0.0.1. Fronten flyttar till portarna 80 och 443 först när du klickar på den på sidan Front och portar, som listar stegen i QTS som frigör de portarna och vad vart och ett förstör; WebHostPro ändrar aldrig QTS inställningar själv.

På QuTS hero kan en delad mapp med avancerade mappbehörigheter inte rymma webbplatser: tillämpningen stannar, nämner mappen och frågar igen. WebHostPro 0.14.4 har prövats på QTS 6.1.0 och på QuTS hero 6.1.0.

11Relaterade sidor