Replace every occurrence of "RBox" with "MyWebdav" in README.md, invoice templates, welcome emails, share notifications, FastAPI metadata, default database filename, domain name, S3 bucket name, TOTP issuer, and WebDAV realm header to reflect the commercial rebranding of the application.
MyWebdav
MyWebdav is a commercial 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.
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
- Billing Integration: Stripe-powered subscription management and invoicing
- 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
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 configurationSTRIPE_*: Payment processing credentialsSTORAGE_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.