Thanks to visit codestin.com
Credit goes to github.com

Skip to content

axewater/sharewarez

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ SharewareZ v2.8.0

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!

๐Ÿ“ข Important Notes

  • ๐Ÿ”„ 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-setup to 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.

โœจ Core Features

๐Ÿ“š Game Library Management

  • ๐Ÿ” 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)

๐Ÿ’พ Download Features

  • ๐Ÿ“ฆ Auto-zip functionality for multi-file folders
  • ๐Ÿ“„ NFO file indexing with viewer
  • โšก Multi-threaded download processing with configurable thread count

๐Ÿ‘ฅ User Management

  • ๐Ÿ›ก๏ธ Role-based access control
  • ๐Ÿ“จ Invitation system (admin-controlled)
  • ๐Ÿ”‘ Self-service password reset (requires SMTP)

โšก Performance Features

  • ๐Ÿš€ 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

๐Ÿš€ Installation Guide

โšก Install Script Method (Linux Only)

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.sh

The 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 --force

๐Ÿง Linux Manual Install

If 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 postgresql

Step 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;
\q

Step 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.txt

Step 4: Configure Application

# Copy configuration files
cp config.py.example config.py
cp .env.example .env

# Edit the .env file with your settings
nano .env

Important: Update these values in your .env file:

  • DATABASE_URL=postgresql://sharewarezuser:your_password_here@localhost:5432/sharewarez
  • DATA_FOLDER_WAREZ=/path/to/your/games/folder
  • SECRET_KEY=your_secure_random_key_here

Step 5: Start SharewareZ

# IMPORTANT: Make all shell scripts executable first
chmod +x *.sh
./startweb.sh

Step 6: Complete Setup

  1. Open your browser to http://localhost:5006
  2. Complete the setup wizard and create your admin account

๐ŸชŸ Windows Manual Install

Step 1: Install Prerequisites

  1. 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
  2. Install Git

  3. Install Visual C++ Build Tools

  4. Install PostgreSQL

Step 2: Set up PostgreSQL Open pgAdmin (installed with PostgreSQL):

  1. Connect to your PostgreSQL server
  2. Right-click "Databases" โ†’ "Create" โ†’ "Database"
  3. 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.txt

Step 4: Configure Application

# Copy configuration files and edit
copy config.py.example config.py
copy .env.example .env
notepad .env

Important: Update these values in your .env file:

  • DATABASE_URL=postgresql://postgres:your_postgres_password@localhost:5432/sharewarez
  • DATA_FOLDER_WAREZ=C:\Path\To\Your\Games\Folder
  • SECRET_KEY=your_secure_random_key_here

Step 5: Start SharewareZ

# Start the application
.\startweb_windows.cmd

Step 6: Complete Setup

  1. Open your browser to http://localhost:5006
  2. Complete the setup wizard and create your admin account

๐Ÿณ Docker Install

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 -d

What it includes:

  • โœ… Complete PostgreSQL database setup
  • โœ… Automatic application configuration
  • โœ… Persistent data storage
  • โœ… Ready-to-use on port 5006

Step-by-step:

  1. Clone repository and navigate to folder
  2. Copy .env.docker.example to .env
  3. Edit .env file - set DATA_FOLDER_WAREZ to your games directory
  4. Run docker-compose up -d
  5. Open browser to http://localhost:5006
  6. 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-setup

๐Ÿ”ง Post-Installation

Database Reset (if needed):

  • Linux: ./startweb.sh --force-setup
  • Windows: .\startweb_windows.cmd --force-setup

Updating SharewareZ:

  1. Stop the application (Ctrl+C)
  2. git pull โ†’ pip install -r requirements.txt
  3. 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

๐Ÿ”ง Additional Settings

  • ๐ŸŒ Default port: 5006 (configurable via PORT environment variable)
  • ๐Ÿ‘ฅ Go the admin dashboard for further configuration

๐ŸŒ Changing the Port Number

SharewareZ runs on port 5006 by default. To change this:

For Linux/Windows installations:

  1. Edit your .env file
  2. Add or modify: PORT=8080 (replace 8080 with your desired port)
  3. Restart SharewareZ

For Docker installations:

  • Docker containers always use port 5006 internally
  • The external port is mapped via docker-compose.yml (also defaults to 5006)
  • To change external port, edit the ports section in docker-compose.yml

Examples:

# In .env file - run on port 8080
PORT=8080

# In .env file - run on port 3000
PORT=3000

๐Ÿ”ง Supported platforms to play in browser

  • 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.

๐Ÿ’ฌ Support

๐Ÿ“ 3rd party code

Changelog

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

About

SharewareZ transforms any game folder into a dynamic, searchable and shareable library.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •