miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-11-07 10:10:26 +01:00
74 lignes
4,7 Kio
HTML
74 lignes
4,7 Kio
HTML
<!--
|
|
title: FileBrowser
|
|
description:
|
|
published: true
|
|
date: 2021-04-30T09:09:52.967Z
|
|
tags:
|
|
editor: ckeditor
|
|
dateCreated: 2021-04-30T08:10:24.443Z
|
|
-->
|
|
|
|
<figure class="image image_resized" style="width:100%;"><img src="https://raw.githubusercontent.com/filebrowser/logo/master/banner.png"></figure>
|
|
<p> </p>
|
|
<h1>Héberger des fichiers en lecture seule avec l'interface Web FileBrowser</h1>
|
|
<p>Si vous souhaitez partager des fichiers de manière permanente, une interface Web est probablement le plus simple à utiliser pour vos utilisateurs. </p>
|
|
<p><a href="https://github.com/filebrowser/filebrowser">Filebrowser</a> est une interface Web pour accéder à des fichiers, elle vous permet de faire la plupart des choses avec les fichiers: télécharger, partager, modifier, etc. </p>
|
|
<p>Nous allons voir les étapes consistant à n'autoriser aucune de ces options et à autoriser uniquement l'accès anonyme en lecture seule à un répertoire à l'aide de l'interface Web de FileBrowser.</p>
|
|
<p> </p>
|
|
<h2>Création du Dockerfile</h2>
|
|
<p>Le projet FileBrowser met à disposition une <a href="https://hub.docker.com/r/filebrowser/filebrowser">image Docker</a> avec leur<a href="https://github.com/filebrowser/filebrowser/blob/master/Dockerfile"> binaire intégré</a> directement. Nous devons faire presque la même chose, mais le faire fonctionner sans authentification et fonctionner en tant qu'utilisateur normal au lieu de root (mauvaise pratique).</p>
|
|
<p>Dans un fichier <a href="https://hastebin.papamica.com/ukukomelut">Dockerfile</a>, nous commençons par utiliser l'image alpine complète et en copiant le binaire de FileBrowser à partir de l'image docker <code>filebrowser/filebrowser</code> :</p>
|
|
<pre><code class="language-plaintext">FROM filebrowser/filebrowser as fb
|
|
FROM alpine:latest
|
|
COPY --from=fb /filebrowser /opt/app/filebrowser</code></pre>
|
|
<p>Nous ne voulons pas que le processus s'exécute en tant que root, nous créons donc un nouvel utilisateur et mettons à jour les certificats SSL :</p>
|
|
<pre><code class="language-plaintext">RUN apk --update add ca-certificates bash \
|
|
&& adduser -h /opt/app -D app</code></pre>
|
|
<p>Maintenant, pour le script entrypoint : nous avons besoin de lancer FileBrowser avec la configuration souhaitée mais aussi de créer un utilisateur pour l'option <code>--auth.method='noauth'</code> (voir l'<a href="https://github.com/filebrowser/filebrowser/issues/700">issue #700</a>)</p>
|
|
<pre><code class="language-plaintext">#!/bin/bash
|
|
./filebrowser config init --port 4000 --address "" --baseurl "" --log "stdout" --root="/srv" --auth.method='noauth' --commands "" --lockPassword --perm.admin=false --perm.create=false --perm.delete=false --perm.execute=false --perm.modify=false --perm.rename=false --signup=false
|
|
./filebrowser users add anonymous "anonymous"
|
|
exec ./filebrowser</code></pre>
|
|
<p>Nous pouvons désormais finir notre <a href="https://hastebin.papamica.com/ukukomelut">Dockerfile</a> :</p>
|
|
<pre><code class="language-plaintext">COPY entrypoint /opt/app/entrypoint
|
|
RUN chmod a+x /opt/app/entrypoint
|
|
|
|
VOLUME /srv
|
|
EXPOSE 4000
|
|
USER app
|
|
WORKDIR /opt/app
|
|
|
|
|
|
ENTRYPOINT [ "/opt/app/entrypoint" ]</code></pre>
|
|
<p>Vous retrouverez le Dockerfile complet ici : <a href="https://hastebin.papamica.com/ukukomelut">Dockerfile</a></p>
|
|
<p> </p>
|
|
<h2>Création du Docker-Compose</h2>
|
|
<p>Maintenant que nous avons notre Dockerfile, nous pourrions démarrer notre container avec ces commandes Docker :</p>
|
|
<pre><code class="language-plaintext">docker build --tag hostfiles .
|
|
docker run --detach -p 80:4000 --restart=always --volume /apps/files:/srv:ro hostfiles</code></pre>
|
|
<p>Mais je préfère toujours avoir un Docker-Compose, voici donc ce fameux sésame :</p>
|
|
<pre><code class="language-plaintext">version: '2'
|
|
|
|
services:
|
|
filebrowser:
|
|
image: hostfiles:latest # Nom de l'image précédemment créée avec la commande "docker build"
|
|
container_name: filebrowser-partage
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /DATA:/srv:ro # Localisation des données à partager</code></pre>
|
|
<p>Pour lancer le container :</p>
|
|
<pre><code class="language-plaintext">docker-compose up -d</code></pre>
|
|
<p> </p>
|
|
<h2>Résumé</h2>
|
|
<p>Vous devez avoir cette arborescence de fichiers :</p>
|
|
<pre><code class="language-plaintext">.
|
|
├── docker-compose.yml
|
|
├── dockerfile
|
|
└── entrypoint</code></pre>
|
|
<p>Avec :</p>
|
|
<ul>
|
|
<li><a href="https://hastebin.papamica.com/esikuwunoz"><code>docker-compose.yml</code></a> ou <a href="https://hastebin.papamica.com/nobuduzimu"><code>docker-compose.yml</code></a> (avec Traefik et Loki)</li>
|
|
<li><a href="https://hastebin.papamica.com/ukukomelut"><code>dockerfile</code></a></li>
|
|
<li><a href="https://hastebin.papamica.com/deruxizeqe"><code>entrypoint</code></a></li>
|
|
</ul>
|
|
<p> </p>
|