# Filux A modern, self-hosted, open-source enterprise file storage and sharing application.
1.2K
A modern, self-hosted, open-source enterprise file storage and sharing application.
Implemented:
Planned (see Requirements.md for full specs and phased roadmap):
| Layer | Choice |
|---|---|
| Frontend | React 18 + Vite, Tailwind CSS, FontAwesome Free |
| Backend | Node.js + Fastify |
| Database | PostgreSQL 17+ (Prisma ORM) |
| Session/Cache | Redis / Valkey |
| Auth | argon2id, otplib, @simplewebauthn, openid-client |
| File storage | Local filesystem (POSIX) |
| Testing | Vitest (unit/API), Playwright (E2E) |
For production, use the dedicated production compose file with the combined image:
cp .env.production.example .env.production
# Edit .env.production with your domain and secrets
docker compose -f docker-compose.prod.yml up -d
The production image (bmcgonag/filux:latest) runs migrations automatically on startup and serves both frontend and backend through Nginx on port 80.
First user registered becomes admin automatically.
docker compose up --build -d
5434, Redis on 6380# 1. Start dependencies
docker compose up -d postgres redis
# 2. Backend (http://localhost:3001)
cd server
cp .env.example .env
npm install
npx prisma migrate dev
npm run dev
# 3. Frontend (http://localhost:5173)
cd client
npm install
npm run dev
Note: set CORS_ORIGIN, WEB_AUTHN_RP_ORIGIN, and WEB_AUTHN_RP_ID to http://localhost:5173 for local development (they default to http://localhost:5173).
Filux/
├── Requirements.md # Feature specs (epics 1-10) & roadmap
├── AGENT.md # Session notes & build log
├── docker-compose.yml # Development: PostgreSQL + Redis + server + client
├── docker-compose.prod.yml # Production: PostgreSQL + Redis + combined image
├── .env.production.example # Production environment template
├── server/ # Fastify + Prisma backend
│ ├── src/routes/ # API route modules (auth, items, share, ...)
│ ├── src/services/ # Business logic (permissions, audit, mailer, ...)
│ ├── src/config/ # Environment config, Prisma & Redis clients
│ ├── prisma/
│ │ ├── schema.prisma # Data model
│ │ └── migrations/ # Database migrations
│ └── tests/ # Vitest unit/API/E2E tests
└── client/ # React + Vite frontend
├── src/components/ # UI components (Sidebar, FileList, modals, ...)
├── src/pages/ # AuthPage, FolderView, PublicPreview
├── src/hooks/ # useAuth, useTheme
├── src/i18n/ # Internationalization (en, es)
└── tests/unit/ # Vitest + Testing Library tests
cd server && npm run test # 196 unit + API tests
cd client && npm run test # 74 unit tests
cd client && npm run lint && npm run build
Delivery phases and dependency notes are documented in Requirements.md. Phases 1-7 (Epics 4-8, 10) are complete: Responsive UI, Administration & Roles, Password Lifecycle, Bulk Upload & Archive Management, Reverse Share (inbound file requests), and Internationalization. Phase 6 (Epic 9, WebDAV) is next.
AGPL v3
Open source, self-hosted.
Content type
Image
Digest
sha256:76eb5d34c…
Size
185.9 MB
Last updated
15 days ago
docker pull bmcgonag/filux