Configuration d'un reverse proxy NGINX / Let's Encrypt sur Parse Serveur

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 :

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.