Veebisaidi hostimine koduruuteris

Olen juba ammu tahtnud Interneti-teenustega "kätt puudutada", seadistades nullist veebiserveri ja vabastades selle Internetti. Selles artiklis tahan jagada oma kogemusi koduruuteri muutmisel väga funktsionaalsest seadmest peaaegu täisväärtuslikuks serveriks.

Kõik sai alguse sellest, et truult teeninud ruuter TP-Link TL-WR1043ND ei vastanud enam koduvõrgu vajadustele, soovisin 5 GHz sagedusala ja kiiret juurdepääsu ruuteriga ühendatud salvestusseadme failidele. . Olles uurinud spetsiaalseid foorumeid (4pda, ixbt), arvustustega saite ja vaadanud kohalike kaupluste sortimenti, otsustasin osta Keenetic Ultra.

Omanike head ülevaated töötasid selle konkreetse seadme kasuks:

  • ülekuumenemisega probleeme pole (siin pidime Asuse toodetest loobuma);
  • töökindlus (siin kriipsutasin TP-Linki maha);
  • lihtne seadistada (kartsin, et ei saa sellega hakkama ja kriipsutasin Microtiki läbi).

Pidin leppima miinustega:

  • WiFi6 pole, tahtsin varustust võtta varuga tulevikuks;
  • 4 LAN-porti, tahtsin rohkem, aga see pole enam kodukategooria.

Selle tulemusena saime selle "serveri":

Veebisaidi hostimine koduruuteris

  • vasakul on Rostelecomi optiline terminal;
  • paremal on meie eksperimentaalne ruuter;
  • 2 GB m.128 SSD, mis lamab, Aliexpressi USB3 kasti pandud, on ruuteriga ühendatud juhtmega, nüüd on see korralikult seinale kinnitatud;
  • esiplaanil on iseseisvalt lahti ühendatud pistikupesadega pikendusjuhe, selle juhe läheb odavasse UPS-i;
  • taustal on hunnik keerdpaarkaableid - korteri renoveerimise staadiumis planeerisin kohe RJ45 pistikupesad kohtadesse, kus seadmed pidid asuma, et mitte sõltuda WiFi risustamisest.

Niisiis, meil on varustus, peame selle konfigureerima:

Veebisaidi hostimine koduruuteris

  • Ruuteri esialgne seadistamine võtab aega umbes 2 minutit, anname pakkujale teada ühenduse parameetrid (minu optiline terminal on lülitatud sillarežiimile, PPPoE ühendus tõstab ruuteri üles), WiFi võrgu nime ja parooli - põhimõtteliselt kõik , ruuter käivitub ja töötab.

Veebisaidi hostimine koduruuteris

Jaotises „Võrgureeglid – edastamine” määrasime väliste portide edastamise ruuteri enda portidesse:

Veebisaidi hostimine koduruuteris

Veebisaidi hostimine koduruuteris

Nüüd saame liikuda edasi "täiustatud" osa juurde, mida ma ruuterilt tahtsin:

  1. väikese NAS-i funktsionaalsus koduvõrgu jaoks;
  2. mitme privaatlehe veebiserveri funktsioonide täitmine;
  3. personaalne pilvefunktsioon isikuandmetele juurdepääsuks kõikjal maailmas.

