Orbiter — Installation & Requirements
System Requirements
| Requirement | Supported | Recommended |
|---|---|---|
| Plesk | Obsidian 18.0+ | Latest |
| OS | Debian 11 / 12 / 13 · Ubuntu 23 / 24 / 25 · AlmaLinux 8 / 9 / 10 | Debian 12 or Ubuntu 24 |
| Docker | 20.10+ (auto-installed if missing) | Latest stable |
| RAM | 2 GB | 4 GB+ |
| Disk | 20 GB free | 50 GB+ |
| CPU | 2 cores | 4+ cores |
| Root access | Required for installation | — |
Supported OS in detail
| Family | Versions tested |
|---|---|
| Debian | 11 (bullseye), 12 (bookworm), 13 (trixie) |
| Ubuntu | 23.04 (lunar), 23.10 (mantic), 24.04 LTS (noble), 24.10 (oracular), 25.04 (plucky) |
| AlmaLinux | 8, 9, 10 |
Installation
Via Plesk UI
- In Plesk, go to Extensions → My Extensions
- Click Upload Extension and select the
.zippackage - The extension auto-configures Docker and required services
Via CLI
plesk bin extension --install /path/to/orbiter-1.x.x.zip
Post-install verification
After installation, verify the setup completed:
php /opt/psa/admin/plib/modules/orbiter/scripts/post-install.php
plesk repair web -y
First-Time Setup
1. Build the Docker image
After installation, go to Orbiter → Settings → General and click "Build the multi-PHP Docker image". This takes approximately 3–5 minutes and is a one-time operation. All PHP versions (7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5) are included in a single image.
2. Create your first container
- Go to the Sites tab
- Find a domain and click "Containerize" (or "New container")
- Choose:
- PHP version (7.4 to 8.5)
- Web server: Nginx (recommended) or Apache
- MariaDB: enable if the site needs a database
- Resource limits: CPU, RAM, I/O (optional, can be set later)
- Click Create — the container starts automatically
3. Verify the container is running
The domain row shows a green status indicator. The site should be accessible normally.
Architecture Overview
Plesk Server
├── Orbiter Extension
│ ├── Nginx reverse proxy (host) — proxies traffic to containers
│ └── Container orchestration
│
├── Docker Containers (one per domain)
│ ├── site1.com — PHP 8.2, Nginx, MariaDB
│ ├── site2.com — PHP 8.1, Apache, no DB
│ └── site3.com — PHP 7.4, Nginx, MariaDB
│
└── Shared Storage
└── /var/www/vhosts/* (bind-mounted into containers)
Key paths:
- Container data:
/var/lib/orbiter/ - Configuration:
/var/lib/orbiter/config.json(SQLite primary, JSON fallback) - Backups:
/var/lib/orbiter/backups/ - Snapshots:
/var/lib/orbiter/snapshots/ - Logs:
/var/lib/orbiter/orbiter.log - Lock files:
/opt/psa/var/modules/orbiter/locks/ - Cron files:
/etc/cron.d/orbiter-*
PHP Versions
All versions are pre-installed in the Docker image. No download or compilation is needed when switching.
| Version | Status |
|---|---|
| PHP 7.4 | Supported (EOL upstream, use for legacy sites) |
| PHP 8.0 | Supported |
| PHP 8.1 | Supported |
| PHP 8.2 | Supported (recommended for most sites) |
| PHP 8.3 | Supported |
| PHP 8.4 | Supported |
| PHP 8.5 | Supported |
Port Allocation
Orbiter automatically assigns ports to each container to avoid conflicts.
| Service | Port range |
|---|---|
| PHP-FPM | 20000–20000 + (index × 16) |
| MariaDB | 60000–60000 + (index × 16) |
Maximum 2048 containers per server (limited by the network pool /27).
Updating Orbiter
Via Plesk UI
Go to Extensions → find Orbiter → click Update.
What is preserved during updates
- All container configurations
- All website files (never touched)
- Database volumes
- Custom PHP settings
- Shield configurations
- Backup schedules and destinations
After a major update
A Docker image rebuild may be suggested to include the latest PHP versions or security patches. Go to Settings → General → Build image. Existing containers are not affected until the next recreate.
Uninstallation
Via CLI
plesk bin extension --uninstall orbiter
What happens
- Orbiter creates a full snapshot of all container configurations
- All domains are automatically reverted to standard Plesk mode
- Nginx configurations are restored to Plesk defaults
- Website files in
/var/www/vhosts/are preserved (never deleted) - Database volumes are optionally cleaned up (you are prompted)
Telemetry on uninstall
Orbiter sends a single anonymous uninstall event to https://orbiter.systems/api/v1/telemetry/event containing: Orbiter version, Plesk version, PHP version, OS, and an anonymous server hash. No domain names, credentials, or personal data are included. Telemetry is opt-in and can be disabled via:
plesk db "UPDATE misc SET val='0' WHERE param='orbiter_telemetry_enabled'"
Supported CMS / Frameworks
Orbiter works with any PHP application. The following have been specifically tested and have dedicated Shield profiles:
- WordPress
- WooCommerce
- Joomla
- PrestaShop
- Magento
- Drupal
- Laravel
- Any custom PHP application
Plesk Compatibility
| Feature | Status |
|---|---|
| SSL certificates (Let's Encrypt) | ✓ Works normally via Plesk |
| DNS management | ✓ Works normally via Plesk |
| File Manager | ✓ Works normally via Plesk |
| FTP access | ✓ Works normally via Plesk |
| Plesk email | ✓ Works normally via Plesk |
| Plesk statistics (Webalizer/AWStats) | ✓ Works normally |
| Plesk backups | ✓ Files backed up via Plesk (DB volumes backed up separately by Orbiter) |
| Imunify360 | ✓ Compatible (Orbiter configures realtime scan properly) |
| Plesk Firewall | ✓ Compatible |
Troubleshooting Installation
Docker not found after installation
systemctl start docker
systemctl enable docker
"ERREUR: Ce script doit être exécuté en root"
The install script requires root. Use sudo or switch to root:
sudo bash /opt/psa/admin/plib/modules/orbiter/scripts/install-all.sh
Build fails with "no space left on device" Free up disk space. Docker build requires at least 10 GB free. Clean unused Docker resources:
docker system prune -af
Imunify360 crashes (SIGSEGV) after installation on some servers Fixed in Orbiter 1.5.0. The extension now writes proper YAML format for the Imunify360 configuration file and self-heals existing broken installs. Update to the latest version.
Postfix not configured for container networking
The installer attempts to add 172.16.0.0/12 to Postfix mynetworks for container mail relay. If this was skipped, add it manually:
postconf -e "mynetworks=$(postconf -h mynetworks) 172.16.0.0/12"
systemctl reload postfix