diff --git a/README.md b/README.md index ace3c9d..c787da0 100644 --- a/README.md +++ b/README.md @@ -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: ) \ No newline at end of file +- Brunus (Logo et fournisseur d'idées :wink: ) \ No newline at end of file diff --git a/docker-compose.yml.dev b/docker-compose.yml.dev index c58795e..b14864f 100644 --- a/docker-compose.yml.dev +++ b/docker-compose.yml.dev @@ -1,8 +1,8 @@ version: "2.4" services: - mymusiclibrary-www: - container_name: mymusiclibrary-www + musictopus-www: + container_name: musictopus-www image: "node:16" restart: always user: "node" @@ -17,7 +17,7 @@ services: ports: - 3001:3001 depends_on: - - mymusiclibrary-db + - musictopus-db environment: NODE_ENV: ${NODE_ENV} PORT: ${PORT} @@ -26,18 +26,18 @@ services: DISCOGS_TOKEN: ${DISCOGS_TOKEN} FORMSPREE_ID: ${FORMSPREE_ID} networks: - - mymusiclibrary - mymusiclibrary-db: - container_name: mymusiclibrary-db - image: mongo:latest + - musictopus + musictopus-db: + container_name: musictopus-db + image: mongo:4.4 restart: always ports: - 27617:27017 networks: - - mymusiclibrary + - musictopus volumes: - ./dump:/dump networks: - mymusiclibrary: + musictopus: driver: bridge diff --git a/docker-compose.yml.prod b/docker-compose.yml.prod index f5041f7..d314748 100644 --- a/docker-compose.yml.prod +++ b/docker-compose.yml.prod @@ -1,8 +1,8 @@ version: "2.4" services: - mymusiclibrary-www: - container_name: mymusiclibrary-www + musictopus-www: + container_name: musictopus-www image: "node:16" restart: always user: "node" @@ -17,7 +17,7 @@ services: ports: - 3001:3001 depends_on: - - mymusiclibrary-db + - musictopus-db environment: NODE_ENV: ${NODE_ENV} PORT: ${PORT} @@ -26,18 +26,18 @@ services: DISCOGS_TOKEN: ${DISCOGS_TOKEN} FORMSPREE_ID: ${FORMSPREE_ID} networks: - - mymusiclibrary - mymusiclibrary-db: - container_name: mymusiclibrary-db - image: mongo:latest + - musictopus + musictopus-db: + container_name: musictopus-db + image: mongo:4.4 restart: always ports: - 27617:27017 networks: - - mymusiclibrary + - musictopus volumes: - ./dump:/dump networks: - mymusiclibrary: + musictopus: driver: bridge diff --git a/package.json b/package.json index 7c38831..77f10de 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "mymusiclibrary", + "name": "musictopus", "version": "1.0.0", "description": "Simple application to manage your CD/Vinyl collection", "scripts": { @@ -18,7 +18,7 @@ }, "repository": { "type": "git", - "url": "git@git.darkou.fr:dbroqua/MyMusicLibrary.git" + "url": "git@git.darkou.fr:dbroqua/MusicTopus.git" }, "author": { "name": "Damien Broqua", diff --git a/public/500.html b/public/500.html index 0b4b0d4..072dfd0 100644 --- a/public/500.html +++ b/public/500.html @@ -11,7 +11,7 @@ - + @@ -21,8 +21,8 @@