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 fichiersmaximum_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
ouconfig.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 !