MyWebdav - Self-Hosted Cloud Storage Solution
MyWebdav is a powerful, open-source self-hosted cloud storage web application designed for secure, scalable file management and sharing. Built with modern web technologies, it provides a comprehensive solution for individuals and organizations seeking full control over their data storage, privacy, and collaboration.
Keywords: self-hosted cloud storage, open-source file sharing, WebDAV server, SFTP support, secure file sync, private cloud, data privacy, file collaboration, encrypted storage, Nextcloud alternative, ownCloud alternative
Why Choose MyWebdav?
MyWebdav stands out as a premier self-hosted cloud storage solution, offering unparalleled control over your data while maintaining enterprise-grade security and collaboration features. Unlike commercial cloud services like Dropbox, Google Drive, or OneDrive, MyWebdav ensures your files remain on your own infrastructure, protecting your privacy and eliminating vendor lock-in.
Key Benefits:
- Complete Data Ownership: Host your files on your own servers or VPS
- Enhanced Privacy: No third-party access to your sensitive data
- Cost-Effective: Free and open-source, with optional paid features
- Flexible Deployment: Docker, manual installation, or cloud hosting options
- GDPR Compliant: Full control over data processing and storage locations
Features
Core Functionality
- File Management: Upload, download, organize, and manage files with a hierarchical folder structure
- User Authentication: Secure login with optional two-factor authentication (TOTP)
- File Sharing: Generate shareable links with customizable permissions and expiration dates
- Search: Full-text search across file names, metadata, and content
- Thumbnails: Automatic generation of image and video thumbnails for quick browsing
- Photo Gallery: Dedicated gallery view with date-based organization and lazy loading
- File Requests: Create forms for external users to submit files securely
- Activity Logging: Comprehensive audit trail of all file operations
- Teams: Organizational structure with role-based access control
Storage & Performance
- Multiple Storage Backends: Support for local filesystem and S3-compatible object storage
- WebDAV Protocol: Native WebDAV support for seamless integration with desktop clients
- SFTP Support: Secure file transfer protocol for advanced users
- Caching: Redis-based caching for improved performance
- Background Processing: Asynchronous task queues for thumbnail generation and file processing
- Quota Management: Configurable storage limits per user
Security & Compliance
- Encryption: TLS certificate management with Let's Encrypt integration
- At-Rest Encryption: Optional encryption of stored files
- End-to-End Encryption: Client-side encryption mode for maximum security
- IP Whitelisting: Enterprise-grade access controls
- Audit Logging: Detailed logs of all permission changes and access attempts
Collaboration & Communication
- Real-time Activity Feed: Live updates on file operations across teams
- Commenting System: File-level discussions with email notifications
- Email Integration: SMTP configuration for notifications and invitations
- Webhook Support: Integration with external services via webhooks
Administration
- Usage Analytics: Detailed reporting on storage consumption and bandwidth usage
- Admin Console: Centralized user management and system monitoring
- API Access: RESTful API for third-party integrations
Pricing and Costs
MyWebdav is free and open-source software. Hosting costs depend on your deployment method:
Self-Hosting Costs
- VPS Hosting: $5-20/month (depending on storage needs)
- Free Tier: 15GB storage + 15GB bandwidth included
- Pay-as-you-go: $0.0045/GB storage/month + $0.009/GB egress bandwidth
- No Subscription Fees: Unlike Dropbox ($10+/month) or Google Drive ($2-30/month)
Commercial Alternatives Comparison
| Service | Monthly Cost | Storage Limit | Self-Hosted |
|---|---|---|---|
| MyWebdav | $0-50+ | Unlimited | Yes |
| Dropbox | $10-20 | 2TB-5TB | No |
| Google Drive | $2-30 | 100GB-5TB | No |
| OneDrive | $2-10 | 100GB-1TB | No |
| Nextcloud | $0-50+ | Unlimited | Yes |
Installation
Prerequisites
- Python 3.12+
- PostgreSQL 15+
- Redis 7+
- Docker and Docker Compose (recommended)
Quick Start with Docker
- Clone the repository and navigate to the project directory
- Copy the environment template:
cp .env.example .env - Edit
.envwith your configuration (database credentials, secrets, etc.) - Start the services:
docker-compose up -d - Access the application at
https://your-domain.com
Manual Installation
-
Install dependencies:
pip install poetry poetry install -
Set up the database:
createdb mywebdav -
Configure environment variables in
.env -
Run database migrations:
poetry run mywebdav --migrate -
Start the application:
poetry run mywebdav --host 0.0.0.0 --port 8000
Configuration
MyWebdav uses environment variables for configuration. Key settings include:
DATABASE_URL: PostgreSQL connection stringREDIS_URL: Redis connection URLSECRET_KEY: JWT signing key (generate a secure random key)DOMAIN_NAME: Your domain for HTTPS certificatesSMTP_*: Email server configurationSTORAGE_PATH: Local storage directory path
See .env.example for a complete list of configuration options.
Usage
Web Interface
Access the web application through your browser. The interface provides:
- File browser with drag-and-drop upload
- Folder management and navigation
- Search and filtering capabilities
- User profile and settings
- Administrative controls (for admins)
API Usage
MyWebdav provides a comprehensive REST API. Example requests:
# Upload a file
curl -X POST "https://your-domain.com/api/files/upload" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@example.txt"
# List files
curl -X GET "https://your-domain.com/api/files/" \
-H "Authorization: Bearer YOUR_TOKEN"
# Create a share link
curl -X POST "https://your-domain.com/api/shares/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"file_id": 123, "expires_at": "2024-12-31T23:59:59Z"}'
WebDAV Access
Mount MyWebdav as a network drive using WebDAV:
https://your-domain.com/webdav/
SFTP Access
Connect via SFTP using your MyWebdav credentials on port 22.
Deployment
Production Deployment
- Set up a reverse proxy (Nginx included in docker-compose.yml)
- Configure SSL certificates (automatic with Let's Encrypt)
- Set up database backups
- Configure monitoring and logging
- Scale as needed with load balancers
Docker Compose Services
- app: FastAPI application with Gunicorn
- db: PostgreSQL database
- redis: Caching and session storage
- nginx: Reverse proxy and static file serving
- certbot: SSL certificate management
Environment Variables
Configure all services through the .env file. Sensitive data is automatically loaded and validated.
Security Considerations
- Change default secrets in production
- Enable HTTPS with valid certificates
- Regularly update dependencies
- Monitor access logs
- Implement backup strategies
- Use strong passwords and enable 2FA
Troubleshooting
Common Issues
- Database connection errors: Verify DATABASE_URL configuration
- File upload failures: Check storage permissions and quotas
- Email not sending: Confirm SMTP settings
- WebDAV connection issues: Ensure proper authentication
Logs
Application logs are available in the Docker containers:
docker-compose logs app
Support
For issues and questions:
- Check the troubleshooting section
- Review configuration examples
- Consult the API documentation at
/docswhen running
License
This project is licensed under the MIT License. See the LICENSE file for details.
| mywebdav | |
| nginx | |
| static | |
| tests | |
| .env.example | |
| .gitignore | |
| docker-compose.yml | |
| Dockerfile | |
| Makefile | |
| pyproject.toml | |
| README.md | |
| requirements.txt | |
| run_dev.sh |