Pagho-host ng isang website sa iyong home router

Matagal ko nang gustong "hawakan ang aking mga kamay" sa mga serbisyo ng Internet sa pamamagitan ng pag-set up ng isang web server mula sa simula at pag-release nito sa Internet. Sa artikulong ito gusto kong ibahagi ang aking karanasan sa pagbabago ng isang home router mula sa isang lubos na gumaganang aparato sa isang halos ganap na server.

Nagsimula ang lahat sa katotohanan na ang TP-Link TL-WR1043ND router, na nagsilbi nang tapat, ay hindi na nakakatugon sa mga pangangailangan ng isang home network; Gusto ko ng 5 GHz band at mabilis na pag-access sa mga file sa isang storage device na konektado sa router . Matapos tumingin sa mga dalubhasang forum (4pda, ixbt), mga site na may mga review at pagtingin sa iba't ibang mga lokal na tindahan, nagpasya akong bumili ng Keenetic Ultra.

Ang magagandang review mula sa mga may-ari ay nagtrabaho pabor sa partikular na device na ito:

  • walang mga problema sa sobrang pag-init (dito kailangan naming iwanan ang mga produkto ng Asus);
  • pagiging maaasahan ng pagpapatakbo (dito ko tinawid ang TP-Link);
  • madaling i-set up (natakot ako na hindi ko ito mahawakan at i-cross out ang Microtik).

Kinailangan kong tanggapin ang mga kawalan:

  • walang WiFi6, gusto kong kumuha ng kagamitan na may reserba para sa hinaharap;
  • 4 LAN port, gusto ko ng higit pa, ngunit hindi na ito isang kategorya ng tahanan.

Bilang resulta, nakuha namin ang "server" na ito:

Pagho-host ng isang website sa iyong home router

  • sa kaliwa ay ang optical terminal ng Rostelecom;
  • sa kanan ay ang aming pang-eksperimentong router;
  • isang 2 GB m.128 SSD na nakahiga, na inilagay sa isang USB3 box mula sa Aliexpress, ay konektado sa router gamit ang isang wire, ngayon ito ay maayos na naka-mount sa dingding;
  • sa foreground ay isang extension cord na may mga independiyenteng naka-disconnect na socket, ang wire mula dito ay papunta sa isang murang UPS;
  • sa background ay mayroong isang bungkos ng mga twisted pair cable - sa yugto ng pag-aayos ng apartment, agad kong binalak ang mga socket ng RJ45 sa mga lugar kung saan ang kagamitan ay dapat na matatagpuan, upang hindi umasa sa WiFi na nakakalat.

Kaya, mayroon kaming kagamitan, kailangan naming i-configure ito:

Pagho-host ng isang website sa iyong home router

  • Ang paunang pag-setup ng router ay tumatagal ng mga 2 minuto, ipinapahiwatig namin ang mga parameter ng koneksyon sa provider (ang aking optical terminal ay inililipat sa bridge mode, ang koneksyon ng PPPoE ay nag-angat ng router), ang pangalan ng WiFi network at ang password - karaniwang iyon lang. , ang router ay nagsisimula at gumagana.

Pagho-host ng isang website sa iyong home router

Itinakda namin ang pagpapasa ng mga panlabas na port sa mga port ng router mismo sa seksyong "Mga panuntunan sa network - Pagpasa":

Pagho-host ng isang website sa iyong home router

Pagho-host ng isang website sa iyong home router

Ngayon ay maaari tayong magpatuloy sa "advanced" na bahagi, kung ano ang gusto ko mula sa router:

  1. pag-andar ng isang maliit na NAS para sa isang home network;
  2. gumaganap ng mga function ng web server para sa ilang pribadong pahina;
  3. personal na cloud functionality para sa pag-access ng personal na data mula sa kahit saan sa mundo.

