Skip to content

01one/personal-drive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal Drive

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.


Personal Drive Screenshot

The Essential Features

  • 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

Self-Hosting

PythonAnywhere ($10/month — cheapest)

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_URL at an external MySQL instance (PythonAnywhere offers free MySQL too).

VPS (Hostinger, DigitalOcean, etc. — ~$4–6/month)

More control, better performance, no storage restrictions beyond your disk size. Recommended if you have multiple users or expect heavy uploads.


Database

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.

About

Self Hosted Cloud storage

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors