Aller au contenu

Configuration de FileBrowser avec un hôte virtuel Apache

FileBrowser permet d'afficher le contenu d'un répertoire situé sur un serveur P@ssw0rdr une interface web simple et efficace. Il est possible de télécharger ou déposer des fichiers, ou de partager un fichier en générant une URL de partage comme dans SharePoint par exemple. Il est possible de faire fonctionner FileBrowser avec une seule ligne de commande après installation : filebrowser -r /DOWNLOADS/ -p 8182 -a 0.0.0.0 Cependant la communication utilise http sans chiffrement, et l'utilisation d'un port exotique pose parfois problème. Voici donc comment configurer "proprement" FileBrowser.

Installation et configuration de FileBrowser

Installer FileBrowser

Installer FileBrowser en utilisant le script d'installation suivant :

curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash

Créer un utilisateur dédié

Créer un utilisateur dédié pour exécuter FileBrowser :

sudo adduser --disabled-password --gecos "" filebrowseruser

Configurer les répertoires et permissions

Créer les répertoires nécessaires pour FileBrowser :

sudo mkdir -p /etc/filebrowser
sudo mkdir -p /FileBrowser

Définir les permissions pour ces répertoires :

sudo chown -R filebrowseruser:filebrowseruser /etc/filebrowser /FileBrowser
sudo chmod -R 700 /etc/filebrowser /FileBrowser

Fichiers de configuration de FileBrowser

Créer un fichier de configuration JSON pour FileBrowser :

sudo nano /etc/filebrowser/filebrowser.json

Ajouter le contenu suivant :

{
  "port": 8182,
  "address": "127.0.0.1",
  "baseURL": "",
  "log": "stdout",
  "database": "/etc/filebrowser/filebrowser.db",
  "root": "/FileBrowser",
}

Création du service systemd

Créer un fichier de service systemd pour FileBrowser :

sudo nano /etc/systemd/system/filebrowser.service

Ajouter le contenu suivant :

[Unit]
Description=FileBrowser Service
After=network.target

[Service]
User=filebrowseruser
Group=filebrowseruser
ExecStart=/usr/local/bin/filebrowser -c /etc/filebrowser/filebrowser.json
WorkingDirectory=/FileBrowser
Restart=always

[Install]
WantedBy=multi-user.target

Recharger systemd et démarrez le service FileBrowser :

sudo systemctl daemon-reload
sudo systemctl start filebrowser.service
sudo systemctl enable filebrowser.service

Vérifier que le service fonctionne correctement :

sudo systemctl status filebrowser.service

Configuration DNS

Créer une entrée de type A sur le DNS pointant vers https://files.fabzh.eu

Configuration de Apache2

Création de l'hôte virtuel

Créer le fichier de configuration de l'hôte avec la commande nano /etc/apache2/sites-available/files.fabzh.eu.conf et insérer ceci :

<VirtualHost *:443>
    ServerName files.fabzh.eu

    SSLEngine on

    ProxyPreserveHost On
    ProxyPass / http://localhost:8182/
    ProxyPassReverse / http://localhost:8182/

    ErrorLog ${APACHE_LOG_DIR}/files.fabzh.eu-error.log
    CustomLog ${APACHE_LOG_DIR}/files.fabzh.eu-access.log combined
    SSLCertificateFile /etc/letsencrypt/live/files.fabzh.eu/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/files.fabzh.eu/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
Puis activer l'hôte avec la commande a2ensite files.fabzh.eu.conf.

Générer le certificat SSL

Générer le certificat SSL avec la commande certbot --apache -d files.fabzh.eu.

Debug

Exécuter FileBrowser en tant que filbrowseruser

Si le service ne démarre pas, vérifier comment se passe le démarrage de l'exécutable avec l'utilisateur dédié avec la commande suivante :

sudo -u filebrowseruser /usr/local/bin/filebrowser -c /etc/filebrowser/filebrowser.json

Ajouter un utilisateur en ligne de commande

Se positionner dans le répertoire contenant le fichier de configuration, arrêter le service FileBrowser, créer l'utilisateur, le rendre administrateur (optionnel) puis redémarrer le service :

cd /etc/FileBrowser
systemctl stop filebrowser.service
filebrowser users add TOTO 'P@ssw0rd!!'
filebrowser users update --perm.admin TOTO
systemctl start filebrowser.service

Sécurisation

Par défaut, l'utilisateur est admin et le mot de passe admin... A changer directement !