# Run OwnPost locally

> From your private copy to a local workspace. Take it one step at a time.

Canonical: https://ownpost.fyi/docs/quick-start

## 1. Get your private copy

After purchase, follow the GitHub access link in your Dodo receipt. Create an independent private copy for your own changes, then clone it to your machine.

A private fork is also possible where GitHub policy allows it, but it remains tied to the original repository’s access. Keep your own copy and backups.

```
git clone YOUR_PRIVATE_REPOSITORY_URL
cd YOUR_REPOSITORY
pnpm install
```

## 2. Add local configuration

These local steps use Wrangler's local D1 and R2 emulation. To develop against your own libSQL database and S3 storage instead, run pnpm run deploy --target vps to prepare .env.production.local, fill it with dedicated development credentials, then use pnpm db:migrate:node and pnpm dev:node. Set APP_BASE_URL to your local origin.

Copy .dev.vars.example to .dev.vars. Generate four different secrets and set SESSION_PEPPER, MCP_TOKEN_PEPPER, CRON_SECRET, and SETUP_TOKEN. Leave optional Telegram settings empty until you connect it.

Use the command below once per secret. Keep .dev.vars out of Git.

```
node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"
```

> The repository can contain the seller’s resource names and origin. Replace them with your own before any remote operation. Local and production configuration are separate.

## 3. Prepare the database and start

Open the local URL printed in your terminal. The app directs a new installation to /setup. The local database lives in Wrangler’s local state; it is separate from production.

```
pnpm run cf-typegen
pnpm run db:migrate:local
pnpm dev
```

## 4. Make it yours

1. Enter the SETUP_TOKEN you configured.

2. Choose an owner password with at least 12 characters.

3. Scan the authenticator QR code and verify a code.

4. Save the recovery codes somewhere safe outside the repository.

5. Set your timezone and writing preferences. A daily posting goal is optional.

> This is a single-owner workspace. There is no public sign-up or team-account system.

## Related

- [Previous: Product tour](https://ownpost.fyi/docs/product-tour)
- [Next: Choose your starting point](https://ownpost.fyi/docs/guides/start)
