Hostování webové stránky na vašem domácím routeru

Dlouho jsem si přál „dotknout se svých rukou“ internetových služeb tím, že vytvořím webový server od nuly a uvolním jej na internet. V tomto článku se chci podělit o své zkušenosti s přeměnou domácího routeru z vysoce funkčního zařízení na téměř plnohodnotný server.

Všechno to začalo tím, že věrně sloužil router TP-Link TL-WR1043ND již nevyhovoval potřebám domácí sítě, chtěl jsem pásmo 5 GHz a rychlý přístup k souborům na úložném zařízení připojeném k routeru. . Poté, co jsem si prohlédl specializovaná fóra (4pda, ixbt), stránky s recenzemi a prohlédl si sortiment místních obchodů, rozhodl jsem se koupit Keenetic Ultra.

Dobré recenze od majitelů pracovaly ve prospěch tohoto konkrétního zařízení:

  • žádné problémy s přehříváním (zde jsme museli opustit produkty Asus);
  • provozní spolehlivost (zde jsem přeškrtl TP-Link);
  • snadné nastavení (bál jsem se, že to nezvládnu a přeškrtl Microtik).

Musel jsem se smířit s nevýhodami:

  • ne WiFi6, chtěl jsem vzít vybavení s rezervou do budoucna;
  • 4 LAN porty, chtěl jsem víc, ale tohle už není domácí kategorie.

V důsledku toho jsme získali tento „server“:

Hostování webové stránky na vašem domácím routeru

  • vlevo je optický terminál Rostelecomu;
  • vpravo je náš experimentální router;
  • 2 GB m.128 SSD povalující se, umístěný v USB3 boxu od Aliexpressu, je k routeru připojen drátem, nyní je úhledně namontován na stěně;
  • v popředí je prodlužovací kabel s nezávisle odpojenými zásuvkami, drát z něj jde do levné UPS;
  • v pozadí je hromada kroucených párů kabelů - ve fázi rekonstrukce bytu jsem rovnou plánoval zásuvky RJ45 v místech, kde se mělo nacházet zařízení, abych nebyl závislý na zaneřáděné WiFi.

Takže máme vybavení, musíme ho nakonfigurovat:

Hostování webové stránky na vašem domácím routeru

  • Prvotní nastavení routeru trvá cca 2 minuty, poskytovateli uvedeme parametry připojení (můj optický terminál je přepnut do bridge módu, PPPoE spojení zvedne router), název WiFi sítě a heslo – v podstatě to je vše , router se spustí a funguje.

Hostování webové stránky na vašem domácím routeru

Přesměrování externích portů na porty samotného routeru jsme nastavili v sekci „Pravidla sítě - Přesměrování“:

Hostování webové stránky na vašem domácím routeru

Hostování webové stránky na vašem domácím routeru

Nyní můžeme přejít k „pokročilé“ části, co jsem od routeru chtěl:

  1. funkčnost malého NAS pro domácí síť;
  2. provádění funkcí webového serveru pro několik soukromých stránek;
  3. funkce osobního cloudu pro přístup k osobním údajům odkudkoli na světě.

