This commit is contained in:
parent
a50d4f2666
commit
a80c0490b7
2 changed files with 88 additions and 1 deletions
86
content/blog/23-filebrowser-auth.md
Normal file
86
content/blog/23-filebrowser-auth.md
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
---
|
||||||
|
date: 2025-02-04
|
||||||
|
title: filebrowser auth
|
||||||
|
description: look ma no keycloak
|
||||||
|
tags:
|
||||||
|
- programming
|
||||||
|
permalink: /blog/23/
|
||||||
|
---
|
||||||
|
|
||||||
|
_{{ description }}_
|
||||||
|
|
||||||
|
I FINALLY GOT IT WORKING
|
||||||
|
|
||||||
|
docker-compose.yml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
filebrowser:
|
||||||
|
image: "filebrowser/filebrowser:s6"
|
||||||
|
container_name: "filebrowser"
|
||||||
|
environment:
|
||||||
|
# filebrowser will run as this user, you may want to create a new one
|
||||||
|
- "PUID=1000"
|
||||||
|
- "PGID=1000"
|
||||||
|
restart: "unless-stopped"
|
||||||
|
volumes:
|
||||||
|
- "/data/filebrowser/srv:/srv"
|
||||||
|
- "/data/filebrowser/database:/database"
|
||||||
|
- "/data/filebrowser/config:/config"
|
||||||
|
ports:
|
||||||
|
- "8200:80"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
log into filebrowser as admin and do your setup, then:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker-compose down
|
||||||
|
sudo docker-compose run --entrypoint /bin/bash filebrowser
|
||||||
|
filebrowser config set --auth.method=proxy --auth.header=X-Remote-User
|
||||||
|
exit
|
||||||
|
sudo docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
filebrowser is now expecting to get a header with the authenticated username. We can give it that! install the pwauth authenticator:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get install libapache2-mod-authnz-external pwauth
|
||||||
|
a2enmod authnz_external
|
||||||
|
```
|
||||||
|
|
||||||
|
and configure it like this:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<VirtualHost *:443>
|
||||||
|
ServerName fb.hatspace.net
|
||||||
|
DefineExternalAuth pwauth pipe /usr/sbin/pwauth
|
||||||
|
<Proxy *>
|
||||||
|
Order deny,allow
|
||||||
|
Allow from all
|
||||||
|
AuthType Basic
|
||||||
|
AuthName "Login"
|
||||||
|
AuthBasicProvider external
|
||||||
|
AuthExternal pwauth
|
||||||
|
Require valid-user
|
||||||
|
RequestHeader set X-Remote-User %{REMOTE_USER}s
|
||||||
|
</Proxy>
|
||||||
|
<Location />
|
||||||
|
# filebrowser
|
||||||
|
ProxyPass http://localhost:8200/ nocanon
|
||||||
|
</Location>
|
||||||
|
</VirtualHost>
|
||||||
|
```
|
||||||
|
|
||||||
|
That `%{REMOTE_USER}s` is not a typo, the s is important! I think it stands for "ssl" or "secure" or something? You need it or the var will be null.
|
||||||
|
|
||||||
|
and viola! the server will now allow you to log in with your linux username and password, and filebrowser will show the correct files when you do!
|
||||||
|
|
||||||
|
References:
|
||||||
|
- <https://filebrowser.org/installation>
|
||||||
|
- <https://stackoverflow.com/questions/724599/setting-up-an-apache-proxy-with-authentication>
|
||||||
|
- <https://serverfault.com/questions/45278/authenticate-in-apache-via-system-account>
|
||||||
|
- <https://serverfault.com/questions/207301/get-the-authenticated-user-under-apache>
|
|
@ -18,6 +18,7 @@ main {
|
||||||
}
|
}
|
||||||
|
|
||||||
.post img {
|
.post img {
|
||||||
|
max-width: 100%;
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
@ -51,4 +52,4 @@ h2 {
|
||||||
|
|
||||||
.next {
|
.next {
|
||||||
font-size: xx-large;
|
font-size: xx-large;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue