Héberger un site sur un routeur domestique

Depuis longtemps, j'avais envie de « toucher du doigt » les services Internet, en configurant un serveur web depuis zéro et en le lançant sur Internet. Dans cet article, je souhaite partager mon expérience sur la transformation d'un routeur domestique, passant d'un appareil à fonction limitée à un véritable serveur.

Tout a commencé avec le routeur TP-Link TL-WR1043ND, qui m'a fidÚlement servi mais n'était plus à la hauteur des besoins de mon réseau domestique. J'avais envie de la bande 5GHz et d'un accÚs rapide aux fichiers sur le disque dur connecté au routeur. AprÚs avoir consulté des forums spécialisés (4pda, ixbt), des sites d'avis, et examiné les offres des magasins locaux, j'ai décidé d'acheter le Keenetic Ultra.

Les avis positifs des propriétaires ont pesé en faveur de cet appareil :

  • absence de problĂšmes de surchauffe (j'ai dĂ» renoncer aux produits Asus);
  • fiabilitĂ© en fonctionnement (j'ai Ă©liminĂ© TP-Link);
  • simplicitĂ© de configuration (j'ai eu peur de ne pas y arriver et j'ai Ă©cartĂ© Microtik).

Il a fallu se résigner à quelques inconvénients :

  • pas de WiFi6, j'aurais souhaitĂ© un Ă©quipement avec une marge pour l'avenir;
  • 4 ports LAN, j'aurais prĂ©fĂ©rĂ© en avoir plus, mais ce n'est plus dans la catĂ©gorie domestique.

Finalement, voici à quoi ressemble ma « configuration serveur » :

Héberger un site sur un routeur domestique

  • Ă  gauche, le terminal optique de Rostelecom;
  • Ă  droite, notre routeur d'essai;
  • par cĂąble, un SSD m.2 de 128 Go, que j'avais sous la main, connectĂ© dans un boĂźtier USB3 provenant d'AliExpress, maintenant il est soigneusement fixĂ© au mur;
  • au premier plan, une multiprise Ă  interrupteurs indĂ©pendants, le cĂąble de celle-ci va vers un UPS bon marchĂ©;
  • Ă  l'arriĂšre-plan, un faisceau de cĂąbles enroulĂ©s — lors des travaux de rĂ©novation de l'appartement, j'avais planifiĂ© des prises RJ45 aux emplacements prĂ©vus pour l'Ă©quipement, afin de ne pas dĂ©pendre d'un WiFi encombrĂ©.

Donc, nous avons le matériel, il faut maintenant le configurer :

Héberger un site sur un routeur domestique

  • la configuration initiale du routeur prend environ 2 minutes, nous indiquons les paramĂštres de connexion au fournisseur (mon terminal optique est en mode bridge, la connexion PPPoE est Ă©tablie par le routeur), le nom du rĂ©seau WiFi et le mot de passe — en gros, c'est tout, le routeur dĂ©marre et fonctionne.

Héberger un site sur un routeur domestique

Nous mettons en place la redirection des ports externes vers les ports du routeur dans la section « RĂšgles rĂ©seau — Redirection » :

Héberger un site sur un routeur domestique

Héberger un site sur un routeur domestique

Il est maintenant temps de passer à la partie « avancée », ce que je voulais du routeur :

  1. les fonctionnalités d'un petit NAS pour le réseau domestique;
  2. l'exécution des fonctions de serveur web pour plusieurs petites pages personnelles;
  3. les fonctionnalitĂ©s du cloud personnel pour accĂ©der Ă  vos donnĂ©es personnelles de n'importe oĂč dans le monde.

La premiÚre s'effectue à l'aide des outils intégrés, sans nécessiter d'efforts particuliers :

  • nous prenons un pĂ©riphĂ©rique prĂ©vu Ă  cet effet (clĂ© USB, carte mĂ©moire dans un lecteur, disque dur ou SSD dans un boĂźtier externe) et formatons en Ext4 Ă  l'aide de MiniTool Partition Wizard Free Edition ((je n'ai pas d'ordinateur avec Linux sous la main, lĂ , on peut utiliser les outils intĂ©grĂ©s). Comme je le comprends, lors de l'utilisation, le systĂšme n'Ă©crit sur la clĂ© USB que des journaux, donc, si on les limite aprĂšs la configuration du systĂšme - on peut aussi utiliser des cartes mĂ©moire, si vous prĂ©voyez d'Ă©crire beaucoup et souvent sur le pĂ©riphĂ©rique - il est prĂ©fĂ©rable d'opter pour un SSD ou un HDD.

Héberger un site sur un routeur domestique

AprÚs cela, nous connectons le périphérique au routeur et observons son apparition sur l'écran du moniteur systÚme.

Héberger un site sur un routeur domestique

Nous cliquons sur « USB-disques et imprimantes » dans la section « Applications » et configurons la ressource partagée dans la section « Réseau Windows » :

Héberger un site sur un routeur domestique

Et nous avons une ressource réseau que nous pouvons utiliser depuis des ordinateurs sous Windows, en la connectant au besoin comme un disque : net use y: \\192.168.1.1SSD /persistent:yes

La vitesse de ce NAS improvisé est tout à fait suffisante pour un usage domestique, par cùble il utilise toute la capacité de 1 gigabit, via WiFi la vitesse est d'environ 400-500 mégaoctets.

Héberger un site sur un routeur domestique

La configuration du stockage est l'une des étapes nécessaires pour configurer le serveur, ensuite nous devons :
— acheter un domaine et une adresse IP statique (on peut s'en passer en utilisant Dynamic DNS, mais j'avais dĂ©jĂ  une IP statique, donc il m'a semblĂ© plus facile de profiter des services gratuits de Yandex — , en dĂ©lĂ©guant le domaine lĂ -bas, nous obtenons un hĂ©bergement DNS et une messagerie sur notre domaine) ;

Héberger un site sur un routeur domestique

— configurer les serveurs DNS et ajouter des enregistrements A pointant vers votre IP :

Héberger un site sur un routeur domestique

La mise en application des paramÚtres de délégation de domaine et DNS prend plusieurs heures, donc nous nous occupons parallÚlement de la configuration du routeur.

Tout d'abord, il est nécessaire d'installer le dépÎt Entware, à partir duquel nous pourrons installer les paquets nécessaires sur le routeur. J'ai utilisé cette instruction, seulement je n'ai pas chargé le paquet d'installation par FTP, mais j'ai créé un dossier directement sur le disque réseau précédemment connecté et j'y ai copié le fichier de façon classique.

Une fois l'accÚs SSH obtenu, nous changeons le mot de passe avec la commande passwd et nous installons avec la commande opkg install [noms des paquets] tous les paquets nécessaires :

Héberger un site sur un routeur domestique

Au cours de la configuration, les paquets suivants étaient installés sur le routeur (résultat de la commande opkg list-installed) :

Liste des paquets
bash — 5.0-3
busybox — 1.31.1-1
ca-bundle — 20190110-2
ca-certificates — 20190110-2
coreutils — 8.31-1
coreutils-mktemp — 8.31-1
cron — 4.1-3
curl — 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
libuuid — 2.35.1-1
libxml2 — 2.9.10-1
locales — 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

Il est possible qu'il y ait quelque chose en trop ici, mais il y a beaucoup d'espace de stockage, donc je n'ai pas pris la peine de le vérifier.

AprĂšs l'installation des paquets, je configure nginx. J'ai essayĂ© avec deux domaines — le second est configurĂ© en https, et pour l'instant, un placeholder est affichĂ©. Les ports internes 81 et 433 sont utilisĂ©s Ă  la place de 80 et 443, car les interfaces d'administration du routeur sont sur les ports normaux.

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;
            }
        }
}


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;

