Orbiter — Known Errors & Solutions
Installation Errors
Error: "Run via SSH: php /opt/psa/admin/plib/modules/orbiter/scripts/post-install.php" The post-install script could not run automatically. Connect via SSH as root and run the command manually:
php /opt/psa/admin/plib/modules/orbiter/scripts/post-install.php
Error: "install-deps failed" System dependency installation failed. Run as root:
bash /opt/psa/admin/plib/modules/orbiter/scripts/install-all.sh
Check that the server has internet access and that the package manager (apt/yum) is working normally.
Error: "Dockerfile not found" The Docker build files were not copied correctly during installation. Re-run post-install or reinstall the extension from the Plesk extension manager.
Error: "Default nginx template not found" The Nginx proxy template is missing. Re-run:
php /opt/psa/admin/plib/modules/orbiter/scripts/post-install.php
Docker Image Build Errors
Build failed / "Build failed" in the UI Check the build logs displayed below the progress bar. Common causes:
- No internet access to download base images
- Insufficient disk space (minimum 20 GB recommended)
- Docker daemon not running:
systemctl start docker
"docker run failed" / Container does not start Check that:
- Docker is running:
systemctl status docker - Sufficient RAM is available (minimum 2 GB total)
- No port conflicts: check the logs for
port already in use
"Web volume mount failed. Check that the path exists" The domain's document root path does not exist or is inaccessible. Verify in Plesk that the domain's file path is correct and that the directory exists on disk.
Container Creation Errors
"Error creating" / Container stuck in "creating" state A previous create operation may have left a lock file. Check:
ls /opt/psa/var/modules/orbiter/locks/
If a .lock file exists for the domain and no operation is in progress, delete it:
rm /opt/psa/var/modules/orbiter/locks/<domain>.lock
"Container is delete-locked. Unlock it first, or use force=1" The container has the anti-delete lock enabled. Go to the Container section in the actions panel, toggle the lock to Unlocked, then retry the operation.
"Failed to apply network limit" Docker's network limit could not be applied. This is usually non-critical — the container runs but without network speed limiting. Check Docker version compatibility.
"Quota exceeded" The Plesk client has reached their container, RAM, or database quota set by the administrator. Contact the server administrator to increase the quota, or delete an existing container first.
"Failed to enable nginx PHP mode" Nginx could not be configured to proxy PHP requests to the container. Run:
plesk repair web -y
MariaDB Errors
"MariaDB is starting, please wait a few seconds..." MariaDB is still initializing inside the container. Wait 10–15 seconds and refresh. If it persists beyond 60 seconds, restart the container.
"Dump failed. Check that MariaDB is running"
MariaDB is not running inside the container. Go to the Database panel and click "Start MariaDB", or restart the full container. If the failure appears recurrently in the nightly backup log (/opt/psa/var/modules/orbiter/logs/orbiter.log with [Cron] FAIL ALL: Dump failed), the MariaDB service inside the container is likely stuck in FATAL state. Check it with:
docker exec php-fpm-<domain> supervisorctl status mariadb
If it reports FATAL Exited too quickly, see MariaDB FATAL state (Can't initialize timers) below.
MariaDB FATAL state (Can't initialize timers) — PidsLimit too low
MariaDB needs several internal threads (timers, signal handlers, InnoDB workers) to start. If the container's cgroup pids.max is below MariaDB's requirement, mariadbd aborts immediately at boot with:
Can't initialize timers
[ERROR] Aborting
Supervisord retries 3 times then marks the service FATAL. The container stays up — only the MariaDB inside is dead — and nightly backups fail silently every night.
How to detect. Inspect the container limits:
docker inspect php-fpm-<domain> --format '{{.HostConfig.PidsLimit}}'
If it returns 100 or less and the container has MariaDB enabled, you've found the cause.
How to fix. Raise the cgroup limit live (no recreate needed) and restart the service:
docker update --pids-limit=512 php-fpm-<domain>
docker exec php-fpm-<domain> supervisorctl restart mariadb
Then verify: docker exec php-fpm-<domain> supervisorctl status mariadb should now read RUNNING. The nightly backup will resume on its own.
Prevention. Orbiter applies a MariaDB minimum of 150 PIDs when the engine is enabled at container creation time, but a container created before this safeguard (or one where the limit was lowered manually via the Limits modal) can end up below the threshold. After a + MariaDB enable, double-check the container's PIDs limit isn't a leftover from a Conservative preset. From the UI, the Limits modal now greys out PIDs values below 150 when MariaDB is on the same site.
MariaDB crashes immediately after container start (io_uring error)
This affects hosts where io_uring_disabled=2 or libaio is unavailable. The fix is applied automatically since Orbiter 1.5.4. If you are on an older version, run:
php /opt/psa/admin/plib/modules/orbiter/scripts/post-install.php
This backfills the innodb_use_native_aio=0 configuration to all running MariaDB containers.
"MySQL error" during user creation / grant The MariaDB root password may have changed or the container needs a restart. Try restarting MariaDB from the Database panel, then retry the operation.
phpMyAdmin "Failed to set session cookie" This occurs after a phpMyAdmin slug migration where the nginx vhost and the in-container config.inc.php are out of sync. Fixed in Orbiter 1.5.3. Update to the latest version, or recreate the container.
Database import fails with syntax error The imported SQL file may contain system-level statements that were filtered out. Orbiter automatically strips dangerous statements. If the import fails entirely, check that the file is valid SQL (not a one-line text file) and is not corrupted.
Nginx / Web Server Errors
"Failed to write proxy configuration"
Orbiter could not write the Nginx proxy config for the domain. Check disk space and permissions on /etc/nginx/. Run plesk repair web -y to reset nginx configuration.
Site returns 502 Bad Gateway after container creation The container may still be starting up. Wait 10–15 seconds and refresh. If it persists:
- Check the container is running in Orbiter
- Check container logs for PHP-FPM startup errors
- Try restarting the container
Site returns 403 Forbidden on PHP files with Shield enabled This is Shield working correctly. Shield blocks execution of PHP files in read-only directories. If a legitimate PHP file is being blocked, either:
- Add its parent directory to the writable directories list in Shield settings
- Or disable Shield temporarily to test
"Container is not starting correctly. Logs:" followed by error output Read the logs shown in the error. Common causes:
- PHP-FPM configuration error (check custom php.ini for syntax errors)
- Port conflict (another process is using the assigned port)
- Insufficient memory
Cache Errors
Cache purge returns "Permission denied"
Nginx creates cache subdirectories in mode 700. Orbiter sets chmod -R 777 on cache subdirs automatically since version 1.5.0. If you see this error on an older version, update Orbiter or run:
chmod -R 777 /var/cache/orbiter/<domain>/
"Error during flush" The Nginx cache could not be flushed. Check that the cache directory exists and is accessible. Try purging from the Cache panel in the Orbiter UI.
CLI Errors
--version reports wrong version
Fixed in Orbiter 1.5.2. Update to the latest version. The CLI now reads meta.xml dynamically.
--db-export > dump.sql produces a one-line text file
Fixed in Orbiter 1.5.2. The SQL dump now goes to stdout and the status message to stderr. Update to the latest version.
WARNING: Error loading config file: open /root/.docker/config.json: permission denied
This warning appeared on every docker command in versions before 1.5.2. It is cosmetic and does not affect functionality. Fixed in Orbiter 1.5.2 by setting DOCKER_CONFIG=/nonexistent.
Sync / Backup Errors
"Sync failed" / "Connection failed" For external backup destinations (S3, SFTP, FTPS):
- Verify credentials in the backup destination configuration
- Use the "Test connection" button to diagnose
- Check that the server can reach the remote host (firewall, DNS)
"Cannot read inventory file" The sync destination configuration file is missing or corrupted. Delete the destination and re-add it from the Settings → Backups panel.
Nightly backup repeatedly reports FAIL ALL: Dump failed for one domain
The MariaDB service inside that container is stuck in FATAL state. See MariaDB FATAL state (Can't initialize timers) in the MariaDB Errors section above for the diagnosis and fix.
General Errors
"sysop returned invalid JSON"
An internal communication error between the Orbiter PHP code and the privileged sysop binary. Usually transient. Retry the operation. If persistent, check /var/lib/orbiter/orbiter.log for details.
"ConfigStore init failed, falling back to JSON"
The SQLite configuration database could not be opened. Orbiter falls back to JSON storage automatically, so functionality is preserved. Check disk space at /var/lib/orbiter/.
"Unknown error" on any operation Check the Orbiter log file for details:
tail -100 /var/lib/orbiter/orbiter.log
Also check the Plesk error log:
tail -100 /var/log/plesk/panel.log