Update cadence
Critical security updates — apply immediately
Bug fixes — apply within 1–2 weeks
Feature releases — apply when needed
Major versions — apply with extra care
The safe update workflow
Read the release notes
- What’s new?
- What’s fixed?
- What’s deprecated or breaking?
- Any recommended operator action?
Pick a quiet moment
- Active drawdowns (one-thing-at-a-time discipline).
- Major market events.
- Times you can’t monitor for the next hour.
Backup the database first
Optionally: kill switch ON
Pull the new version
docker-compose pull or equivalent.Restart the affected container(s)
docker-compose up -d (or the CapRover-equivalent action). The container restarts on the new image.Watch the logs for the first 5 minutes
- Container starts cleanly.
- Connects to database, exchange, dependencies.
- Begins normal evaluation cycles.
Test a few representative actions
- TradingBot update: confirm it places a test order (let an active mode trigger naturally; don’t force).
- Dashboard update: log in, navigate panels, confirm they render.
- SignalsBot update: send a test webhook, confirm it processes.
- TelegramBot update: wait for next trade-close, confirm notification fires.
If kill switch was engaged: re-enable
Watch for the first hour
What can go wrong — and how to handle it
Container won't start after update
Container won't start after update
- Check container logs (
docker logs <container>). - Common causes: configuration incompatibility, missing environment variables in new version, breaking schema changes.
- Roll back to the previous version (revert image tag).
- Restart with the previous image.
- Investigate the new version’s release notes for required configuration changes.
Container starts but immediately produces errors
Container starts but immediately produces errors
- Read the error message carefully.
- Common: configuration value that needs migrating to new schema.
- Apply the migration step from release notes.
- Or roll back to the previous version while you sort out the migration.
Update worked but behavior is different
Update worked but behavior is different
- Read the release notes for behavior changes.
- Some updates intentionally change behavior (e.g., new default values for parameters).
- If the change is intentional and acceptable: continue.
- If unintentional or unacceptable: configure to restore old behavior, or roll back.
Multiple containers updated, one fails
Multiple containers updated, one fails
- The new versions may have a compatibility requirement (e.g., new Dashboard requires new database schema that TradingBot creates).
- Roll back the failed container only.
- Run with the partially-updated stack until you can resolve the compatibility issue.
- Or roll back all containers to their previous versions.
Database schema changed and old version can't read it
Database schema changed and old version can't read it
- Major version updates sometimes add tables/columns that are required by the new version.
- Rolling back the container without rolling back the database leaves a stale-schema mismatch.
- Restore the pre-update database backup.
- Run with the old container against the old database schema.
- Plan the upgrade more carefully next time, including database migration rollback strategy.
Rollback playbook
Identify the last-known-good version
uncoded/tradingbot:v2.3.5).Update the image tag in your deployment configuration
docker-compose.yml or CapRover settings. Revert the tag to the last-known-good.If database schema changed: restore database backup