Pour que le site fonctionne en https, j'ai utilisé le script connu dehydrated, l'ayant installé selon ces instructions. Ce processus n'a posé aucune difficulté, je n'ai eu qu'un petit souci avec le texte du script pour qu'il fonctionne sur mon routeur il faut commenter la ligne dans le fichier /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Et je note que la génération de dhparams.pem avec la commande «openssl dhparam -out dhparams.pem 2048» sur mon routeur prend plus de 2 heures. Sans l'indicateur de progression, j'aurais perdu patience et redémarré.

AprĂšs avoir obtenu les certificats, nous redĂ©marrons nginx avec la commande "/opt/etc/init.d/S80nginx restart". En principe, la configuration est terminĂ©e, mais le site n'existe pas encore — si nous plaçons un fichier index.html dans le rĂ©pertoire /share/nginx/html, nous verrons un Ă©cran d'arrĂȘt.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Page de test !</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Page de test !</h1>
<p>C'est une simple page de test statique, absolument rien d'intéressant.</p>
</body>
</html>

Pour afficher les informations de maniĂšre Ă©lĂ©gante, il est plus simple pour un non-professionnel comme moi d'utiliser des modĂšles prĂȘts Ă  l'emploi. AprĂšs une longue recherche dans divers catalogues, j'ai trouvĂ© templatemo.com — il y a un bon choix de modĂšles gratuits, ne nĂ©cessitant pas de mention d'auteur obligatoire (ce qui est rare sur Internet, la plupart des modĂšles sous licence exigent de conserver un lien vers la ressource d'origine).

Choisissons un modĂšle adaptĂ© — il y en a pour toutes sortes de cas, tĂ©lĂ©chargeons l'archive, et dĂ©compressons-la dans le rĂ©pertoire /share/nginx/html, cela peut ĂȘtre fait depuis votre ordinateur, puis nous modifions le modĂšle (des connaissances minimales en HTML seront nĂ©cessaires pour ne pas altĂ©rer la structure) et remplaçons les graphiques, comme indiquĂ© sur l'image ci-dessous.

Héberger un site sur un routeur domestique

RĂ©sumĂ© : le routeur est tout Ă  fait adaptĂ© pour hĂ©berger un site lĂ©ger, en principe — si aucune forte charge n'est prĂ©vue, on peut installer php, et expĂ©rimenter avec des projets plus complexes (je pense Ă  nextcloud/owncloud, il semble qu'il y ait des installations rĂ©ussies sur ce matĂ©riel). La possibilitĂ© d'installer des paquets augmente son utilitĂ© — par exemple, lorsque je devais protĂ©ger le port RDP d'un PC dans le rĂ©seau local, j'ai installĂ© knockd sur le routeur — et le transfert de port vers le PC ne s'ouvrait qu'aprĂšs le port knocking.

Pourquoi un routeur et pas un PC ordinaire ? Le routeur est l'un des rares appareils informatiques qui fonctionne 24 heures sur 24 dans de nombreux appartements, le routeur domestique est généralement totalement silencieux et un site léger avec moins de cent visites par jour ne le mettra absolument pas à l'épreuve.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster