Utilisation et essais de la version compilée de transfersh

Options disponibles pour l'application

Pour avoir toutes les options disponibles, il suffit de faire un ./transfersh --help en étant dans le dossier de l'application

Comme vous l'avez remarqué il y a beaucoup de possibilités, concentrons-nous sur les plus élémentaires
--purge-days value Nombre de jours de rétention des fichiers
--purge-interval value Nombre d'heures de rétention des fichiers
--max-upload-size value Taille maximum des fichiers envoyés (en kilooctet)
--log value Chemin du fichier log
--http-auth-user value Nom d'utilisateur pour la demande d'authentification
--http-auth-pass value Mot de passe pour la demande d'authentification
--ip-whitelist value Liste des ip autorisés a se connecter séparer avec des virgule (,)
--ip-blacklist value Liste des ip non autorisés à se connecter séparer avec des virgule (,)

Attention ci-dessous, vous devez choisir soit l'utilisation de certificats autosignés pour un accès local en général, soit la mise en place de certificats fournis par lets encrypt dans le cas d'un accès depuis l'extérieur (serveur dédié).

1 Exécution de transfersh avec certificat autosigné (en mode local)

Pour lancer le serveur en HTTPS, il faudra générer un certificat autosigné avec les commandes suivantes

mkdir /etc/ssl/transfersh/
openssl genrsa -out /etc/ssl/transfersh/transfersh.key 2048                                                                                                   
openssl req -new -key /etc/ssl/transfersh/transfersh.key -out /etc/ssl/transfersh/transfersh.csr                                                              
openssl x509 -req -days 365 -in /etc/ssl/transfersh/transfersh.csr -signkey /etc/ssl/transfersh/transfersh.key -out /etc/ssl/transfersh/transfersh.crt
  • Concernant openssl req -new -key /etc/ssl/transfersh/transfersh.key -out /etc/ssl/transfersh/transfersh.csr si l'accès au site se fait via l'IP, laissez toutes les questions par défaut sinon remplissez les valeurs, la plus importante Common Name (e.g. server FQDN or YOUR name), remplissez la avec votre nom de domaine
  • chmod 400 permet de restreindre les droits au minimum sur la clé privée**
  • -days 365 indique que l'on génère un certificat valide pour 1 an, vous pouvez augmenter ou réduire la durée, cela vous obligera à générer de nouveau un certificat à la fin de la validité de celui-ci
    Puis lancer le serveur avec les options SSL
./transfersh --provider=local --basedir=/tmp/ --tls-listener-only --tls-listener 0.0.0.0:443   --tls-private-key /etc/ssl/transfersh/transfersh.key --tls-cert-file /etc/ssl/transfersh/transfersh.crt

Ou avec Go

go run main.go --provider=local --basedir=/tmp/ --tls-listener-only --tls-listener 0.0.0.0:443   --tls-private-key /etc/ssl/transfersh/transfersh.key --tls-cert-file /etc/ssl/transfersh/transfersh.crt
  • --tls-listener-only Force le SSL, pas de possibilité d'être connecté sans chiffrement
  • --tls-listener 0.0.0.0:443 on s'ouvre à tous sur le port 443 (port https par défaut)
  • --tls-private-key et --tls-cert-file indique les clés du certificat privé et public

2 Exécution de transfersh avec Lets encrypt (Accessible depuis l'extérieur)

Commencez par installer certbot

apt install certbot

Faites votre enregistrement DNS vers le serveur ou vous utiliserez transfersh

Entrez la commande suivante

certbot certonly --standalone  --agree-tos -d SOUSDOMAINE.VOTREDOMAINE --register-unsafely-without-email

Voici l'explication de la commande

  • certonly ne crée que le certificat
  • --standalone lance un serveur temporaire le temps de l'authentification avec les serveurs lets encrypt
  • --agree-tos accepte le contrat d'utilisation
  • -d SOUSDOMAINE.VOTREDOMAINE vous indiquez le domaine qui va être certifié
  • --register-unsafely-without-email On ne veut pas fournir d'email
  • SOUSDOMAINE.VOTREDOMAINE remplacer cela par votre domaine ou sous domaine

Puis exécuter transfersh

./transfersh --provider=local --basedir=/tmp/ --tls-listener-only --tls-listener 0.0.0.0:443   --tls-private-key /etc/letsencrypt/live/SOUSDOMAINE.VOTREDOMAINE/privkey.pem --tls-cert-file /etc/letsencrypt/live/SOUSDOMAINE.VOTREDOMAINE/fullchain.pem

Ou avec Go

go run main.go --provider=local --basedir=/tmp/ --tls-listener-only --tls-listener 0.0.0.0:443   --tls-private-key /etc/letsencrypt/live/SOUSDOMAINE.VOTREDOMAINE/privkey.pem --tls-cert-file /etc/letsencrypt/live/SOUSDOMAINE.VOTREDOMAINE/fullchain.pem

Vous voilà avec transfertsh en mode HTTPS avec des certificats fournis par lets encrypt

Le renouvèlement des certificats est automatique, il se fait via un cron qui est dans /etc/cron.d/certbot qui s'exécute tout les 12h