Hosting situs web di router rumah

Saya sudah lama ingin “menyentuh tangan saya” pada layanan Internet dengan menyiapkan server web dari awal dan merilisnya ke Internet. Pada artikel ini saya ingin berbagi pengalaman saya dalam mengubah router rumah dari perangkat yang sangat fungsional menjadi server yang hampir lengkap.

Semuanya dimulai dengan fakta bahwa router TP-Link TL-WR1043ND, yang telah melayani dengan setia, tidak lagi memenuhi kebutuhan jaringan rumah; Saya menginginkan pita 5 GHz dan akses cepat ke file di perangkat penyimpanan yang terhubung ke router . Setelah melihat-lihat forum khusus (4pda, ixbt), situs dengan ulasan dan melihat berbagai toko lokal, saya memutuskan untuk membeli Keenetic Ultra.

Ulasan bagus dari pemilik mendukung perangkat khusus ini:

  • tidak ada masalah panas berlebih (di sini kami harus meninggalkan produk Asus);
  • keandalan operasional (di sini saya mencoret TP-Link);
  • mudah diatur (saya khawatir saya tidak bisa mengatasinya dan mencoret Microtik).

Saya harus menerima kekurangannya:

  • tidak ada WiFi6, saya ingin membawa peralatan dengan cadangan untuk masa depan;
  • 4 port LAN, saya ingin lebih, tapi ini bukan lagi kategori rumah.

Hasilnya, kami mendapatkan “server” ini:

Hosting situs web di router rumah

  • di sebelah kiri adalah terminal optik Rostelecom;
  • di sebelah kanan adalah router eksperimental kami;
  • SSD m.2 128 GB tergeletak di sekitar, ditempatkan di kotak USB3 dari Aliexpress, terhubung ke router dengan kabel, sekarang terpasang rapi di dinding;
  • di latar depan ada kabel ekstensi dengan soket yang terputus secara independen, kabel darinya menuju ke UPS yang murah;
  • di background ada segerombolan kabel twisted pair - pada tahap renovasi apartemen, saya langsung merencanakan soket RJ45 di tempat seharusnya peralatan itu ditempatkan, agar tidak bergantung pada WiFi yang berserakan.

Jadi, kami memiliki peralatannya, kami perlu mengkonfigurasinya:

Hosting situs web di router rumah

  • Pengaturan awal router memakan waktu sekitar 2 menit, kami menunjukkan parameter koneksi ke penyedia (terminal optik saya dialihkan ke mode jembatan, koneksi PPPoE mengangkat router), nama jaringan WiFi dan kata sandi - pada dasarnya itu saja , router mulai dan berfungsi.

Hosting situs web di router rumah

Kami mengatur penerusan port eksternal ke port router itu sendiri di bagian “Aturan jaringan - Penerusan”:

Hosting situs web di router rumah

Hosting situs web di router rumah

Sekarang kita dapat beralih ke bagian "lanjutan", yang saya inginkan dari router:

  1. fungsionalitas NAS kecil untuk jaringan rumah;
  2. menjalankan fungsi server web untuk beberapa halaman pribadi;
  3. fungsionalitas cloud pribadi untuk mengakses data pribadi dari mana saja di dunia.

