Repository navigation
OpsCrew 0.2.5
Every server deploy workflow changes. Run npx opscrew provision for each environment and merge its pull request. Your plans keep working as they are.
Added
-
Snapshots and restores:
opscrew snapshotandopscrew restore. A snapshot copies every service of an environment that keeps data, and the app's SQLite files, on a server OpsCrew created, your own server, your computer or your Portainer.- PostgreSQL, MySQL, MariaDB, MongoDB, Valkey, Redis and Dragonfly are copied while they run. The brokers, the search engines, Garage and the other services with data each stop alone for their copy, and only when you allow it (
--allow-downtimein a script);--skip <service>leaves one out. - A snapshot stays where the data is, named by the UTC time it was taken.
opscrew snapshot listshows them, newest first;opscrew snapshot delete <id>deletes one. opscrew restore <id>puts the data back exactly and keeps the version that runs. The app's requests wait while it runs, the data as it is now is saved as a new snapshot first, and you approve it like a destroy, with the app's name typed.--only <service>restores one service.
- PostgreSQL, MySQL, MariaDB, MongoDB, Valkey, Redis and Dragonfly are copied while they run. The brokers, the search engines, Garage and the other services with data each stop alone for their copy, and only when you allow it (
-
Snapshots on a schedule:
opscrew snapshot schedule on --every daily|weekly|<n>h --keep <n>, put on the server or in your Portainer by the next provision.opscrew statusand the scheduled check report a scheduled snapshot that failed. -
An encrypted copy off the server:
opscrew snapshot offsite on --to r2|hetzner|digitaloceanuploads each snapshot, encrypted with age to your recovery copy's key, to a bucket of its own, kept for--days(90 by default). The server never holds the key.opscrew restore <id> --from offsite --key-file <file>brings the data back after the server is lost. See An encrypted copy off the server. -
Whole-server snapshots at Hetzner and DigitalOcean:
opscrew snapshot --server, live or with--stop, shows its price;opscrew restore --server <id>rebuilds the server in place, with its addresses and firewall kept. See Whole-server snapshots. -
The snapshot before each release covers all the data: every service with data, a database on another server, SQLite, and your Portainer.
deploy.snapshotStopadds a service that must stop for its copy.opscrew rollback --database snapshotrestores it in your Portainer too. See Snapshots before each release. -
Design and advise propose snapshots on your own server or Portainer when the data matters, with a copy off the server.
-
The Claude Code plugin has a snapshots skill and the read-only tool
opscrew_snapshots, and its status answer names the last snapshot.
Changed
- An app's key and an environment's name can no longer be
backupsor start withbackups-: the off-server copy's bucket uses those names.
Fixed
opscrew driftno longer reports a server's image as changed after the server was rebuilt.- On your computer, a port another container publishes counts as taken, so OpsCrew uses 8080 and 8443 instead of failing when the app starts.
opscrew destroywith nothing deployed removes what a provision that stopped part-way left in OpsCrew's shared Cloudflare rules, instead of refusing with "Nothing is deployed".
Full changelog: v0.2.4...v0.2.5