# Back up and update OwnPost

> A considered update process, and backups that cover more than your drafts.

Canonical: https://ownpost.fyi/docs/updates

## Before you update

1. Read the release notes and compare changes with your own customizations.

2. Back up your database, media bucket, and deployment configuration.

3. Keep a separate secure record of secrets and recovery codes.

4. Preserve your resource IDs, environment settings, and application origin.

> The older JSON metadata export and CSV export cannot be restored. Use Download content backup for a restorable package with stored media, and keep separate backups of deployment configuration and secrets. CSV exports use the selected account; content backups include all account profiles.

## Back up content and restore into an empty workspace

1. Open Settings → Account & data → Backups. Under Backup & restore, choose Download content backup. The version 1 package includes account profiles, posts, threads, Ideas, stored media, results, routines, inactive publication history, writing-profile libraries and feedback, plus blogs, editions, checkpoints and retained revisions.

2. Keep the downloaded file privately outside the app. Login credentials, assistant keys, X connections, pending notifications, agent leases and browser-only data are excluded.

3. To restore, sign in to an initialized empty destination workspace. Open Settings → Account & data → Backups and choose Restore into an empty workspace. Select the version 1 file and Preview restore. Review the counts and restore behavior before confirming; existing destination content blocks restore.

4. Restore replaces preferences while keeping destination credentials. Routines, imported blogs and unfinished AI actions are paused, notifications are muted, and X publishing is disabled. Older version 1 packages without profiles restore into Main account. Verify content and media, reconnect integrations where needed, and deliberately resume the work you want.

> Content backups support up to 50 MB and 10,000 database records, including related rows such as thread parts and retained article revisions. Larger workspaces need an administrator-managed database and media backup. After an interrupted restore, retry the exact same file; a completed import is recognized without duplicating content.

## Test the new version locally

Use the checked-in release migrations. You do not need to generate new migrations unless you are changing the schema yourself. Test with a separate development database and storage bucket. For Node hosts use pnpm dev:node; for Cloudflare use pnpm run preview. Check login, MCP and optional integrations.

```
pnpm install
pnpm test
pnpm typecheck
# Node hosts:
pnpm build:node
# Cloudflare:
# pnpm run db:migrate:local
# pnpm run preview
```

## Upgrade for writing profiles, blogs and prompts

Apply every pending checked-in migration in order. Recent additions include writing-profile libraries and feedback (0027–0029), OAuth clients (0030), blogs and article action context (0031–0032), and prompt favorites (0033). Update your installed OwnPost plugin too, then refresh the assistant's available tools.

After upgrading, check Voice, Topics, and Examples & Hooks; create and reopen a blog; save a prompt favorite; and verify the plugin connection. Existing posts remain available through their usual writing and publishing workflows.

[Write blogs and prepare editions](https://ownpost.fyi/docs/guides/blogs)

[Use saved prompt favorites](https://ownpost.fyi/docs/guides/prompt-library)

[Update your plugin installation](https://ownpost.fyi/docs/plugins)

## Update production

Back up first, review migration SQL and confirm the intended database. The helper's --execute flow applies migrations before deployment on every target. The direct deploy:cloudflare command requires the separate D1 migration step shown above. Preserve existing private configuration and production environment values.

After deployment, confirm you can sign in, read an existing draft, and use your MCP connection. Check that scheduled jobs and media still work.

```
# Node: choose the target you already use
pnpm db:migrate:node --status
pnpm run deploy --target vercel --execute
# Cloudflare alternative:
# pnpm exec wrangler d1 migrations list DB --remote
# pnpm run db:migrate:remote
# pnpm run deploy:cloudflare
```

## Related

- [Previous: Connect ChatGPT](https://ownpost.fyi/docs/guides/connect-chatgpt)
- [Next: Troubleshooting](https://ownpost.fyi/docs/troubleshooting)
