2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:26:16 +00:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00
2025-09-27 17:45:52 +01:00

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

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"
{
  "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 size
  • b2_*: Backblaze B2 credentials

📄 License

See LICENSE file for details.

Description
No description provided
Readme MIT 1.1 MiB
Languages
Python 45.6%
JavaScript 26.1%
HTML 16.1%
CSS 11.3%
Shell 0.9%