Sharey 📁
A secure, modern file sharing platform with configurable storage backends, encryption, themes, and flexible deployment options.
✨ Features
- 📁 File Sharing: Upload files and get shareable links
- 📝 Pastebin: Share text snippets with syntax highlighting
- 💾 Flexible Storage: Choose between Backblaze B2 cloud storage or local filesystem
- 🔒 Client-side Encryption: Optional encryption for sensitive files
- 🎨 Dark/Light Themes: Toggle between themes with preference saving
- 🔗 Short URLs: Clean, easy-to-share links
- 🛡️ Admin Panel: Secure administration interface
- 🔧 Maintenance Mode: Graceful service management
⚡ Quick Storage Setup
Choose your storage type in config.json:
{
"storage": {
"backend": "local" // Use "local" for filesystem or "b2" for cloud
}
}
- 🏠
"local"= Files stored on your server (free, fast) - ☁️
"b2"= Files stored in Backblaze B2 cloud (scalable, reliable)
Test your choice: python test_storage.py
🏗️ Project Structure
sharey/
├── src/ # Application source code
│ ├── app.py # Main Flask application
│ ├── config.py # Configuration management
│ ├── config_util.py # Configuration utilities
│ ├── static/ # CSS, JS, and static assets
│ └── templates/ # HTML templates
├── tests/ # Test files
├── scripts/ # Utility scripts
│ ├── migrate.py # Database migration
│ ├── setup.py # Setup script
│ ├── setup.sh # Shell setup script
│ └── set_admin_password.py
├── docs/ # Documentation
├── logs/ # Application logs
├── config.json # Application configuration
├── requirements.txt # Python dependencies
├── run.py # Application entry point
└── README.md # This file
🚀 Quick Start
Method 1: Enhanced Python Runner (Recommended)
python run.py
This will automatically:
- Check Python version (3.8+ required)
- Create and activate virtual environment if needed
- Install dependencies
- Validate configuration
- Create necessary directories
- Start the application
💾 Storage Configuration
Sharey supports multiple storage backends for maximum flexibility. Choose the one that best fits your needs:
🔄 How to Choose Storage Type
Method 1: Edit config.json directly (Easiest)
Open your config.json file and change the backend field:
{
"storage": {
"backend": "local" // Change to "local" or "b2"
}
}
Method 2: Interactive setup
python src/config_util.py set # Interactive configuration
python src/config_util.py validate # Validate your choice
python test_storage.py # Test the storage backend
Method 3: Environment variables
export STORAGE_BACKEND=local # or "b2"
Option 1: Backblaze B2 Cloud Storage (Recommended for Production)
{
"storage": {
"backend": "b2"
},
"b2": {
"application_key_id": "your_key_id",
"application_key": "your_application_key",
"bucket_name": "your_bucket_name"
}
}
- ✅ Unlimited scalability
- ✅ Built-in redundancy and reliability
- ✅ No local storage requirements
- 💰 Small cost (~$0.005/GB/month)
Option 2: Local Filesystem Storage (Good for Development/Self-hosting)
{
"storage": {
"backend": "local",
"local_path": "storage"
}
}
- ✅ No external dependencies or costs
- ✅ Fast local access
- ✅ Complete data control
- ⚠️ Limited by disk space
- ⚠️ No built-in redundancy
🧪 Test Your Storage Choice
After changing the storage backend, always test it:
python src/config_util.py validate # Validate configuration
python test_storage.py # Test storage operations
Quick Test Results:
- ✅
Storage backend initialized: local= Local storage working - ✅
Storage backend initialized: b2= B2 cloud storage working - ❌
Storage test failed= Check your configuration - ✅ Fast local access
- ✅ Complete data control
- ⚠️ Limited by disk space
- ⚠️ No built-in redundancy
**Interactive Configuration:**
```bash
python src/config_util.py set # Interactive setup
python src/config_util.py validate # Validate configuration
python test_storage.py # Test storage backend
See docs/STORAGE.md for complete storage configuration guide.
Method 2: Python Utility
# Direct Python usage
python sharey.py start # Full application start
python sharey.py dev # Quick development mode
python sharey.py setup # Set up environment
python sharey.py status # Check system status
python sharey.py clean # Clean temporary files
python sharey.py test # Run tests
python sharey.py logs # Show recent logs
python sharey.py service # Install as system service (Linux)
# Or use the wrapper script (shorter)
./sharey status # Unix/Linux/macOS
Method 3: Manual Setup
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Configure storage backend
cp config.json.example config.json
# Edit config.json with your settings
# Run
python src/app.py
📋 Features
- 🔐 Security: Optional file encryption with password protection
- 🎨 Themes: Light/dark mode with elegant UI
- ☁️ Cloud Storage: Backblaze B2 integration
- 📊 Progress Tracking: Real-time upload progress with percentage
- 📱 Mobile Friendly: Responsive design for all devices
- 🔗 Easy Sharing: Direct links, QR codes, and clipboard integration
- 📝 Pastebin: Share text content with syntax highlighting
🛠️ Development
Running Tests
cd tests
python -m pytest
Development Mode
# Set debug mode in config.json
python run.py
📚 Documentation
See the docs/ directory for:
- Configuration guide
- Deployment instructions
- API documentation
- Migration notes
🔧 Configuration
Key configuration options in config.json:
host: Server host (default: 0.0.0.0)port: Server port (default: 5000)debug: Debug mode (default: false)max_file_size: Maximum upload sizeb2_*: Backblaze B2 credentials
📄 License
See LICENSE file for details.
Languages
Python
45.6%
JavaScript
26.1%
HTML
16.1%
CSS
11.3%
Shell
0.9%