Co-authored-by: dbroqua <contact@darkou.fr>
Reviewed-on: https://git.darkou.fr/dbroqua/MusicTopus/pulls/24
Co-authored-by: Damien Broqua <dbroqua@noreply.localhost>
Co-committed-by: Damien Broqua <dbroqua@noreply.localhost>
This commit is contained in:
Damien Broqua 2022-03-02 16:50:25 +01:00
parent 7f526eefee
commit cf63d8b6d8
28 changed files with 687 additions and 104 deletions

View file

@ -1,12 +1,12 @@
# My Music Library
# MusicTopus
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ù.
MusicTopus 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).
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/MusicTopus).
## Utilisation
Vous pouvez librement utiliser le service en vous inscrivant sur [https://mml.darkou.fr](https://mml.darkou.fr).
Vous pouvez librement utiliser le service en vous inscrivant sur [https://www.musictopus.fr/](https://www.musictopus.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 !
@ -29,7 +29,7 @@ En mode standalone il vous faudra :
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
git clone https://git.darkou.fr/dbroqua/MusicTopus.git
```
### Installation
@ -39,7 +39,7 @@ git clone https://git.darkou.fr/dbroqua/MyMusicLibrary.git
Une fois le projet cloné rendez-vous dans son dossier,
```bash
cd ./MyMusicLibrary
cd ./MusicTopus
```
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)).
@ -92,7 +92,7 @@ Le site est accessible sur [http://localhost:3001](http://localhost:3001).
### Aller plus loin
My Music Library est maintenant accessible en http sur un port custom (3001 par défaut) de votre serveur.
MusicTopus 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/).
@ -101,26 +101,26 @@ Pour la suite je pars du principe que vous êtes un minimum familier avec Nginx
#### Obtenir le certificat
```bash
certbot certonly --nginx -d mml.darkou.fr
certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email votre@email.tld -d musictopus.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`.
Pour ma part j'aime bien créer un fichier dans `/etc/nginx/sites-available` qui comporte le nom du site, ici par exemple `musictopus.fr`.
En voici son contenu :
```
upstream mml-env {
upstream musictopus-proxy {
server 0.0.0.0:3001;
}
server {
listen 80;
listen [::]:80;
server_name mml.darkou.fr;
server_name musictopus.fr;
if ($host = mml.darkou.fr) {
if ($host = musictopus.fr) {
return 301 https://$host$request_uri;
}
root /dev/null;
@ -132,11 +132,11 @@ server {
server {
listen 443 ssl http2;
server_name mml.darkou.fr;
root /dev/null;
server_name musictopus.fr;
root /srv/MusicTopus/public;
access_log /var/log/nginx/mml.darkou.fr-access.log;
error_log /var/log/nginx/mml.darkou.fr-error.log;
access_log /var/log/nginx/musictopus.fr-access.log;
error_log /var/log/nginx/musictopus.fr-error.log;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
@ -144,6 +144,10 @@ server {
client_max_body_size 1m;
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
@ -155,13 +159,24 @@ server {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://mml-env;
proxy_pass http://musictopus-proxy;
tcp_nodelay on;
}
include conf/ssl.conf;
error_page 500 501 502 503 504 /500.html;
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
ssl_certificate /etc/letsencrypt/live/musictopus.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/musictopus.fr/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000" always;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
ssl_trusted_certificate /etc/letsencrypt/live/musictopus.fr/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
}
```
@ -174,7 +189,7 @@ 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)
MONGODB_URI # Url du serveur mongo (par défaut mongodb://musictopus-db/musictopus)
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)
FORMSPREE_ID # Id du formulaire formspree pour la page "nous-contacter"
@ -183,4 +198,4 @@ FORMSPREE_ID # Id du formulaire formspree pour la page "nous-contacter"
## Contributeurs
- Damien Broqua (développeur principal du projet)
- Brunus (fournisseur d'idées :wink: )
- Brunus (Logo et fournisseur d'idées :wink: )