Infrastructure Planning¶
A one-page reference for procurement and infrastructure teams planning an ePT deployment.
Technology stack¶
| Component | Technology |
|---|---|
| Language | PHP 8.4 |
| Database | MySQL 8+ |
| Web Server | Apache 2 with mod_rewrite |
| OS | Ubuntu 24.04 LTS (recommended) |
Docker Compose is also supported (see setup.md).
Sizing¶
ePT is not a daily-use application — participants log in only during open shipment windows (typically a few weeks per round). The real CPU drivers are report generation and email flushes, not interactive traffic.
| Tier | Participants | vCPU | RAM | Disk |
|---|---|---|---|---|
| Small | up to ~1,000 participants | 2 | 2 GB | 50 GB SSD |
| Medium (default) | up to ~4,000 participants | 2 | 4 GB | 100 GB SSD |
| Large | 4,000+ participants | 4 | 8 GB+ | 200 GB SSD |
App + MySQL run on the same host.
Storage and backup¶
All ePT files (uploads, generated reports, charts, logs) live on the local filesystem of the application host alongside MySQL. There is no external object-storage dependency.
A typical medium-tier deployment occupies 20–40 GB after 2–3 years.
Backup policy:
- Daily MySQL dump (
db-tools backupships with ePT). - Weekly file-level backup of
public/uploads/anddownloads/. - Copy backups off the application host (second VM, attached backup volume, or cloud object storage — any off-host destination works).
Networking¶
- Static IP — required for a stable DNS record and Let's Encrypt SSL.
- Domain — one A-record (e.g.
ept.example.org). - TLS — free via Let's Encrypt; automated by
setup.sh. - Outbound SMTP — required for notifications and password resets.
- Inbound ports — 80 and 443.
Security¶
ePT enforces per-role authentication (admin / data manager / participant) with bcrypt passwords, CSRF tokens on state-changing forms, and a full audit log capturing actor, IP, user agent, and timestamp for every mutation. See ARCHITECTURE.md → Security for details.
Infrastructure-side: keep MySQL on a private subnet, restrict SSH, enable disk encryption, and patch OS/PHP monthly. ePT itself is upgraded via upgrade.sh (see Updating an ePT installation).
Further reading¶
- Setup Guide — installation
- Architecture Guide — system design and security
- CLI Tools Reference — operational scripts