Installer SecureSling avec Docker
SecureSlingSecureSling

Installer SecureSling avec Docker

Table des matières

GitHub - jackyes/SecureSling: SecureSlig is a web-based file transfer platform that enables end-to-end (E2E) encryption, ensuring secure and private file sharing between senders and receivers. With SecureSlig, users can share files of any size while maintaining complete control over their data, thanks to zero-knowledge architecture.
SecureSlig is a web-based file transfer platform that enables end-to-end (E2E) encryption, ensuring secure and private file sharing between senders and receivers. With SecureSlig, users can share f…

Petit découverte très sympathique, le projet est très jeune mais combien abouti!

Je sais, j'avais dire que je changeais un peu de sujet à propos des applications de partage de fichiers, mais je ne pouvais pas passer à côté de celle-ci!

Aujourd'hui on va parler de SecureSling! Que permet SecureSling? De partager des fichiers avec une couche de sécurité non négligeable!

L'interface est très esthétique, ce qui n'enlève rien au charme de SecureSling.

💡
Pour une question de sécurité, vous ne pourrez pas utiliser cette application sans un certificat SSL.
belginux vous propose deux solutions sur le site, Cosmos Cloud ou NPM, libre à vous d'utiliser le système avec lequel vous êtes à l'aise.

Les fichiers sont chiffrés avec AES-GCM à l'aide d'une clé de 256 bits pour garantir la confidentialité et la sécurité des données. Cette norme de chiffrement de pointe assure une protection solide de vos fichiers.

Avec SecureSling, vos fichiers sont chiffrés et déchiffrés directement sur votre appareil.
Cela signifie que seuls vous et le destinataire pouvez accéder au contenu des fichiers.
Notre serveur n'a jamais accès à vos fichiers non chiffrés, ce qui garantit une confidentialité et une sécurité maximales.
Vous pouvez éventuellement choisir un mot de passe pour crypter les fichiers. Dans ce cas, le mot de passe est nécessaire (en plus du lien de partage) pour télécharger le fichier.

Comment cela fonctionne-t-il ?

Chiffrement :
Avant d'être téléchargés, vos fichiers sont cryptés à l'aide de la technologie AES-GCM avec une clé de 256 bits, une norme de cryptage de pointe.
Upload :
Seule la version chiffrée de vos fichiers est téléchargée sur notre serveur. Le nom du fichier et les métadonnées sont également protégés grâce à l'architecture zéro connaissance.
Déchiffrement :
Lors du téléchargement, les fichiers chiffrés sont déchiffrés sur votre appareil à l'aide de la clé de déchiffrement que vous avez fournie (dans le lien de partage).

⚡Caractéristiques

  • Activez les téléchargements uniques pour garantir que vos fichiers ne sont accessibles qu'une seule fois.
  • Choisissez un nombre maximum de téléchargements.
  • Fixez une date d'expiration pour vos fichiers.
  • Définir la date d'expiration globale (facultatif).
  • Définir la taille maximale du fichier.
  • Fichier de configuration (config.yaml).
  • Choisissez éventuellement un mot de passe pour chiffrer/accéder aux fichiers.

L'installation

  1. Créez votre docker-compose.yml dans le dossier ou vous comptez installer SecureSling:
sudo nano docker-compose.yml
  1. Collez ça dedans en prenant soin d'adapter le port et les volumes suivant votre configuration:
version: '3.9'
services:
    securesling:
        image: 'jackyes/securesling:latest'
        volumes:
            - './uploads:/uploads'
            - './credentials.yaml:/credentials.yaml'
            - './config.yaml:/config.yaml'
        container_name: securesling
        ports:
            - '8989:8080'
  1. On va créer le fichier config.yaml
sudo nano config.yaml
  1. On va coller ça dedans:
