Update
Process for updating ION Guard to a newer version safely and with rollback capability.
Command
cd /home/iongrade/ionguard
./scripts/upgradeToNewestVersion.sh -v 0.2.0
Parameters
| Flag | Required | Description |
|---|---|---|
-v VERSION | Yes | Target version (e.g., 0.2.0) |
-b | No | Skip rebuilding the Docker images |
-q | No | Quick update — graceful PHP-FPM reload instead of a full restart |
-u | No | Skip upgrade warnings |
Update flow
The script runs the following steps in order:
1. Download the package
On-premises: Downloads the encrypted package from the distribution server and decrypts it with the facility passphrase.
SaaS: Updates via git fetch and git checkout of the version tag.
2. Stop workers
Queue workers (Horizon), the scheduler, and MQTT listeners are stopped to prevent processing during the migration.
3. Back up the current code
The app/ directory is atomically renamed to app_old/. This enables instant rollback in case of failure.
4. Extract the new version
The new code and deployment files are extracted into the correct directories.
5. Database migration
php artisan migrate --force
If the migration fails, the script automatically restores app_old/ to app/ and restarts the services with the previous version. The update is aborted with an error message.
6. Clear cache and optimize
php artisan optimize:clear
php artisan optimize
7. Restart the services
All containers are restarted with the new code.
8. Permissions
File permissions are readjusted via setPermissions.sh.
9. Cleanup
The app_old/ directory is removed after confirming everything is working.
Quick update
The -q flag performs a graceful reload of PHP-FPM instead of restarting all containers. This minimizes downtime for minor updates that do not change the infrastructure:
./scripts/upgradeToNewestVersion.sh -v 0.2.1 -q
Post-update verification
After the update, check:
# Check version
./scripts/getVersion.sh
# Health check
./scripts/healthcheck.sh
# Container status
./scripts/comp.sh ps
# Error logs
./scripts/comp.sh logs -f ionguard_php --tail 50
Manual rollback
If you need to perform a manual rollback (in case the automatic one did not occur):
# If app_old/ still exists
mv app app_bad && mv app_old app
# Revert migrations (if the migration was applied)
./scripts/comp.sh exec -T ionguard_php php artisan migrate:rollback
# Restart
./scripts/restartAllServices.sh
Before updating, always check the release notes of the target version for specific instructions or breaking changes.