wdrive is a complete open-source Python project that creates a local Google Drive-like server on your Wi-Fi network. Built with Flask, it allows you to easily share files between devices without needing internet connectivity.
- File Upload & Download: Drag-and-drop interface with progress tracking
- File Management: View, rename, delete files with a beautiful web interface
- Search & Filter: Find files quickly by name or type
- Multi-device Access: Works on phones, tablets, laptops via web browser
- PWA Support: Install as an app on mobile devices
- Password Protection: Configurable authentication
- Multi-threaded: Fast concurrent uploads/downloads
- Large File Support: Handle files up to 16GB
- Access Logging: Track all file operations with timestamps
- Python 3.7 or higher
- Windows/macOS/Linux
-
Clone the repository:
git clone https://github.com/xspoilt-dev/wdrive.git cd wdrive -
Install dependencies:
pip install -r requirements.txt
-
Run the server:
python run.py
-
Access the server:
- Open
http://127.0.0.1:8080in your browser - Or use the generated QR code on mobile
- Default password:
wdrive123
- Open
Basic usage:
python run.pyWith custom options:
python run.py --host 0.0.0.0 --port 8080 --password mypasswordAvailable options:
--host HOST: Host address (default: 0.0.0.0)--port PORT: Port number (default: 8080)--password PWD: Custom password--debug: Enable debug mode--config FILE: Use config file
- Desktop/Laptop:
http://[YOUR-IP]:8080/ - Mobile: Scan the QR code displayed when server starts
- Same Network: All devices must be on the same Wi-Fi network
- Open the wdrive website on your mobile browser
- Look for "Add to Home Screen" or "Install App" option
- Follow the prompts to install
- Access wdrive like a native app!
wdrive/
βββ app.py # Main Flask application
βββ run.py # Server startup script
βββ requirements.txt # Python dependencies
βββ config.ini # Configuration file
βββ utils/ # Utility modules
β βββ __init__.py
β βββ file_manager.py # File operations
β βββ logger.py # Logging utilities
β βββ qr_generator.py # QR code generation
βββ templates/ # Jinja2 HTML templates
β βββ base.html
β βββ index.html # File listing page
β βββ login.html # Authentication page
β βββ upload.html # File upload page
βββ static/ # Static assets
β βββ css/
β βββ js/
β βββ favicon.svg
β βββ manifest.json # PWA manifest
β βββ sw.js # Service worker
βββ shared/ # Upload directory (auto-created)
βββ logs/ # Log files (auto-created)
[server]
host = 0.0.0.0
port = 8080
debug = false
[security]
require_auth = true
max_file_size = 17179869184 # 16 GB
[features]
enable_dns_server = true
enable_qr_code = true
enable_file_preview = trueWDRIVE_PASSWORD: Set default passwordWDRIVE_PORT: Set default portWDRIVE_HOST: Set default host
- Drag & Drop: Drop files directly onto the webpage
- Multi-file: Upload multiple files simultaneously
- Progress Tracking: Real-time upload progress
- Auto-rename: Prevents filename conflicts
- Type Validation: Configurable file type restrictions
- Preview: View images, videos, PDFs in browser
- Search: Find files by name or extension
- Filtering: Filter by file type (images, documents, etc.)
- Bulk Operations: Select and manage multiple files
- Images: JPG, PNG, GIF, SVG, WebP, BMP
- Videos: MP4, AVI, MOV, MKV, WebM, WMV
- Audio: MP3, WAV, FLAC, AAC, OGG, WMA
- Documents: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX
- Text: TXT, MD, RTF, HTML, CSS, JS, Python
- Archives: ZIP, RAR, 7Z, TAR, GZ
- And many more...
Create a portable executable with PyInstaller:
pip install pyinstaller
pyinstaller --onefile --add-data "templates;templates" --add-data "static;static" run.pyThe executable will be in the dist/ directory.
- Local Network Only: Server binds to local network interfaces
- Password Protection: Configurable authentication required
- File Validation: Configurable file type restrictions
- Access Logging: All operations are logged with IP addresses
- No Internet Required: Completely offline operation
Permission Denied (Port 53/80):
- Run as administrator/root
- Use alternative ports (8080, 3000, etc.)
Cannot Access from Mobile:
- Ensure all devices are on same Wi-Fi network
- Check firewall settings
- Try IP address instead of 'wdrive' domain
Upload Fails:
- Check file size limits (16GB max by default)
- Verify file type is allowed
- Ensure sufficient disk space
- Use SSD storage for better performance
- Increase
max_file_sizeif needed - Monitor
logs/wdrive.logfor issues - Use wired network for fastest transfers
Contributions are welcome! Please feel free to submit pull requests, report bugs, or suggest features.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flask: Web framework
- Bootstrap: UI framework
- Bootstrap Icons: Icon library
- qrcode: QR code generation
Telegram: x_spoilt
β Star this repository if you find it useful!
π Found a bug? Report it here
π‘ Have an idea? Suggest a feature