Nexora is a private, self-hosted file workspace. It combines a fast React interface, a Go API, SQLite metadata, and one or more local storage roots in a single deployable service — so your data never leaves your hands.
docker pull ghcr.io/suryaprakash251201/nexora:latest-8141398
Browse, organize, preview, share, and play — a complete private workspace with the features you expect and the privacy you demand.
Browse, upload, download, create, rename, move, copy, delete, restore, and archive files with a fluid, keyboard-friendly interface.
Manage named locations from one UI — with per-user read or write access on every root. Your disk, your rules.
Indexed search, tags, favorites, recents, checksums, metadata, and duplicate-file discovery keep everything findable.
Images, video, audio, PDFs, Markdown, and code. Video supports range streaming, subtitles, theater mode, and fullscreen.
Create public links with optional expiry, password protection, and download limits — then revoke them anytime.
Create and manage playlists — including public and collaborative playlists — with a lossless-friendly player.
Users, roles, root access, storage settings, audit history, and search reindexing — full control from one panel.
Light and dark themes, density control, command palette, keyboard shortcuts, and mobile navigation.
Live dashboards for storage usage, capacity, and file composition — plus bulk operations and file versioning.
Real screenshots from a running Nexora instance. Click any shot to view it full size.
A pragmatic stack that is fast to run, easy to reason about, and simple to deploy anywhere.
A request path short enough to reason about in your head — browser, API, storage.
React / Vite interface with instant search, media playback and a command palette.
FrontendAuth, files, search, previews, shares, playlists and jobs behind /api/v1.
Metadata, settings and audit data — backed by your mounted filesystem roots.
StorageDesktop apps for Windows and Linux, an Android client, and the Docker server — all from one project.
Pull the official image from GitHub Container Registry, or use Docker Compose for the recommended one-command deploy. Prefer source? That works too.
# 1. Configure the instance
cp .env.example .env
openssl rand -hex 32 # session secret
# 2. Start Nexora
docker compose up -d --build
docker compose ps
# 3. Verify it's healthy
curl -f http://localhost/healthz
→ {"service":"nexora","status":"ok"}
# 4. Open your browser
open http://localhost
./data/files, ./data/media, ./data/backups and ./data/shared into the container and exposes Nexora on port 80. Full guide in the documentation.
# 1. Pull the official image
docker pull ghcr.io/suryaprakash251201/nexora:latest-8141398
# 2. Run it — the web UI is served on http://localhost:8080
docker run -d --name nexora \
-p 8080:80 \
-v nexora-data:/app/data \
-v ./data/files:/mnt/files \
-e NEXORA_LISTEN_ADDR=:80 \
-e NEXORA_SESSION_SECRET=$(openssl rand -hex 32) \
ghcr.io/suryaprakash251201/nexora:latest-8141398
# 3. Verify
curl -f http://localhost:8080/healthz
docker logs -f nexora
ghcr.io/suryaprakash251201/nexora:latest-8141398 — hosted on GitHub Container Registry. The single container serves both the compiled web app and the Go API.
# 1. Clone the repository
git clone https://github.com/suryaprakash251201/nexora.git
cd nexora
# 2. Run the API (Go 1.26+, SQLite)
go run ./cmd/nexora
# 3. In a second terminal — web app on http://localhost:5173
cd web && npm install && npm run dev
/api and /healthz to the Go API on port 8080.
Copy the environment template, generate a session secret, and set your public URL for HTTPS deployments.
One command pulls the official image and starts the whole service — a single container serves the compiled web app and the Go API.
SQLite, the thumbnail cache, and archive workspace live in a named volume. Mount your storage folders and go.
Nexora takes the boring-but-essential approach to security, so you don't have to.
Everything people usually ask before self-hosting Nexora.
nexora-data volume (SQLite, thumbnails, archive workspace) alongside your mounted storage folders. Migrations run forward at startup, so restoring the database and the previous image is the safe rollback method.docker compose up -d --build rebuilds and rolls the new image, or docker pull ghcr.io/suryaprakash251201/nexora:latest-8141398 followed by recreating the container. Back up before upgrading — the full upgrade path is in the documentation.Self-host Nexora today and keep your data where it belongs — on your own hardware.
docker pull ghcr.io/suryaprakash251201/nexora:latest-8141398