Skip to content

Supported OS

Xbot-me edited this page Jun 23, 2026 · 1 revision

Supported OS & Distros

PulseDeploy supports 4 Linux families with a dedicated OS module for each. The correct module is auto-loaded at runtime based on /etc/os-release.


Ubuntu

Version Status Notes
20.04 LTS (Focal) ✅ Supported  
22.04 LTS (Jammy) ✅ Supported Recommended
24.04 LTS (Noble) ✅ Supported  

Adding a new distro

To add support for a new distro, create scripts/os/your_distro.sh implementing the interface above, then add a case entry in the detect_os() function in bootstrap.sh.

See CONTRIBUTING.md for the full guide.

# Supported OS & Distros

PulseDeploy supports 4 Linux families with a dedicated OS module for each. The correct module is auto-loaded at runtime based on /etc/os-release.


Ubuntu

Version Status Notes
20.04 LTS (Focal) ✅ Supported
22.04 LTS (Jammy) ✅ Supported Recommended
24.04 LTS (Noble) ✅ Supported

PHP source: Ondřej Surý PPA (ppa:ondrej/php) MySQL source: Official MySQL APT repo Firewall: UFW


Debian

Version Status Notes
11 (Bullseye) ✅ Supported
12 (Bookworm) ✅ Supported Recommended

PHP source: Sury.org repo (packages.sury.org/php) MySQL source: Official MySQL APT repo Firewall: UFW


Amazon Linux

Version Status Notes
Amazon Linux 2 ✅ Supported Uses amazon-linux-extras for PHP
Amazon Linux 2023 ✅ Supported Recommended for new EC2 instances

PHP source: amazon-linux-extras (AL2) or default dnf modules (AL2023) MySQL source: Official MySQL RPM repo (falls back to MariaDB) Firewall: firewalld AWS extras: IMDSv2 instance detection, Security Group warnings

See the AWS EC2 Guide for EC2-specific setup steps.


CentOS / Rocky Linux / AlmaLinux

Distro Version Status
CentOS 8 ✅ Supported
Rocky Linux 8 ✅ Supported
Rocky Linux 9 ✅ Supported
AlmaLinux 8, 9 ✅ Supported

PHP source: Remi repository (rpms.remirepo.net) MySQL source: Official MySQL RPM repo Firewall: firewalld SELinux: Script detects Enforcing mode and outputs the required boolean commands

SELinux note

If SELinux is in Enforcing mode, PulseDeploy will warn you and print the commands needed:

setsebool -P httpd_can_network_connect 1
setsebool -P httpd_execmem 1

Run these after installation if Nginx/Apache can't connect to PHP-FPM.


How OS detection works

PulseDeploy sources /etc/os-release and matches on $ID:

case "$OS_ID" in
  ubuntu)       source scripts/os/ubuntu.sh ;;
  debian)       source scripts/os/debian.sh ;;
  amzn)         source scripts/os/amazon_linux.sh ;;
  centos|rocky) source scripts/os/centos_rocky.sh ;;
esac

Each OS module exposes a consistent interface:

Function Purpose
os_update Update system packages
os_install_base Install curl, git, unzip, build tools
os_get_php_repo Add PHP repo for modern versions
os_get_mysql_repo Add MySQL repo
os_pkg_install Install packages (apt/dnf abstraction)
os_svc_enable Enable + start a systemd service
os_firewall_cmd Add firewall rules (ufw/firewalld abstraction)

Adding a new distro

To add support for a new distro, create scripts/os/your_distro.sh implementing the interface above, then add a case entry in the detect_os() function in bootstrap.sh.

See [CONTRIBUTING.md](https://github.com/Xbot-me/PulseDeploy/blob/main/CONTRIBUTING.md) for the full guide.

Clone this wiki locally