Au travers des articles précédents nous avons mis en place un serveur Parse avec une configuration minimale. Maintenant afin de finaliser cette configuration et pour pouvoir l’utiliser sur un serveur en production, nous allons voir comment ajouter un reverse proxy avec HTTPS à l’aide de NGINX et Let’s Encrypt.
Le but de cet article est d’ajouter le reverse proxy simplement avec le moins de configuration possible pour ce faire nous allons utiliser les projets suivants :
- nginx-proxy : Permet de générer automatiquement la configuration de NGINX à partir de docker-gen.
- docker-letsencrypt-nginx-proxy-companion : Permet la création et le renouvellement des certificats https automatiquement.
Grâce à ça nous aurons juste à ajouter ces deux images à notre configuration docker-compose actuelle puis ajouter les bonnes variables d’environnement.
Pour commencer nous partirons du principe que notre serveur Parse sera accesible à partir du domaine suivant :
monserveurparse.com
Ensuite la configuration utilisée sera celle mise en place dans cet article que vous pouvez télécharger directment ici.
Maintenant nous pouvons commençer, premièrement nous allons ajouter les deux nouveaux services nginx-proxy et docker-letsencrypt-nginx-proxy-companion à nos services actuelles dans le fichier docker-compose.yml :
version: "2"
services:
mongo:
image: "bitnami/mongodb:latest"
...
api:
build: ./parse-server
image: dwa-studio/parse-server
container_name: "dwa-studio-parse-server"
...
nginx-proxy:
image: jwilder/nginx-proxy
container_name: dwa-studio-nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/nginx/vhost.d
- /usr/share/nginx/html
- /apps/web/ssl:/etc/nginx/certs:ro
ssl-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: dwa-studio-ssl-companion
restart: always
volumes:
- /apps/web/ssl:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
- nginx-proxy
depends_on:
- nginx-proxy
Maintenant que nous avons ajouté les services nous allons devoir ajouter les variables d’environnement qui vont permettre au service nginx-proxy de générer la configuration NGINX pour notre service api (notre serveur Parse).
VIRTUAL_HOST: 'monserveurparse.com'
LETSENCRYPT_HOST: 'monserveurparse.com'
LETSENCRYPT_EMAIL: 'adresse-de-contact@email.com'
Ajoutez ces variables dans les variables d’environnement du service api :
api:
build: ./parse-server
image: dwa-studio/parse-server
container_name: 'dwa-studio-parse-server'
restart: always
ports:
- '1337:1337'
environment:
PARSE_MOUNT: '/parse'
PORT: 1337
DATABASE_URI: mongodb://user:MONGODB_PASSWORD@mongo:27017/db_name
APP_ID: 'APP_ID'
MASTER_KEY: 'MASTER'
SERVER_URL: 'http://localhost:1337/parse'
LOG_LEVEL: 'error'
ALLOW_INSECURE_HTTP_DASHBOARD: 'true'
APP_NAME: 'Parse Server Sample'
DASHBOARD_USER: 'User'
DASHBOARD_PASSWORD: 'password'
VIRTUAL_HOST: 'monserveurparse.com'
LETSENCRYPT_HOST: 'monserveurparse.com'
LETSENCRYPT_EMAIL: 'adresse-de-contact@email.com'
depends_on:
- mongo
Enfin il ne reste plus qu’a mettre à jour la valeur de la variable SERVER_URL avec la valeur suivante :
SERVER_URL: 'https://monserveurparse.com/parse'
Et voila la configuration est terminée maintenant la prochaine fois que vous lancerez la commande docker-compose up sur votre serveur la configuration NGINX et le certificat HTTPS seront générés automatiquement.
Dernières précisions, vous devrez obligatoirement lancer cette configuration sur un serveur cela ne fonctionnera pas en local sur votre poste.
Ensuite il faut aussi que depuis le fournisseur de domaine sur lequel vous avez acheté votre domaine vous ayez ajouté un enregistrement DNS qui fait pointer le domaine sur l’adresse ip de votre serveur.
Partagez cet article si vous le souhaitez et si vous avez des questions vous pouvez me contacter par le chat.