Skip to content

Server Architecture

Server Architecture

A high-level overview of how FlyWP structures and isolates services on your server.

Server detail showing hosted sites

Every FlyWP server follows the same architecture: a hardened Ubuntu host running Docker, with each WordPress site isolated in its own container. Shared services like MySQL and Redis run as server-level containers, while per-site services (PHP, Nginx or OpenLiteSpeed) run inside each site’s container.

Operating System

FlyWP provisions servers on Ubuntu 22.04 LTS or Ubuntu 24.04 LTS. LTS (Long Term Support) releases receive security patches for five years, providing a stable and well-supported foundation.

Docker-Based Isolation

Docker is the cornerstone of FlyWP’s architecture. Every site runs inside its own container, which provides:

  • Process isolation — a crash or runaway process in one site cannot affect another
  • File system isolation — each site has its own file system; sites cannot read or write each other’s files
  • Resource boundaries — containers can be individually monitored for CPU, RAM, and disk I/O

Docker Configuration

SettingValue
Storage driveroverlay2
Network subnet pool172.80.0.0/16
Per-network allocation/24 (254 usable addresses)
Log driverJSON file
Max log size100 MB per file
Max log files3 (rotated automatically)

System User

All operations run under the fly user, which has both sudo and Docker group access. The root user is not used for day-to-day operations. SSH password authentication is disabled — only key-based access is allowed.

Server-Level Services

These services run once per server and are shared across all sites:

ServicePurpose
MySQLRelational database engine — each site gets its own database and user
RedisIn-memory cache — each site connects to its own logical database
Docker EngineRuns and manages all containers
SSHSecure remote access on port 22
CronSystem-level scheduled tasks
SupervisorManages long-running background processes (queue workers, daemons)
UFWFirewall management
Unattended UpgradesAutomatic security patching

Per-Site Services

Each site container includes its own set of services:

ServiceOptions
PHP7.4, 8.0, 8.1, 8.2, 8.3, or 8.4 — selected per site, not per server
Web ServerNginx or OpenLiteSpeed — selected per site
SSLLet’s Encrypt certificates with automatic renewal

This means two sites on the same server can run entirely different PHP versions and web servers without conflicts.

How Sites Share Infrastructure

Although sites are isolated at the container level, they share certain server-level resources:

  • Ports 80 and 443 — a reverse proxy (Nginx) routes incoming HTTP/HTTPS traffic to the correct site container based on the domain name
  • MySQL — all sites connect to the same MySQL instance, but each site has a dedicated database and user with access limited to that database only
  • Redis — all sites connect to the same Redis instance, but each uses a separate logical database to avoid key collisions

Security Layers

FlyWP applies multiple security measures at the server level:

  • SSH hardening — password auth disabled, host keys regenerated at provision time
  • UFW firewall — only ports 22, 80, and 443 open by default
  • Automatic security patches — applied during the maintenance window via unattended-upgrades
  • Docker isolation — containers cannot access each other’s processes or files
  • Non-root operations — everything runs as the fly user