#issue-10 #12
1 changed files with 148 additions and 15 deletions
163
README.md
163
README.md
|
@ -1,33 +1,166 @@
|
||||||
# My Music Library
|
# 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 :
|
En standalone il vous faudra :
|
||||||
```
|
|
||||||
NODE_ENV=development
|
- NodeJS 16.x
|
||||||
DISCOGS_TOKEN=***
|
- 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
|
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)
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in a new issue