
Il vient toujours un moment où l’on a besoin d’échanger des fichiers avec un proche. J’avais jusqu’à présent utilisé Nextcloud, mais sa fonctionnalité de partage ne me convenait pas, alors je me suis mis à la recherche d’une solution alternative, si possible utilisant Docker, afin de l’installer sur mon NAS.
J’ai posé la question sur le forum d’OMV, et j’ai vite obtenu deux réponses, la première m’indiquait un site github très intéressant : Awesome self-hosted, qui liste des applications (en logiciel libre) qui peuvent être auto-hébergés (il y a même une page pour les logiciels non libres). La liste est impressionnante. La deuxième réponse m’indiquait plus précisément l’un d’entre eux, à savoir Gokapi, qui répondait parfaitement à mes attentes.
Voyons voir cette installation qui s’est révélée très simple, en commençant par la raison pour laquelle Nextcloud ne convient pas à ce besoin.
Nextcloud
Avec Nextcloud, lorsque l’on crée un lien de partage public, ce dernier va chercher automatiquement à ouvrir le fichier dans le navigateur, que ce soit une vidéo, un pdf, etc… : si le navigateur peut afficher le fichier, il le fera. Il y a bien un mini menu en haut à droite pour télécharger le fichier, mais ce n’est pas ce que je souhaite :

J’ai vu que l’on pouvait ajouter /download
au lien fourni, mais dans ce cas, le téléchargement démarre immédiatement. Or ce n’est pas le comportement que je souhaite : lorsque j’envoie un lien à un ami, je veux qu’un bouton s’affiche et lui propose de télécharger ce fichier.
De ce que j’ai pu lire sur le net, Nextcloud se considère comme une plateforme de collaboration et pas de téléchargement. Il ne faut donc rien attendre de ce côté, même si cette justification me paraît un peu tirée par les cheveux.
Gokapi
J’ai donc installé Gokapi. C’est parfait pour mon utilisation :
Gokapi est un serveur léger pour partager des fichiers, qui expirent après un certain nombre de téléchargements ou de jours. Il est similaire à l’ancien Firefox Send, à la différence que seul l’administrateur est autorisé à télécharger des fichiers.
Ses possibilités sont assez étendues : chiffrement, stockage cloud (AWS) ou local, expiration fichiers et effacement automatique, protection par mot de passe, partage de fichier par simple lien (et même QR Code)… Il dispose aussi d’une API. Tout est bien expliqué dans la documentation. Dans cet article, je vais juste faire une installation en mode Docker, et utiliser mon NAS pour le stockage, tout simplement.
Comme d’habitude, j’utilise Dockge pour installer le container. Le fichier compose.yaml
est très simple :
services:
gokapi:
image: f0rc3/gokapi:latest
container_name: gokapi
environment:
- TZ=Europe/Paris
- GOKAPI_MAX_FILESIZE=350000
ports:
- 53842:53842
volumes:
- /srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-data:/app/data
- /srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-config:/app/config
restart: always
networks: {}
Puis on démarre le container, qui affiche le lien vers la page de configuration :
gokapi | gokapi | ██████ ██████ ██ ██ █████ ██████ ██ gokapi | ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ gokapi | ██ ███ ██ ██ █████ ███████ ██████ ██ gokapi | ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ gokapi | ██████ ██████ ██ ██ ██ ██ ██ ██ gokapi | gokapi | Gokapi v2.1.0 starting gokapi | Please open http://127.0.0.1:53842/setup to setup Gokapi.
Dans mon cas, j’ai bien sûr remplacé l’adresse locale par celle de mon NAS, et j’ai complété l’installation en répondant aux questions de l’assistant. Il faut juste faire attention à l’URL publique (« public facing URL ») que l’on vous demande de saisir à l’étape Webserver 2/2 :

Comme pour d’autre containers, j’avais précédemment créé un sous-domaine chez mon hébergeur pour pointer sur mon NAS : gokapi.mondomaine.fr
, ajouté le sous-domaine à ma stack nextcloud-swag (pour obtenir un certificat), et créé un fichier gokapi.subdomain.conf
sur le serveur nginx.
$ cat gokapi.subdomain.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name gokapi.mondomaine.fr;
location / {
proxy_pass http://192.168.x.y:53842;
}
}
C’est donc cette adresse qu’il faut saisir pour que les liens soient accessibles de l’extérieur. Et voilà, tout fonctionne sans accroc. Pour plus de détails sur l’installation de Gokapi, vous pouvez aller voir cette page Installer Gokapi avec Docker, bien détaillée et expliquée.
Personnalisation
La documentation est plutôt bien faite, et comprend une partie Customization.
En mode docker, ça n’a pas l’air évident et je n’ai pas creusé plus que ça. On peut ajouter un volume supplémentaire au fichier compose.yaml pour monter un dossier supplémentaire appelé custom
, et le monter sur /app/custom :
volumes:
- /srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-data:/app/data
- /srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-config:/app/config
- /srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/custom:/app/custom
Dès lors, il suffit d’y créer un fichier custom.css
pour que son contenu soit appliqué à toutes les pages. Idem pour le JavaScript avec un fichier public.js
ou admin.js
(pour les pages liées à l’admin).
Pour avoir une favicon personnalisée, il suffit de placer dans ce dossier une image de type PNG et d’une taille 512×512. Cette fonctionnalité est récente (3j) et n’est pas encore disponible dans la dernière version release (v2.1.0 à ce jour).
J’ai lu ici que l’on pouvait aussi monter /app/templates
et /app/static
folders comme des volumes, y copier les fichiers sources (télécharger par exemple le fichier Gokapi-2.1.0.zip
pour ce faire), et modifier les fichiers (HTML/CSS) à l’intérieur de ces dossiers. Mais en cas de changement de version, il faudra sans doute refaire l’opération…
Conclusion
Voilà un service bien pratique d’installé. On peut très facilement partager un fichier, indiquer une date d’expiration ou un nombre de téléchargement maximum. Je me limiterai à cet usage, et pour cela, Gokapi est parfait.