SharewareZ transforms any game folder into a searchable library with IGDB integration, adding cover images, screenshots, and metadata for enhanced filtering. Invite your friends securely and share your favorite games!
- ๐ Updating from older versions: Automatic update supported - simply overwrite files and run 'pip install -r requirements.txt' again.
โ ๏ธ For versions below 2.0: Database reset required- Run
./startweb.sh --force-setupto recreate database and run setup wizard - โ๏ธ SharewareZ promotes and encourages the legal use of software. We do not condone or support any unauthorized distribution or use of copyrighted material.
- ๐ You must install version >2.5.2 before August 2025 or lose the ability to connect to IGDB for any lookups.
- ๐ Smart folder scanning & cataloging with multi-threaded processing (4 threads by default)
- โก Multi-threaded image downloading and processing for faster library building
- ๐ผ๏ธ Steam-style popup with screenshot galleries
- ๐ท๏ธ Advanced filtering (genre, rating, gameplay modes)
- ๐ Support for 'updates' and 'extras' folders
- ๐ฏ Discovery page to find new gems:
- ๐ Latest additions
- โญ Top downloads
- โค๏ธ Most favorited
- ๐ Highly rated games
- ๐ Ability to play ROM files directly in browser
- ๐ฌ Discord webhook integration (bot posts in your channel when there is a new game)
- ๐ฆ Auto-zip functionality for multi-file folders
- ๐ NFO file indexing with viewer
- โก Multi-threaded download processing with configurable thread count
- ๐ก๏ธ Role-based access control
- ๐จ Invitation system (admin-controlled)
- ๐ Self-service password reset (requires SMTP)
- ๐ Multi-threaded game scanning (4 threads by default, configurable)
- ๐ฅ Multi-threaded image downloading (8 threads by default, configurable)
- ๐ Chunked streaming downloads for large files
- ๐ ASGI-based web server with uvicorn and multiple workers
One-Command Installation:
git clone https://github.com/axewater/sharewarez.git
cd sharewarez
# IMPORTANT: Make install script executable first
chmod +x install-linux.sh
./install-linux.shThe auto-installer will:
- โ Detect your Linux distribution automatically
- โ Install all prerequisites (Python, PostgreSQL, Git)
- โ Set up database with secure credentials
- โ Configure the application automatically
- โ Generate secure encryption keys
- โ Start the application when ready
Advanced Options:
# Specify custom games directory
./install-linux.sh --games-dir /path/to/games
# Development setup with extra tools including unit testing
./install-linux.sh --dev
# Skip database setup (use existing)
./install-linux.sh --no-db
# Override existing installation
./install-linux.sh --forceIf you prefer manual setup or the auto-installer doesn't work:
Step 1: Install Prerequisites
# Update package list
sudo apt update
# Install Python 3.11+ and pip
sudo apt install python3 python3-pip python3-venv
# Install git
sudo apt install git
# Install PostgreSQL database server
sudo apt install postgresql postgresql-contrib
# Verify installations
python3 --version
python3 -m pip --version
git --version
# Start PostgreSQL service
sudo systemctl start postgresql
sudo systemctl enable postgresqlStep 2: Set up PostgreSQL
# Switch to postgres user and create database
sudo -u postgres psql-- In PostgreSQL shell, create database and user
CREATE DATABASE sharewarez;
CREATE USER sharewarezuser WITH ENCRYPTED PASSWORD 'your_password_here';
GRANT ALL PRIVILEGES ON DATABASE sharewarez TO sharewarezuser;
\qStep 3: Clone and Set up SharewareZ
# Clone the repository
git clone --depth 1 https://github.com/axewater/sharewarez.git
cd sharewarez
# IMPORTANT: Make shell scripts executable first
chmod +x *.sh
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate
# Install Python dependencies
python3 -m pip install -r requirements.txtStep 4: Configure Application
# Copy configuration files
cp config.py.example config.py
cp .env.example .env
# Edit the .env file with your settings
nano .envImportant: Update these values in your .env file:
DATABASE_URL=postgresql://sharewarezuser:your_password_here@localhost:5432/sharewarezDATA_FOLDER_WAREZ=/path/to/your/games/folderSECRET_KEY=your_secure_random_key_here
Step 5: Start SharewareZ
# IMPORTANT: Make all shell scripts executable first
chmod +x *.sh
./startweb.shStep 6: Complete Setup
- Open your browser to
http://localhost:5006 - Complete the setup wizard and create your admin account
Step 1: Install Prerequisites
-
Install Python 3.11+
- Open PowerShell as Administrator, type
python(opens Microsoft Store) - Install Python 3.11 or download from python.org
- โ Check "Add Python to PATH" during installation
- Open PowerShell as Administrator, type
-
Install Git
- Download from Git for Windows and install with default settings
-
Install Visual C++ Build Tools
- Download Visual Studio Build Tools
- Install "C++ build tools" workload
-
Install PostgreSQL
- Download from PostgreSQL for Windows
- Install with default settings and remember the
postgresuser password
Step 2: Set up PostgreSQL Open pgAdmin (installed with PostgreSQL):
- Connect to your PostgreSQL server
- Right-click "Databases" โ "Create" โ "Database"
- Name:
sharewarezโ Click "Save"
Step 3: Clone and Set up SharewareZ Open PowerShell and run:
# Clone the repository
git clone --depth 1 https://github.com/axewater/sharewarez.git
cd sharewarez
# Create and activate virtual environment
python -m venv venv
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\venv\Scripts\Activate.ps1
# Install dependencies
python -m pip install -r requirements.txtStep 4: Configure Application
# Copy configuration files and edit
copy config.py.example config.py
copy .env.example .env
notepad .envImportant: Update these values in your .env file:
DATABASE_URL=postgresql://postgres:your_postgres_password@localhost:5432/sharewarezDATA_FOLDER_WAREZ=C:\Path\To\Your\Games\FolderSECRET_KEY=your_secure_random_key_here
Step 5: Start SharewareZ
# Start the application
.\startweb_windows.cmdStep 6: Complete Setup
- Open your browser to
http://localhost:5006 - Complete the setup wizard and create your admin account
Quick Docker Setup:
# Clone the repository
git clone https://github.com/axewater/sharewarez.git
cd sharewarez
# Copy and configure environment file
cp .env.docker.example .env
# Edit .env file with your game directory path:
# DATA_FOLDER_WAREZ=/path/to/your/games
# Start with Docker Compose
docker-compose up -dWhat it includes:
- โ Complete PostgreSQL database setup
- โ Automatic application configuration
- โ Persistent data storage
- โ Ready-to-use on port 5006
Step-by-step:
- Clone repository and navigate to folder
- Copy
.env.docker.exampleto.env - Edit
.envfile - setDATA_FOLDER_WAREZto your games directory - Run
docker-compose up -d - Open browser to
http://localhost:5006 - Complete setup wizard and create admin account
Management commands:
# View logs
docker-compose logs -f
# Stop containers
docker-compose down
# Update to latest version
git pull && docker-compose down && docker-compose up -d --build
# Reset database (if needed)
docker-compose exec web /app/startweb-docker.sh --force-setupDatabase Reset (if needed):
- Linux:
./startweb.sh --force-setup - Windows:
.\startweb_windows.cmd --force-setup
Updating SharewareZ:
- Stop the application (Ctrl+C)
git pullโpip install -r requirements.txt- Restart with startup script
Troubleshooting:
- Port 5006 in use: Change port in startup script or set PORT environment variable
- Database errors: Check PostgreSQL is running and credentials are correct
- Linux permissions: Ensure read access to game directories
- ๐ Default port:
5006(configurable via PORT environment variable) - ๐ฅ Go the admin dashboard for further configuration
SharewareZ runs on port 5006 by default. To change this:
For Linux/Windows installations:
- Edit your
.envfile - Add or modify:
PORT=8080(replace 8080 with your desired port) - Restart SharewareZ
For Docker installations:
- Docker containers always use port
5006internally - The external port is mapped via docker-compose.yml (also defaults to 5006)
- To change external port, edit the
portssection in docker-compose.yml
Examples:
# In .env file - run on port 8080
PORT=8080
# In .env file - run on port 3000
PORT=3000- Most 8, 16 and 32 bit retro consoles work, see webretro repo for more full list
- PSX, Sega MS, Sega 32x not working at the moment
- Sega Saturn working on single file games and some audio issues
- Files must be unzipped. ZIP, 7z and RAR are not (yet) supported. This is not a webretro issues, so it will be fixed in a future Sharewarez update.
- ๐ Open an issue on GitHub
- ๐ญ Join our Discord community https://discord.gg/WTwp236zU7
- ๐ญ Thanks to BinBashBanana's webretro we can now run ROMs in the browser.
- ๐ Check out his project here: https://github.com/BinBashBanana/webretro
Version 2.7.5
- ๐จ CSS Architecture Improvements: Comprehensive CSS optimization with centralized color management system for better consistency and maintainability
- โก Startup Process Enhancement: Streamlined initialization routine with reduced duplicate initialization calls for faster startup times
- ๐ ๏ธ Automated Installation: Added comprehensive auto-install script with distribution detection and dependency management
Version 2.7.x
- ๐จ Theme System Overhaul: Complete refactoring using macros for more efficient code, eliminated themes.zip dependency
- โก Streaming ZIP Downloads: Major implementation of asynchronous streaming downloads for better performance
- ๐ Download System Rewrite: All download systems redesigned with new download mechanism for updates and extras
- ๐ Library UI Modernization: Pagination modernized, improved image upload support (.webp), better filtering with server-side persistence
- ๐ฎ Game Management: Enhanced game details page UI, smooth animations for game removal, better popup menu functionality
Version 2.6.x
- ๐ ASGI Implementation: Upgraded from Flask to ASGI (uvicorn) for production readiness and async support
- ๐ง Major Code Refactoring:
- Modularized routes into separate API modules (routes_apis/)
- Consolidated CSRF handling across JavaScript files
- Extracted JavaScript from templates for maintainability
- ๐ Performance Improvements:
- Scan speed dramatically improved (99% reduction in DB queries via caching)
- Async image downloading with TURBO mode for parallel processing
- Optimized database queries using SQLAlchemy 2.0 constructs
- ๐งช Comprehensive Unit Testing: Added extensive test coverage across all modules
- ๐ Security Enhancements:
- SQL injection fixes with multithreaded scanning
- Enhanced input validation and CSRF protection
- Secure file handling improvements
- ๐ฌ Discord Integration: Full Discord webhook notifications and manual notification system
- ๐ฅ User Management: Enhanced invite system with timezone-aware structure
- โ๏ธ Setup & Configuration: Improved setup wizard, better startup processes, enhanced SMTP handling
Version 2.5.x
- ๐ฏ IGDB API Updates: Support for new IGDB field names and API changes
- ๐ฎ Platform Support: Enhanced ROM browser play support for multiple platforms (PSX, Sega systems)
- ๐ Game Identification: Custom IGDB ID support and improved game matching
- ๐ฑ UI Improvements: Better responsive design, enhanced game details display
- ๐๏ธ Database Optimization: Schema updates and relationship improvements
Key Infrastructure Changes
- Database: Migrated to SQLAlchemy 2.0, timezone-aware datetime handling
- Frontend: Bootstrap 5.3 adoption, jQuery modernization, improved DataTables integration
- Backend: Flask app factory pattern, better blueprint organization
- Development: Comprehensive testing framework, improved Docker support
- Performance: Async processing, streaming capabilities, optimized scanning algorithms