Gastigi retejon sur via hejma enkursigilo

Mi delonge deziris "tuŝi miajn manojn" ĉe Interretaj servoj instalante retservilon de nulo kaj liberigante ĝin al Interreto. En ĉi tiu artikolo mi volas kunhavigi mian sperton pri transformado de hejma enkursigilo de tre funkcia aparato en preskaŭ plenan servilon.

Ĉio komenciĝis per tio, ke la enkursigilo TP-Link TL-WR1043ND, kiu fidele servis, ne plu renkontis la bezonojn de hejma reto; mi volis 5 GHz-grupon kaj rapidan aliron al dosieroj sur stoka aparato konektita al la enkursigilo. . Trarigardinte specialajn forumojn (4pda, ixbt), retejojn kun recenzoj kaj rigardante la sortimenton de lokaj vendejoj, mi decidis aĉeti Keenetic Ultra.

Bonaj recenzoj de la posedantoj funkciis favore al ĉi tiu aparta aparato:

  • neniuj problemoj kun varmiĝo (ĉi tie ni devis forlasi Asus-produktojn);
  • operacia fidindeco (ĉi tie mi forstrekis TP-Link);
  • facile instalebla (mi timis, ke mi ne povas trakti ĝin kaj forstrekis Microtik).

Mi devis interkonsenti kun la malavantaĝoj:

  • neniu WiFi6, mi volis preni ekipaĵon kun rezervo por la estonteco;
  • 4 LAN-havenoj, mi volis pli, sed ĉi tio ne plu estas hejma kategorio.

Kiel rezulto, ni ricevis ĉi tiun "servilon":

Gastigi retejon sur via hejma enkursigilo

  • maldekstre estas la optika terminalo de Rostelecom;
  • dekstre estas nia eksperimenta enkursigilo;
  • 2 GB m.128 SSD kuŝanta ĉirkaŭe, metita en USB3-skatolo de Aliexpress, estas konektita al la enkursigilo per drato, nun ĝi estas bonorde muntita sur la muro;
  • en la malfono estas etendoŝnuro kun sendepende malkonektitaj ingoj, la drato de ĝi iras al malmultekosta UPS;
  • en la fono estas fasko da torditaj kabloj - en la stadio de renovigo de la apartamento, mi tuj planis RJ45-ingojn en la lokoj, kie la ekipaĵo devis troviĝi, por ne dependi de la WiFi estas disŝutita.

Do, ni havas la ekipaĵon, ni devas agordi ĝin:

Gastigi retejon sur via hejma enkursigilo

  • La komenca agordo de la enkursigilo daŭras ĉirkaŭ 2 minutojn, ni indikas la konektajn parametrojn al la provizanto (mia optika terminalo estas ŝanĝita al ponta reĝimo, la PPPoE-konekto levas la enkursigilon), la nomon de la WiFi-reto kaj la pasvorton - esence jen ĝi. , la enkursigilo startas kaj funkcias.

Gastigi retejon sur via hejma enkursigilo

Ni fiksas plusendon de eksteraj havenoj al la havenoj de la enkursigilo mem en la sekcio "Reguloj - Plusendado":

Gastigi retejon sur via hejma enkursigilo

Gastigi retejon sur via hejma enkursigilo

Nun ni povas pluiri al la "altnivela" parto, kion mi volis de la enkursigilo:

  1. funkcieco de malgranda NAS por hejma reto;
  2. plenumi funkciojn de retservilo por pluraj privataj paĝoj;
  3. persona nuba funkcio por aliri personajn datumojn de ie ajn en la mondo.

La unua estas efektivigita uzante enkonstruitajn ilojn, sen postuli multe da peno:

  • Ni prenas diskon destinitan por ĉi tiu rolo (flash drive, memorkarto en kartlegilo, malmola disko aŭ SSD en ekstera skatolo kaj formatas ĝin al Ext4 uzante MiniTool Partition Wizard Senpaga Eldono (Mi ne havas komputilon kun Linukso ĉemane, ĝi eblas per enkonstruitaj iloj). Kiel mi komprenas ĝin, dum funkciado la sistemo skribas nur protokolojn al la disko, do se vi limigas ilin post agordo de la sistemo, vi ankaŭ povas uzi memorkartojn se vi planas skribi multe kaj ofte al la disko - SSD aŭ HDD estas pli bona.

Gastigi retejon sur via hejma enkursigilo

Post ĉi tio, ni konektas la diskon al la enkursigilo kaj observas ĝin sur la ekrano de la sistema monitoro

Gastigi retejon sur via hejma enkursigilo

Alklaku "USB-diskojn kaj presilojn" al la sekcio "Aplikoj" kaj agordu la kundividon en la sekcio "Vindoza Reto":

Gastigi retejon sur via hejma enkursigilo

Kaj ni havas retan rimedon, kiu povas esti uzata de Vindozaj komputiloj, konektante kiel disko se necese: net uzo y: \192.168.1.1SSD /persistent:jes

La rapideco de tia improvizita NAS estas sufiĉe sufiĉa por hejma uzo; per drato ĝi uzas la tutan gigabiton, tra WiFi la rapideco estas ĉirkaŭ 400-500 megabitoj.

Gastigi retejon sur via hejma enkursigilo

Agordo de stokado estas unu el la necesaj paŝoj por agordi la servilon, tiam ni bezonas:
- aĉeti domajnon kaj statika IP-adreso (vi povas malhavi ĉi tion uzante Dynamic DNS, sed mi jam havis statikan IP, do ĝi montriĝis pli facile uzebla). senpagaj Yandex-servoj - deleginte la domajnon tie, ni ricevas DNS-gastigadon kaj poŝton sur nia domajno);

