Repository navigation
Releases
v0.4.7
Fixed
- Unique registration email — open registration (with or without admin approval) rejects an email that is already used by an active, pending, or disabled account. The same check applies when an administrator creates or edits a user. After a pending account is rejected and deleted, that email can be used again. Blank emails on admin-created users remain allowed on more than one account.
- Pending sign-up message — when registration requires admin approval, the sign-up page now shows “Your account is waiting for admin approval” after a successful request. The confirmation previously sat inside the form and disappeared when the form was hidden.
v0.4.6
Fixed
- Users table Actions — the Actions column is wide enough to keep Edit, Approve, Reject, and Del on one row, instead of wrapping when a pending user has extra buttons.
v0.4.5
Fixed
- Public share password field — opening a public share link that has no password no longer shows the password unlock form. A CSS rule on
.panel formwas overriding the HTMLhiddenattribute.
Added
- README screenshots — the GitHub README now includes current login and file-browser screenshots.
- TrueNAS Apps listing in the README — the GitHub README now documents the official TrueNAS Apps Market Community listing and how to install Filehub from the TrueNAS Apps UI.
Changed
- Published image tag examples — README pull and compose examples now use
0.4.5.
v0.4.4
Fixed
- Mobile Settings spacing — on narrow screens the Settings section tabs no longer stretch to fill the viewport, which had left large empty gaps above and below the tab row.
v0.4.3
Added
- Trusted-proxy client IPs for login, password-reset, and share-link unlock rate limits (
TRUSTED_PROXIES; loopback is always trusted). Spoofed forwarded headers from untrusted peers are ignored. - Share-link unlock rate limit (same per-IP limiter as login, default 10/minute; HTTP 429 when exceeded).
- Settings → Active sessions: list and revoke your sessions, or revoke all other sessions. Session tokens are never returned to the client.
- Settings → Audit log (admins): sign-in success and failure (no passwords), public link create/revoke, shared-folder grant changes, and password-reset requests (no tokens).
- Per-account lockout after 10 failed logins for a username (15-minute window by default; persisted in the database; further attempts do not extend the window).
Changed
- Scriptable types (HTML, SVG, XML, JavaScript, and similar) are served as attachments with
application/octet-stream. Images, video, and PDF can still be previewed inline. Content-Disposition filenames use RFC 5987 encoding. - Password-reset URLs use
PUBLIC_BASE_URLwhen set, otherwiseHost(neverX-Forwarded-Host).X-Forwarded-Protois honored only from a trusted proxy. Public HTTPS deployments must setPUBLIC_BASE_URLandSECURE_COOKIES=true. Set HSTS on the reverse proxy. - TOTP secrets are encrypted at rest with a key derived from
SESSION_SECRET. Existing plaintext secrets are migrated automatically. - Document security headers: Content-Security-Policy (
script-src/style-src 'self'; nounsafe-inline), Permissions-Policy, and Cross-Origin-Opener-Policy. Same-origin framing remains allowed for raw/thumbnail previews.
v0.4.2
Added
- Recycle bin count badge: when the recycle bin has items, a compact count appears to the right of the Recycle bin label. Counts above 99 display as 99+. The badge is hidden when the bin is empty.
- Unraid Community Apps template now includes current login and file-browser screenshots.
v0.4.1
Fixed
- Recycle bin actions: Restore and Empty recycle bin only appear inside the recycle bin. Copy and Share link are hidden there, and remain available in normal folders.
Changed
- Unraid Community Apps template category is now Tools › Utilities and Productivity.
v0.4.0
Filehub v0.4.0 is a feature release.
Highlights
- Container images for linux/amd64 and linux/arm64 (GHCR; Docker Hub when secrets are set). Tags omit the
vprefix (0.4.0). - Quota counts the user’s home plus files they wrote into shared folders. Legacy share files with no recorded writer stay unbilled. Recycle-bin items still count until purged.
- Hardware thumbnail selection:
THUMB_HWACCEL=auto|off|vaapi|nvdec(legacyTHUMB_VAAPI=truemeans auto). Software fallback is unchanged. - Docker
PUID/PGID(and optionalUMASK); defaults remain 1000:1000. - Open registration requires admin approval by default. Pending users cannot sign in. Rejecting a pending account deletes it.
- Filename search, recycle bin, and folder zip download in the file browser (English UI).
See CHANGELOG.md for the full list.
Install
Download the binary for your OS, make it executable, and run it (Linux example):
chmod +x nas-filehub-linux-amd64
./nas-filehub-linux-amd64Docker: ghcr.io/ericleung001/nas-filehub:0.4.0 (and ericleung001/nas-filehub:0.4.0 on Docker Hub when the publish workflow has Hub credentials).
Filehub v0.3.22
Filehub v0.3.22
Catch-up release since v0.3.8. This is the current Latest and includes everything from v0.3.9 through v0.3.22.
Highlights
- Login — the page tagline is English only: “Multi-user file manager”.
- Settings → System — live CPU, RAM, user-storage totals, and DATA_ROOT disk usage (refreshes while the page is open). Auto-detects GPU / hardware-decode type (Intel VAAPI/QSV, AMD VAAPI, NVIDIA NVDEC, or none) and whether the current
THUMB_VAAPIthumbnail path can use it. - Storage quota — optional setting to apply one quota to all users (existing and new). The form lives on its own Settings → Storage quota page. Quota still counts only each user’s home.
- Unraid Community Apps template plus a GHCR image workflow (
ghcr.io/ericleung001/nas-filehub, linux/amd64), built onmain,v*tags, and manual dispatch. - Move and Copy — choose the destination with a folder picker (including writable shared folders). The dialog blocks moving or copying a folder into itself or a subfolder.
- Shared folder grants — Grant uses a user dropdown and Read/Write, plus a separate Allow delete flag. New grants default Allow delete off; existing write grants keep delete.
- Link shares — multi-select delete; Revoke hard-deletes the row. Share-link success dialog and mobile table layout fixes.
- App icon and Settings → About (description, Apache-2.0, GitHub, Buy Me a Coffee).
- Admin sessions — configurable session lifetime and optional Stay signed in on the login page.
- Admin settings are split into Sessions, Registration, Security, Email, Storage quota, and System.
- Mobile file toolbar and settings nav fixes.
- Windows builds compile again (DATA_ROOT disk stats use
GetDiskFreeSpaceExon Windows).
See CHANGELOG.md for the full notes for each version.
Install (Docker)
git clone https://github.com/ericleung001/nas-filehub.git
cd nas-filehub && git checkout v0.3.22
mkdir -p data/files data/db
docker compose up -d --build
cat ./data/admin-credentials.txt # username + generated passwordOr pull the published image (linux/amd64) once the tag workflow has finished:
docker pull ghcr.io/ericleung001/nas-filehub:v0.3.22Open http://127.0.0.1:8088 → sign in as admin → Settings → Change password. Compose binds 127.0.0.1:8088 only — put a reverse proxy in front for production.
Install (binary)
Download an asset below (or use ./scripts/gen-env.sh from a clone), then:
chmod +x nas-filehub-linux-amd64
# set ADMIN_PASSWORD yourself, or run ./scripts/gen-env.sh from the repo
export DATA_ROOT=./data/files DB_PATH=./data/filehub.db THUMB_CACHE_DIR=./data/thumbs
export ADMIN_USER=admin ADMIN_PASSWORD='your-strong-password' LISTEN_ADDR=:8080
./nas-filehub-linux-amd64Sign in as admin with the password you set (or from ./data/admin-credentials.txt if you used ./scripts/gen-env.sh), then change it under Settings → Change password.
Filehub v0.3.8
Filehub v0.3.8
Highlights
- First-boot auto credentials — On first Docker install, if
ADMIN_PASSWORDis unset, the entrypoint writes a random admin password +SESSION_SECRETonce to:./data/admin-credentials.txt(host path with default compose) ← read this./data/.env
- Existing credential/env files are never overwritten.
- Host helper:
./scripts/gen-env.shcreates project-root.env+./data/admin-credentials.txtonce.
Install (Docker)
git clone https://github.com/ericleung001/nas-filehub.git
cd nas-filehub && git checkout v0.3.8
mkdir -p data/files data/db
docker compose up -d --build
cat ./data/admin-credentials.txt # username + generated passwordOpen http://127.0.0.1:8088 → sign in as admin → Settings → Change password.
Install (binary)
Download an asset below (or use ./scripts/gen-env.sh from a clone), then:
chmod +x nas-filehub-linux-amd64
# set ADMIN_PASSWORD yourself, or run ./scripts/gen-env.sh from the repo
export DATA_ROOT=./data/files DB_PATH=./data/filehub.db THUMB_CACHE_DIR=./data/thumbs
export ADMIN_USER=admin ADMIN_PASSWORD='your-strong-password' LISTEN_ADDR=:8080
./nas-filehub-linux-amd64See CHANGELOG.md for full notes.