Posts

Filebrowser as a Google Drive replacement

Mar 13, 2024 | 4 minutes to read

I’ve been working on de-Googling my life and one big thing I was looking to replace is the docs / Drive feature. They make it soo good and easy and free that it seems hard to replace, but it turns out that’s not true. I already have a home server running some other local apps – Immich for photos, Paperless for documents I want to keep long term, FreshRSS for my news feeds and so on – so getting an app for storing random files was the next step.

I found FileBrowser and it’s just what I needed. It’s a very simple but powerful enough self-hosted, FOSS application you can run on pretty much any PC you have handy. Some people run it on their own personal computer but I’m running it in Docker on my little Intel NUC 10. It supports multiple users, files and folders and sharing among users. When you upload a file into its GUI in a browser, the files are stored in a folder (you chose for this purpose) just the same, so you can still back them up from there however you like. Really simple but that’s a plus in this case. Less for me to support later on.

So now, from my desktop PC or my phone, I can visit the site and drop a file in there at any time. I can organize the files any way I like. And the app even has a great, fast search function so I can find files really easily in the future.

Their installation instructions are OK but for the Docker install, they’re lacking. They don’t mention a couple of things I had to do, to make the app run properly in Docker, so here is a list of the steps I had to follow to set this all up.

cd {someplace you want to install the app to}

mkdir filebrowser

cd filebrowser

Now you’ve got a home for the set up files, database and a settings file. So create those next.

touch filebrowser.db

touch settings.json

If you don’t create these files first and just run the command they give on their web site, you get errors from Docker.

Now edit the settings.json and give it some default settings:

nano settings.json

Paste this text into the file and save with Ctrl-X, Y, (Enter):

NB: Don’t change any of this! You don’t want to configure your server from this file; do that in the docker command file we’ll create next instead!

{

"port": 80,

"baseURL": "",

"address": "",

"log": "stdout",

"database": "/database/filebrowser.db",

"root": "/srv"

}

I then made a shell script to run the filebrowser command

nano run-filebrowser.sh

Contents for that script:

#!/bin/bash

docker run \

--name filebrowser \

-v /media/peter/filebrowser:/srv \

-v /home/peter/filebrowser/filebrowser.db:/database/filebrowser.db \

-v /home/peter/filebrowser/settings.json:/config/settings.json \

-e PUID=$(id -u) \

-e PGID=$(id -g) \

-p 3006:80 \

--detach \

filebrowser/filebrowser:s6

Explanation:

--name

  • whatever you want the app to be listed as in the ‘docker stats’ list

-v /media/peter/filebrowser:/srv \

  • Before the colon, the path you want all of the files on the server to be stored in. Make sure your user has permission to create files in that path.
  • I’m pointing this at my external SSD.
  • Don’t change the text after the colon.

-v /home/peter/filebrowser/filebrowser.db:/database/filebrowser.db \

  • Before the colon, the path to the database file you created above.
  • Don’t change the text after the colon.

-v /home/peter/filebrowser/settings.json:/config/settings.json \

  • Before the colon, the path to the settings file you created above.
  • Don’t change the text after the colon.

-e PUID=$(id -u) \

-e PGID=$(id -g) \

  • If you keep this, the app will run as your own user, with the same permissions to all related files. Should be OK as is.

-p 3006:80 \

  • Change the port # before the colon to some open port on your server. Don’t change the number after the colon.

--detach \

filebrowser/filebrowser:s6

  • Run the app and then detach from the process so you can continue working at the terminal.

When that’s done, just make the script executable:

chmod +x run-filebrowser.sh

With that, you should be able to execute the run-filebrowser.sh script to get the app fired up. It will download the dockerhub copy of itself and get everything started.

Now you can go to the server’s name or IP address in a browser. For me, that looks like:

http://192.168.68.68:3007

YMMV.

Login there with username ‘admin’ and password ‘admin’, and get started. Add users and configure settings on the Settings page. Then add files!

If you run into any trouble, their Issues page on github.com is very helpful. Cheers,


You can leave a comment on this post here.