From 64a566db0dd4eba80c5da79c829c06892e33f9d6 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Mon, 21 Feb 2022 08:23:36 +0100 Subject: [PATCH 1/4] {WIP} --- README.md | 163 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 148 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 806e1ae..d10f225 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,166 @@ # My Music Library -My Music Library est une application Web permettant de lister votre collection de CD ou vinyles. +My Music Library est une application Web (que vous pouvez auto-héberger) et un site Web (sur lequel vous pouvez créer un compte), permettant de gérer votre liste des CDs et Vinyles, et de l'utiliser facilement et n'importe où. -## Prérequis +Le code source est publié sous licence libre GNU GPL-3.0-or-later. -Pour fonctionner vous devez avoir `docker` d'installer sur votre serveur. +## Auto hébergement -## Installation +### Prérequis -### Préparer la terre +Il existe 2 méthodes d'installation, soit via docker soit en mode standalone. -Après avoir cloné le projet il faudra créer un fichier d'environnement nommé `.env` et situé à la racine de projet. +Pour la méthode docker il vous faut simplement Docker sur votre serveur. -Contenu du fichier : -``` -NODE_ENV=development -DISCOGS_TOKEN=*** +En standalone il vous faudra : + +- NodeJS 16.x +- Yarn +- MongoDB + +Quelque que soit la méthode la première étape est de cloner le projet : + +```bash +git clone https://git.darkou.fr/dbroqua/MyMusicLibrary.git ``` -Pour obtenir un token Discogs vous devez simplement vous inscrire sur [Discogs](https://www.discogs.com). Une fois connecté à votre espace Discogs vous pourrez obtenir un token en allant dans le sous-menu [Développeur](https://www.discogs.com/settings/developers). +### Installation -### Semer +#### Docker -Vous pouvez maintenant simplement lancer la commande suivante afin de démarrer le projet en tant que service : +Une fois le projet cloné rendez-vous dans son dossier, +```bash +cd ./MyMusicLibrary ``` + +puis créez le fichier `.env` qui contiendra les variables d'environnement nécessaire au bon fonctionnement du projet (voir à la fin pour la liste des variables). + +Une fois votre fichier d'environnement créé vous devez copier le bon fichier `docker-compose.yml.{dev,prod}` en `docker-compose.yml` en fonction de vos choix. + +La version `.dev` redémarrera à chaque changement d'un fichier .js alors que la version `prod` ne redémarrera pas automatiquement si vous éditez un fichier. + +Vous pouvez maintenant démarrer votre environnement Docker : + +```bash docker-compose up -d ``` -### Pailler +C'est terminé ! -Une fois le serveur démarré vous pourrez accéder à l'interface web via [http://127.0.0.1:3001](http://127.0.0.1:3001). (ou tout autre port si vous avez défini `PORT` dans le fichier `.env`). +Le site est accessible sur [http://localhost:PORT](http://localhost:PORT). + +#### Standalone + +Pour la version standalone je vous conseille de faire un script embarquant les variables d'environnement que vous souhaitez modifier : + +```bash +#! /bin/bash + +export NODE_ENV=development +export DISCOGS_TOKEN=*** + +# Dev +yarn watch +# Prod +yarn run:all + +``` + +Rendez le script exécutable : +```bash +chmod ./run.sh +``` + +C'est terminé ! + +Le site est accessible sur [http://localhost:3001](http://localhost:3001). + +### Aller plus loin + +My Music Library est maintenant accessible en http et sur un port custom (3001 par défaut) de votre serveur. + +Nous allons voir comment rendre accessible en https avec un certificat [Let's Encrypt](https://letsencrypt.org/fr/). Pour le reverse proxy nous utiliserons [NGINX](https://nginx.org/). + +Pour la suite je pars du principe que vous êtes un minimum familier avec Nginx et Let's Encrypt et que ces 2 outils sont déjà présents sur votre serveur. De plus vous avez une entrée DNS qui pointe vers votre serveur. + +#### Obtenir le certificat + +```bash +certbot certonly --nginx -d mml.darkou.fr +``` + +#### Créer le vhost + +Pour ma part j'aime bien créer un fichier dans `/etc/nginx/sites-available` qui comporte le nom du site, ici par exemple `mml.darkou.fr`. + +En voici son contenu : + +``` +upstream mml-env { + server 0.0.0.0:3001; +} + +server { + listen 80; + listen [::]:80; + server_name mml.darkou.fr; + + if ($host = mml.darkou.fr) { + return 301 https://$host$request_uri; + } + root /dev/null; + + location /.well-known/acme-challenge/ { allow all; } +} + + +server { + listen 443 ssl http2; + + server_name mml.darkou.fr; + root /dev/null; + + access_log /var/log/nginx/mml.darkou.fr-access.log; + error_log /var/log/nginx/mml.darkou.fr-error.log; + + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + + client_max_body_size 1m; + + location / { + proxy_read_timeout 300; + proxy_connect_timeout 300; + proxy_redirect off; + + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Ssl on; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Frame-Options SAMEORIGIN; + + proxy_pass http://mml-env; + } + + include conf/ssl.conf; + + ssl_certificate /etc/letsencrypt/live/mml.darkou.fr/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/mml.darkou.fr/privkey.pem; # managed by Certbot +} +``` + +Une fois le vhost activé (lien symbolique dans le dossier site-enable) et nginx rechargé votre site sera alors accessible en https. + +### Fichier .env + +Voici la liste des variables configurables : + +``` +NODE_ENV # Environnement dans lequel exécuter le projet (development ou production) +PORT # Port sur lequel éxécuter le serveur (par défaut 3001) +MONGODB_URI # Url du serveur mongo (par défaut mongodb://mymusiclibrary-db/mymusiclibrary) +SECRET # Hash utilisé pour pour sauvegardé les dessions (par défaut waemaeMe5ahc6ce1chaeKohKa6Io8Eik) +DISCOGS_TOKEN # Token Discogs (vous devez créer un compte sur discogs afin d'en obtenir un gratuitement) +``` -- 2.39.2 From d581aae115fe955444e068edc4664643c9a8e7d1 Mon Sep 17 00:00:00 2001 From: Damien Broqua Date: Mon, 21 Feb 2022 11:30:16 +0100 Subject: [PATCH 2/4] Update 'README.md' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d10f225..31fc23c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # My Music Library -My Music Library est une application Web (que vous pouvez auto-héberger) et un site Web (sur lequel vous pouvez créer un compte), permettant de gérer votre liste des CDs et Vinyles, et de l'utiliser facilement et n'importe où. +My Music Library est une application Web (que vous pouvez auto-héberger) et un site Web (sur lequel vous pouvez créer un compte) permettant de gérer votre liste des CDs et Vinyles et de l'utiliser facilement n'importe où. Le code source est publié sous licence libre GNU GPL-3.0-or-later. -- 2.39.2 From 51a1e85f74f8147501fdbf3e4c779d161c8372be Mon Sep 17 00:00:00 2001 From: Damien Broqua Date: Mon, 21 Feb 2022 14:23:05 +0100 Subject: [PATCH 3/4] Update 'README.md' --- README.md | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 31fc23c..740e370 100644 --- a/README.md +++ b/README.md @@ -2,23 +2,31 @@ My Music Library est une application Web (que vous pouvez auto-héberger) et un site Web (sur lequel vous pouvez créer un compte) permettant de gérer votre liste des CDs et Vinyles et de l'utiliser facilement n'importe où. -Le code source est publié sous licence libre GNU GPL-3.0-or-later. +Le code source est publié sous licence libre [GNU GPL-3.0-or-later](LICENSE) et est disponible sur [git.darkou.fr](https://git.darkou.fr/dbroqua/MyMusicLibrary). + +## Utilisation + +Vous pouvez librement utiliser le service en vous inscrivant sur [https://mml.darkou.fr](https://mml.darkou.fr). + +Une fois inscrit vous pourrez saisir vos CDs et Vinyles sur votre espace personnel le tout gratuitement, sans tracker et sans utilisation de vos données personnelles ! ## Auto hébergement +Vous pouvez, si vous le souhaitez héberger l'application sur votre propre serveur. + ### Prérequis Il existe 2 méthodes d'installation, soit via docker soit en mode standalone. Pour la méthode docker il vous faut simplement Docker sur votre serveur. -En standalone il vous faudra : +En mode standalone il vous faudra : - NodeJS 16.x - Yarn - MongoDB -Quelque que soit la méthode la première étape est de cloner le projet : +Quelque que soit la méthode, la première étape est de cloner le projet : ```bash git clone https://git.darkou.fr/dbroqua/MyMusicLibrary.git @@ -34,11 +42,11 @@ Une fois le projet cloné rendez-vous dans son dossier, cd ./MyMusicLibrary ``` -puis créez le fichier `.env` qui contiendra les variables d'environnement nécessaire au bon fonctionnement du projet (voir à la fin pour la liste des variables). +puis créez le fichier `.env` qui contiendra les variables d'environnement nécessaire au bon fonctionnement du projet ([voir à la fin pour la liste des variables](#env-file)). Une fois votre fichier d'environnement créé vous devez copier le bon fichier `docker-compose.yml.{dev,prod}` en `docker-compose.yml` en fonction de vos choix. -La version `.dev` redémarrera à chaque changement d'un fichier .js alors que la version `prod` ne redémarrera pas automatiquement si vous éditez un fichier. +La version `.dev` redémarrera à chaque changement d'un fichier `.js` alors que la version `prod` ne redémarrera pas automatiquement si vous éditez un fichier. Vous pouvez maintenant démarrer votre environnement Docker : @@ -64,21 +72,27 @@ export DISCOGS_TOKEN=*** yarn watch # Prod yarn run:all - ``` Rendez le script exécutable : ```bash -chmod ./run.sh +chmod +x ./run.sh +``` + +Puis exécutéz le : +```bash +./run.sh ``` C'est terminé ! Le site est accessible sur [http://localhost:3001](http://localhost:3001). +:information_source: Information : Vous pouvez, et vous dreviez, également regarder du côté de `systemd`, `pm2` ou encore `supervisor` pour que le service démarre en même temps que votre serveur. + ### Aller plus loin -My Music Library est maintenant accessible en http et sur un port custom (3001 par défaut) de votre serveur. +My Music Library est maintenant accessible en http sur un port custom (3001 par défaut) de votre serveur. Nous allons voir comment rendre accessible en https avec un certificat [Let's Encrypt](https://letsencrypt.org/fr/). Pour le reverse proxy nous utiliserons [NGINX](https://nginx.org/). @@ -153,7 +167,7 @@ server { Une fois le vhost activé (lien symbolique dans le dossier site-enable) et nginx rechargé votre site sera alors accessible en https. -### Fichier .env +### Fichier .env {#env-file} Voici la liste des variables configurables : -- 2.39.2 From d7cb4b738562640f055b9460e38f1dcb4c486d2b Mon Sep 17 00:00:00 2001 From: Damien Broqua Date: Mon, 21 Feb 2022 14:55:08 +0100 Subject: [PATCH 4/4] Update 'README.md' --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 740e370..a01ba34 100644 --- a/README.md +++ b/README.md @@ -178,3 +178,8 @@ MONGODB_URI # Url du serveur mongo (par défaut mongodb://mymusiclibrary-db/mymu SECRET # Hash utilisé pour pour sauvegardé les dessions (par défaut waemaeMe5ahc6ce1chaeKohKa6Io8Eik) DISCOGS_TOKEN # Token Discogs (vous devez créer un compte sur discogs afin d'en obtenir un gratuitement) ``` + +## Contributeurs + +- Damien Broqua (développeur principal du projet) +- Brunus (fournisseur d'idées :wink: ) \ No newline at end of file -- 2.39.2