Comment héberger et partager de gros fichiers en ligne avec PicoShare sur Linux

Une photographie d'une personne devant un ordinateur portable avec un téléphone à la main.

Picoshare est une application web de partage de fichiers légère et très accessible pour Linux. Elle offre une interface facile à utiliser où vous pouvez télécharger et partager des fichiers depuis votre propre serveur. Cet article vous montrera comment installer Picoshare et partager des fichiers en ligne en utilisant Docker sur Ubuntu Linux.

Table des matières

  • Pourquoi utiliser Picoshare pour partager des fichiers en ligne
  • Installation des prérequis pour PicoShare
  • Installation et exécution de PicoShare
  • Sécurisation de PicoShare avec un proxy inverse SSL
  • Test de PicoShare et téléchargement de votre premier fichier

Pourquoi utiliser Picoshare pour partager des fichiers en ligne

L’un des principaux atouts de PicoShare est qu’il est facile à déployer sur n’importe quelle plateforme basée sur Linux. Avec l’aide de Docker, vous pouvez partager des fichiers en ligne avec PicoShare sans vous soucier des dépendances Linux et de la compatibilité des programmes.

Un autre atout de PicoShare est qu’il ne manipule pas les fichiers que vous téléchargez sur sa plateforme. Cela le rend utile pour partager des images et des vidéos, car vous pouvez être sûr que le serveur ne ré-encoder pas vos médias lors de leur téléchargement.

Une capture d'écran de PicoShare fonctionnant sur un serveur.

Enfin, PicoShare dispose de la capacité de dupliquer son stockage de fichiers vers des solutions de stockage d’objets externes. Par exemple, vous pouvez lier votre bucket compatible Amazon S3 à votre serveur PicoShare et créer une sauvegarde 1:1 du contenu de votre serveur. Cela facilite la restauration des données lors de la migration d’un système à un autre.

Installation des prérequis pour PicoShare

Hypothèse : Ce tutoriel est réalisé sur une machine Ubuntu 24.04 avec au moins 2 Go de RAM et 50 Go d’espace disque. Vous devrez avoir un nom de domaine pour lequel vous pouvez créer des enregistrements “A”. Enfin, cet article utilisera DigitalOcean Spaces pour son backend de stockage d’objets compatible S3.

Remarque : Bien que les instructions ici soient pour Ubuntu, elles devraient également fonctionner pour la plupart des distributions Linux.

La première étape pour installer PicoShare est d’obtenir à la fois Docker et Nginx pour votre système hôte (pour d’autres distributions Linux, voici comment installer Docker sur vos systèmes Linux). Pour commencer, récupérez la clé de signature pour le dépôt du projet Docker :

curl -fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg --dearmor-o/etc/apt/keyrings/docker.gpg  
sudochmod a+r /etc/apt/keyrings/docker.gpg

Créez un nouveau fichier de dépôt apt en utilisant votre éditeur de texte préféré :

sudonano/etc/apt/sources.list.d/docker.list

Collez la ligne de code suivante dans votre nouveau fichier de dépôt :

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable

Enregistrez votre fichier de dépôt, puis mettez à jour à la fois les listes de dépôts du système et ses paquets actuels :

sudo apt update &&sudo apt upgrade

Installez Docker, Docker Compose et Nginx en utilisant apt sur Ubuntu :

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx

Création d’une sauvegarde de stockage cloud pour PicoShare

Allez chez votre fournisseur de stockage cloud compatible S3, puis créez un nouveau bucket de stockage. Dans ce cas, j’utilise DigitalOcean Spaces, donc je vais cliquer sur Créer -> Stockage d’objets Spaces sur mon écran de tableau de bord.

Une capture d'écran montrant l'emplacement de l'élément de menu

Sélectionnez un emplacement de centre de données pour votre stockage compatible S3, puis cochez la case Activer CDN.

Une capture d'écran montrant les boutons pour configurer l'emplacement du bucket Spaces et si le bucket utilisera le CDN de DigitalOcean.

Fournissez un nom pour votre nouveau bucket Spaces, puis cliquez sur Créer un bucket Spaces pour l’initialiser.

Une capture d'écran montrant l'invite de texte pour le nom des Spaces et l'emplacement du bouton

Cliquez sur l’icône de copie dans la zone de texte de l’endpoint d’origine et collez-la dans un fichier texte séparé.

