Installer FileGator avec Docker
FileGator

Installer FileGator avec Docker

Table des matières

GitHub - filegator/filegator: Powerful Multi-User File Manager
Powerful Multi-User File Manager. Contribute to filegator/filegator development by creating an account on GitHub.

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?

Arrêtes de faire le con et continue ton article, abruti!

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

  1. Créez votre docker-compose.yml dans le dossier ou vous comptez installer FileGator:
sudo nano docker-compose.yml
  1. 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
  1. Maintenant nous allons créer le fichier de configuration:
sudo nano configuration.php
  1. 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.
  1. On installe l'application:
docker-compose up -d

ou avec docker-compose V2:

docker compose up -d
  1. 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:

zarev

->.<-
🐧 Passionné de self-hosting, je partage ce que je connais et me nourris des connaissances des bonnes âmes qui partagent avec moi. Soutenons l'utilisation des apps open source et leurs développeurs.