Hosting fan in webside op jo thús router

Ik woe al lang "myn hannen oanreitsje" op ynternettsjinsten troch in webserver fanôf it begjin op te setten en it op it ynternet frij te litten. Yn dit artikel wol ik myn ûnderfining diele by it transformearjen fan in thúsrouter fan in heul funksjoneel apparaat yn in hast folweardige server.

It begon allegear mei it feit dat de TP-Link TL-WR1043ND-router, dy't trou tsjinne hie, net mear foldie oan 'e behoeften fan in thúsnetwurk; Ik woe in 5 GHz-band en rappe tagong ta bestannen op in opslachapparaat ferbûn mei de router . Nei it besjen fan spesjalisearre foarums (4pda, ixbt), siden mei resinsjes en sjoen nei it assortiment fan pleatslike winkels, besleat ik Keenetic Ultra te keapjen.

Goede resinsjes fan de eigners wurke yn it foardiel fan dit bysûndere apparaat:

  • gjin problemen mei oververhitting (hjir moasten wy Asus-produkten ferlitte);
  • operasjonele betrouberens (hjir haw ik TP-Link trochstutsen);
  • maklik in opset (Ik wie bang dat ik koe net omgean it en trochstutsen Microtik).

Ik moast mei de neidielen komme:

  • gjin WiFi6, Ik woe nimme apparatuer mei in reserve foar de takomst;
  • 4 LAN havens, Ik woe mear, mar dit is net mear in thús kategory.

As gefolch hawwe wy dizze "server" krigen:

Hosting fan in webside op jo thús router

  • oan de linkerkant is de optyske terminal fan Rostelecom;
  • rjochts is ús eksperimintele router;
  • a 2 GB m.128 SSD lizzend, pleatst yn in USB3 doaze út Aliexpress, is ferbûn mei de router mei in tried, no is it kreas fêstmakke op 'e muorre;
  • op 'e foargrûn is in útwreidingssnoer mei ûnôfhinklik loskeppele sockets, de draad dêrfan giet nei in goedkeap UPS;
  • op 'e eftergrûn is d'r in bosk twisted pair-kabels - yn' e poadium fan it renovearjen fan it appartemint plande ik fuortendaliks RJ45-sockets op 'e plakken wêr't de apparatuer soe sitte, om net te hingjen fan' e WiFi dy't besloech.

Dat, wy hawwe de apparatuer, wy moatte it konfigurearje:

Hosting fan in webside op jo thús router

  • De earste opset fan 'e router duorret sawat 2 minuten, wy jouwe de ferbiningsparameters oan' e provider (myn optyske terminal is oerskeakele nei brêgemodus, de PPPoE-ferbining tilt de router op), de namme fan it WiFi-netwurk en it wachtwurd - yn prinsipe is it it , de router start op en wurket.

Hosting fan in webside op jo thús router

Wy sette it trochstjoeren fan eksterne havens nei de havens fan 'e router sels yn 'e seksje "Netwurkregels - Trochstjoere":

Hosting fan in webside op jo thús router

Hosting fan in webside op jo thús router

No kinne wy ​​​​gean nei it "avansearre" diel, wat ik woe fan 'e router:

  1. funksjonaliteit fan in lytse NAS foar in thús netwurk;
  2. it útfieren fan webserverfunksjes foar ferskate privee siden;
  3. persoanlike wolkfunksjonaliteit foar tagong ta persoanlike gegevens fan oeral yn 'e wrâld.

De earste wurdt ymplementearre mei ynboude ark, sûnder folle muoite te fereaskje:

  • Wy nimme in stasjon dy't bedoeld is foar dizze rol (flash-drive, ûnthâldkaart yn in kaartlêzer, hurde skiif as SSD yn in eksterne doaze en formatearje it nei Ext4 mei help fan MiniTool Partition Wizard Free Edition (Ik haw gjin kompjûter mei Linux by de hân, it is mooglik mei ynboude ark). Sa't ik it begryp, skriuwt it systeem yn 'e operaasje allinich logs nei it flash-drive, dus as jo se beheine nei it ynstellen fan it systeem, kinne jo ek ûnthâldkaarten brûke as jo fan plan binne in protte en faak nei it stasjon te skriuwen - in SSD of HDD is better.

Hosting fan in webside op jo thús router

Hjirnei ferbine wy ​​it stasjon oan 'e router en observearje it op it skerm fan it systeemmonitor

Hosting fan in webside op jo thús router

Klikje op "USB-skiven en printers" nei de seksje "Applikaasjes" en konfigurearje it diel yn 'e seksje "Windows Netwurk":

Hosting fan in webside op jo thús router

En wy hawwe in netwurkboarne dy't kin wurde brûkt fan Windows-kompjûters, ferbining as in skiif as nedich: net brûke y: \ 192.168.1.1SSD / persistent: ja

De snelheid fan sa'n ymprovisearre NAS is genôch foar thúsgebrûk; oer in draad brûkt it de heule gigabit, oer WiFi is de snelheid sawat 400-500 megabits.

Hosting fan in webside op jo thús router

