Up1 est un service d'upload d'image et de texte. Nous allons voir dans ce tutoriel comment l'installer sur votre machine pour permettre à vous et à d'autres utilisateurs de partager des images ou du texte.

Les données (images ou textes) transmises à partir du script Up1 sont chiffrées à l'aide d'une clé. Ainsi, il est impossible d'ouvrir une image upload sur Up1 sans posséder la clé et connaître la méthode de chiffrement. Il est donc impératif d'ouvrir l'image à partir de l'URL fournie.

Up1 est un service d'upload accessible via le site officiel mais également en script à télécharger et à installer sur votre serveur.

Pré-requis

Dans ce tutoriel, je vais installer Up1 sur une machine virtuelle fonctionnant sous Debian 8.2.

Up1 est écrit en langage Go, vous devez avoir le paquet golang installé. Si ce n'est pas le cas, lancez :

apt-get install golang

Etant donné que c'est un service accessible à partir d'un navigateur Web, il vous faudra un serveur Web sur votre serveur (Apache, nginx, ...). Pour ma part, j'ai nginx d'installé sur ma machine virtuelle.

Installation d'Up1

Avant tout, on se place dans le répertoire qui va accueillir le script Up1 :

cd /var/www

Ensuite, on récupère les sources d'Up1 via la page GitHub :

wget https://github.com/Upload/Up1/archive/master.zip

Puis on dézippe l'archive :

unzip master.zip

On supprime l'archive :

rm master.zip

On renomme le répertoire en "up1" et on rentre dedans :

mv Up1-master/ up1 && cd up1

On lance l'installation d'Up1 :

go build server.go

Configuration d'Up1

La configuration s'effectue à partir du fichier server.conf. Commencez par renommer server.conf.example en server.conf :

mv server.conf.example server.conf

Tant qu'on y est, faites de même avec le fichier config.js :

mv config.js.example config.js

Voici quelques explications sur les variables de configuration disponibles dans le fichier server.conf :

  • api_key : clé d'API permettant de connecter Up1 à des applications tierces (par exemple, ShareX)
  • delete_key : clé pour sécuriser la suppression des fichiers
  • maximum_file_size : taille maximale autorisée, en octet. Par défaut, c'est paramétré à 50 Mo

Vous devez insérer une chaîne aléatoire composée de chiffres et de lettres dans la variable delete_key.

Pour information, l'api_key présente dans le fichier server.conf doit être identique à celle du fichier config.js.

Par défaut, Up1 fonctionne en HTTP via le port 80 (section "http" du fichier server.conf). Si vous le souhaitez, vous pouvez modifier le port d'écoute. Pour ce tutoriel, j'ai utilisé le port 8099. Ainsi, la section http ressemble à ça :

"http": {
  "enabled": true,
  "listen": ":8099"
},

Pour plus de sécurité, vous pouvez opter pour le HTTPS.

Configuration du serveur Web

Comme je vous le disais dans les pré-requis, il vous faut un serveur Web pour pouvoir accéder à l'interface Up1. Dans ce tutoriel, j'utilise nginx. Il faut seulement créé un Virtual Host qui redirige vers notre IP locale suivie du numéro de port défini.

Créez un fichier nommé up1.conf dans le dossier d'nginx :

vi /etc/nginx/sites-available/up1.conf

A l'intérieur, insérez-y ce code :