Une capture d'écran mettant en évidence l'emplacement de l'icône de copie sur le tableau de bord des Spaces.

Faites défiler la barre latérale gauche de votre tableau de bord DigitalOcean, puis cliquez sur la catégorie API.

Cliquez sur l’onglet Clés Spaces, puis sélectionnez Générer une nouvelle clé.

Fournissez un nom pour votre nouvelle clé, puis cliquez sur Créer une clé d’accès.

Copiez à la fois la “Clé d’accès” et la “Clé secrète” de la page et collez-les dans votre fichier texte.

Une capture d'écran montrant l'emplacement de la clé d'accès et de la clé secrète pour le bucket Spaces.

Installation et exécution de PicoShare

Créez un nouveau dossier pour PicoShare dans le répertoire personnel de votre utilisateur, puis entrez dans celui-ci :

mkdir ~/picoshare &&cd ~/picoshare

Utilisez votre éditeur de texte préféré pour créer le fichier Compose pour PicoShare :

nano ./docker-compose.yml

Collez le bloc de code suivant dans votre nouveau fichier .yml :

version: "3.2"  
services:  
  picoshare:  
    image: mtlynch/picoshare  
    environment:  
      - PORT=4001  
      - PS_SHARED_SECRET=RANDOM PASSWORD HERE  
      - LITESTREAM_BUCKET="YOUR BUCKET NAME"  
      - LITESTREAM_ENDPOINT="YOUR ORIGIN ENDPOINT HERE"  
      - LITESTREAM_ACCESS_KEY_ID="YOUR BUCKET ACCESS ID HERE"  
      - LITESTREAM_SECRET_ACCESS_KEY="YOUR BUCKET SECRET HERE"  
    ports:  
      - 4001:4001  
    command: -db /data/store.db  
    volumes:  
      - ./data:/data

Remplacez la valeur de la variable “PS_SHARED_SECRET” par un mot de passe suffisamment long et aléatoire. Cela servira de mot de passe pour l’interface web de PicoShare.

Un terminal montrant le mot de passe partagé généré aléatoirement pour l'instance PicoShare.

Remarque : vous pouvez générer votre propre mot de passe aléatoire en exécutant : cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1 dans une session terminal séparée.

Changez la valeur de la variable “LITESTREAM_BUCKET” avec le nom de votre bucket Spaces.

Un terminal montrant la valeur appropriée pour le bucket compatible S3.

Copiez la région et la partie nom de domaine de votre endpoint, puis collez-la comme valeur de votre variable “LITESTREAM_ENDPOINT”.

Une capture d'écran montrant le format approprié pour la variable d'endpoint compatible S3.

Remplacez les valeurs des variables “LITESTREAM_ACCESS_KEY_ID” et “LITESTREAM_SECRET_ACCESS_KEY_ID” par la clé d’accès et la clé secrète du bucket DigitalOcean Spaces.

Une capture d'écran montrant la clé d'accès et la clé secrète des Spaces pour l'instance PicoShare.

Enregistrez votre fichier docker-compose.yml, puis exécutez la commande suivante pour construire et exécuter l’instance PicoShare :

sudodocker compose up -d

En passant : vous pouvez également utiliser Docker et Docker Compose pour héberger rapidement un serveur Minecraft sur votre machine Linux.

Sécurisation de PicoShare avec un proxy inverse SSL

À ce stade, vous avez maintenant PicoShare fonctionnant sur le port 4001 de votre machine locale. Afin d’y accéder de manière sécurisée sur Internet, vous devez vous assurer que toutes les connexions à celui-ci sont cryptées via SSL.

Commencez par créer un nouvel enregistrement “A” pour votre nom de domaine pointant vers l’adresse IPv4 de votre serveur PicoShare. Dans mon cas, je vais créer un enregistrement “A” avec la valeur “picoshare.”

Installez le paquet snap “core” sur votre système Ubuntu :

sudo snap install core

Récupérez le paquet snap certbot de la Electronic Frontier Foundation (EFF) :

sudo snap install certbot --classic

Créez un nouveau fichier de configuration de site Nginx en utilisant votre éditeur de texte préféré :

sudonano/etc/nginx/sites-available/picoshare

Collez le bloc de code suivant dans votre fichier de configuration de site :