ServerPort: 8989 # Port the server will listen on
EnableTLS: false # Enable HTTPS (configure CertPathCrt and CertPathKey if true)
#CertPathCrt: "/etc/letsencrypt/live/xxx/fullchain.pem" # Path to the SSL certificate file
#CertPathKey: "/etc/letsencrypt/live/xxx/privkey.pem" # Path to the SSL certificate key file
MaxUploadSize: 5368709120 # Maximum upload size limit (Default: 5GB)
MaxExpireHours: 120 # Maximum time (in hours) before the file is deleted (Default: 120h)
EnablePassword: false # Enable password authentication for uploads (check credentials.yaml for configuration)
ShowUploadBox: true # Show or hide the 'upload your file'prompt on the download page
  • ServerPort: 8989 => Indiquez le même port que dans le docker-compose.yml.
  • CertPathCrt: "/etc/letsencrypt/live/xxx/fullchain.pem" => Chemin d'accès au fichier du certificat SSL.
    Si vous utilisez Cosmos Cloud ou NPM vous pouvez laisser commenté (c'est à dire avec un # devant la ligne).
  • CertPathKey: "/etc/letsencrypt/live/xxx/privkey.pem" => Chemin d'accès au fichier de clé du certificat SSL.
    Si vous utilisez Cosmos Cloud ou NPM vous pouvez laisser commenté (c'est à dire avec un # devant la ligne).
  • MaxUploadSize: 5368709120 => Taille maximale des fichiers de 5GB par défaut.
  • MaxExpireHours: 120 => Délai maximum (en heures) avant que le fichier ne soit supprimé (par défaut : 120h).
  • EnablePassword: false => Activer l'authentification par mot de passe pour les téléchargements (vérifier credentials.yaml pour la configuration).
  • ShowUploadBox: true => Afficher ou masquer l'invite "téléchargez votre fichier" sur la page de téléchargement.
  1. On va créer le fichier credentials.yaml:
sudo nano credentials.yaml
  1. Et collez ça dedans:
- username: user1
  password: "$2a$12$uzWzu3wc8ysvX9XU3MAGBu7Mke0AF/DiQvnOt4LfgQS8jSAB.YHD2"  # bcrypt hash of your password (Default: "password")
- username: user2
  password: "$2a$12$uzWzu3wc8ysvX9XU3MAGBu7Mke0AF/DiQvnOt4LfgQS8jSAB.YHD2"  # bcrypt hash of your password (Default: "password")
  • Pour ajouter de nouveaux utilisateurs: les mots de passe doivent être hachés à l'aide de bcrypt.
  • Instructions pour l'ajout de nouveaux utilisateurs :
    1. Générez un hachage bcrypt du mot de passe. Vous pouvez utiliser un outil en ligne comme https://bcrypt-generator.com/.
    2. Copiez le hachage bcrypt généré.
    3. Ajoutez le nom d'utilisateur souhaité et le hachage bcrypt généré comme mot de passe.
  1. On installe l'application:
docker-compose up -d

ou avec docker-compose V2:

docker compose up -d
  1. Rendez-vous sur l'ip:port, suivant l'IP de votre serveur local et du port choisi, 8989 par défaut:
http://ip:8989/

ou votre domaine:

https://mondomaine.com

Découverte de l'interface

Lors du premier lancement de votre application, vous allez arriver ici:

Cliquez sur Get Started:

Et vous accédez à la plage pour envoyer vos fichiers:

💡
Notez qu'il est possible d'arriver directement sur la page sans passer par "l'intro".
Dans le fichier config.yaml, repérez cette ligne: ShowUploadBox: true et mettez false au lieu de true.

Advanced Options

Avant d'envoyer votre fichier, il convient de faire un petit tour ici afin de régler quelques paramètres:

  • One-time download => Téléchargement unique. Après avoir été téléchargé 'une fois", il sera détruit.
  • Password (Optional) => Mettez un mot de passe, éventuellement.
  • Expiration Date => Définissez la date d'expiration.
  • Max Downloads => Définissez le nombre de téléchargements maximum.

Envoyer et télécharger un fichier

Quand vous êtes sur la page principale, cliquez sur Select File pour désigner le fichier à envoyer ou faites un "glisser/déposer":

Maintenant vous pouvez cliquer sur Upload file:

Une fois que le fichier est envoyé, vous avez quelques informations dont le lien de partage:


Reverse proxy

Exemple Nginx, ajustez les paramètres si nécessaire:

location /share/ {
    proxy_pass http://localhost:8080/;
    proxy_set_header Host $host;
    rewrite ^/share$ /share/ permanent;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
	
location /share/static {
   proxy_pass http://localhost:8080/static;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
}

Conclusion

Non seulement elle est facile d'utilisation et pour le niveau de sécurité qu'elle offre, on a en prime une belle interface!

Je dirais qu'elle a tout pour plaire et pour ne rien gâcher au plaisir, le dev est très réactif!

D'ailleurs, merci à lui d'avoir corrigé une erreur dans le docker-compose si rapidement après que je lui ai remonté l'erreur. Bravo!

zarev

->.<-
🐧 Passionné de self-hosting, je partage ce que je connais et me nourris des connaissances des bonnes âmes qui partagent avec moi. Soutenons l'utilisation des apps open source et leurs développeurs.