Send : Une alternative à Wetransfer autohébergée
Table des matières
Dans cet article, nous allons voir comment installer Send, un outil style "Wetransfer" autohébergeable.
C'est un fork de Firefox Send qui n'est plus maintenu :
Le projet : https://send.vis.ee et le code source : https://gitlab.com/timvisee/send
Ce tuto est fait sur Red Hat Enterprise Linux 9, mais cela fonctionnera de la même façon quelque soit le système.
Dans un premier temps, on a besoin d'un serveur web apache httpd + les modules SSL, de git, et de nodejs/npm :
On va ouvrir temporairement le port 1443 qui sera utile pour tester :
On va créer un user send et on va tout faire avec lui :
On se connect en tant que send :
On clone le projet :
On va dans le projet
On installe toutes les dépendances du projet :
On construit l'application :
Pour tester :
Dans notre navigateur, on va en http sur l'IP du serveur, port 1443 :
L'application ne supportant que le HTTP, on va mettre un reverse proxy devant.
Vous savez, j'aime bien apache httpd en tant que reverse-proxy
Donc je vais faire une config apache httpd, mais vous pouvez utiliser ce que vous voulez, comme par exemple nginx !
Ici les commandes sont à faire en tant que root !
On créé une config spécifique :
On y place ceci (adaptez évidemment avec votre domaine pour ServerName, pour les logs et idem pour vos certificats SSL) :
On n'oublie pas avec SELinux d'autoriser le serveur httpd d'accéder au réseau :
Rechargez le service httpd :
On n'oublie pas d'ouvrir le parefeu :
Toujours en tant que root, on va créer un service :
Voici le contenu classique :
On reload systemd :
Y a un p'tit bug avec les liens générés, je n'ai pas trouvé mieux que d'éditer le fichier de config :
Et de mettre en dur l'URL :
Par défaut, les fichiers sont uploadés dans /tmp, prévoyez de la place en conséquence ou on purra changer la destination :
On créé le dossier qui va bien :
On démarre le service :
On active bien tous les services (httpd et send) au reboot :
On accède à l'URL en HTTPS :
On peut envoyer notre fichier :
Une foi l'envoi terminé, on a le lien généré :
Et avec le lien généré, on peut le récupérer :
Introduction
Dans cet article, nous allons voir comment installer Send, un outil style "Wetransfer" autohébergeable.
C'est un fork de Firefox Send qui n'est plus maintenu :
Le projet : https://send.vis.ee et le code source : https://gitlab.com/timvisee/send
Ce tuto est fait sur Red Hat Enterprise Linux 9, mais cela fonctionnera de la même façon quelque soit le système.
Prérequis
Dans un premier temps, on a besoin d'un serveur web apache httpd + les modules SSL, de git, et de nodejs/npm :
Code BASH :
dnf install git httpd mod_ssl nodejs npm
On va ouvrir temporairement le port 1443 qui sera utile pour tester :
Code BASH :
firewall-cmd --add-port=1443/tcp
Installation
On va créer un user send et on va tout faire avec lui :
Code BASH :
useradd -m send
On se connect en tant que send :
Code BASH :
su - send
On clone le projet :
Code BASH :
git clone https://gitlab.com/timvisee/send.git
On va dans le projet
Code BASH :
cd send
On installe toutes les dépendances du projet :
Code BASH :
npm install
On construit l'application :
Code BASH :
npm run build
Tester
Pour tester :
Code BASH :
npm run prod
Dans notre navigateur, on va en http sur l'IP du serveur, port 1443 :
Un Reverse proxy devant
L'application ne supportant que le HTTP, on va mettre un reverse proxy devant.
Vous savez, j'aime bien apache httpd en tant que reverse-proxy
Donc je vais faire une config apache httpd, mais vous pouvez utiliser ce que vous voulez, comme par exemple nginx !
Ici les commandes sont à faire en tant que root !
On créé une config spécifique :
Code BASH :
vim /etc/httpd/conf.d/send.conf
On y place ceci (adaptez évidemment avec votre domaine pour ServerName, pour les logs et idem pour vos certificats SSL) :
Code :
<VirtualHost *:443>
ServerName send.linuxtricks.fr
DocumentRoot /var/www/html/
ServerAdmin [email protected]
ErrorLog /var/log/httpd/send.linuxtricks.fr-error_log
TransferLog /var/log/httpd/send.linuxtricks.fr-access_log
ServerSignature Off
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
#SSLCertificateFile /etc/letsencrypt/live/send.linuxtricks.fr/fullchain.pem
#SSLCertificateKeyFile /etc/letsencrypt/live/send.linuxtricks.fr/privkey.pem
RewriteEngine on
ProxyPreserveHost on
RequestHeader set X-Forwarded-Proto https
# Si fichier Normal, on le retourne
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]
# Conf Websocket
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:1443/$1 [P,L]
RewriteRule ^/(.*)$ http://127.0.0.1:1443/$1 [P,QSA]
# proxy
ProxyPassReverse "/" "http://127.0.0.1:1443"
ProxyPass "/" "http://127.0.0.1:1443"
</VirtualHost>
On n'oublie pas avec SELinux d'autoriser le serveur httpd d'accéder au réseau :
Code BASH :
setsebool -P httpd_can_network_connect on
Rechargez le service httpd :
Code BASH :
systemctl reload httpd
On n'oublie pas d'ouvrir le parefeu :
Code BASH :
firewall-cmd --add-service=https --permanent firewall-cmd --reload
Ajustements configuration application
Toujours en tant que root, on va créer un service :
Code BASH :
vim /etc/systemd/system/send.service
Voici le contenu classique :
Code :
[Unit]
Description=Service pour send
After=network.target
[Service]
WorkingDirectory=/home/send/send
ExecStart=/usr/bin/npm run prod
User=send
Restart=always
Environment=PATH=/usr/bin:/usr/local/bin
[Install]
WantedBy=multi-user.target
On reload systemd :
Code BASH :
systemctl daemon-reload
Y a un p'tit bug avec les liens générés, je n'ai pas trouvé mieux que d'éditer le fichier de config :
Code BASH :
vim /home/send/send/server/config.js
Et de mettre en dur l'URL :
Code :
base_url: {
format: 'url',
default: 'https://send.linuxtricks.fr',
env: 'BASE_URL'
},
Par défaut, les fichiers sont uploadés dans /tmp, prévoyez de la place en conséquence ou on purra changer la destination :
Code :
file_dir: {
format: 'String',
default: `/home/send/upload/`,
env: 'FILE_DIR'
},
On créé le dossier qui va bien :
Code BASH :
mkdir /home/send/upload chown send:send -R /home/send/upload
On démarre le service :
Code BASH :
systemctl start send.service
On active bien tous les services (httpd et send) au reboot :
Code BASH :
systemctl enable send.service httpd.service
Tester
On accède à l'URL en HTTPS :
On peut envoyer notre fichier :
Une foi l'envoi terminé, on a le lien généré :
Et avec le lien généré, on peut le récupérer :