Gastigi retejon sur via hejma enkursigilo

- agordi DNS-servilojn kaj aldonu A-rekordojn montrantajn al via IP:

Gastigi retejon sur via hejma enkursigilo

Necesas plurajn horojn por ke la domajna kaj DNS-delega agordoj efektiviĝu, do ni samtempe agordas la enkursigilon.

Unue, ni devas instali la Entware-deponejon, de kiu ni povas instali la necesajn pakaĵojn sur la enkursigilo. Mi profitis ĉi tiu instrukcio, simple ne alŝutis la instalan pakaĵon per FTP, sed kreis dosierujon rekte sur la antaŭe konektita retdisko kaj kopiis la dosieron tie laŭ la kutima maniero.

Akirinte per SSH, ŝanĝu la pasvorton per la komando passwd kaj instalu ĉiujn necesajn pakaĵojn per la komando opkg install [package names]:

Gastigi retejon sur via hejma enkursigilo

Dum aranĝo, la sekvaj pakaĵoj estis instalitaj sur la enkursigilo (la eligo de la opkg-list-instalita komando):

Listo de pakoj
bato - 5.0-3
busybox - 1.31.1-1
ca-pakaĵo - 20190110-2
ca-atestiloj - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
buklo - 7.69.0-1
diffutils - 3.7-2
dropbear - 2019.78-3
enware-liberigo - 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-plena - 1.11.1-4
libintl-plena - 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
lokoj - 2.27-9
mc - 4.8.23-2
ndmq - 1.0.2-5a
nginx - 1.17.8-1
openssl-utilo - 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
malriĉulskatolo - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-azio - 2019c-1
zoneinfo-eŭropo - 2019c-1

Eble estis io superflua ĉi tie, sed estis multe da spaco sur la veturado, do mi ne ĝenis rigardi ĝin.

Post instalo de la pakaĵoj, ni agordas nginx, mi provis ĝin per du domajnoj - la dua estas agordita per https, kaj nuntempe estas ĝermo. Internaj havenoj 81 kaj 433 estas uzataj anstataŭ 80 kaj 443, ĉar la enkursigilo-administra panelo pendas sur normalaj havenoj.

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

Por ke la retejo funkciu per https, mi uzis la konatan senhidratigitan skripton, instalante ĝin uzante ĉi tiu instrukcio. Ĉi tiu procezo ne kaŭzis malfacilaĵojn, mi nur trovis, ke en la teksto de la skripto por labori sur mia enkursigilo vi devas komenti la linion en la dosiero /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Kaj mi rimarkas, ke generi dhparams.pem per la komando "openssl dhparam -out dhparams.pem 2048" sur mia enkursigilo daŭras pli ol 2 horojn, se ne pro la progresindikilo, mi perdintus paciencon kaj rekomencus.

Post ricevi la atestojn, rekomencu nginx per la komando "/opt/etc/init.d/S80nginx restart". Principe, la aranĝo estas kompleta, sed ankoraŭ ne ekzistas retejo - se ni metas la dosieron index.html en la dosierujon /share/nginx/html, ni vidos stumblon.

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>

Por bele meti informojn, por neprofesiulo kiel mi estas pli facile uzi pretajn ŝablonojn; post longa serĉado tra diversaj katalogoj, mi trovis templatemo.com - ekzistas bona elekto de senpagaj ŝablonoj, kiuj ne postulas atribuon (kio estas malofta en la Interreto; la plej multaj el la ŝablonoj en la permesilo postulas, ke vi konservu ligilon al la rimedo de kiu ili estis akiritaj).

Ni elektas taŭgan ŝablonon - ekzistas tiaj por diversaj kazoj, elŝutu la arkivon kaj malpaku ĝin en la dosierujon /share/nginx/html, vi povas fari tion de via komputilo, poste redakti la ŝablonon (ĉi tie vi bezonos minimuman scion. de HTML por ne rompi la strukturon) kaj anstataŭigu la grafikaĵojn kiel montrite en la suba figuro.

Gastigi retejon sur via hejma enkursigilo

Resumo: la enkursigilo estas sufiĉe taŭga por gastigi malpezan retejon sur ĝi, principe - se oni ne atendas grandan ŝarĝon, vi povas instali kaj php, kaj eksperimentu kun pli kompleksaj projektoj (mi rigardas nextcloud/owncloud, ŝajnas esti sukcesaj instalaĵoj sur tia aparataro). La kapablo instali pakaĵojn pliigas ĝian utilecon - ekzemple, kiam necesis protekti la RDP-havenon de komputilo en loka reto, mi instalis knockd sur la enkursigilo - kaj haveno plusendado al la komputilo estis malfermita nur post haveno frapado.

Kial enkursigilo kaj ne kutima komputilo? Enkursigilo estas unu el la malmultaj komputilaj pecoj de aparataro kiu funkcias ĉirkaŭ la horloĝo en multaj apartamentoj; hejma enkursigilo estas kutime absolute silenta kaj malpeza retejo kun malpli ol cent vizitoj tage tute ne ĝenos ĝin.

fonto: www.habr.com

Aldoni komenton