Disaster Recovery¶
If you destroy / cancel the droplet, you can restore the world to a new server using only:
- The restic repo password (1 string)
- The Google OAuth client_id + secret (2 strings)
- Access to the Google account where backups live
These are tiny, fit in a password manager, and are the only critical secrets.
Step 0: Back these up to a password manager NOW¶
| Item | Where it lives on droplet | Why you need it |
|---|---|---|
| Restic password | /root/.restic-password |
Decrypts the snapshot repo on Drive |
| Google OAuth client ID | /root/.config/rclone/rclone.conf (client_id line) |
rclone's identity for Drive API |
| Google OAuth client secret | /root/.config/rclone/rclone.conf (client_secret line) |
Same |
Grab them once:
ssh -i ~/.ssh/do_minecraft_claude root@<droplet-ip> \
"cat /root/.restic-password; echo; grep -E 'client_id|client_secret' /root/.config/rclone/rclone.conf"
You do not need to back up the rclone OAuth token — it's short-lived and re-auth gives you a new one.
Step 1: Restore on a new machine (any Linux box with internet)¶
Install restic + rclone:
Configure rclone with your OAuth client:
rclone config
# n (new), name = gdrive, type = drive,
# paste client_id, paste client_secret, scope = 3 (drive.file),
# advanced = no, autoconfig = no
# copy the rclone authorize line, run it on a machine with a browser
# (https://rclone.org/drive/#headless), paste the token back
Set environment for restic:
export RESTIC_REPOSITORY=rclone:gdrive:minecraft-backups
echo '<your-restic-password>' > /tmp/pw && chmod 600 /tmp/pw
export RESTIC_PASSWORD_FILE=/tmp/pw
Confirm you can see snapshots:
Restore the latest snapshot:
You now have the world folders under /tmp/restored/var/lib/pterodactyl/volumes/.../world/.
Step 2: Bring it back online¶
You have the world. Now you need a server to run it. Two options:
Option A — Rebuild the same setup on a new droplet
Follow README.md + OPERATIONS.md to provision a new droplet and reinstall Pterodactyl. After creating an empty server, drop the restored world/, world_nether/, world_the_end/ folders into the server volume (replace any defaults). chown -R 988:988 so Docker can read them.
Option B — Run vanilla / Paper directly without Pterodactyl Download Paper 26.1.2 jar, unzip the restored world into the same directory as the jar, accept the EULA, run:
Skips the entire panel — useful if you just want to play locally / on a temporary VM.What this means for "what if I cancel the droplet"¶
- World data: safe as long as Drive has at least one snapshot
- Pterodactyl panel state (users, scheduled tasks, the egg config): not backed up, but easy to rebuild
- The scripts in this repo are your blueprint for redeploying — they're saved here, not on Drive
- DNS / domain / Cloudflare: untouched (those are at the registrar level)
So canceling the droplet costs you about an hour of setup work, but no data.
Sanity check: when did backups last run?¶
ssh -i ~/.ssh/do_minecraft_claude root@<droplet-ip> \
"source /etc/mc-backup/backup.env && export RESTIC_REPOSITORY RESTIC_PASSWORD_FILE && restic snapshots --latest 5"
If you haven't seen a snapshot in >24 hours, something's broken — check /var/log/mc-backup.log and /var/log/mc-idle-monitor.log.