CitizenZ

Blog Libre, Net & Société

WebDAV, Nginx et XFCE : accéder à ses médias en ligne facilement

Rédigé par citizenz Aucun commentaire

WebDAV c'est quoi ? Laissons faire les présentations par le Wiki Ubuntu :

WebDAV, en entier : Web-based Distributed Authoring and Versioning, est un protocole déjà ancien (1996) et curieusement peu connu. Il permet pourtant une chose essentielle : écrire sur le Web, au lieu de seulement surfer (c'est-à-dire seulement lire).
C'est un protocole ouvert, le W3C (organisme qui "normalise le web") en a confié le développement à l'IETF qui avait déjà normalisé HTTP.
Pour résumer, WebDAV est une extension du HTTP. Au delà des GET et POST bien connus, WebDAV rajoute les verbes PUT, DELETE, COPY, PROPFIND, etc. Pour les curieux, la norme est là : http://tools.ietf.org/html/rfc2518. Étant une simple extension au protocole HTTP, WebDAV fonctionne dans à peu près toutes les situations où la navigation n'est pas bloquée.

Ceci étant dit, j'avais besoin de configurer un accès web pour les fichiers vidéos situés sur mon serveur. Il existe pléthore de solutions de streaming etc. mais ça n'est pas ce que je souhaitais. L'idéal ? Ouvrir tous mes médias directement depuis mon "Explorateur de fichiers", Thunar en l’occurrence puisque je suis sous XFCE.

Je n'ai pas été chercher bien loin et je me suis souvenu de WebDAV, que j'avais déjà utilisé "rapidement" il y a quelques temps.

Objectifs ? Configurer Nginx avec WebDAV et pouvoir accéder tranquillement à mes fichiers depuis mon bureau. C'est parti.

NGINX

Pour configurer Nginx rien de bien compliqué. Il vous faut néanmoins et avant tout installer un nouveau paquet sur votre serveur afin d'utiliser WebDAV:

$ sudo apt install nginx-extras

Puis il faut créer l'hôte virtuel Nginx. J'ai choisi d'utiliser un domaine du type media.mondomaine.fr pour l'exemple. On va donc créer un fichier comme suit :

$ sudo vim /etc/nginx/conf.d/media.mondomaine.fr.conf

Dans ce fichier, nous allons placer les éléments suivants :

server {
        listen 80;
        server_name media.mondomaine.fr;
        root /CHEMIN/MONREPERTOIRE/FICHIERS; # ----> A CHANGER avec le bon chemin de votre répertoire
        index index.php index.html index.htm;
        access_log /var/log/media-access.log combined;
        error_log /var/log/media-error.log error;

        location / {
                try_files $uri $uri/ /index.html;
                client_body_temp_path   /temp;
                dav_methods             PUT DELETE MKCOL COPY MOVE;
                dav_ext_methods         PROPFIND OPTIONS;
                create_full_put_path    on;
                dav_access              user:rw group:rw all:rw;
                autoindex               on;
                auth_basic "Mot de passe :";
                auth_basic_user_file "/etc/nginx/passwd/media_pass";
}

        # PARTIE HTTPS
        listen 443 ssl http2; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/media.mondomaine.fr/fullchain.pem; # managed by Certbot ---> MONDOMAINE.FR A CHANGER
        ssl_certificate_key /etc/letsencrypt/live/media.mondomaine.fr/privkey.pem; # managed by Certbot ---> MONDOMAINE.FR A CHANGER
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        if ($scheme != "https") {
                return 301 https://$host$request_uri;
        } # managed by Certbot

}

La première partie du fichier est "traditionnelle...

La deuxième partie Location / est plus spécifique. On peut y voir la configuration propre à WebDAV : dav_methods, dav_ext_methods, dav_access , ...

J'ai de plus protégé l'accès à mon répertoire avec un accès restreint, tout simple et très traditionnel, en créant premièrement un nouveau répertoire /et/nginx/passwd :

$ sudo mkdir -p /etc/nginx/passwd

... puis :

$ sudo htpasswd -c /etc/nginx/passwd/media_pass mumbly

Il n'y a plus qu'à rentrer le mot de passe associé à l'utilisateur mumbly. Si httpasswd ne fonctionne pas, installer le paquet suivant :

$ sudo apt install apache2-utils

Puis j'ai configuré une partie HTTPS avec certbot et le plugin --nginx. Je vous renvoie à mon post à ce sujet .

Une fois fait, on teste d'abord la config de Nginx avec :

$ nginx -t
Si tout est ok, on redémarre Nginx :
$ sudo /etc/init.d/nginx restart

Reste la partie "Bureau" sous XFCE et Thunar et ici rien de difficile. J'ai configuré cet accès sur un PC équipé de Xubuntu. Peut-être y aura t-il une "autre config" sous un autre système, je n'ai pas testé ailleurs.

Avec Thunar, on peut rentrer directement - dans la barre d'adresse - l'adresse de notre répertoire WebDAV de la manière suivante :

davs://mumbly@media.mondomaine.fr/FICHIERS # à adapter avec votre VRAI chemin ...

Voila ce que ça donne en "réel" sur mon PC :

[NOTE] Locale française sur Ubuntu Server

Rédigé par citizenz Aucun commentaire
Si vous démarrez sur un serveur VPS fraîchement pourvu d'un serveur Ubuntu (par exemple sur Pulseheberg), il se peut que vous n'ayez pas, par défaut, la locale FR de configurée (vous serez en EN).
Pour forcer Ubuntu Server à prendre en compte la langue française avec un encodage de caractères en UTF-8, il faut installer le package language-pack-fr, indiquer dans le fichier /etc/default/locale la valeur fr_FR.UTF-8 à la variable LANG puis lancer une reconfiguration des locales, comme suit : 

$ sudo apt install language-pack-fr
$ sudo if [ -f /etc/default/locale ]; then cp /etc/default/locale /etc/default/locale_default; fi
$ sudo echo "LANG=fr_FR.UTF-8" > /etc/default/locale
$ sudo dpkg-reconfigure locales

Les modifications seront effectives à la prochaine connexion.

Cette note est largement inspirée de l'article suivant :

Générer de la cryptomonnaie à partir de son site web : test sur freetorrent.fr

Rédigé par citizenz 8 commentaires
Voila : j'ai franchi le Rubicon !
J'ai mis en test sur freetorrent.fr  et ici même un script de chez Coinhive pour générer de la cryptomonnaie à partir du site web.
En gros, à chaque fois qu'un visiteur se connecte, il a la possibilité - ou non - de cliquer sur un bouton (en haut de la sidebar) qui va lancer un petit script de minage depuis le site web. Avec la possibilité de régler le nombre de threads processeur attribués à la tâche et la vitesse ou la "puissance" attribuée.
Comme évoqué sur un excellent article de Korben  (comme toujours...) il s'agit d'une nouvelle idée pour financer les différents projets du Net. En effet "pour financer la production d'un contenu proposé gratuitement aux internautes, la grande majorité des sites affichent des espaces publicitaires".
"Miner des cryptomonnaies via un script (comme le fait The Pirate Bay) est à mon sens moins problématique que d'afficher de la pub".
Sur ce point, je suis  à 1 000 % d'accord et l'idée me taraudait depuis un moment.
A suivre donc pour faire un premier bilan des "retombées" de ce script...

Let's Encrypt et Nginx : config rapide sous Ubuntu

Rédigé par citizenz Aucun commentaire
Voici un petit tuto simple, pratique et rapide pour configurer un certificat Let's Encrypt pour votre site web (avec Nginx). J'utilise un serveur Ubuntu 16.04.

PRÉREQUIS : Certbot a besoin d'un fichier vhost Nginx existant, même minimaliste, mais avec une partie "server {  }" déjà en place.

Pour tout changement effectué, vérifiez la syntaxe Nginx avec cette commande :  $ sudo nginx -t

1 - installation de Certbot (version stable) :
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
$ sudo apt install python-certbot-nginx

Si la commande add-apt-repository n'est pas disponible, installer les 2 paquets suivants :
$ sudo apt install software-properties-common python-software-properties


2 - Obtention d'un certificat SSL Let's Encrypt :
$ sudo certbot --nginx -d example.com -d www.example.com

  • Aucune autre option n'est à préciser. L'option --nginx s'occupe de tout, même de la config de votre fichier vhost !
  • Vous remarquerez que Certbot a ajouté un fichier /etc/letsencrypt/options-ssl-nginx.conf qui comporte toutes les bonnes options.
  • Si c'est votre première demande, vous devrez rentrer une adresse e-mail de contact et accepter les "termes du service". Vous devez ensuite choisir d'accepter les connexions HTTP et HTTPS ou seulement les connexions HTTPS pour votre site.

3 - Configuration supplémentaire avec Diffie-Hellman :
$ sudo mkdir -p /etc/nginx/ssl
$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

Puis dans votre fichier vhost nginx, ajoutez la ligne suivante :
ssl_dhparam /etc/nginx/ssl/dhparam.pem;

Ajoutez également les lignes suivantes :
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/www.mondomaine.com/fullchain.pem;


# Google DNS, Open DNS, Dyn DNS
resolver 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 216.146.35.35 216.146.36.36 valid=300s;
resolver_timeout 3s;

Et relancer Nginx :
$ sudo /etc/init.d/nginx restart

4 - Renouvellement automatique des certificats
$ sudo crontab -e
15 3 * * * /usr/bin/certbot renew --quiet

Avec cette config (intégrant la config "par défaut" de certbot + l'ajout du Diffie Hellman), vous devriez obtenir un A sur SSL Labs (https://www.ssllabs.com/ssltest/ ).

SOURCES
: https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04

Mariadb (Mysql) : connexion root avec phpMyAdmin sous Ubuntu 16.04

Rédigé par citizenz 1 commentaire
Profitant de vacances bien méritées (si si !), je viens re-installer un ou deux serveurs. Un sous Debian 9 et un sous Ubuntu 16.04 server.
Pour ces 2 distributions, l'installation de MySQL (ou plutôt la version Mariadb) diffère un tant soit peu en raison de la méthode "connexion" désormais différente.
En effet, il faut désormais configurer "à la mano" un ou deux fichiers afin de ne pas devenir une fois sur la page de phpMyAdmin où, si on ne fait pas cette configuration, on peut pas se connecter en root avec le mot entré à l'installation.
Je pensais que cette manip était réservée à Debian 9 mais elle est indispensable sous Ubuntu 16.04 aussi.

Voici les différentes étapes pour retrouver une connexion normale en root pour MySQL :
 
nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
bind-address           = 127.0.0.1
sql-mode="NO_ENGINE_SUBSTITUTION"
[...]

Il faut maintenant régler la méthode d'authentification par mot de passe à "native" pour mariadb afin de pouvoir se connecter en root à phpMyAdmin. On rentre la commande suivante en console :
 
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Il faut aussi éditer le fichier suivant afin de rentrer le mot de passe root Mysql :
 
nano /etc/mysql/debian.cnf
[client]
host = localhost
user = root
password = MOTDEPASSE
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = MOTDEPASSE
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

On sauvegarde et on redémarre mysql :
 
service mysql restart

Voila : vous pouvez désormais vous connecter normalement sur phpmyadmin avec root.
Fil RSS des articles de cette catégorie