Un serveur de fichiers simple

March 10th at 12:20pm PapyCasu

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:

gohttpserver1

* Dont un public, qui est collection de Tool Box Talks, servez-vous!

Gravatar

papycasu est un quadra qui n'y connait pas grand chose au jeux video mais qui s'y met quand même.