Skip to content

Instantly share code, notes, and snippets.

@guilmarc
Last active September 12, 2023 18:11

Revisions

  1. guilmarc revised this gist Sep 12, 2023. No changes.
  2. guilmarc revised this gist Sep 12, 2023. 1 changed file with 4 additions and 2 deletions.
    6 changes: 4 additions & 2 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -117,6 +117,8 @@ sudo ufw allow https (Port 443)
    ```
    sudo apt install nginx
    ```

    **Si vous être en SPA, allez à l'étape 9, continuer si vous êtes en mode SSR**
    Modifier le fichier de configuration de sites de NGINX à l'emplacement :
    /etc/nginx/sites-available/default

    @@ -147,10 +149,10 @@ Tester l'accès à l'application avec l'adresse IP, exemple :
    Si cela ne fonctione pas, vérifiez les configuration NGINX ou de firewall.


    ## 9. Ajouter le domaine dans Vultr
    ## 10. Ajouter le domaine dans Vultr
    [* Ajouter le domaine](https://serverpilot.io/docs/how-to-configure-dns-on-vultr/#:~:text=First%2C%20sign%20in%20to%20your,appear%20on%20your%20DNS%20page.)

    ## 10. Ajoutez un certificat SSL avec LetsEncrypt
    ## 11. Ajoutez un certificat SSL avec LetsEncrypt
    ```
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
  3. guilmarc revised this gist Sep 12, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -148,7 +148,7 @@ Si cela ne fonctione pas, vérifiez les configuration NGINX ou de firewall.


    ## 9. Ajouter le domaine dans Vultr
    * À suivre...
    [* Ajouter le domaine](https://serverpilot.io/docs/how-to-configure-dns-on-vultr/#:~:text=First%2C%20sign%20in%20to%20your,appear%20on%20your%20DNS%20page.)

    ## 10. Ajoutez un certificat SSL avec LetsEncrypt
    ```
  4. guilmarc revised this gist Sep 10, 2023. 1 changed file with 2 additions and 4 deletions.
    6 changes: 2 additions & 4 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -147,10 +147,8 @@ Tester l'accès à l'application avec l'adresse IP, exemple :
    Si cela ne fonctione pas, vérifiez les configuration NGINX ou de firewall.


    ## 9. Ajouter le domaine dans Digital Ocean
    * Connectez-vous à Digital Ocean, allez à "networking" et ajoutez votre domaine.
    * Ajoutez 2 "records" de type A qui pointent sur le domaine, @ et www
    * Redémarrez le droplet
    ## 9. Ajouter le domaine dans Vultr
    * À suivre...

    ## 10. Ajoutez un certificat SSL avec LetsEncrypt
    ```
  5. guilmarc revised this gist Sep 10, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -74,7 +74,7 @@ N.B. Vous aurez besoin de configurer une clé SSH à partir du serveur vers votr

    ## 7. Installer les dépendances et tester
    Ouvrez le port 3000 sur le serveur
    ```sudo ufw allow ssh```
    ```sudo ufw allow 3000```

    Copiez les fichier .env dans la racine du projet.

  6. guilmarc revised this gist Sep 10, 2023. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -72,7 +72,10 @@ git clone [projet].git
    ```
    N.B. Vous aurez besoin de configurer une clé SSH à partir du serveur vers votre hébergeur de Git.

    ### 7. Installer les dépendances et tester
    ## 7. Installer les dépendances et tester
    Ouvrez le port 3000 sur le serveur
    ```sudo ufw allow ssh```

    Copiez les fichier .env dans la racine du projet.

    ```cd [project]
    @@ -84,7 +87,7 @@ Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    Arrêter l'application
    ctrl+C
    ```
    ## 7. Installer le gestionnaire de processus PM2
    ## 8. Installer le gestionnaire de processus PM2
    ```
    sudo npm i pm2 -g
  7. guilmarc revised this gist Sep 10, 2023. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -77,12 +77,12 @@ Copiez les fichier .env dans la racine du projet.

    ```cd [project]
    npm install
    npm start```
    npm start
    Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    Arrêter l'application
    ```ctrl+C```
    ctrl+C
    ```
    ## 7. Installer le gestionnaire de processus PM2
    ```
  8. guilmarc revised this gist Sep 10, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -83,7 +83,7 @@ Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    Arrêter l'application
    ```ctrl+C```
    ```
    ## 7. Installer le gestionnaire de processus PM2
    ```
    sudo npm i pm2 -g
  9. guilmarc revised this gist Sep 10, 2023. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -75,14 +75,14 @@ N.B. Vous aurez besoin de configurer une clé SSH à partir du serveur vers votr
    ### 7. Installer les dépendances et tester
    Copiez les fichier .env dans la racine du projet.

    * cd [project]
    * npm install
    * npm start
    ```cd [project]
    npm install
    npm start```
    Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    * # arrêter l'application
    * ctrl+C
    Arrêter l'application
    ```ctrl+C```
    ## 7. Installer le gestionnaire de processus PM2
    ```
  10. guilmarc revised this gist Sep 10, 2023. 1 changed file with 7 additions and 7 deletions.
    14 changes: 7 additions & 7 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -75,15 +75,15 @@ N.B. Vous aurez besoin de configurer une clé SSH à partir du serveur vers votr
    ### 7. Installer les dépendances et tester
    Copiez les fichier .env dans la racine du projet.

    ```cd [project]
    npm install
    npm start```
    * cd [project]
    * npm install
    * npm start

    Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    ```
    # arrêter l'application
    ctrl+C
    ```

    * # arrêter l'application
    * ctrl+C

    ## 7. Installer le gestionnaire de processus PM2
    ```
    sudo npm i pm2 -g
  11. guilmarc revised this gist Sep 10, 2023. 1 changed file with 3 additions and 4 deletions.
    7 changes: 3 additions & 4 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -74,11 +74,10 @@ N.B. Vous aurez besoin de configurer une clé SSH à partir du serveur vers votr

    ### 7. Installer les dépendances et tester
    Copiez les fichier .env dans la racine du projet.
    ```
    cd [project]

    ```cd [project]
    npm install
    npm start
    ```
    npm start```
    Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    ```
  12. guilmarc revised this gist Sep 10, 2023. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -77,7 +77,8 @@ Copiez les fichier .env dans la racine du projet.
    ```
    cd [project]
    npm install
    npm start```
    npm start
    ```

    Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    ```
  13. guilmarc revised this gist Sep 10, 2023. 1 changed file with 9 additions and 4 deletions.
    13 changes: 9 additions & 4 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -50,7 +50,7 @@ Appuyez ensuite sur le section verte en bas à gauche de VSCode
    IdentityFile /users/[VOTRE_USER]/.ssh/id_ed25519</pre>
    * Sauvegardez le fichier de configuration et re-cliquez sur la section verte pour ouvrir la connexion.

    ## 4. Installer Nodejs et npm
    ## 5. Installer Nodejs et npm
    ```
    sudo apt install build-essential
    @@ -65,17 +65,22 @@ nvm install --lts
    npm i -g nodemon
    ```

    ## 5. Cloner une application
    ## 6. Cloner une application
    Créer un répertoire /var/www et clonez-y votre projet
    ```
    git clone [projet].git
    ```
    N.B. Vous aurez besoin de configurer une clé SSH à partir du serveur vers votre hébergeur de Git.

    ### 6. Installer les dépendances et tester
    ### 7. Installer les dépendances et tester
    Copiez les fichier .env dans la racine du projet.
    ```
    cd [project]
    npm install
    npm start
    npm start```
    Assurez-vous d'avoir accès à l'application à l'adresse: IP.IP.IP.IP:3000
    ```
    # arrêter l'application
    ctrl+C
    ```
  14. guilmarc revised this gist Sep 10, 2023. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -61,6 +61,8 @@ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
    source ~/.bashrc
    nvm install --lts
    npm i -g nodemon
    ```

    ## 5. Cloner une application
  15. guilmarc revised this gist Sep 10, 2023. 1 changed file with 1 addition and 9 deletions.
    10 changes: 1 addition & 9 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -85,17 +85,9 @@ pm2 start app.js
    **ou**
    pm2 start /bin/www
    # Autres commandes PM2 populaires...
    pm2 show app
    pm2 status
    pm2 restart app
    pm2 stop app
    pm2 logs (Show log stream)
    pm2 flush (Clear logs)
    # Pour s'assurer que l'application démarre avec le serveur
    pm2 startup ubuntu
    pm2 save
    ```
    ### L'application est maintenant accessible en utilisant son port. Maintenant nous voulons bloquer ce port et laisser NGINX gérer les accès au port HTTP (80)
    Tester l'accès à l'application avec [ip]:[port], exemple :
  16. guilmarc revised this gist Sep 10, 2023. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -54,13 +54,13 @@ Appuyez ensuite sur le section verte en bas à gauche de VSCode
    ```
    sudo apt install build-essential
    curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt update
    sudo apt-get install -y nodejs
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
    npm i -g npm@latest
    source ~/.bashrc
    node --version
    nvm install --lts
    ```

    ## 5. Cloner une application
  17. guilmarc revised this gist Sep 10, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -54,7 +54,7 @@ Appuyez ensuite sur le section verte en bas à gauche de VSCode
    ```
    sudo apt install build-essential
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt-get install -y nodejs
  18. guilmarc revised this gist Sep 10, 2023. 1 changed file with 20 additions and 0 deletions.
    20 changes: 20 additions & 0 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -29,6 +29,26 @@ Créer une nouvelle clé SSH sur Vultr.
    Copiez maintenant le contenu du fichier (la clé).
    * Server Hostname & Label: **Selon votre nom de projet / nom d’entreprise**

    ## 4. Accéder au serveur à partir de VSCode
    Installez d'abord le plug-in nommé ```Remote - SSH```
    Appuyez ensuite sur le section verte en bas à gauche de VSCode
    * Connect to Host...
    * Configure SSH Host
    * Sélectionnez le fichier de config pointant sur un répertoire dans votre HOME
    * Ajoutez-y les informations de configuration suivantes:
    ### Sur MacOS
    <pre>Host NOM_DU_SERVEUR
    HostName 216.122.184.3 <-- Adresse IP de votre serveur
    Port 22
    User root
    IdentityFile ~/.ssh/id_ed25519</pre>
    ### Sur Windows
    <pre>Host NOM_DU_SERVEUR
    HostName 216.122.184.3 <-- Adresse IP de votre serveur
    Port 22
    User root
    IdentityFile /users/[VOTRE_USER]/.ssh/id_ed25519</pre>
    * Sauvegardez le fichier de configuration et re-cliquez sur la section verte pour ouvrir la connexion.

    ## 4. Installer Nodejs et npm
    ```
  19. guilmarc revised this gist Sep 10, 2023. 1 changed file with 13 additions and 10 deletions.
    23 changes: 13 additions & 10 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -15,16 +15,19 @@ Utiliser ce lien pour obtenir un crédit à l'abonnement (si applicable) https:/

    ## 3. Créer un serveur Ubuntu incluant une clé SSH
    Utiliser ce lien pour ouvrir la page de création de serveur https://my.vultr.com/deploy/
    ###Création du serveur
    * Choose Server: Cloud Compute.
    * CPU & Storage Technology: Intel. Regular Performance.
    * Server Location: Toronto Canada
    * Server Image: Ubuntu (dernière version LTS).
    * Server Size: 25 GB SSD.
    * Add Auto Backups: False.
    * Additional Features: None.
    * SSH Keys: À configurer dans la prochaine dispositive…
    * Server Hostname & Label: Selon votre nom de projet / nom d’entreprise
    ### Création du serveur
    * Choose Server: **Cloud Compute**.
    * CPU & Storage Technology: **Intel. Regular Performance**.
    * Server Location: **Toronto Canada**
    * Server Image: **Ubuntu (dernière version LTS)**.
    * Server Size: **25 GB SSD**.
    * Add Auto Backups: **False**.
    * Additional Features: **None**.
    * SSH Keys: Lancer cette commande sur votre ordi dans un bash : ```ssh-keygen -t ed25519 -N '' -C "email@email.ca"```. Mémorisez l’emplacement proposée et acceptez en appuyant sur enter.
    Ouvrez le fichier ```id_ed25519.pub``` avec un éditeur de texte.
    Créer une nouvelle clé SSH sur Vultr.
    Copiez maintenant le contenu du fichier (la clé).
    * Server Hostname & Label: **Selon votre nom de projet / nom d’entreprise**


    ## 4. Installer Nodejs et npm
  20. guilmarc revised this gist Sep 10, 2023. 1 changed file with 18 additions and 9 deletions.
    27 changes: 18 additions & 9 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -1,22 +1,31 @@
    # NodeJS en production (version NGINX)

    > Étapes pour déploiement d'une application Node.js chez DigitalOcean avec PM2, serveur NGINX en tant que proxy inversé et sécurité SSL (HTTPS) à l'aide de LetsEncrypt
    > Étapes pour déploiement d'une application Node.js chez Vultr avec PM2, serveur NGINX en tant que proxy inversé et sécurité SSL (HTTPS) à l'aide de LetsEncrypt
    ## 1. Enregistrer et configurer votre nom de domaine
    Enregistrer un nom de domaine chez le revendeur préféré et changes les noms de domaines pour:

    * ns1.digitalocean.com
    * ns2.digitalocean.com
    * ns3.digitalocean.com
    * ns1.vultr.com
    * ns2.vultr.com

    Cela peut prendre quelques temps (heures) avant que les noms de domaines se propagent. Quelques minutes si on est chanceux.

    ## 2. Créer un compte chez Digital Ocean
    Utiliser le lien ci-bas pour obtenir un crédit à l'abonnement
    https://m.do.co/c/5424d440c63a
    ## 2. Créer un compte chez Vultr
    Utiliser ce lien pour obtenir un crédit à l'abonnement (si applicable) https://www.vultr.com/register/

    ## 3. Créer un serveur Ubuntu incluant une clé SSH
    Utiliser ce lien pour ouvrir la page de création de serveur https://my.vultr.com/deploy/
    ###Création du serveur
    * Choose Server: Cloud Compute.
    * CPU & Storage Technology: Intel. Regular Performance.
    * Server Location: Toronto Canada
    * Server Image: Ubuntu (dernière version LTS).
    * Server Size: 25 GB SSD.
    * Add Auto Backups: False.
    * Additional Features: None.
    * SSH Keys: À configurer dans la prochaine dispositive…
    * Server Hostname & Label: Selon votre nom de projet / nom d’entreprise

    ## 3. Créer une "droplet" Ubuntu et s'y connecter via SSH
    https://www.digitalocean.com/community/tutorials/how-to-use-visual-studio-code-for-remote-development-via-the-remote-ssh-plugin-fr

    ## 4. Installer Nodejs et npm
    ```
  21. guilmarc revised this gist Sep 6, 2021. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -20,6 +20,8 @@ https://www.digitalocean.com/community/tutorials/how-to-use-visual-studio-code-f

    ## 4. Installer Nodejs et npm
    ```
    sudo apt install build-essential
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install -y nodejs
  22. guilmarc revised this gist Sep 6, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -30,7 +30,7 @@ node --version
    ```

    ## 5. Cloner une application
    Créer un répertoire /var/www/html et clonez-y votre projet
    Créer un répertoire /var/www et clonez-y votre projet
    ```
    git clone [projet].git
    ```
  23. guilmarc revised this gist Sep 6, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -22,7 +22,7 @@ https://www.digitalocean.com/community/tutorials/how-to-use-visual-studio-code-f
    ```
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt install nodejs
    sudo apt-get install -y nodejs
    npm i -g npm@latest
  24. guilmarc revised this gist Sep 6, 2021. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions digitalocean-nodejs-nginx.md
    Original file line number Diff line number Diff line change
    @@ -112,9 +112,9 @@ Si cela ne fonctione pas, vérifiez les configuration NGINX ou de firewall.


    ## 9. Ajouter le domaine dans Digital Ocean
    Connectez-vous à Digital Ocean, allez à "networking" et ajoutez votre domaine.
    Ajoutez 2 "records" de type A qui pointent sur le domaine, @ et www
    Redémarrez le droplet
    * Connectez-vous à Digital Ocean, allez à "networking" et ajoutez votre domaine.
    * Ajoutez 2 "records" de type A qui pointent sur le domaine, @ et www
    * Redémarrez le droplet

    ## 10. Ajoutez un certificat SSL avec LetsEncrypt
    ```
  25. guilmarc renamed this gist Sep 6, 2021. 1 changed file with 0 additions and 0 deletions.
  26. guilmarc revised this gist Sep 6, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion digitalocean-nodejs.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # Node.js Deployment
    # NodeJS en production (version NGINX)

    > Étapes pour déploiement d'une application Node.js chez DigitalOcean avec PM2, serveur NGINX en tant que proxy inversé et sécurité SSL (HTTPS) à l'aide de LetsEncrypt
  27. guilmarc revised this gist Sep 6, 2021. 1 changed file with 10 additions and 9 deletions.
    19 changes: 10 additions & 9 deletions digitalocean-nodejs.md
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    > Étapes pour déploiement d'une application Node.js chez DigitalOcean avec PM2, serveur NGINX en tant que proxy inversé et sécurité SSL (HTTPS) à l'aide de LetsEncrypt
    ## Enregistrer et configurer votre nom de domaine
    ## 1. Enregistrer et configurer votre nom de domaine
    Enregistrer un nom de domaine chez le revendeur préféré et changes les noms de domaines pour:

    * ns1.digitalocean.com
    @@ -11,14 +11,14 @@ Enregistrer un nom de domaine chez le revendeur préféré et changes les noms d

    Cela peut prendre quelques temps (heures) avant que les noms de domaines se propagent. Quelques minutes si on est chanceux.

    ## 1. Créer un compte chez Digital Ocean
    ## 2. Créer un compte chez Digital Ocean
    Utiliser le lien ci-bas pour obtenir un crédit à l'abonnement
    https://m.do.co/c/5424d440c63a

    ## 2. Créer une "droplet" Ubuntu et s'y connecter via SSH
    ## 3. Créer une "droplet" Ubuntu et s'y connecter via SSH
    https://www.digitalocean.com/community/tutorials/how-to-use-visual-studio-code-for-remote-development-via-the-remote-ssh-plugin-fr

    ## 3. Installer Nodejs et npm
    ## 4. Installer Nodejs et npm
    ```
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    @@ -29,21 +29,21 @@ npm i -g npm@latest
    node --version
    ```

    ## 4. Cloner une application
    ## 5. Cloner une application
    Créer un répertoire /var/www/html et clonez-y votre projet
    ```
    git clone [projet].git
    ```

    ### 5. Installer les dépendances et tester
    ### 6. Installer les dépendances et tester
    ```
    cd [project]
    npm install
    npm start
    # arrêter l'application
    ctrl+C
    ```
    ## 6. Installer le gestionnaire de processus PM2
    ## 7. Installer le gestionnaire de processus PM2
    ```
    sudo npm i pm2 -g
    @@ -68,7 +68,7 @@ Tester l'accès à l'application avec [ip]:[port], exemple :
    ```
    137.184.58.65:3000
    ```
    ## 7. Configurer le firewall ufw
    ## 8. Configurer le firewall ufw
    ```
    sudo ufw enable
    sudo ufw status
    @@ -77,7 +77,7 @@ sudo ufw allow http (Port 80)
    sudo ufw allow https (Port 443)
    ```

    ## 8. Installation et configuration de NGINX
    ## 9. Installation et configuration de NGINX
    ```
    sudo apt install nginx
    ```
    @@ -98,6 +98,7 @@ Add the following to the location part of the server block
    }
    ```
    # Vérifier les configurations de NGINX et redémarrer
    ```
    sudo nginx -t
    sudo service nginx restart
    ```
  28. guilmarc created this gist Sep 6, 2021.
    132 changes: 132 additions & 0 deletions digitalocean-nodejs.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,132 @@
    # Node.js Deployment

    > Étapes pour déploiement d'une application Node.js chez DigitalOcean avec PM2, serveur NGINX en tant que proxy inversé et sécurité SSL (HTTPS) à l'aide de LetsEncrypt
    ## Enregistrer et configurer votre nom de domaine
    Enregistrer un nom de domaine chez le revendeur préféré et changes les noms de domaines pour:

    * ns1.digitalocean.com
    * ns2.digitalocean.com
    * ns3.digitalocean.com

    Cela peut prendre quelques temps (heures) avant que les noms de domaines se propagent. Quelques minutes si on est chanceux.

    ## 1. Créer un compte chez Digital Ocean
    Utiliser le lien ci-bas pour obtenir un crédit à l'abonnement
    https://m.do.co/c/5424d440c63a

    ## 2. Créer une "droplet" Ubuntu et s'y connecter via SSH
    https://www.digitalocean.com/community/tutorials/how-to-use-visual-studio-code-for-remote-development-via-the-remote-ssh-plugin-fr

    ## 3. Installer Nodejs et npm
    ```
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt install nodejs
    npm i -g npm@latest
    node --version
    ```

    ## 4. Cloner une application
    Créer un répertoire /var/www/html et clonez-y votre projet
    ```
    git clone [projet].git
    ```

    ### 5. Installer les dépendances et tester
    ```
    cd [project]
    npm install
    npm start
    # arrêter l'application
    ctrl+C
    ```
    ## 6. Installer le gestionnaire de processus PM2
    ```
    sudo npm i pm2 -g
    pm2 start app.js
    **ou**
    pm2 start /bin/www
    # Autres commandes PM2 populaires...
    pm2 show app
    pm2 status
    pm2 restart app
    pm2 stop app
    pm2 logs (Show log stream)
    pm2 flush (Clear logs)
    # Pour s'assurer que l'application démarre avec le serveur
    pm2 startup ubuntu
    ```
    ### L'application est maintenant accessible en utilisant son port. Maintenant nous voulons bloquer ce port et laisser NGINX gérer les accès au port HTTP (80)
    Tester l'accès à l'application avec [ip]:[port], exemple :
    ```
    137.184.58.65:3000
    ```
    ## 7. Configurer le firewall ufw
    ```
    sudo ufw enable
    sudo ufw status
    sudo ufw allow ssh (Port 22)
    sudo ufw allow http (Port 80)
    sudo ufw allow https (Port 443)
    ```

    ## 8. Installation et configuration de NGINX
    ```
    sudo apt install nginx
    ```
    Modifier le fichier de configuration de sites de NGINX à l'emplacement :
    /etc/nginx/sites-available/default

    Add the following to the location part of the server block
    ```
    server_name [domaine] www.[domaine];
    location / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    }
    ```
    # Vérifier les configurations de NGINX et redémarrer
    sudo nginx -t
    sudo service nginx restart
    ```
    ### À ce stade vous devriez être en mesure d'accéder à votre application nodejs avec l'adresse ip seulement.
    Tester l'accès à l'application avec l'adresse IP, exemple :
    ```
    137.184.58.65
    ```
    Si cela ne fonctione pas, vérifiez les configuration NGINX ou de firewall.
    ## 9. Ajouter le domaine dans Digital Ocean
    Connectez-vous à Digital Ocean, allez à "networking" et ajoutez votre domaine.
    Ajoutez 2 "records" de type A qui pointent sur le domaine, @ et www
    Redémarrez le droplet
    ## 10. Ajoutez un certificat SSL avec LetsEncrypt
    ```
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    sudo apt-get install python3-certbot-nginx
    sudo certbot --nginx -d [domaine] -d www.[domaine]
    # Choix de redirection
    2
    # Au besoin, utilisez https://letsdebug.net/ pour déboguer l'encryptage

    # Ce certificat sera valide pour 90 jours. Tester son renouvellement automatique avec :
    certbot renew --dry-run
    ```
    Maintenant visitez https://[domaine] et votre application devrait fonctionner.