This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ===== FileBrowser ===== 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.