74 lines
2.3 KiB
Markdown
74 lines
2.3 KiB
Markdown
# Cloudflare Manual Deployment and Recovery
|
|
|
|
Use this page for advanced configuration, troubleshooting, and emergency recovery. Most users should use [Deploy EdgeEver online from a Fork](deploy-cloudflare-button.md); AI Agents should use [AI Agent Cloudflare Deployment](agent-deploy-cloudflare.md).
|
|
|
|
## First manual deployment
|
|
|
|
1. Fork the repository and clone it locally.
|
|
2. Install Node.js 22+ and Bun.
|
|
3. Initialize configuration and Cloudflare resources:
|
|
|
|
```sh
|
|
cp .env.local.example .env.local
|
|
bun install
|
|
EDGE_EVER_PASSWORD='<initial password>' bun run deploy:setup
|
|
bun run deploy:doctor
|
|
bun run deploy:manual
|
|
```
|
|
|
|
`deploy:setup` creates or reuses D1 and R2 and writes configuration to the git-ignored `.env.local`. Without `EDGE_EVER_PASSWORD`, the default login is `admin` / `admin123`.
|
|
|
|
After deployment, confirm:
|
|
|
|
- `/api/health` returns `200` with `"ok": true`
|
|
- `/api/openapi.json` is reachable
|
|
- `admin` can log in
|
|
|
|
## Create resources manually
|
|
|
|
```sh
|
|
cp .env.local.example .env.local
|
|
bun install
|
|
bunx wrangler d1 create edgeever
|
|
bunx wrangler r2 bucket create edgeever-resources
|
|
```
|
|
|
|
Write the returned D1 ID and resource names to `.env.local`:
|
|
|
|
```text
|
|
EDGE_EVER_D1_DATABASE_ID=<database_id>
|
|
EDGE_EVER_R2_BUCKET_NAME=edgeever-resources
|
|
EDGE_EVER_AUTH_USERNAME=admin
|
|
EDGE_EVER_AUTH_PASSWORD=<strong password>
|
|
EDGE_EVER_SESSION_TTL_DAYS=400
|
|
# Optional portable application-level login protection. These also work with Docker + SQLite.
|
|
EDGE_EVER_AUTH_LOGIN_WINDOW_SECONDS=900
|
|
EDGE_EVER_AUTH_LOGIN_USERNAME_MAX_ATTEMPTS=5
|
|
EDGE_EVER_AUTH_LOGIN_USERNAME_COOLDOWN_SECONDS=900
|
|
EDGE_EVER_AUTH_LOGIN_IP_MAX_ATTEMPTS=30
|
|
EDGE_EVER_AUTH_LOGIN_IP_COOLDOWN_SECONDS=300
|
|
```
|
|
|
|
Then run:
|
|
|
|
```sh
|
|
bun run deploy:doctor
|
|
bun run deploy:manual
|
|
```
|
|
|
|
Do not commit `.env.local` or write passwords to D1.
|
|
|
|
## Recovery
|
|
|
|
- Database not ready: confirm the D1 binding is `DB`, then run `bun run deploy:manual`.
|
|
- Authentication not configured: set `EDGE_EVER_AUTH_PASSWORD` in `.env.local`, then redeploy.
|
|
- Forgotten admin password:
|
|
|
|
```sh
|
|
EDGE_EVER_PASSWORD='<new password>' bun run auth:reset-password -- --remote --username admin
|
|
```
|
|
|
|
## Automatic updates
|
|
|
|
After manual deployment, configure [Cloudflare Workers Builds](cloudflare-workers-builds.md) and enable **Update deployed EdgeEver** in the Fork's **Actions**.
|