It ynstellen fan opslach is ien fan 'e nedige stappen om de tsjinner te konfigurearjen, dan moatte wy:
- keapje in domein en in statysk IP-adres (jo kinne sûnder dit dwaan troch dynamyske DNS te brûken, mar ik hie al in statysk IP, dus it die bliken makliker te brûken frije Yandex tsjinsten - troch dêr it domein te delegearjen, wy ûntfange DNS-hosting en post op ús domein);

Hosting fan in webside op jo thús router

- konfigurearje DNS-tsjinners en foegje A-records ta dy't ferwize nei jo IP:

Hosting fan in webside op jo thús router

It duorret ferskate oeren foar de domein- en DNS-delegaasje-ynstellingen om effekt te nimmen, sadat wy tagelyk de router ynstelle.

Earst moatte wy it Entware-repository ynstallearje, wêrfan wy de nedige pakketten op 'e router kinne ynstallearje. Ik naam foardiel dizze ynstruksje, krekt net uploade it ynstallaasje pakket fia FTP, mar makke in map direkt op de earder ferbûn netwurk drive en kopiearre de triem dêr op 'e gewoane wize.

Nei tagong te krijen fia SSH, feroarje it wachtwurd mei it kommando passwd en ynstallearje alle nedige pakketten mei it kommando opkg install [pakketnammen]:

Hosting fan in webside op jo thús router

Tidens de opset waarden de folgjende pakketten ynstalleare op 'e router (de útfier fan it opkg list-ynstalleare kommando):

List fan pakketten
bash - 5.0-3
busybox - 1.31.1-1
ca-bondel - 20190110-2
ca-sertifikaten - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
kroan - 4.1-3
krul - 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-folslein - 1.11.1-4
libintl-fol - 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
lokaasjes - 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
poorbox - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-azje - 2019c-1
zoneinfo-europe - 2019c-1

Faaks wie hjir wat oerstallichs, mar der wie in soad romte op it rydbewiis, dat ik haw der net nei sjoen.

Nei it ynstallearjen fan de pakketten konfigurearje wy nginx, ik besocht it mei twa domeinen - de twadde is konfigureare mei https, en foar no is d'r in stub. Ynterne havens 81 en 433 wurde brûkt ynstee fan 80 en 443, sûnt de router admin paniel hinget op normale havens.

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;

Om de side fia https te wurkjen, brûkte ik it bekende dehydratisearre skript, en ynstallearje it mei dizze ynstruksje. Dit proses feroarsake gjin swierrichheden, ik stroffele allinich op it feit dat yn 'e tekst fan it skript foar wurkjen oan myn router jo moatte kommentaar út de line yn it bestân /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

En ik merk op dat it generearjen fan dhparams.pem mei it kommando "openssl dhparam -out dhparams.pem 2048" op myn router duorret mear as 2 oeren, as net foar de foarútgong yndikator, Ik soe hawwe ferlern geduld en opnij starte.

Nei it ûntfangen fan de sertifikaten, start nginx opnij mei it kommando "/opt/etc/init.d/S80nginx opnij starte". Yn prinsipe is de opset kompleet, mar d'r is noch gjin webside - as wy it index.html-bestân yn 'e /share/nginx/html-map sette, sille wy in stub sjen.

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>

Om ynformaasje prachtich te pleatsen, is it makliker foar in net-profesjonele lykas my om klearmakke sjabloanen te brûken; nei in lange sykjen troch ferskate katalogussen, fûn ik templatemo.com - d'r is in goede seleksje fan fergese sjabloanen dy't gjin taskriuwing nedich binne (wat seldsum is op it ynternet; de measte sjabloanen yn 'e lisinsje fereaskje dat jo in keppeling opslaan nei de boarne wêrfan se binne krigen).

Wy selektearje in gaadlik sjabloan - d'r binne ien foar in ferskaat oan gefallen, download it argyf en pak it út yn 'e map /share/nginx/html, jo kinne dit dwaan fan jo kompjûter, dan bewurkje it sjabloan (hjir sille jo minimale kennis nedich hawwe fan HTML om de struktuer net te brekken) en ferfange de grafiken lykas werjûn yn 'e ôfbylding hjirûnder.

Hosting fan in webside op jo thús router

Gearfetting: de router is frij geskikt foar it hostjen fan in ljochte webside derop, yn prinsipe - as jo gjin grutte lading ferwachtsje, kinne jo ynstallearje en php, en eksperimintearje mei mear komplekse projekten (Ik sjoch op nextcloud/owncloud, d'r lykje suksesfolle ynstallaasjes te wêzen op sokke hardware). De mooglikheid om pakketten te ynstallearjen fergruttet syn nut - bygelyks as it nedich wie om de RDP-poarte fan in PC op in lokaal netwurk te beskermjen, haw ik knockd ynstalleare op 'e router - en poarte trochstjoere nei de PC waard allinich iepene nei't poarte klopjen.

Wêrom in router en net in gewoane PC? In router is ien fan 'e pear kompjûterstikken hardware dy't de klok yn in protte apparteminten wurket; in thúsrouter is normaal absolút stil en in ljochte side mei minder dan hûndert besiken per dei sil it hielendal net lestich falle.

Boarne: www.habr.com

Add a comment