Un serveur de fichiers simple

Je cherchais un moyen simple de partager des fichiers avec la famille. Si vous voulez tout savoir, ce sont en particulier des films Super8 de mon grand-père que j'ai scanné et que je voulais partager avec la famille.
La première solution que j'avais trouvée, c'était de faire une petite page html avec des balises media
. Ca marchait bien, mais assez relou à mettre à jour si je scannais une nouvelle bobine.
Et par hasard, je suis tombé sur Go Http Server. Il s'agit, comme son nom l'indique, d'un serveur codé en Go. Perso, je n'y connais rien en Go, et je n'avais pas envie d'installer tout un environnement de dev rien que pour ça.
Mais il existe une image Docker, et ça j'aime bien. Cependant, l'image fournie par le dev n'a pas été mise à jour depuis 4 ans. Donc j'ai fait ce que tout le monde aurait fait, j'ai construit mon image moi même, en modifiant un tout petit peu le Dockerfile d'origine (en particulier, changé l'image de base, et surtout, ne pas oublié de faire tourner apk update && apk upgrade, ce que le dev original avait oublié...)
Du coup, j'ai maintenant une image correcte, que j'utilise pour deux projets *.
Alors, comment ça marche, Et bien il suffit d'un petit docker-compose.yml, comme ce qui suit:
name: 8mm_web
services:
web:
image: abesnier/gohttpserver
container_name: 8mm_web
volumes:
- "./www/public/videos/:/app/public/"
environment:
- TZ=Europe/Paris
command: --auth-type http --auth-http username:password --conf /app/public/.ghs.yml
restart: always
networks:
- npm_default
networks:
npm_default:
name: nginxproxymanager_default
external: true
On référence l'image (image: abesnier/gohttpserver
), un chemin à partager (- "./www/public/videos/:/app/public/"
), un type d'authentification (--auth-type http --auth-http username:password
), et éventuellement un fichier de configuration (--conf /app/public/.ghs.yml
), qui permet en particulier d'exclure des fichiers à lister (dans cet exemple, j'exclue bien sûr le fichier de configuration en lui-même) :
title: "Le titre de la page"
theme: green
accessTables:
- regex: .ghs.yml
allow: false
Par défaut, ce serveur écoute sur le port 8000. Dans mon cas, je ne spécifie pas de port, car j'utilise Nginx Proxy Manager pour gérer les sous-domaines, certificats, etc... d'où la section network
dans mon docker-compose.
Et au final, cela me donne une page simple comme ceci:
* Dont un public, qui est collection de Tool Box Talks, servez-vous!