mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-10-16 13:09:25 +02:00
fix(filebrowser_quantum): keep server.database siblings, sanitize direct XFF
Set only server.database.path (dropping migrateFrom) so user-set keys such as activity survive, and replace X-Forwarded-For on the published 8071 listener now that FileBrowser trusts proxy headers for login rate limits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
- Users, shares and settings in `/config/database.db` are migrated to `/config/database.sqlite` on first start.
|
||||
- `http.trustProxyHeaders` is set to `true`, because the add-on always runs behind nginx on a subpath.
|
||||
- The container healthcheck now uses upstream's `/health` endpoint.
|
||||
- Direct access on port 8071 no longer passes on a client-supplied `X-Forwarded-For`, so the IP-based login lockout cannot be bypassed now that proxy headers are trusted. Ingress keeps the forwarded chain.
|
||||
|
||||
## 2.0.0 (2026-10-10)
|
||||
- Update to latest version from gtsteffaniak/filebrowser (changelog : https://github.com/gtsteffaniak/filebrowser/releases)
|
||||
|
||||
@@ -87,7 +87,7 @@ if [ -f "$FILEBROWSER_CONFIG" ] && [ "$(yq e '.server.database | tag' "$FILEBROW
|
||||
cp "$FILEBROWSER_CONFIG" "${FILEBROWSER_CONFIG}.v1.bak"
|
||||
yq e -i '
|
||||
.http *= (.server | pick(["socket", "tlsCert", "tlsKey", "externalUrl", "internalUrl", "disableWebDAV"])) |
|
||||
del(.server.port, .server.listen, .server.baseURL, .server.socket, .server.tlsCert, .server.tlsKey, .server.externalUrl, .server.internalUrl, .server.disableWebDAV) |
|
||||
del(.server.database, .server.port, .server.listen, .server.baseURL, .server.socket, .server.tlsCert, .server.tlsKey, .server.externalUrl, .server.internalUrl, .server.disableWebDAV) |
|
||||
del(.http.trustedHeaders, .integrations.media.exiftoolPath, .userDefaults) |
|
||||
del(.server.sources[].config.conditionals, .server.sources[].config.indexingIntervalMinutes) |
|
||||
del(.server.sources[].config.rules[].fileNames, .server.sources[].config.rules[].folderNames)
|
||||
@@ -106,8 +106,7 @@ bashio::log.info "... set server"
|
||||
yq e -i ".http.port = 8080" "$FILEBROWSER_CONFIG"
|
||||
yq e -i ".http.listen = \"0.0.0.0\"" "$FILEBROWSER_CONFIG"
|
||||
yq e -i ".http.trustProxyHeaders = true" "$FILEBROWSER_CONFIG"
|
||||
# Whole-object assignment also drops migrateFrom once the migration is done
|
||||
yq e -i ".server.database = {\"path\": \"/config/database.sqlite\"}" "$FILEBROWSER_CONFIG"
|
||||
yq e -i ".server.database.path = \"/config/database.sqlite\" | del(.server.database.migrateFrom)" "$FILEBROWSER_CONFIG"
|
||||
# Import the 1.x BoltDB until the SQLite database exists
|
||||
if [ -s /config/database.db ] && [ ! -s /config/database.sqlite ]; then
|
||||
yq e -i ".server.database.migrateFrom = \"/config/database.db\"" "$FILEBROWSER_CONFIG"
|
||||
|
||||
@@ -10,7 +10,7 @@ proxy_set_header Accept-Encoding "";
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-For $fb_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
# FileBrowser trusts X-Forwarded-For (http.trustProxyHeaders) for login rate
|
||||
# limits: keep the chain from the Supervisor ingress proxy, but replace
|
||||
# whatever a client sends straight to the published port
|
||||
map $server_port $fb_forwarded_for {
|
||||
8072 $remote_addr;
|
||||
default $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 0.0.0.0:8072 default_server;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user