server{  

server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;  

location / {  
proxy_passhttp://127.0.0.1:4001;  
proxy_http_version 1.1;  
proxy_redirect off;  
proxy_set_header Upgrade $http_upgrade;  
proxy_set_header Connection "upgrade";  
proxy_set_header X-Forwarded-Proto https;  
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
proxy_set_header Host $host;  
client_max_body_size 0m;  
}  
}

Enregistrez votre fichier de configuration de site, puis créez un lien symbolique de votre répertoire “/etc/nginx/sites-available/“ vers votre dossier “/etc/nginx/sites-enabled/“ :

sudoln-s/etc/nginx/sites-available/picoshare /etc/nginx/sites-enabled/

Vérifiez votre fichier de configuration Nginx pour toute erreur, puis démarrez le démon du serveur web Nginx en utilisant systemctl :

ginx -t  
sudo systemctl enable--now nginx.service

Un terminal montrant la vérification de la configuration et la commande systemctl pour démarrer le serveur web Nginx.

Enregistrez votre serveur PicoShare en utilisant l’utilitaire certbot de l’EFF :

sudo certbot register --agree-tos-m [email protected]

Générez un nouveau certificat SSL pointant vers le nom de domaine de votre serveur :

sudo certbot --nginx-d SUBDOMAIN.YOUR-ROOT.DOMAIN

Bon à savoir : apprenez comment HTTPS protège vos données en ligne en générant votre propre certificat SSL avec OpenSSL.

Test de PicoShare et téléchargement de votre premier fichier

Ouvrez un navigateur web, puis naviguez vers votre sous-domaine pour charger la page d’accueil de PicoShare.

Une capture d'écran montrant la page d'accueil de PicoShare qui fonctionne sur un VPS.

Cliquez sur le bouton Se connecter dans le coin supérieur droit de la page.

Fournissez la valeur de “PS_SHARED_SECRET” dans la zone de texte Phrase secrète, puis cliquez sur Authentifier pour vous connecter.

Une capture d'écran montrant l'invite de connexion pour PicoShare.

Vérifiez si vous pouvez enregistrer des données sur votre serveur PicoShare en cliquant sur le bouton Télécharger, puis sélectionnez un fichier d’exemple via le menu de sélection.

Une capture d'écran mettant en évidence l'emplacement du bouton Télécharger dans le tableau de bord interne.

Copiez le premier lien que le serveur renvoie à l’utilisateur avec lequel vous souhaitez partager votre fichier.

Une capture d'écran mettant en évidence l'emplacement du premier lien partageable dans l'instance PicoShare.

Activer les téléchargements temporaires pour invités sur PicoShare

En plus des téléchargements soumis par les utilisateurs, vous pouvez également créer des liens temporaires qui permettent aux utilisateurs anonymes de télécharger des fichiers uniques sur votre serveur. Cela peut être utile si vous avez quelqu’un qui doit partager des fichiers avec vous mais ne peut pas télécharger de fichiers sur un service cloud régulier.

Commencez par cliquer sur la catégorie Liens invités sur la page d’accueil de PicoShare.

Une capture d'écran montrant l'emplacement de la catégorie

Cliquez sur le bouton Créer nouveau juste au-dessus du tableau de vue d’ensemble des liens vides.

Fournissez les détails de base pour votre lien de téléchargement invité. Dans mon cas, je vais l’étiqueter comme “MakeTechEasier” et définir l’expiration à Jamais avec une limite de taille de fichier de 100 Mo et une limite globale de 10 téléchargements.

Une capture d'écran montrant un formulaire de lien invité complété.

Cliquez sur Créer pour générer le lien temporaire pour invités pour votre instance PicoShare.

Cliquez sur l’icône de copie sur le côté droit du lien invité, puis envoyez le contenu de votre presse-papiers au destinataire prévu.

Une capture d'écran montrant l'emplacement de l'icône de copie sur l'écran des liens invités.

Déployer et sécuriser PicoShare pour partager des fichiers en ligne en utilisant Linux n’est que la première étape pour récupérer votre vie privée numérique en ligne. Apprenez comment vous pouvez vous protéger davantage en hébergeant votre propre serveur d’alias d’email en utilisant SimpleLogin.

Crédit d’image : Alejandro Escamilla via Unsplash et PicoShare Github. Toutes les modifications et captures d’écran par Ramces Red.