Yang pertama diimplementasikan menggunakan alat bawaan, tanpa memerlukan banyak usaha:

  • Kami mengambil drive yang ditujukan untuk peran ini (flash drive, kartu memori di pembaca kartu, hard drive atau SSD di kotak eksternal dan memformatnya ke Ext4 menggunakan MiniTool Partition Wizard Edisi Gratis (Saya tidak memiliki komputer dengan Linux, itu mungkin dengan alat bawaan). Sejauh yang saya pahami, selama pengoperasian, sistem hanya menulis log ke flash drive, jadi jika Anda membatasinya setelah pengaturan sistem, Anda juga dapat menggunakan kartu memori jika Anda berencana untuk menulis banyak dan sering ke drive - SSD atau HDDnya lebih baik.

Hosting situs web di router rumah

Setelah ini, kami menghubungkan drive ke router dan mengamatinya di layar monitor sistem

Hosting situs web di router rumah

Klik "Drive USB dan printer" ke bagian "Aplikasi" dan konfigurasikan pembagian di bagian "Jaringan Windows":

Hosting situs web di router rumah

Dan kami memiliki sumber daya jaringan yang dapat digunakan dari komputer Windows, terhubung sebagai disk jika perlu: net use y: \192.168.1.1SSD /persistent:yes

Kecepatan NAS improvisasi tersebut cukup memadai untuk digunakan di rumah, melalui kabel ia menggunakan seluruh gigabit, melalui WiFi kecepatannya sekitar 400-500 megabit.

Hosting situs web di router rumah

Menyiapkan penyimpanan adalah salah satu langkah yang diperlukan untuk mengkonfigurasi server, maka kita memerlukan:
- membeli domain dan alamat IP statis (Anda bisa melakukannya tanpa ini dengan menggunakan DNS Dinamis, tapi saya sudah punya IP statis, jadi ternyata lebih mudah digunakan layanan Yandex gratis - dengan mendelegasikan domain di sana, kami menerima hosting DNS dan email di domain kami);

Hosting situs web di router rumah

- konfigurasikan server DNS dan tambahkan catatan A yang menunjuk ke IP Anda:

Hosting situs web di router rumah

Diperlukan waktu beberapa jam agar pengaturan delegasi domain dan DNS diterapkan, jadi kami menyiapkan router secara bersamaan.

Pertama, kita perlu menginstal repositori Entware, dari mana kita dapat menginstal paket yang diperlukan pada router. Saya mengambil keuntungan instruksi ini, hanya tidak mengunggah paket instalasi melalui FTP, tetapi membuat folder langsung di drive jaringan yang terhubung sebelumnya dan menyalin file di sana dengan cara biasa.

Setelah mendapatkan akses melalui SSH, ubah kata sandi dengan perintah passwd dan instal semua paket yang diperlukan dengan perintah opkg install [nama paket]:

Hosting situs web di router rumah

Selama pengaturan, paket-paket berikut diinstal pada router (output dari perintah opkg list-installed):

Daftar paket
pesta - 5.0-3
kotak sibuk - 1.31.1-1
bundel ca - 20190110-2
ca-sertifikat - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
keriting - 7.69.0-1
diffutil - 3.7-2
dropbear - 2019.78-3
rilis perangkat lunak - 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-penuh - 1.11.1-4
libintl-penuh - 0.19.8.1-2
liblue - 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
garis perpustakaan - 8.0-1a
perpustakaan - 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
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
pilih-ndmsv2 - 1.0-12
php7 - 7.4.3-1
php7-mod-openssl - 7.4.3-1
kotak malang - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-eropa - 2019c-1

Mungkin ada sesuatu yang berlebihan di sini, tapi ada banyak ruang di drive, jadi saya tidak repot-repot mencarinya.

Setelah menginstal paket, kami mengkonfigurasi nginx, saya mencobanya dengan dua domain - yang kedua dikonfigurasi dengan https, dan untuk saat ini ada rintisan. Port internal 81 dan 433 digunakan sebagai pengganti 80 dan 443, karena panel admin router bergantung pada port normal.

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

Agar situs dapat berfungsi melalui https, saya menggunakan skrip dehidrasi yang terkenal, menginstalnya menggunakan panduan ini. Proses ini tidak menimbulkan kesulitan apa pun, saya hanya menemukan fakta bahwa dalam teks skrip untuk bekerja pada router saya Anda perlu mengomentari baris dalam file /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Dan saya perhatikan bahwa menghasilkan dhparams.pem dengan perintah “openssl dhparam -out dhparams.pem 2048” di router saya membutuhkan waktu lebih dari 2 jam, jika bukan karena indikator kemajuan, saya akan kehilangan kesabaran dan melakukan boot ulang.

Setelah menerima sertifikat, restart nginx dengan perintah “/opt/etc/init.d/S80nginx restart”. Pada prinsipnya setup sudah selesai, tetapi belum ada website - jika kita meletakkan file index.html di direktori /share/nginx/html, kita akan melihat 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>

Untuk menempatkan informasi dengan indah, lebih mudah bagi non-profesional seperti saya untuk menggunakan templat yang sudah jadi; setelah lama mencari di berbagai katalog, saya menemukan templatemo.com - ada banyak pilihan templat gratis yang tidak memerlukan atribusi (yang jarang terjadi di Internet; sebagian besar templat dalam lisensi mengharuskan Anda menyimpan tautan ke sumber tempat templat tersebut diperoleh).

Kami memilih templat yang sesuai - ada templat untuk berbagai kasus, unduh arsip dan buka paketnya ke direktori /share/nginx/html, Anda dapat melakukannya dari komputer Anda, lalu edit templat (di sini Anda memerlukan pengetahuan minimal HTML agar tidak merusak strukturnya) dan ganti grafiknya seperti terlihat pada gambar di bawah ini.

Hosting situs web di router rumah

Ringkasan: router cukup cocok untuk menghosting situs web ringan di dalamnya, pada prinsipnya - jika beban besar tidak diharapkan, Anda bisa instal dan php, dan bereksperimen dengan proyek yang lebih kompleks (saya melihat nextcloud/owncloud, tampaknya ada instalasi yang berhasil pada perangkat keras tersebut). Kemampuan untuk menginstal paket meningkatkan kegunaannya - misalnya, ketika diperlukan untuk melindungi port RDP PC di jaringan lokal, saya menginstal knockd di router - dan penerusan port ke PC dibuka hanya setelah port knocking.

Mengapa router dan bukan PC biasa? Router adalah salah satu dari sedikit perangkat keras komputer yang bekerja sepanjang waktu di banyak apartemen; router rumah biasanya benar-benar senyap dan situs ringan dengan kurang dari seratus kunjungan per hari tidak akan mengganggunya sama sekali.

Sumber: www.habr.com

Tambah komentar