Prerequisites
Before you dive into the installation of TriviaFlow, let's make sure you have everything ready. This system is built to be a robust, production-ready platform that handles real-time connections smoothly.
🖥️ Server Requirements (VPS)
You will need a Virtual Private Server (VPS) running a Linux operating system. Since TriviaFlow is fully containerized with Docker, it is relatively agnostic to the underlying OS, but we have specific recommendations for stability.
Compatible Operating Systems
The project relies on Docker Engine. Below is a list of distributions we recommend.
| Distribution | Versions | Status | Notes |
|---|---|---|---|
| Debian | 13 (Trixie) | ✅ Dev / Tested | Reference System. The project was developed and extensively tested on this version. |
| Debian | 11 (Bullseye) / 12 (Bookworm) | ✅ Stable | Fully supported and recommended for production. |
| Ubuntu | 20.04 LTS / 22.04 LTS | ✅ Stable | Excellent choice for beginners and professionals alike. |
| Fedora / CentOS | Latest / Stream | ⚠️ Compatible | Works, but ensures docker-ce is installed correctly. |
| Arch Linux | Rolling | ⚠️ Compatible | For advanced users. |
TriviaFlow was primarily developed and tested on Debian 13. If you want the most predictable experience that matches the developer's environment exactly, choosing a modern Debian version is your best bet.
Hardware Specifications
TriviaFlow is efficient, but real-time WebSockets and database operations do require some resources.
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCore | 2 vCores |
| RAM | 1 GB | 2 GB (or more) |
| Storage | 10 GB SSD | 20 GB NVMe SSD |
| Network | Public IPv4 | Public IPv4 + IPv6 |
🌐 Domain & DNS Configuration
To provide a secure and professional experience (no browser warnings), you need a proper domain. Our integrated web server (Caddy) will automatically issue and renew valid HTTPS certificates for you.
You need to configure A-Records (IPv4) in your domain provider's dashboard pointing to your server's IP address.
Required Records
-
Game URL (The Main Event)
- Type:
A - Host:
quiz(e.g., resulting inquiz.your-domain.com) - Value:
<YOUR-SERVER-IP>
- Type:
-
Database Admin (Optional)
- Type:
A - Host:
db(e.g., resulting indb.your-domain.com) - Value:
<YOUR-SERVER-IP> - Note: Only set this if you plan to use phpMyAdmin.
- Type:
Don't get locked out! Make sure your cloud provider's firewall (AWS Security Groups, Hetzner Firewall, etc.) allows traffic on these ports:
- Port 80 (HTTP): Required for Let's Encrypt certificate validation.
- Port 443 (HTTPS): Required for the game and secure connections.
- Port 22 (SSH): Required for you to access the server.
🛠️ Software Installation
The beauty of Docker is that you don't need to install Python, Redis, or MariaDB manually on your host system. However, you do need the tools to fetch and run the code.
1. Install Git
You need git to clone the repository. Choose the command for your distribution:
- Debian / Ubuntu
- RedHat / Fedora / Alma
- Arch Linux
sudo apt update
sudo apt install git -y
# For Fedora
sudo dnf install git -y
# For CentOS / AlmaLinux / Rocky
sudo yum install git -y
sudo pacman -S git
2. Check Docker Availability
You will need Docker and Docker Compose plugin. We will cover the installation of Docker in detail in the next chapter.