První je implementován pomocí vestavěných nástrojů, aniž by vyžadoval velké úsilí:

  • Vezmeme disk určený pro tuto roli (flash disk, paměťovou kartu ve čtečce karet, pevný disk nebo SSD v externím boxu a naformátujeme jej na Ext4 pomocí MiniTool Partition Wizard Free Edition (Nemám po ruce počítač s Linuxem, je to možné pomocí vestavěných nástrojů). Pokud jsem to pochopil, systém za provozu zapisuje pouze logy na flash disk, takže pokud je po nastavení systému omezíte, můžete použít i paměťové karty, pokud plánujete hodně a často zapisovat na disk - SSD popř. HDD je lepší.

Hostování webové stránky na vašem domácím routeru

Poté připojíme disk k routeru a pozorujeme jej na obrazovce monitoru systému

Hostování webové stránky na vašem domácím routeru

Klikněte na „USB disky a tiskárny“ v části „Aplikace“ a nakonfigurujte sdílení v části „Síť Windows“:

Hostování webové stránky na vašem domácím routeru

A máme síťový prostředek, který lze použít z počítačů se systémem Windows a v případě potřeby se připojíte jako disk: ​​net use y: \192.168.1.1SSD /persistent:yes

Rychlost takto improvizovaného NAS je pro domácí použití zcela dostačující, po drátě využívá celý gigabit, přes WiFi je rychlost cca 400-500 megabitů.

Hostování webové stránky na vašem domácím routeru

Nastavení úložiště je jedním z nezbytných kroků pro konfiguraci serveru, pak potřebujeme:
- koupit doménu a statickou IP adresu (bez toho se můžete obejít pomocí dynamického DNS, ale už jsem měl statickou IP, takže se ukázalo, že použití je jednodušší bezplatné služby Yandex - delegováním domény tam, přijímáme DNS hosting a poštu na naší doméně);

Hostování webové stránky na vašem domácím routeru

- konfigurovat servery DNS a přidejte záznamy A směřující na vaši IP:

Hostování webové stránky na vašem domácím routeru

Trvá několik hodin, než se nastavení delegování domény a DNS projeví, takže současně nastavujeme router.

Nejprve musíme nainstalovat úložiště Entware, ze kterého můžeme nainstalovat potřebné balíčky na router. Využil jsem toho tento pokyn, jen nenahrál instalační balíček přes FTP, ale vytvořil složku přímo na dříve připojeném síťovém disku a zkopíroval tam soubor běžným způsobem.

Po získání přístupu přes SSH změňte heslo pomocí příkazu passwd a nainstalujte všechny potřebné balíčky pomocí příkazu opkg install [package names]:

Hostování webové stránky na vašem domácím routeru

Během instalace byly na router nainstalovány následující balíčky (výstup příkazu opkg list-installed):

Seznam balíčků
bash - 5.0-3
busybox - 1.31.1-1
ca-balíček - 20190110-2
ca-certifikáty - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
zvlnění - 7.69.0-1
diffutils - 3.7-2
dropbear - 2019.78-3
entware-release - 1.0-2
findutils - 4.7.0-1
glib2 - 2.58.3-5
grep - 3.4-1
ldconfig - 2.27-9
libattr - 2.4.48-2
libblkid - 2.35.1-1
libc - 2.27-9
libcurl - 7.69.0-1
libffi - 3.2.1-4
libgcc - 8.3.0-9
libiconv-full - 1.11.1-4
libintl-plný - 0.19.8.1-2
liblua - 5.1.5-7
libmbedtls - 2.16.5-1
libmount - 2.35.1-1
libncurses - 6.2-1
libncursesw - 6.2-1
libndm - 1.1.10-1a
libopenssl - 1.1.1d-2
libopenssl-conf - 1.1.1d-2
libpcap - 1.9.1-2
libpcre - 8.43-2
libpcre2 - 10.34-1
libpthread - 2.27-9
lireadline - 8.0-1a
librt - 2.27.-9
libslang2 - 2.3.2-4
libssh2 – 1.9.0-2
libssp - 8.3.0-9
libstdcpp - 8.3.0-9
libuid - 2.35.1-1
libxml2 - 2.9.10-1
lokality - 2.27-9
mc - 4.8.23-2
ndmq - 1.0.2-5a
nginx - 1.17.8-1
openssl-util - 1.1.1d-2
opkg — 2019-06-14-dcbc142e-2
opt-ndmsv2 - 1.0-12
php7 - 7.4.3-1
php7-mod-openssl - 7.4.3-1
chudák - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Možná tu bylo něco nadbytečného, ​​ale na jednotce bylo hodně místa, takže jsem se neobtěžoval to prohlížet.

Po instalaci balíčků nakonfigurujeme nginx, zkusil jsem to se dvěma doménami - druhá je nakonfigurována s https a zatím je tam útržek. Interní porty 81 a 433 se používají místo 80 a 443, protože panel správce routeru visí na normálních portech.

etc/nginx/nginx.conf

user  nobody;
worker_processes  1;
#error_log  /opt/var/log/nginx/error.log;
#error_log  /opt/var/log/nginx/error.log  notice;
#error_log  /opt/var/log/nginx/error.log  info;
#pid        /opt/var/run/nginx.pid;

events {
    worker_connections  64;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  /opt/var/log/nginx/access.log main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;

server {
    listen 81;
    server_name milkov.su www.milkov.su;
    return 301 https://milkov.su$request_uri;
}

server {
        listen 433 ssl;
        server_name milkov.su;
        #SSL support
        include ssl.conf;
        location / {
            root   /opt/share/nginx/html;
            index  index.html index.htm;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
            }
        }
}
</spoiler>
<spoiler title="etc/nginx/ssl.conf">
ssl_certificate /opt/etc/nginx/certs/milkov.su/fullchain.pem;
ssl_certificate_key /opt/etc/nginx/certs/milkov.su/privkey.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /opt/etc/nginx/dhparams.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_stapling on;

Aby web fungoval přes https, použil jsem známý dehydratovaný skript, který jsem nainstaloval pomocí tento pokyn. Tento proces nezpůsobil žádné potíže, pouze jsem narazil na skutečnost, že v textu skriptu pro práci na mém routeru musíte zakomentovat řádek v souboru /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

A podotýkám, že generování dhparams.pem pomocí příkazu „openssl dhparam -out dhparams.pem 2048“ na mém routeru trvá déle než 2 hodiny, nebýt indikátoru průběhu, ztratil bych trpělivost a restartoval bych.

Po obdržení certifikátů restartujte nginx příkazem „/opt/etc/init.d/S80nginx restart“. V zásadě je nastavení dokončeno, ale ještě neexistuje žádná webová stránka - pokud vložíme soubor index.html do adresáře /share/nginx/html, uvidíme útržek.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Тестовая страничка!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Тестовая страничка!</h1>
<p>Это простая статическая тестовая страничка, абсолютно ничего интересного.</p>
</body>
</html>

Pro krásné umístění informací je pro neprofesionála, jako jsem já, jednodušší použít hotové šablony; po dlouhém hledání v různých katalozích jsem našel templatemo.com - existuje dobrý výběr bezplatných šablon, které nevyžadují uvedení zdroje (což je na internetu vzácné; většina šablon v licenci vyžaduje uložení odkazu na zdroj, ze kterého byly získány).

Vybereme vhodnou šablonu - existují pro různé případy, stáhněte si archiv a rozbalte jej do adresáře /share/nginx/html, můžete to udělat z počítače, poté šablonu upravit (zde budete potřebovat minimální znalosti HTML, aby nedošlo k porušení struktury) a nahraďte grafiku, jak je znázorněno na obrázku níže.

Hostování webové stránky na vašem domácím routeru

Shrnutí: router je docela vhodný pro hostování lehkého webu na něm, v zásadě - pokud se neočekává velké zatížení, můžete nainstalovat a phpa experimentujte se složitějšími projekty (podívám se na nextcloud/owncloud, zdá se, že na takovém hardwaru existují úspěšné instalace). Možnost instalovat balíčky zvyšuje jeho využitelnost - např. když bylo potřeba chránit RDP port PC v lokální síti, nainstaloval jsem na router knockd - a port forwarding do PC se otevřel až po zaklepání portu.

Proč router a ne běžný PC? Router je jedním z mála počítačového hardwaru, který v mnoha bytech funguje nepřetržitě, domácí router je většinou absolutně tichý a lehká stránka s méně než stovkou návštěv denně mu nebude vůbec vadit.

Zdroj: www.habr.com

Přidat komentář