Server Requirements
Operating System Ubuntu 20.04 LTS or newer
Python Python 3.11 or newer
Database MongoDB (local or remote)
Memory Minimum 4GB RAM recommended
Production Directory Structure
PROPPR services are deployed to /opt/proppr/ on the production server:
/opt/proppr/
├── PropprTeamBot/ # Team market alerts
├── PropprPlayerBot/ # Player prop alerts
├── PropprEVBot/ # Expected value alerts
├── PropprArbBot/ # Arbitrage detection
├── PropprHorseBot/ # Horse racing alerts
├── OvertimeBot/ # Blockchain betting
├── WebsocketUpdater/ # Real-time odds websocket
├── UnifiedAPIPoller/ # API data collection
├── StatsUpdateFM/ # Stats pipeline
├── SharedServices/ # Shared modules
│ ├── config/ # Configuration presets
│ ├── grading/ # Bet grading system
│ ├── mapping/ # Data normalization
│ ├── sheets/ # Google Sheets sync
│ ├── tracking/ # Bet tracking
│ └── api/ # Shared API clients
├── config/ # Credentials & settings
├── .env # Environment variables
├── credentials.json # Google Sheets service account
└── turnstile_cookies.json # FotMob API cookies
Initial Server Setup
Update System Packages
sudo apt update && sudo apt upgrade -y
Install Python 3.11
sudo apt install python3.11 python3.11-venv python3-pip -y
Install MongoDB (if hosting locally)
# Import MongoDB GPG key
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
# Add MongoDB repository
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# Install MongoDB
sudo apt update
sudo apt install mongodb-org -y
# Start MongoDB
sudo systemctl start mongod
sudo systemctl enable mongod
Create Production Directory
sudo mkdir -p /opt/proppr
sudo chown $USER : $USER /opt/proppr
Clone Repository
git clone https://github.com/Jayzinq/PROPPR.git /tmp/proppr-source
Deploy Code to Production Directory
# Deploy all modules
cd /tmp/proppr-source
for module in config SharedServices PropprTeamBot PropprPlayerBot \
PropprArbBot PropprEVBot OvertimeBot PropprHorseBot \
WebsocketUpdater UnifiedAPIPoller StatsUpdateFM ; do
if [ -d " $module " ]; then
rsync -av --exclude '__pycache__' --exclude '*.pyc' \
" $module /" "/opt/proppr/ $module /"
fi
done
Environment Configuration
Never commit sensitive files (.env, credentials.json) to version control.
Create .env File
Create /opt/proppr/.env with your configuration:
# MongoDB Configuration
MONGO_CONNECTION_STRING = mongodb://localhost:27017/
MONGO_DATABASE = proppr
# Telegram Bot Tokens
TEAM_BOT_TOKEN = your_team_bot_token
PLAYER_BOT_TOKEN = your_player_bot_token
EV_BOT_TOKEN = your_ev_bot_token
ARB_BOT_TOKEN = your_arb_bot_token
HORSE_BOT_TOKEN = your_horse_bot_token
OVERTIME_BOT_TOKEN = your_overtime_bot_token
# External API Keys
ODDS_API_KEY = your_odds_api_key
FOOTYSTATS_API_KEY = your_footystats_key
SPORTMONKS_API_KEY = your_sportmonks_key
# Blockchain Configuration (Overtime)
OPTIMISM_RPC_URL = https://mainnet.optimism.io
PRIVATE_KEY = your_wallet_private_key
# Logging
LOG_LEVEL = INFO
Google Sheets Credentials
Place your Google Sheets service account credentials at /opt/proppr/credentials.json:
/opt/proppr/credentials.json
{
"type" : "service_account" ,
"project_id" : "your-project" ,
"private_key_id" : "..." ,
"private_key" : "-----BEGIN PRIVATE KEY----- \n ... \n -----END PRIVATE KEY----- \n " ,
"client_email" : "[email protected] " ,
"client_id" : "..." ,
"auth_uri" : "https://accounts.google.com/o/oauth2/auth" ,
"token_uri" : "https://oauth2.googleapis.com/token"
}
FotMob Cookies (Optional)
For stats updates, create /opt/proppr/turnstile_cookies.json:
/opt/proppr/turnstile_cookies.json
{
"cf_clearance" : "your_cloudflare_clearance_token"
}
Python Dependencies
Each service directory should have its dependencies installed:
# Install dependencies for a specific service
cd /opt/proppr/PropprTeamBot
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
You can create a shared virtual environment in /opt/proppr/venv if all services use the same dependencies.
File Permissions
Ensure proper permissions for sensitive files:
chmod 600 /opt/proppr/.env
chmod 600 /opt/proppr/credentials.json
chmod 600 /opt/proppr/turnstile_cookies.json
Verify Installation
Test that Python can import PROPPR modules:
cd /opt/proppr
export PYTHONPATH = "/opt:${ PYTHONPATH }"
python3.11 -c "from PROPPR.config import get_mongo_connection_string; print('Config loaded successfully')"
Next Steps
Configure systemd Services Set up automated service management
Set Up Monitoring Configure logging and health checks