User Tools

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
services:filebrowser [2025/09/23 12:50] – [FileBrowser] willyservices:filebrowser [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-===== FileBrowser ===== 
- 
-__Note:__ i have started using [[services:alist|OpenList]] instead. 
- 
-There are a few software out there, but i like [[https://filebrowser.org/|File Browser]] a lot because it's lightweight, don't get in the way, is flexible and simple to use, but i do not like the default installation method of FileBrowser because it will install system-wide. I will show you how to install in a more customized way. 
- 
-==== Installation ==== 
- 
-Create a standard user to host the FileBrowser installation. You will most probably //never// run it as this user, but always as different users, to allow it manage files owned by those users. 
- 
-<code bash> 
-useradd -d /data/daemons/filebrowser -m filebrowser 
-</code> 
- 
-The default install approach is based on a auto executable web link ([[https://raw.githubusercontent.com/filebrowser/get/master/get.sh|here]]) which i do not recommend to use directly. Instead go to [[https://github.com/filebrowser/filebrowser/releases/|here]] and download the proper package for your architecture. Then: 
-<code bash> 
-su - filebrowser 
-mkdir bin 
-cd bin 
-tar xvf ../linux-amd64-filebrowser.tar.gz 
-</code> 
- 
-That's it!  
- 
-In addition you might want to create the following **.bashrc**: 
-<file - .bashrc> 
-#!/bin/bash 
- 
-export UMASK=0002 
-export PATH=$PATH:~/bin 
-</file> 
- 
-==== Authentication ==== 
- 
-<code bash> 
-filebrowser config set --auth.method=noauth 
-filebrowser config set --auth.method=proxy --auth.header=X-My-Header 
-</code> 
- 
-TBD 
- 
-==== Reverse Proxy ==== 
- 
-Running FileBrowser behind NGINX is easy, this is an example: 
-<file - filebrowser.conf> 
-  location /filebrowser/ { 
-        client_max_body_size 512M; 
- 
-        proxy_pass http://127.0.0.1:3002; 
-        proxy_http_version 1.1; 
- 
-        proxy_set_header Connection $http_connection; 
-        proxy_set_header Connection 'upgrade'; 
-        proxy_cache_bypass $http_upgrade; 
-        proxy_set_header Host $host; 
-        proxy_set_header X-Real-IP $remote_addr; 
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
-        proxy_set_header X-Forwarded-Proto $scheme; 
-        #proxy_set_header Authorization $remote_user; 
- 
-    } 
-</file> 
- 
-Remember to set the correct port as each instance of FileBrowser will have to run with it's own port, and set a reasonable location URL. This setup will also make use of FileBrowser user intergation with Proxy Authentication, if used, by uncommenting the last line. 
- 
-==== Running ==== 
- 
-I assume you want to run it as user **myuser**. 
- 
-As a general startup rule, the first time you need to run it once to create the needed configuration files and database, then you want to start it with a script and have it start automatically at boot. 
- 
-For initial configuration: 
-<code bash> 
-su - myuser 
-/data/daemons/filebrowser/bin/filebrowser -r "/data/MyFiles" -p 3005 -d "/home/myuser/filebrowser.db" 
-</code> 
- 
-As the starting script, since i use OpenRC, i have written the following init script wihch needs to be dropped to **/etc/init.d/filebrowser**: 
-<file filebrowser> 
-#!/sbin/openrc-run 
-# Copyright 2024 Willy Garidol 
-# Distributed under the terms of the GNU General Public License v3 
- 
-depend() { 
-        need localmount net 
-} 
- 
-FB_LOG_PATH="/var/log/filebrowser" 
-FB_SLOT="${SVCNAME#filebrowser.}" 
-FB_USER=${USER:-${FB_SLOT}} 
-FB_GROUP=${GROUP:-${FB_SLOT}} 
- 
-description=${DESCRIPTION:-Web based Filebrowser} 
-pidfile="/run/${RC_SVCNAME}.pid" 
-command_background=true 
-command="/data/daemons/filebrowser/bin/filebrowser" 
-command_args="-r \"${FOLDER}\" -p ${PORT} -b \"${BASE_URL}\" -d \"${DATABASE}\" -l ${FB_LOG_PATH}/${FB_SLOT}/filebrowser.log" 
-command_user="${FB_USER}:${FB_GROUP}" 
- 
-start_pre() { 
-        if [ "${FB_SLOT}" != "filebrowser" ] 
-        then 
-                test -e "${FB_LOG_PATH}" || mkdir "${FB_LOG_PATH}" 
-                test -e "${FB_LOG_PATH}/${FB_SLOT}" || { 
-                        mkdir "${FB_LOG_PATH}/${FB_SLOT}" 
-                } && chown -R ${FB_USER} "${FB_LOG_PATH}/${FB_SLOT}" 
-        else     
-                ebegin "Error: do not run this script, run a link to it!" 
-                eend 255 
-        fi 
-} 
-</file> 
- 
-make it executable! 
- 
-Now, create a file **/etc/conf.d/filebrowser.myshare**: 
-<file filebrowser.myshare> 
-BASE_URL="/files/MyFiles" 
-DATABASE="/homr/myuser/filebrowser.db" 
-DESCRIPTION="Common web archive" 
-FOLDER="/data/MyFiles" 
-GROUP="users" 
-PORT=3005 
-USER="filebrowser" 
-</file> 
- 
-And create the symlink, start it and add to autostart: 
-<code bash> 
-ln -s /etc/init.d/filebrowser  /etc/init.d/filebrowser.myshare 
-rc-update add filebrowser.myshare default 
-/etc/init.d/filebrowser.myshare start 
-</code> 
- 
-To add more shares, just create new links to the //filebrowser// init script and create the associated config file. 
- 
- 
-==== Updates ==== 
- 
-Download a new binary release (see link above), replace binary and restart service.