Ang una ay ipinatupad gamit ang mga built-in na tool, nang hindi nangangailangan ng maraming pagsisikap:

  • Kumuha kami ng drive na inilaan para sa papel na ito (flash drive, memory card sa isang card reader, hard drive o SSD sa isang panlabas na kahon at i-format ito sa Ext4 gamit ang MiniTool Partition Wizard Libreng Edition (Wala akong computer na may Linux sa kamay, posible ito sa mga built-in na tool). Tulad ng naiintindihan ko, sa panahon ng operasyon, ang system ay nagsusulat lamang ng mga log sa flash drive, kaya kung nililimitahan mo ang mga ito pagkatapos i-set up ang system, maaari mo ring gamitin ang mga memory card kung plano mong magsulat ng maraming at madalas sa drive - isang SSD o Mas maganda ang HDD.

Pagho-host ng isang website sa iyong home router

Pagkatapos nito, ikinonekta namin ang drive sa router at obserbahan ito sa screen ng monitor ng system

Pagho-host ng isang website sa iyong home router

Mag-click sa "USB drive at printer" sa seksyong "Mga Application" at i-configure ang bahagi sa seksyong "Windows Network":

Pagho-host ng isang website sa iyong home router

At mayroon kaming mapagkukunan ng network na maaaring magamit mula sa mga Windows computer, kumokonekta bilang isang disk kung kinakailangan: net use y: \192.168.1.1SSD /persistent:yes

Ang bilis ng naturang improvised na NAS ay sapat na para sa paggamit sa bahay; sa isang wire ginagamit nito ang buong gigabit, sa WiFi ang bilis ay humigit-kumulang 400-500 megabits.

Pagho-host ng isang website sa iyong home router

Ang pag-set up ng storage ay isa sa mga kinakailangang hakbang para i-configure ang server, pagkatapos ay kailangan namin:
- bumili ng domain at isang static na IP address (magagawa mo nang wala ito sa pamamagitan ng paggamit ng Dynamic DNS, ngunit mayroon na akong static na IP, kaya naging mas madaling gamitin ito libreng serbisyo ng Yandex - sa pamamagitan ng pagtatalaga ng domain doon, tumatanggap kami ng DNS hosting at mail sa aming domain);

Pagho-host ng isang website sa iyong home router

- i-configure ang mga DNS server at magdagdag ng A record na tumuturo sa iyong IP:

Pagho-host ng isang website sa iyong home router

Tumatagal ng ilang oras para magkabisa ang mga setting ng paglalaan ng domain at DNS, kaya sabay-sabay naming sine-set up ang router.

Una, kailangan naming i-install ang Entware repository, kung saan maaari naming i-install ang mga kinakailangang pakete sa router. Sinamantala ko tagubiling ito, hindi lang nag-upload ng package sa pag-install sa pamamagitan ng FTP, ngunit lumikha ng isang folder nang direkta sa dating konektadong network drive at kinopya ang file doon sa karaniwang paraan.

Ang pagkakaroon ng access sa pamamagitan ng SSH, baguhin ang password gamit ang passwd command at i-install ang lahat ng kinakailangang package gamit ang opkg install [package names] command:

Pagho-host ng isang website sa iyong home router

Sa panahon ng pag-setup, ang mga sumusunod na pakete ay na-install sa router (ang output ng opkg list-installed na command):

Listahan ng mga pakete
bash - 5.0-3
busybox - 1.31.1-1
ca-bundle - 20190110-2
ca-certificate - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
kulot - 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-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
mga lokal - 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-asia - 2019c-1
zoneinfo-europe - 2019c-1

Marahil ay mayroong isang bagay na labis dito, ngunit mayroong maraming espasyo sa pagmamaneho, kaya hindi ako nag-abala na tingnan ito.

Pagkatapos i-install ang mga pakete, i-configure namin ang nginx, sinubukan ko ito sa dalawang domain - ang pangalawa ay na-configure sa https, at sa ngayon ay may stub. Ang mga panloob na port 81 at 433 ay ginagamit sa halip na 80 at 443, dahil ang router admin panel ay nakabitin sa mga normal na port.

atbp/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;

Upang gumana ang site sa pamamagitan ng https, ginamit ko ang kilalang dehydrated script, ini-install ito gamit tagubiling ito. Ang prosesong ito ay hindi naging sanhi ng anumang mga paghihirap, natitisod lamang ako sa katotohanan na sa teksto ng script para sa pagtatrabaho sa aking router kailangan mong magkomento sa linya sa file /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

At tandaan ko na ang pagbuo ng dhparams.pem gamit ang command na "openssl dhparam -out dhparams.pem 2048" sa aking router ay tumatagal ng higit sa 2 oras, kung hindi para sa indicator ng pag-unlad, mawawalan ako ng pasensya at mag-reboot.

Pagkatapos matanggap ang mga sertipiko, i-restart ang nginx gamit ang command na "/opt/etc/init.d/S80nginx restart". Sa prinsipyo, kumpleto na ang setup, ngunit wala pang website - kung ilalagay natin ang index.html file sa /share/nginx/html directory, makakakita tayo ng 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>

Upang mailagay ang impormasyon nang maganda, mas madali para sa isang hindi propesyonal na tulad ko na gumamit ng mga yari na template; pagkatapos ng mahabang paghahanap sa iba't ibang katalogo, nakita ko templatemo.com - mayroong isang mahusay na pagpipilian ng mga libreng template na hindi nangangailangan ng pagpapatungkol (na bihira sa Internet; karamihan sa mga template sa lisensya ay nangangailangan sa iyo na mag-save ng isang link sa mapagkukunan kung saan sila nakuha).

Pumili kami ng angkop na template - may mga para sa iba't ibang mga kaso, i-download ang archive at i-unpack ito sa /share/nginx/html na direktoryo, magagawa mo ito mula sa iyong computer, pagkatapos ay i-edit ang template (dito kakailanganin mo ng kaunting kaalaman ng HTML upang hindi masira ang istraktura) at palitan ang mga graphics tulad ng ipinapakita sa figure sa ibaba.

Pagho-host ng isang website sa iyong home router

Buod: ang router ay medyo angkop para sa pagho-host ng isang magaan na website dito, sa prinsipyo - kung ang isang malaking pag-load ay hindi inaasahan, maaari mong i-install at php, at mag-eksperimento sa mas kumplikadong mga proyekto (tumingin ako sa nextcloud/owncloud, tila may matagumpay na pag-install sa naturang hardware). Ang kakayahang mag-install ng mga pakete ay nagdaragdag ng pagiging kapaki-pakinabang nito - halimbawa, kapag kinakailangan upang protektahan ang RDP port ng isang PC sa isang lokal na network, nag-install ako ng knockd sa router - at ang port forwarding sa PC ay binuksan lamang pagkatapos ng port knocking.

Bakit isang router at hindi isang regular na PC? Ang isang router ay isa sa ilang mga computer na piraso ng hardware na gumagana sa buong orasan sa maraming mga apartment; ang isang home router ay karaniwang ganap na tahimik at ang isang magaan na site na may mas mababa sa isang daang mga pagbisita bawat araw ay hindi makakaabala dito.

Pinagmulan: www.habr.com

Magdagdag ng komento