Welcome to the Poker Engine — a full-featured poker platform with cash games, tournaments, bots, payment processing, and a developer integration API.
What is the Poker Engine?
The Poker Engine is a complete, self-hosted poker platform that includes:
- Cash game tables — Texas Hold’em, Omaha, Omaha Hi-Lo, Short Deck, 7-Card Stud, and more
- Tournament system — Multi-table tournaments (MTT), Sit & Go, and Satellite tournaments with progressive blind levels
- Admin panel — Full management of players, tables, bots, payments, bonuses, agents, and settings
- Bot players — Configurable AI opponents with realistic play styles and timing
- Payment providers — Stripe, cryptocurrency (CoinPayments), PayPal, Skrill, Neteller, MuchBetter, ecoPayz, and bank transfer
- Developer Integration API — Embed the poker platform into external products with SSO, balance sync, and webhooks
- Mobile app — React Native app in
packages/mobile/sharing business logic via the shared package - Internationalisation — Multi-language support (i18n) for both admin and player-facing interfaces
First Deployment
If you are setting up the platform for the first time, follow these steps:
1. Deploy the server
See Deployment Guide for Docker-based deployment instructions.
The recommended setup uses Docker Compose with:
- PostgreSQL database
- Redis
- Node.js backend (port 3000)
- Nginx, which serves the React frontend and handles SSL
2. Configure environment variables
Copy .env.prod.example to .env.prod and set the required variables:
| Variable | Description |
|---|---|
LICENSE_KEY | Your license key, from your purchase confirmation email |
LICENSE_DOMAIN | The domain players use, for example poker.example.com |
POSTGRES_PASSWORD | Database password |
REDIS_PASSWORD | Redis password |
JWT_ACCESS_SECRET | Secret for signing access tokens (min 64 chars) |
JWT_REFRESH_SECRET | Secret for signing refresh tokens (min 64 chars) |
JWT_2FA_TEMP_SECRET | Secret for 2FA temporary tokens (min 64 chars) |
ADMIN_INITIAL_PASSWORD | First-install password for the bootstrap admin account; required outside explicit development/test environments when the database is empty |
CSRF_SECRET | Secret for CSRF tokens (min 32 chars) |
ENCRYPTION_KEY | Encryption key for sensitive data at rest (exactly 64 hex chars); generate with openssl rand -hex 32 |
CORS_ORIGINS | Comma-separated list of allowed origins |
BCRYPT_ROUNDS sets the password hashing cost (default: 12).
Game settings, SMTP, payment provider keys, rake, and feature flags are not environment variables — they are configured through the Admin Panel after deployment.
3. Run the installer
./install.sh
The installer validates .env.prod, verifies your license, loads the signed Docker image, runs database migrations, and starts the services.
On first startup against an empty production or staging database, the app creates the admin account with ADMIN_INITIAL_PASSWORD. Use a unique password from your password manager. The bootstrap process will fail closed rather than create a privileged account with a shared default.
4. Access the admin panel
Navigate to https://your-domain.com/admin and log in with:
- Username:
admin - Password: the value you set in
ADMIN_INITIAL_PASSWORD
Change the password after first login under Users, in the admin’s edit form, if your operational policy requires rotation.
First Steps in the Admin Panel
Once logged in, configure the platform in this order:
1. Settings
Go to Settings and configure these tabs:
- Server — URLs, paths, emails, timezone, and SMTP so system emails are delivered
- General — avatars, lobby melody, SEO
- Game — timings, rake, bots, chat
- Features — enable/disable features like Developer API, registration, 2FA
2. Payment providers
Go to Settings → Cashier and select Add Provider to set up at least one payment provider:
- Add your Stripe API keys for credit card processing
- Or configure Coinpayments for cryptocurrency deposits
- Turn deposits and withdrawals on or off per provider
See Cashier & Payments for details.
3. Tables
Go to Tables and create your first cash game table:
- Choose a game type and betting structure (No Limit, Pot Limit, Fixed Limit)
- Set the stake level (small blind / big blind)
- Apply a table style (manage them under Table Styles)
See Tables for details.
4. Bots (optional)
Go to Bots Management and use Scheduler to automatically fill tables with AI opponents. Configure play styles under Strategy Profiles.
See Bots for details.
5. Tournaments (optional)
Go to Tournaments to create your first tournament or Sit & Go template. Set buy-ins, blind structure, prize distribution, and registration windows.
See Tournaments for details.
Player Access
Players access the platform at https://your-domain.com. They can:
- Register an account and verify their email
- Browse the lobby and join cash game tables
- Register for tournaments
- Deposit and withdraw funds via the Cashier
Developer Integration
If you want to embed the poker platform into an existing product:
- Enable Developer API in Settings → Features. It requires an Enterprise license
- Create a partner in Developer API → Partners
- Generate an API key with the required scopes
- Follow the Integration API guide
Where to Go Next
| Goal | Guide |
|---|---|
| Day-to-day platform management | Admin Guide |
| Integrate the platform into your product | Developer API |
| Extend or customise the codebase | Developer Guide |
| Production deployment and scaling | Deployment Guide |
| Troubleshooting operational issues | See Admin → Common Workflows |