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](LICENSE) et est disponible sur [git.darkou.fr](https://git.darkou.fr/dbroqua/MyMusicLibrary).
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 !
Il existe 2 méthodes d'installation, soit via docker soit en mode standalone. Peu importe la méthode il vous faudra un compte sur [https://formspree.io/](https://formspree.io/) afin d'avoir une page nous-contacter fonctionnelle.
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.
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 +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 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`.