Esimene rakendatakse sisseehitatud tööriistade abil, ilma et oleks vaja palju pingutusi:

  • Võtame selleks rolliks mõeldud draivi (mälupulk, mälukaart kaardilugejas, kõvaketas või SSD välisesse karpi ja vormindame selle Ext4-ks kasutades MiniTooli partitsiooniviisardi tasuta väljaanne (Mul pole Linuxiga arvutit käepärast, see on võimalik sisseehitatud tööriistadega). Nagu ma aru saan, kirjutab süsteem töötamise ajal mälupulgale ainult logisid, nii et kui neid pärast süsteemi seadistamist piirata, saab kasutada ka mälukaarte, kui plaanite palju ja sageli kettale kirjutada - SSD-le või HDD on parem.

Veebisaidi hostimine koduruuteris

Pärast seda ühendame draivi ruuteriga ja jälgime seda süsteemimonitori ekraanil

Veebisaidi hostimine koduruuteris

Klõpsake jaotises "Rakendused" valikul "USB-draivid ja printerid" ja konfigureerige jagamine jaotises "Windowsi võrk".

Veebisaidi hostimine koduruuteris

Ja meil on võrguressurss, mida saab kasutada Windowsi arvutitest ja vajadusel kettana ühendada: ​​net use y: \192.168.1.1SSD /püsiv: jah

Sellise improviseeritud NAS-i kiirus on koduseks kasutamiseks täiesti piisav, juhtme kaudu kasutab see kogu gigabitti, WiFi kaudu on kiirus umbes 400-500 megabitti.

Veebisaidi hostimine koduruuteris

Salvestusruumi seadistamine on üks vajalikest sammudest serveri konfigureerimiseks, siis vajame:
- osta domeen ja staatiline IP-aadress (dünaamilise DNS-i abil saate ilma selleta hakkama, kuid mul oli juba staatiline IP, nii et seda on lihtsam kasutada tasuta Yandexi teenused - delegeerides domeeni sinna, saame oma domeenis DNS-i hostimise ja posti);

Veebisaidi hostimine koduruuteris

- DNS-serverite konfigureerimine ja lisage A-kirjed, mis osutavad teie IP-le:

Veebisaidi hostimine koduruuteris

Domeeni ja DNS-i delegeerimise sätete jõustumiseks kulub mitu tundi, seega seadistame samal ajal ruuterit.

Esiteks peame installima Entware hoidla, kust saame ruuterisse installida vajalikud paketid. Kasutasin ära selle juhisega, lihtsalt ei laadinud installipaketti FTP kaudu üles, vaid lõi kausta otse varem ühendatud võrgukettale ja kopeeris faili sinna tavapärasel viisil.

Pärast SSH kaudu juurdepääsu saamist muutke parooli käsuga passwd ja installige kõik vajalikud paketid käsuga opkg install [paketinimed]:

Veebisaidi hostimine koduruuteris

Seadistamise ajal installiti ruuterisse järgmised paketid (käsu opkg list-installed väljund):

Pakkide nimekiri
bash - 5.0-3
kinnikast - 1.31.1-1
ca-bundle - 20190110-2
ca-sertifikaadid - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
kroon - 4.1-3
lokk - 7.69.0-1
difutils - 3.7-2
tilkkaru - 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-full - 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
libreadline - 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
lokaadid - 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
vaestekarp - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe – 2019c-1

Võib-olla oli siin midagi üleliigset, kuid draivil oli palju ruumi, nii et ma ei viitsinud seda uurida.

Pärast pakettide installimist konfigureerime nginxi, proovisin seda kahe domeeniga - teine ​​on seadistatud https-iga ja praegu on stub. Sisemisi porte 81 ja 433 kasutatakse 80 ja 443 asemel, kuna ruuteri administraatori paneel ripub tavalistes portides.

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;

Selleks, et sait töötaks https kaudu, kasutasin tuntud dehüdreeritud skripti, installides selle kasutades see juhend. See protsess ei tekitanud raskusi, komistasin ainult tõsiasja peale, et minu ruuteriga töötamise skripti tekstis peate failis olevat rida kommenteerima /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Ja märgin, et faili dhparams.pem genereerimine käsuga “openssl dhparam -out dhparams.pem 2048” minu ruuteris võtab rohkem kui 2 tundi, kui mitte edenemisnäidik, oleksin kannatuse kaotanud ja taaskäivitanud.

Pärast sertifikaatide saamist taaskäivitage nginx käsuga “/opt/etc/init.d/S80nginx restart”. Põhimõtteliselt on seadistamine lõpetatud, kuid veebisaiti veel pole - kui paneme faili index.html kataloogi /share/nginx/html, näeme stub.

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>

Teabe kauniks paigutamiseks on minusugusel mitteprofessionaalil lihtsam kasutada valmismalle, pärast pikka otsimist erinevates kataloogides leidsin templatemo.com - on hea valik tasuta malle, mis ei vaja omistamist (mis on Internetis haruldane; enamik litsentsis olevaid malle nõuavad lingi salvestamist ressursile, kust need saadi).

Valime sobiva malli - neid on mitmesuguste juhtumite jaoks, laadige arhiiv alla ja pakkige see lahti kataloogi /share/nginx/html, saate seda teha oma arvutist, seejärel redigeerige malli (siin vajate minimaalseid teadmisi HTML-i, et mitte rikkuda struktuuri) ja asendada graafika, nagu on näidatud alloleval joonisel.

Veebisaidi hostimine koduruuteris

Kokkuvõte: ruuter on põhimõtteliselt üsna sobiv sellel kerge veebisaidi majutamiseks - kui suurt koormust pole oodata, saate install ja php, ja katsetada keerukamate projektidega (vaatan nextcloudi/owncloudi, näib, et sellisele riistvarale on edukaid installimisi). Pakettide installimise võimalus suurendab selle kasulikkust - näiteks kui oli vaja kaitsta kohaliku võrgu arvuti RDP-porti, installisin ruuterisse knockd - ja pordi edastamine arvutisse avati alles pärast pordi koputamist.

Miks ruuter ja mitte tavaline arvuti? Ruuter on üks väheseid arvutiriistvarasid, mis paljudes korterites töötab ööpäevaringselt, koduruuter on tavaliselt absoluutselt vaikne ja vähem kui saja külastusega kerge sait ei häiri seda üldse.

Allikas: www.habr.com

Lisa kommentaar