Il n'y a pas toujours besoin que ce soit compliqué pour que ce soit bien!
Voilà, merci de m'avoir lu. C'était bien non?
Aucun humour ce chien...
Aujourd’hui nous allons parler de FileGator! Un gestionnaire de fichiers et dossiers très facile d'utilisation, léger et performant sans être radin sur les options.
Que demander de plus? Quoi? Ah oui... le tutoriel!
En avant!
⚡Caractéristiques
- Opérations de base sur les fichiers prises en charge: Copier, déplacer, renommer, modifier, créer, supprimer, prévisualiser, compresser, décompresser, télécharger, charger.
- Glisser-déposer.
- Barre de progression, la pause et la reprise.
- L'uplod de fichier est fragmenté, vous devriez donc pouvoir télécharger des fichiers volumineux quelle que soit la configuration de votre serveur.
- Si cela est autorisé, les utilisateurs peuvent télécharger plusieurs fichiers ou dossiers à la fois.
- 29 langues, français inclus!
L'installation
- Créez votre docker-compose.yml dans le dossier ou vous comptez installer FileGator:
sudo nano docker-compose.yml
- Collez ça dedans en prenant soin d'adapter le port et les volumes suivant votre configuration:
version: '2'
services:
filegator:
container_name: filegator
image: filegator/filegator
restart: always
ports:
- "9977:8080"
volumes:
- ./files:/var/www/filegator/repository
- ./configuration.php:/var/www/filegator/configuration.php
- Maintenant nous allons créer le fichier de configuration:
sudo nano configuration.php
- On va coller ça dedans, j'ai déjà réglé la config pour que votre application soit en français et la date dans notre sens à nous. 👍
<?php
return [
'public_path' => APP_PUBLIC_PATH,
'public_dir' => APP_PUBLIC_DIR,
'overwrite_on_upload' => false,
'timezone' => 'UTC', // https://www.php.net/manual/en/timezones.php
'download_inline' => ['pdf'], // download inline in the browser, array of extensions, use * for all
'lockout_attempts' => 5, // max failed login attempts before ip lockout
'lockout_timeout' => 15, // ip lockout timeout in seconds
'frontend_config' => [
'app_name' => 'FileGator',
'app_version' => APP_VERSION,
'language' => 'french',
'logo' => 'https://filegator.io/filegator_logo.svg',
'upload_max_size' => 100 * 1024 * 1024, // 100MB
'upload_chunk_size' => 1 * 1024 * 1024, // 1MB
'upload_simultaneous' => 3,
'default_archive_name' => 'archive.zip',
'editable' => ['.txt', '.css', '.js', '.ts', '.html', '.php', '.json', '.md'],
'date_format' => 'DD/MM/YY hh:mm:ss', // see: https://momentjs.com/docs/#/displaying/format/
'guest_redirection' => '', // useful for external auth adapters
'search_simultaneous' => 5,
'filter_entries' => [],
],
'services' => [
'Filegator\Services\Logger\LoggerInterface' => [
'handler' => '\Filegator\Services\Logger\Adapters\MonoLogger',
'config' => [
'monolog_handlers' => [
function () {
return new \Monolog\Handler\StreamHandler(
__DIR__.'/private/logs/app.log',
\Monolog\Logger::DEBUG
);
},
],
],
],
'Filegator\Services\Session\SessionStorageInterface' => [
'handler' => '\Filegator\Services\Session\Adapters\SessionStorage',
'config' => [
'handler' => function () {
$save_path = null; // use default system path
//$save_path = __DIR__.'/private/sessions';
$handler = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler($save_path);
return new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage([
"cookie_samesite" => "Lax",
"cookie_secure" => null,
"cookie_httponly" => true,
], $handler);
},
],
],
'Filegator\Services\Cors\Cors' => [
'handler' => '\Filegator\Services\Cors\Cors',
'config' => [
'enabled' => APP_ENV == 'production' ? false : true,
],
],
'Filegator\Services\Tmpfs\TmpfsInterface' => [
'handler' => '\Filegator\Services\Tmpfs\Adapters\Tmpfs',
'config' => [
'path' => __DIR__.'/private/tmp/',
'gc_probability_perc' => 10,
'gc_older_than' => 60 * 60 * 24 * 2, // 2 days
],
],
'Filegator\Services\Security\Security' => [
'handler' => '\Filegator\Services\Security\Security',
'config' => [
'csrf_protection' => true,
'csrf_key' => "123456", // randomize this
'ip_allowlist' => [],
'ip_denylist' => [],
'allow_insecure_overlays' => false,
],
],
'Filegator\Services\View\ViewInterface' => [
'handler' => '\Filegator\Services\View\Adapters\Vuejs',
'config' => [
'add_to_head' => '',
'add_to_body' => '',
],
],
'Filegator\Services\Storage\Filesystem' => [
'handler' => '\Filegator\Services\Storage\Filesystem',
'config' => [
'separator' => '/',
'config' => [],
'adapter' => function () {
return new \League\Flysystem\Adapter\Local(
__DIR__.'/repository'
);
},
],
],
'Filegator\Services\Archiver\ArchiverInterface' => [
'handler' => '\Filegator\Services\Archiver\Adapters\ZipArchiver',
'config' => [],
],
'Filegator\Services\Auth\AuthInterface' => [
'handler' => '\Filegator\Services\Auth\Adapters\JsonFile',
'config' => [
'file' => __DIR__.'/private/users.json',
],
],
'Filegator\Services\Router\Router' => [
'handler' => '\Filegator\Services\Router\Router',
'config' => [
'query_param' => 'r',
'routes_file' => __DIR__.'/backend/Controllers/routes.php',
],
],
],
];
Vous pouvez modifier ces lignes à votre meilleure convenance:
- 'language' => 'french', => remplacez french par une autre langue si vous voulez.
La liste des codes de langues disponibles: ici.
- 'logo' => 'https://filegator.io/filegator_logo.svg', => si vous voulez changer le logo de base par le vôtre, indiquez à la place de https://filegator.io/filegator_logo.svg l'URL de votre logo.
- 'upload_max_size' => 100 * 1024 * 1024, // 100MB => cette option sert à définir la taille maximale des fichiers qui peuvent être envoyés, changez 100 par la valeur que vous souhaitez, 1024, par exemple, pour un fichier de 1Go.
- 'upload_simultaneous' => 3, => réglez le nombre simultané de fichiers que vous pouvez envoyer en même temps.
- 'default_archive_name' => 'archive.zip', => cette option permet de donner le nom par défaut quand vous créez une archive.
- On installe l'application:
docker-compose up -d
ou avec docker-compose V2:
docker compose up -d
- Rendez-vous sur l'ip:port, suivant l'IP de votre serveur local et du port choisi, 9977 par défaut:
https://ip:9977/
Appliquez cette commande afin de ne pas avoir de problème pour envoyer les fichiers:
docker exec -u root filegator chown -R www-data:www-data /var/www/filegator/repository/
Première connexion
Il y a un compte administrateur par défaut:
- Username => admin
- Password => admin123
Par mesure de sécurité, il est préférable de changer le compte pas défaut. Rendez-vous au point suivant.
Création, édition et permissions des utilisateurs
Changer le mot de de passe
Si vous voulez changer le mot de passe, cliquez sur Admin (qui change suivant le nom de votre compte) en haut à droite:
Entrez votre ancien mot de passe, ensuite, le nouveau et cliquez sur Enregistrer:
Créer un utilisateur
En haut à droite, cliquez sur Utilisateur:
Cliquez sur + Nouveau:
Une fenêtre apparaît sous vos yeux ébahis:
Vous avez les options suivantes:
- Rôle => Utilisateur ou Administrateur.
- Nom d'utilisateur => choisissez un nom d'utilisateur pour se connecter.
- Nom => Donnez un petit nom à votre utilisateur.
- Mot de passe => Choisissez un mot de passe fort
- Dossier principal => ⚠️ Il faudra avoir créé au préalable un dossier directement de l'interface de FileGator pour le dédier à votre utilisateur.
- Permissions => Définissez les permissions.
Ce qui donne:
Cliquez sur Enregistrer pour terminer.
Supprimer un utilisateur
Toujours dans la partie Utilisateur, en bout de ligne vous avez une magnifique poubelle qui ne laisse rien présager de bon pour l'utilisateur si vous cliquez dessus:
Gestion des fichiers et dossiers
Il y a deux modes, si je peux le dire comme ça, de manière individuelle ou par lot.
De manière individuelle
Rien de bien compliqué, en bout de ligne cliquez sur les ...
Vous avez les options classiques qui vont bien.
Par lot
Rien de compliqué non plus, cochez les cases correspondants aux fichiers et/ou dossiers que vous voulez manipuler, vous aurez les options qui vont apparaitre en dessous d'Accueil:
Créer un dossier ou un fichier
Cliquez sur + Nouveau sur votre tableau de bord et sélectionnez soit Dossier ou Fichier:
Nommez votre dossier/fichier et cliquez sur Créer:
Éditer des fichiers
FileGator permet l'édition de fichiers directement depuis l'application. Voici les formats pris en charge:
.txt, .css, .js, .ts, .html, .php, .json, .md
Il suffit tout simplement de cliquer sur le fichier...
... et de l'éditer:
Pause et reprise d'un upload
FileGator permet de mettre en pause et de reprendre l'upload d'un fichier.
C'est très simple, pendant l'upload, cliquez sur l'icône ⏸️:
Et pour la reprise cliquez sur l'icône ▶️:
Partager un fichier ou un dossier
Vous avez le loisir de partager un fichier ou un dossier. Rien de plus simple, en bout de ligne, cliquez sur les ... et choisissez l'option Copier le lien:
Utiliser FileGator comme gestionnaire de fichiers/dossiers existants
Imaginons que je veuille avoir accès aux dossiers de mes containers, je vais donc adapter le docker-compose en lui indiquant ou se trouvent tous mes dossiers, dans ce cas-ci: /srv/appdata:
version: '2'
services:
filegator:
container_name: filegator
image: filegator/filegator
restart: always
ports:
- "9977:8080"
volumes:
- /srv/appdata:/var/www/filegator/repository
- ./configuration.php:/var/www/filegator/configuration.php
Appliquez cette commande afin de ne pas avoir de problème pour envoyer les fichiers:
docker exec -u root filegator chown -R www-data:www-data /var/www/filegator/repository/
Ce qui donne: