Open-Source modern UI for S3 Compatible Storage Services
Opndrive is a modern, open-source web UI for Amazon S3 and S3-compatible storage services. Think of it like Google Drive or Dropbox, but instead of giving up control, you connect your own storage backend - AWS S3.
- Your Data, Your Control - Files stored in YOUR S3 bucket, not ours
- Modern Interface - Built with Next.js 15, TypeScript, and Tailwind CSS
- Direct Upload - Browser-to-S3 uploads with multipart support for large files
- Responsive Design - Works perfectly on desktop, tablet, and mobile
- Beautiful UI - Clean, intuitive interface inspired by modern file managers
docker pull ghcr.io/opndrive/opndrive:latest
docker run -d --restart unless-stopped --name opndrive -p 3000:3000 ghcr.io/opndrive/opndrive:latestSee Deployment for build args and other hosting options (Vercel, Netlify).
Then:
- Go to http://localhost:3000
- Click Get Started
- Enter your AWS S3 credentials in the UI
- Start managing your files!
New to the Project? Start with our Introduction
Ready to Contribute? Check out our Development Setup
Run Locally (from source)
git clone https://github.com/Opndrive/opndrive.git
cd opndrive
pnpm install
pnpm dev:frontendOr build the Docker image yourself instead of pulling the published one - see Deployment.
Opndrive uses a modern, feature-based architecture:
opndrive/
├── frontend/ # Next.js 15 web application
├── s3-api/ # S3 integration layer
└── docs/ # Documentation site (content/ is the source of truth)
- Frontend: Next.js 15, React, TypeScript, Tailwind CSS
- Storage: Amazon S3 (or S3-compatible services)
- State Management: Zustand + React Context
- UI Components: Radix UI + Custom Design System
- File Uploads: Direct browser-to-S3 with multipart support
- Personal Cloud Storage - Secure file storage and sharing
- Team Collaboration - Share files with colleagues
- Media Management - Organize photos, videos, and documents
- Developer Assets - Store and manage project files and assets
- Business Documents - Secure document management for organizations
- File Browser - Navigate folders like a native file manager
- File Upload - button upload with progress tracking
- File Preview - View images, PDFs, and text files directly
- File Management - Rename, delete, download files
- Search - Find files quickly across your storage
- Multiple Upload Methods - Multipart (pause/resume, large files) and signed-URL (faster for small files)
- Responsive Design - Works on all devices
- Dark/Light Theme - Choose your preferred interface
Full docs live in docs/content, organized by
audience:
- Introduction
- Installation - Get running in a few minutes
- First Upload - Connect your bucket and upload a file
- Development Setup - Complete setup guide
- Repository Structure - How code is organized
- First Contribution - How to contribute
We welcome contributions from developers of all skill levels - bug reports, features, docs, design, and tests. See CONTRIBUTING.md for the quick start, or the full Contributing Guide for branch naming, commit conventions, and the PR process.
pnpm install # install all workspaces and run prepare
pnpm dev:frontend # start the frontend dev server
pnpm test # run the frontend test suite
pnpm lint # lint frontend/ and s3-api/See Development Setup for the full guide, and Deployment for Vercel, Netlify, and Docker.
- No files pass through our servers - direct browser-to-S3 communication
- Your AWS credentials are stored locally in your browser, never on a server
- Open source - you can audit all code yourself
Found a security vulnerability? Don't open a public issue - see SECURITY.md for how to report it privately.
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
- Built with Next.js and React
- Styled with Tailwind CSS
- CRUD operations powered by AWS SDK for JavaScript v3
- UI components from Radix UI, Shadcn UI
- Icons from Lucide, React Icons
- Documentation: docs/content
- Bug reports and questions: Create an issue
- Security vulnerabilities: SECURITY.md - please don't use a public issue for these
If you find Opndrive useful, please consider giving us a star on GitHub!
Made with ❤️ by the Opndrive Team