server {

    listen 80;
    server_name up1.machine.vm;

    index index.html;

    access_log /var/log/nginx/up1-access.log combined;
    error_log /var/log/nginx/up1-error.log error;

    location / {
            proxy_pass        http://127.0.0.1:8099;
            proxy_redirect    off;
            proxy_set_header  Host             $http_host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

Changez le server_name par l'URL que vous souhaitez utiliser. Egalement, si vous utilisez un autre port que 8099 pour Up1, changez-le dans proxy_pass.

Enregistrez et sortez puis faites un lien symbolique de ce fichier vers /etc/nginx/sites-enabled/ :

ln -s /etc/nginx/sites-available/up1.conf /etc/nginx/sites-enabled/

Redémarrez nginx :

service nginx restart

Ainsi, Up1 sera accessible à partir de l'adresse que vous avez défini dans server_name. Si vous comptez utiliser Up1 uniquement dans votre réseau local, pensez à modifier les fichiers hosts de vos machines !

Lancement d'Up1

Enfin, vous pouvez lancer Up1 :

cd /var/www/up1
./server &

Par défaut, ./server lance Up1 dans votre terminal. En utilisant le &, vous lancez Up1 en arrière-plan.

Cependant, pour stopper Up1, vous devrez "killer" son processus.

ps -ef | grep [.]/server
kill -9 {numero_du_PID_(2ème_colonne_de_ps)}

Si la première commande me retourne cette ligne :

root      4098   724  0 janv.20 tty1   00:00:00 ./server

Je devrais faire cette commande pour arrêter Up1 :

kill -9 4098

Script de démarrage

Pour que Up1 soit lancé en même temps que la machine, il faut créer un script de démarrage.

cd /etc/init.d/
vi up1

Insérez-y ce code (ce script a été trouvé sur le forum mondedie.fr) :

#!/bin/sh
### BEGIN INIT INFO
# Provides:          up1
# Required-Start:    networking
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: up1 Server Daemon
# Description:       Starts/Stops/Restarts the up1 Server Daemon
### END INIT INFO

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Serveur d'envoi d'images"
NAME=up1
USER=root
DIR=/var/www/up1
DAEMON=$DIR/server
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

cd $DIR
./server & $1

case "$1" in
    start)
        log_daemon_msg "Starting Up1" "server"
        if ! start-stop-daemon --background --start --quiet --exec $DIR}/server -- $1}; then
            log_end_msg 1
            exit 1
        fi
        log_end_msg 0
        ;;

Rendez exécutable le script créé :

chmod +x up1

Et ajouter le script à update.rc-d pour le démarrage automatique :

update-rc.d up1 defaults

Autres informations

Up1 ne possède pas d'interface pour supprimer les fichiers uploadés. Seule la personne qui a uploadé un fichier peut le supprimer à partir du même navigateur qu'elle a utilisée. En effet, Up1 stocke une clé de suppression dans le local storage du navigateur :

Si vous souhaitez faire du ménage régulièrement dans vos uploads, vous pouvez toutefois faire un simple script de purge sur votre serveur selon la date de création du fichier et qui se lance tous les jours afin de supprimer les fichiers anciens.

Bonus : utilisation de ShareX

ShareX est un logiciel très utilisés par ceux qui upload des images sur Internet. En autres choses, il permet de faire des captures d'écrans très facilement, de les retoucher et de les transférer sur un service d'hébergement d'images (Imagur, Flickr, ImageShack, ...).

Et justement, Up1 est compatible avec ShareX pour l'upload d'images !

Si vous n'avez pas déjà ShareX, rendez-vous ici pour le télécharger et l'installer.

Rendez-vous ensuite dans le menu Destinations > Mise en ligne d'images > Logiciel de mise en ligne de fichiers et choisissez "Up1" dans la liste.

Une fois Up1 sélectionné, ouvrez les Paramètres de destination dans le menu Destinations.

Une fenêtre s'ouvre dans laquelle vous allez choisir "Up1" dans la liste de gauche. Deux champs sont à renseigner :

  • Hôte : l'URL pour accéder à votre instance de Up1. Si vous n'avez pas fait la partie nginx, mettez l'adresse IP suivie du port (ex : 192.168.1.50:8099)
  • Clé API : la clé API disponible dans le fichier server.conf ou config.js de Up1 (api_key)

Voici un petit Gif vous montrant en live l'ajout de l'image sur le serveur Up1 :

Conclusion

Ce tuto était un peu long mais il aborde plusieurs éléments : l'installation de Up1 sur votre serveur, le paramétrage du serveur Web pour pouvoir y accéder facilement et l'utilisation du client ShareX en lien avec notre Up1.

Au bout de toutes ces étapes, vous aurez un bon service de partage d'images ou de textes sécurisé et que vous seul maîtrisez !