Introduction
In this post we will perform a manual install of an application called File Browser. This small lightweight program that serves as a simple file server, allowing users to store and access their files over a network instead of storing them on individual devices. File Browser features a graphical web browser interface, making it easy to use across different platforms. Imagine easily accessing your files from almost any device.
One of the reasons for this post stems from my quest to replace the Nextcloud application. The direction the developers are heading in does not align with my current requirements.
File Browser is a minimalist application that focuses on one task, doing it well. It is significantly lighter than Nextcloud, while still meeting most of my core needs.
Since I am installing this application on a Debian 13 server, there are some important points to note. File Browser does not have a native Debian package, so the installation will deviate from the distribution’s standard practices. We will also be operating outside of the File-Browser standard installation recommendations as well. The reasoning for this will become clear as we progress. We will also be tinkering with system level settings, including creating a systemd service file and modifying well known port access.
This is an upfront warning that we will be operating without a safety net outside the comfort zone.
Our approach will be to;
- determine our setup needs
- create a Proxmox LXC container
- Install a base Debian 13 server
- Download the appropriate files
- Modify our server setup
- Install the software
- Create a system user
- Write configuration files
- Test the server.
Taking things in small chunks, one step at a time, will help ground less experienced users. The process is not hard, but it is somewhat involved.
Enough talking, lets get to it.
Collecting Information
As a first step, we need to gather some basic information related to creating the Linux Container (LXC) and the Debian Server on Proxmox.
Linux Containers (LXC) differ from full Virtual Machine (VM) implementations in that they use the host system kernel and system files. This makes them much lighter and resource efficient than a regular VM. However they tend to lack control over the host system functions, that might be necessary for some applications to work properly.
For our current build we want to download the Debian 13 template. Unlike a regular Net Install on a VM, the template is not updated as often, which means it is even more important for the system to be updated and upgraded.
For our container, we need to assign;
- Name (use the planned host name of the system)
- ID (only needed for Proxmox)
- Static IP Address (so we can always find our server)
- 2 CPU cores
- 2 GB of memory
- 512 GB storage (for the system, application, and file storage)
- Root password
For the Debian install we will need;
- non root user/password
- System user with no password
- sudo installed (give non root user temporary admin abilities)
Once the LXC container is complete, we will use a Secure Shell (ssh) to finish the install, as there can be issues with the Porxmox terminal emulators.
File Browser Website
We should take a look at the File Browser website to determine what we need to download and review any documentation and instructions.
The first thing to note is a warning that File Browser is in maintenance mode. If you follow the link to the github page it explains that File Browser has meet its objective and is basically feature complete. Therefore there will be no new features, and any updates will be in the nature of bug and error fixes only.
Going to the documentation, the first item is installation, which I find somewhat incomplete. Once I figured out what was going on, their instructions made more sense. However if you are new to this application, the installation instructions are probably not going to be useful.
There is also a section called first boot, which can also be somewhat confusing if you are not familiar with the application. At some point, you will want to read the configuration part of the documentation, though it will also make more sense once we have create a configuration file and have the application up and running.
It should also be noted that there are no real instructions in the downloaded archive, nor is there a MAN page for this application.
Setting up the LXC Container with Debian 13
Since this is basically file storage it should be very light weight. Before installing you may need to download the Debian 13 Container Template. To do this;
- Select the Local Drive of the Proxmox VE from the Data Center View.
- From the storage locations select CT Templates
- Use the Template button to download the Debian 13 Template
When you have the template, launch the “Create CT” and fill out the required information;
- In the General Tab enter a Container ID, Host Name, and root password (ID 502 and host Athena in my case, choose your own root password)
- From the Template tab select the Debian 13 Template from the drop down
- On the Disks tab enter the storage size (I am using 512 GB for OS, application, and file storage)
- On the CPU tab enter the number of cores (I am using 2)
- From the memory tab enter the RAM size (I am using 2GB)
- On the Network tab enter your static IP address and gateway address (for me they are 172.20.30.52/24 and 172.20.30.1)
- On the DNS tab keep the defaults
- On the Confirm tab review your setup and select finish
Once done, you can start the LXC container. We will want to log in as root, via Proxmox terminal, update software with apt, install sudo, and then create a non root user with sudo privileges.
apt update && apt upgrade
apt install sudo
useradd -m -c ‘Retired Techie’ -s /bin/bash rt
usermod -aG sudo rt
After that we can log in via ssh and proceed with the installation and configuration.
SSH Access via Terminal
Normally I tend to use Putty as my SSH client, however it has been acting up after the last update. So in this build we will use the SSH client built into the Linux terminal (Konsole is the KDE Plasma terminal in this video). Enter the following command to start an ssh session;
ssh user@IP_Address
In my case it is rt@172.20.30.52. You will be asked for a password. Note that on Debian systems, root ssh login is disabled by default, hence the need for a non root user and sudo. Also on Debian servers password entry entry is not sent to the screen as you type (security in case someone is looking over your shoulder).
Download
I am going to skip the script from the File Browser website which downloads and installs File Browser to /usr/local/bin, plus it also requires curl. From the Install page click on the link to the release page at the end of the Binary section. Then right click on the link and select the “copy link” option from the drop down menu. You can past the link to a file for later use if desired. Then paste the copied link into your terminal (Shift+Insert is a common method). After that modify the line to include wget to pull the archive to your servers home directory.
wget https://github.com/filebrowser/filebrowser/ releases/download/v2.57.1/linux-amd64-filebrowser.tar.gz
While on the web page, you should also acquire the sha256 hash (click the copy icon next to it) to validate the downloaded file.
Validate Download
To validate the archive we can generate a sha256 hash using the following command, replacing Archive File Name with the name of the download;
sha256sum <Archive File Name>
Paste the value copied from the website on a blank line, but do not hit return (you will delete this when finished). Compare this value to the one generated for the downloaded file. If the file is not corrupted, changed, or compromised then the values will be the same. If they are not, then do not use the downloaded file.
Expand the Archive
The File Browser archive is of the type “.tar.gz”. This means then folders and files were collected into one large file with tar, then compressed with gzip. The tar program has the necessary functionality to uncompress and extract the content.
tar -xvzf <Archive File Name>
The x option is for eXtract, the v option is for Verbose, the z option specifies gzip, and the f option points to the archive file name.
System Setup
Logically, according to the Linux File System Hierarchy, since this is not part of the Debian distribution, the binary should go in the /opt directory, instead of /usr/local/sbin where the installation script puts it. Since this is a file server our data files should reside in /srv. We need to make a couple of directories to hold the program files and the data files. Since they are outside of our home directory we need to use sudo.
sudo mkdir /opt/filebrowser
sudo mkdir /srv/cloudstore
Next we need to add a system user with no login to own the file browser process. This will prevent any users of File-Browser from accessing parts of the system beyond what is specified in the configuration.
useradd -r -d /opt/filebrowser -s /usr/sbin/nologin cloudshare
The -r option make this a system user (GID and UID below 1000). The -d option allows us to specify a non standard home directly, in this case where the program files are stored. The -s option specifies a nologin user.
We also need to have our new system user own the folders we created, so they can be accessed without invoking administrative rights.
chown -R cloudshare:cloudshare /opt/filebrowser
chown -R cloudshare:cloudshare /srv/cloudstore
Next we need to move file browser to /opt/filebrowser. Since the folder is now owned by cloudshare, we will need to use sudo.
sudo mv filebrowser /opt/filebrowser/filebrowser
File Browser Configuration
Once the file browser binary is in the correct place, it is time to build a configuration file for it. Technically we could simply use command line options, but that can lead to very long lines and some confusion. We can achieve better less confusing results by creating a configuration file. Then we can choose how we want to launch the program; command line for testing, and configuration file for long term system usage.
Choose any text editor you like, I am using nano which is built into a Debian base system. We will also need to use sudo, as we will place the configuration file in the same folder as the file-browser binary. In the configuration file we will set the IP address, the port, the working directory, and the location of the file browser database. Refer back to the configuration sections of the File Browser web site for more options.
sudo nano /opt/filebrowser/filebrowser.json
{
"port": 80,
"baseURL": "",
"address": "172.20.30.52",
"log": "stdout",
"database": "/opt/filebrowser/filebrowser.db",
"root": "/srv/cloudstore/"
}
SystemD Configuration
Since we want File browser to start automatically with our server, we need to create a systemd service file. Since this will be stored in /etc/systemd/system. We will need to use sudo with our text editor.
sudo nano /etc/systemd/system/filebrowser.service
[Unit]
Description=File Browser
After=network.target
[Service]
User=cloudshare
Group=cloudshare
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
ExecStartPre=/bin/sleep 10
ExecStart=/opt/filebrowser/filebrowser -c /opt/filebrowser/filebrowser.json
[Install]
WantedBy=multi-user.target
Lets talk about the various entries. Some are self explanatory, but others require some explanation. Under the Unit subsection we define the name of the service and when the program should start, after the network in this case.
In the Install subsection we enter a generic target for users who might want to use this service.
In the Service subsection we define the owning user and group, and the command used to launch the program. Note that on first use an error was generated, could not bind to port 80 (from the configuration section), a well known port and could not be assigned. The “AmbientCapabilities” and “CapabilityBoundingSet” entries are to allow binding to port 80 for this service. The service would also randomly fail to start as it was occurring to soon after network start, so a delay, using “ExecStartPre” was added to resolve this issue.
Enable Service
We will use systemctl to enable and start our new service. We will start with the status, then use enable to have it launch when the server restarts. And Start to start the service.
sudo systemctl status filebrowser
sudo systemctl enable filebrowser
sudo systemctl start filebrowser
sudo systemctl status filebrowser
We use status at the end to make sure everything is set properly and the service is running without error. We will also find our admin password this way. Make sure to record the password someplace, as we will need it in a bit.
You should also reboot and run status again to make sure the service starts automatically.
Testing
Testing is easy, just point a browser on your local network to the IP address, and if everything is working correctly you should see the the File Browser login page.
Use the username and password from the previous section to log in. The first thing you will want to do is change the admin password. After that poke around a bit. Drag and drop some files.
This is just a test to validate our file server is working. File Browser has a number of internal configuration settings you can adjust, as well as the configuration in the json file.
Take your time and explore. The point here is that File browser is up and working, and we can access our file server via our browser.
Conclusions
I find the File browser application to be very fast on my local network, a lot faster than Nextcloud was for uploading and downloading files. This is most likely due to much less overhead, and the single file already a binary. So I ahve no complaints, performance wise.
Feature wise, this application does one thing only, upload/download files form a network share. No calenders, email integration, contact lists, etc. A lot of features that can make programs like Nextcloud attractive. And I admit I played with those features, but I never really used them seriously. Meaning I did not really need them.
The only feature I really miss is the file sync, and before I understood how it worked on Nextcloud, it caused huge issues. But then again once I got it working it was a convenience, and not a necessity.
Bottom line, I am much better off now with a much faster program and less featuers. So thumbs up for File Browser!


