Self-hosted file storage for small offices and individuals. You control your data, no subscription fees, no vendor lock-in.
Upload, organize, and share files — files are stored as blobs directly in the database, no separate storage bucket needed. Supports SQLite, PostgreSQL, and MySQL via SQLAlchemy.
- Upload any file type (images, docs, video, archives, etc.)
- Folder organization
- Create and edit text files in the browser
- Shareable download links
- Per-user storage quotas
- Admin panel to manage users and all files
- Search across your files
Good for personal use with light traffic. You can also start on the free tier for testing.
Sign up at pythonanywhere.com
Note: PythonAnywhere's cheap tiers have limited disk space. SQLite works fine for personal use — if you need more room, point
DATABASE_URLat an external MySQL instance (PythonAnywhere offers free MySQL too).
More control, better performance, no storage restrictions beyond your disk size. Recommended if you have multiple users or expect heavy uploads.
The app uses SQLAlchemy, so you can swap the database without touching any code — just set DATABASE_URL in your .env.
SQLite (default in development, zero config):
DATABASE_URL=sqlite:///drive.db
PostgreSQL:
DATABASE_URL=postgresql://user:password@localhost/drive_db
Install driver: pip install psycopg2-binary
MySQL:
DATABASE_URL=mysql+pymysql://user:password@localhost/drive_db
Install driver: pip install pymysql
currently storage quota set to 100GB for admin but align this with your server capacity
"storage_quota": 100 * 1024 * 1024 * 1024,
The app defaults to SQLite when FLASK_ENV=development and MySQL when FLASK_ENV=production. Set DATABASE_URL explicitly to override — it always takes priority.
For a $10 PythonAnywhere plan, SQLite is fine. For a VPS with multiple users and heavy uploads, PostgreSQL or MySQL is the better choice.
