{"id":388,"date":"2020-08-17T15:13:08","date_gmt":"2020-08-17T13:13:08","guid":{"rendered":"https:\/\/antoinesaludo.fr\/?p=388"},"modified":"2020-08-17T15:34:34","modified_gmt":"2020-08-17T13:34:34","slug":"reverse-proxy-nginx-proxy-manager","status":"publish","type":"post","link":"https:\/\/antoinesaludo.fr\/?p=388","title":{"rendered":"Reverse-proxy : Nginx Proxy Manager"},"content":{"rendered":"\n<p>Nginx Proxy Manager est une image docker qui permet de mettre en place facilement un reverse-proxy. De plus il g\u00e8re automatiquement les certificats Let&rsquo;s encrypt.<\/p>\n\n\n\n<p>En t\u00e2che pr\u00e9liminaires \u00e0 ce tutoriel il faut faire la redirection des ports 443 et 80 de votre box vers votre machine qui serviras de serveur pour Nginx Proxy Manager. Pour moi je poss\u00e8de une Freebox la configuration se fait alors tr\u00e8s simplement depuis l&rsquo;interface web.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"956\" height=\"614\" src=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-3.png\" alt=\"\" class=\"wp-image-431\" srcset=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-3.png 956w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-3-300x193.png 300w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-3-768x493.png 768w\" sizes=\"auto, (max-width: 956px) 100vw, 956px\" \/><\/figure>\n\n\n\n<p>Il faut aussi faire la cr\u00e9ation des sous domaines aupr\u00e8s de votre registraire de domaine. Pour moi c&rsquo;est OVH. Il faut donc cr\u00e9er les domaines et sous domaines que vous souhaiteriez faire passer par le reverse proxy. Ici plex.antoinesaludo.fr et ombi.antoinesaludo.fr sont redirig\u00e9s vers antoinesaludo.fr qui est lui m\u00eame redirig\u00e9 sur mon IP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"77\" src=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-4-1024x77.png\" alt=\"\" class=\"wp-image-432\" srcset=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-4-1024x77.png 1024w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-4-300x23.png 300w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-4-768x58.png 768w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-4.png 1131w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Pour finir il faut cr\u00e9er un utilisateur avec les droits sur une base de donn\u00e9es sql que le service utiliseras.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"746\" height=\"559\" src=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-5.png\" alt=\"\" class=\"wp-image-434\" srcset=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-5.png 746w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-5-300x225.png 300w\" sizes=\"auto, (max-width: 746px) 100vw, 746px\" \/><\/figure>\n\n\n\n<p>Ne pas oublier de cocher <strong>Cr\u00e9er une base portant son nom&#8230;.<\/strong><\/p>\n\n\n\n<p>Passons maintenant \u00e0 la mise en place du reverse proxy. Premi\u00e8rement, pour mettre cette solution en place il faut cr\u00e9er un dossier <strong>data<\/strong>, un dossier <strong>letsencrypt<\/strong> et un fichier <strong>production.json<\/strong> qui contiendras les informations pour se connecter \u00e0 la base de donn\u00e9es.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi production.json\n\n{\n  \"database\": {\n    \"engine\": \"mysql\",\n    \"host\": \"db\",\n    \"name\": \"npm\",\n    \"user\": \"npm\",\n    \"password\": \"npm\",\n    \"port\": 3306\n  }\n}<\/code><\/pre>\n\n\n\n<p>Il faut ensuite adapt\u00e9 ses donn\u00e9es en fonction de celle en place. Le champ <strong>\u00ab\u00a0host\u00a0\u00bb <\/strong>correspond \u00e0 l&rsquo;IP de la machine contenant votre base de donn\u00e9es pr\u00e9c\u00e9demment cr\u00e9\u00e9.<\/p>\n\n\n\n<p><span style=\"color:#e70719\" class=\"has-inline-color\">\/!\\ Attention \/!\\ Le champs <strong>\u00ab\u00a0engine\u00a0\u00bb<\/strong> n&rsquo;est pas \u00e0 changer, m\u00eame si notre base de donn\u00e9es est une <strong>mariadb<\/strong> il faut laisser <strong>mysql<\/strong>. Le terme <strong>mariadb<\/strong> n&rsquo;\u00e9tant pas reconnu.<\/span><\/p>\n\n\n\n<p>Il faut ensuite cr\u00e9er un container docker avec ces param\u00e8tres. Les ports 80 et 443 vont permettre de rendre accessible les sites web. Le port 81 est quand \u00e0 lui utilis\u00e9 pour l&rsquo;interface web d&rsquo;administration du service.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi dockerNPM.sh\n\ndocker run -d -p 80:80 -p 443:443 -p 81:81 \\\n-v \/docker\/npm\/data:\/data \\\n-v \/docker\/npm\/letsencrypt:\/etc\/letsencrypt \\\n-v \/docker\/npm\/production.json:\/app\/config\/production.json \\\njc21\/nginx-proxy-manager:latest\n\nchmod +x dockerNPM.sh\n\nsh dockerNPM.sh<\/code><\/pre>\n\n\n\n<p>Apr\u00e8s avoir correctement adapter le script de sorte \u00e0 ce que les dossiers et fichiers cr\u00e9\u00e9s pr\u00e9c\u00e9demment correspondent bien, il faut l\u2019ex\u00e9cuter.<\/p>\n\n\n\n<p>Lors du premier lancement il faut attendre que la base de donn\u00e9es soit bien cr\u00e9er avant d&rsquo;effectuer toute interaction avec la page de configuration accessible sur @IP:81 . Ce processus dure environ 10 minutes. Il est possible de suivre l&rsquo;avanc\u00e9e en consultant les logs du container.<\/p>\n\n\n\n<p>Les identifiants de base sont :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Email:    admin@example.com\nPassword: changeme<\/code><\/pre>\n\n\n\n<p>Une fois connect\u00e9 il seras demand\u00e9 de les changer. <\/p>\n\n\n\n<p>Pour mettre en place le reverse-proxy rien de plus simple il faut se rendre dans le menu <strong>Hosts &gt; Proxy Hosts<\/strong> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-edited.png\" alt=\"\" class=\"wp-image-430\" width=\"192\" height=\"208.23880597014926\"\/><\/figure>\n\n\n\n<p>Il faut ensuite ajouter un proxy avec <strong>Add Proxy Host<\/strong> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"497\" height=\"544\" src=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-1-edited.png\" alt=\"\" class=\"wp-image-429\" srcset=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-1-edited.png 497w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-1-edited-274x300.png 274w\" sizes=\"auto, (max-width: 497px) 100vw, 497px\" \/><\/figure>\n\n\n\n<p>Dans <strong>Domain Names <\/strong>il faut renseigner le domaine sur lequel on acc\u00e9deras au site web. Par exemple : antoinesaludo.fr; plex.antoinesaludo.fr; ombi.antoinesaludo.fr dans mon cas.<\/p>\n\n\n\n<p>Dans <strong>Scheme <\/strong>il faut sp\u00e9cifier comment l&rsquo;acc\u00e8s se fais actuellement sur la machine cible. <strong>Forward Hostname \/ IP<\/strong> correspond \u00e0 l&rsquo;ip de la machine que l&rsquo;on veut rendre accessible via l&rsquo;URL et faire passer par le reverse proxy. <strong>Forward Port<\/strong> est quant \u00e0 lui le port de base de la machine cible.<\/p>\n\n\n\n<p>Les options suivantes sont \u00e0 adapter en fonction des besoins. Il est conseill\u00e9 d&rsquo;activer <strong>Block Common Exploits<\/strong>.<\/p>\n\n\n\n<p>Cette configuration termin\u00e9 le site est maintenant accessible depuis l&rsquo;ext\u00e9rieur en HTTP.<\/p>\n\n\n\n<p>Pour le rendre accessible en HTTPS il faut se rendre dans l&rsquo;onglet <strong>SSL<\/strong> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"485\" height=\"496\" src=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-2-edited.png\" alt=\"\" class=\"wp-image-428\" srcset=\"https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-2-edited.png 485w, https:\/\/antoinesaludo.fr\/wp-content\/uploads\/2020\/08\/image-2-edited-293x300.png 293w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/figure>\n\n\n\n<p> Si un certificat n&rsquo;est pas d\u00e9j\u00e0 pr\u00e9sent il faut s\u00e9lectionner <strong>Request a new SSL Certificate<\/strong>, Nginx Proxy Manager va donc maintenant mettre \u00e0 jour le certificat avant qu&rsquo;il arrive \u00e0 expiration. <strong>Force SSL <\/strong>permet d&rsquo;automatiquement faire les redirections HTTP en HTTPS. Il faut cliquer sur <strong>Save<\/strong> et attendre que Nginx Proxy Manager se charge de demander le certificat.<\/p>\n\n\n\n<p>Le site est maintenant accessible en HTTPS avec votre nom de domaine.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Probl\u00e8mes rencontr\u00e9s :<\/p>\n\n\n\n<p>Lors de la premi\u00e8re connexion le formulaire de connexion me renvoyais l&rsquo;erreur \u00ab\u00a0<strong>Bad Gateway<\/strong>\u00ab\u00a0.<\/p>\n\n\n\n<p>Les causes de cette erreur sont multiple :<\/p>\n\n\n\n<p>\u25ba Le fichier de configuration de la base de donn\u00e9es est erron\u00e9.<\/p>\n\n\n\n<p>\u25ba La base de donn\u00e9es n&rsquo;as pas \u00e9t\u00e9 compl\u00e8tement import\u00e9s.<\/p>\n\n\n\n<p>Solution :<\/p>\n\n\n\n<p>Il faut \u00e9teindre le container et corriger les informations de connexion \u00e0 la base de donn\u00e9es. Si celle-ci sont correct il faut supprimer les donn\u00e9es renseigner dans la base de donn\u00e9es <strong>npm<\/strong> et red\u00e9marrer le container.<\/p>\n\n\n\n<p>Il est possible de suivre l&rsquo;avanc\u00e9 de l&rsquo;import de la base de donn\u00e9es via les logs du container.<\/p>\n\n\n\n<p>Sources :<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/jc21\/nginx-proxy-manager\">https:\/\/github.com\/jc21\/nginx-proxy-manager<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/nginxproxymanager.com\/\">https:\/\/nginxproxymanager.com\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nginx Proxy Manager est une image docker qui permet de mettre en place facilement un reverse-proxy. De plus il g\u00e8re automatiquement les certificats Let&rsquo;s encrypt. En t\u00e2che pr\u00e9liminaires \u00e0 ce tutoriel il faut faire la redirection des ports 443 et 80 de votre box vers votre machine qui serviras de serveur pour Nginx Proxy Manager. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":439,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,10,12],"tags":[4,11,13],"class_list":["post-388","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-nginx","category-reverse-proxy","tag-linux","tag-nginx","tag-reverse-proxy"],"_links":{"self":[{"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=\/wp\/v2\/posts\/388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=388"}],"version-history":[{"count":9,"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=\/wp\/v2\/posts\/388\/revisions"}],"predecessor-version":[{"id":441,"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=\/wp\/v2\/posts\/388\/revisions\/441"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=\/wp\/v2\/media\/439"}],"wp:attachment":[{"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/antoinesaludo.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}