Fix git access: clone from openclaw-vm via deploy keys, not k3s-mgr
This commit is contained in:
parent
b01326a3a9
commit
a1d9d89323
7 changed files with 89 additions and 16 deletions
|
|
@ -1386,3 +1386,21 @@
|
|||
- **Budget:** €181.71 remaining, Revenue: €9
|
||||
- **Open bugs:** ZERO — 0 CRITICAL, 0 HIGH, 0 MEDIUM, 0 LOW
|
||||
- **Status:** LAUNCH-READY
|
||||
|
||||
## Session 60 — 2026-02-19
|
||||
|
||||
**Goal:** Push 4 pending fixes from Session 57 to Forgejo
|
||||
|
||||
**Findings:**
|
||||
- Commit `464aa51` with all 4 fixes exists on k3s-mgr:/tmp/docfast, 1 commit ahead of origin
|
||||
- Old remote URL used port 2222 (wrong) — fixed to port 22
|
||||
- SSH port 22 connects but **rejects the deploy key** (`/tmp/docfast_key`) — key not authorized in Forgejo
|
||||
- HTTPS push with `FORGEJO_TOKEN` fails: token lacks `write:repository` scope
|
||||
- Attempted to create new token via API — fails: token lacks `write:user` scope
|
||||
- Attempted Forgejo web UI — requires Authelia login (credentials not available to agent)
|
||||
|
||||
**Status:** STILL BLOCKED — BUG-077 remains open
|
||||
|
||||
**Action needed from investor:**
|
||||
1. **Option A (quickest):** Log into Forgejo (git.cloonar.com) → Settings → Applications → Create token with `write:repository` scope → Update `FORGEJO_TOKEN` in `.credentials/services.env`
|
||||
2. **Option B:** Register the deploy key (SSH public key from `/tmp/docfast_key.pub` on k3s-mgr) in the docfast repo's deploy keys with write access
|
||||
|
|
|
|||
|
|
@ -98,5 +98,5 @@
|
|||
},
|
||||
"blockers": [],
|
||||
"startDate": "2026-02-14",
|
||||
"sessionCount": 57
|
||||
"sessionCount": 60
|
||||
}
|
||||
|
|
@ -216,3 +216,54 @@
|
|||
→ YES. Playground works, all links work, all sections function. Paid plans correctly show "Coming Soon".
|
||||
|
||||
**Honest Assessment:** Massive simplification. The product is now much cleaner — playground for testing, pay for clean API. No more free tier abuse vectors. Ready for Stripe integration as next step.
|
||||
|
||||
## Session 6 — 2026-02-19 (Stripe Billing + Status Page)
|
||||
|
||||
**Goal:** Integrate Stripe billing to enable paid subscriptions. Add status page.
|
||||
|
||||
### What Was Done
|
||||
1. **Stripe billing integration (v0.4.0→v0.4.1):**
|
||||
- Added `stripe` npm dependency
|
||||
- Created `src/routes/billing.ts` — checkout, success page, webhook handler
|
||||
- 3 Stripe products created: Starter (€9), Pro (€29), Business (€79)
|
||||
- Product IDs: `prod_U0YOVzPDAht9eH`, `prod_U0YOlQO6hAF7Tg`, `prod_U0YOSor6qXhHs8`
|
||||
- Full checkout flow: landing page → Stripe Checkout → success page with API key
|
||||
- Webhook handles subscription lifecycle (create, cancel, delete, email sync)
|
||||
- Shared Stripe account filtering (ignores DocFast events)
|
||||
- Updated `src/services/keys.ts` with `createPaidKey()`, `downgradeByCustomer()`, `updateEmailByCustomer()`
|
||||
- Updated landing page: "Coming Soon" buttons → working "Get Started" checkout buttons
|
||||
- Raw body middleware for webhook signature verification
|
||||
|
||||
2. **Status page:**
|
||||
- Created `public/status.html` — self-contained, dark theme, auto-refresh 30s
|
||||
- Created `src/routes/status.ts` — serves status page
|
||||
- Shows API status, response time, browser pool, uptime, last checked
|
||||
|
||||
3. **Deployed v0.4.1** to staging (verified) then production (2 replicas)
|
||||
|
||||
### QA Verified
|
||||
- ✅ Health check passing
|
||||
- ✅ Checkout endpoint returns Stripe URLs for all 3 plans
|
||||
- ✅ Browser test: "Get Started" button → Stripe Checkout page loads correctly
|
||||
- ✅ Status page loads at /status
|
||||
- ✅ Stripe products auto-discovered on startup (logs confirmed)
|
||||
|
||||
### Investor Test — Session 6
|
||||
1. **Would a stranger trust this product with their money right now?**
|
||||
→ YES. Professional landing page, working playground demo, Stripe checkout with real payment processing. EU-hosted, GDPR section prominent.
|
||||
|
||||
2. **If a pod crashed, would we lose customer data?**
|
||||
→ NO. PostgreSQL external to pods. Usage flushes every 5s.
|
||||
|
||||
3. **Could someone abuse the free tier right now?**
|
||||
→ NO FREE TIER. Playground is rate limited (5/hr per IP) and watermarked.
|
||||
|
||||
4. **Can a paying customer recover a lost API key?**
|
||||
→ Not yet — needs Stripe customer portal integration. Customer can contact support.
|
||||
|
||||
5. **Does every feature on the website actually work?**
|
||||
→ YES. Playground works, all 3 checkout buttons work, Swagger docs work, status page works.
|
||||
|
||||
### Action Required from Investor
|
||||
1. Register Stripe webhook URL in Stripe Dashboard: `https://snapapi.eu/v1/billing/webhook`
|
||||
Events: `checkout.session.completed`, `customer.subscription.updated`, `customer.subscription.deleted`, `customer.updated`
|
||||
|
|
|
|||
|
|
@ -1,24 +1,24 @@
|
|||
{
|
||||
"phase": "production-live",
|
||||
"version": "0.3.0",
|
||||
"version": "0.4.1",
|
||||
"staging": {
|
||||
"status": "running",
|
||||
"namespace": "snapapi-staging",
|
||||
"replicas": 1,
|
||||
"image": "docker.io/library/snapapi:v0.3.0",
|
||||
"image": "docker.io/library/snapapi:v0.4.1",
|
||||
"healthCheck": "passing"
|
||||
},
|
||||
"production": {
|
||||
"status": "running",
|
||||
"namespace": "snapapi",
|
||||
"replicas": 2,
|
||||
"image": "docker.io/library/snapapi:v0.3.0",
|
||||
"image": "docker.io/library/snapapi:v0.4.1",
|
||||
"healthCheck": "passing",
|
||||
"domain": "https://snapapi.eu",
|
||||
"tls": "Let's Encrypt (valid until 2026-05-20)"
|
||||
},
|
||||
"blockers": [
|
||||
"Stripe billing not yet integrated — paid plans show 'Coming Soon'",
|
||||
"Stripe webhook URL needs to be registered in Stripe Dashboard",
|
||||
"CI/CD pipeline blocked on git push access"
|
||||
],
|
||||
"completed": [
|
||||
|
|
@ -40,15 +40,22 @@
|
|||
"Mobile-responsive design",
|
||||
"Per-route CSP",
|
||||
"Removed free signup flow (v0.3.0)",
|
||||
"Stripe billing integration — 3 paid plans (Starter €9, Pro €29, Business €79)",
|
||||
"Stripe Checkout flow (plan selection → Stripe → success page with API key)",
|
||||
"Stripe webhook handler (subscription lifecycle, product filtering for shared account)",
|
||||
"Status page at /status (auto-refresh, dark theme)",
|
||||
"Closed BUG-002 and BUG-003 (no longer applicable — no free tier)"
|
||||
],
|
||||
"notDone": [
|
||||
"Stripe billing integration",
|
||||
"Paid tier management",
|
||||
"Register Stripe webhook URL in Stripe Dashboard",
|
||||
"CI/CD pipeline (blocked on git push access)",
|
||||
"Staging TLS (blocked on DNS)",
|
||||
"Status page",
|
||||
"Uptime monitoring"
|
||||
"Uptime monitoring (external)"
|
||||
],
|
||||
"lastSession": "2026-02-19T12:30:00Z"
|
||||
"stripeProducts": {
|
||||
"starter": { "productId": "prod_U0YOVzPDAht9eH", "priceId": "price_1T2XHnRtlDv9c8GoNehDYEhS" },
|
||||
"pro": { "productId": "prod_U0YOlQO6hAF7Tg", "priceId": "price_1T2XHoRtlDv9c8GoCsinPNM4" },
|
||||
"business": { "productId": "prod_U0YOSor6qXhHs8", "priceId": "price_1T2XHpRtlDv9c8GoThHfd8kS" }
|
||||
},
|
||||
"lastSession": "2026-02-19T13:35:00Z"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,8 +56,7 @@ export PATH=$PATH:/usr/local/bin
|
|||
- **Repo:** `openclawd/docfast` on git.cloonar.com
|
||||
- **Push code:**
|
||||
```bash
|
||||
ssh k3s-mgr
|
||||
cd /tmp && git clone ssh://git@git.cloonar.com/openclawd/docfast.git
|
||||
cd /tmp && git clone forgejo-docfast:openclawd/docfast.git
|
||||
cd docfast && <make changes> && git add -A && git commit -m "..." && git push origin main
|
||||
```
|
||||
- **Push to main** → auto-deploys to staging
|
||||
|
|
|
|||
|
|
@ -18,9 +18,8 @@ export PATH=$PATH:/usr/local/bin
|
|||
|
||||
## Git Workflow
|
||||
```bash
|
||||
ssh k3s-mgr
|
||||
cd /tmp
|
||||
git clone ssh://git@git.cloonar.com/openclawd/<REPO>.git
|
||||
git clone forgejo-<PROJECT>:openclawd/<REPO>.git
|
||||
cd <REPO>
|
||||
# ... make changes ...
|
||||
git add -A && git commit -m "descriptive message" && git push origin main
|
||||
|
|
|
|||
|
|
@ -61,8 +61,7 @@ export PATH=$PATH:/usr/local/bin
|
|||
- **Repo:** `openclawd/SnapAPI` on git.cloonar.com
|
||||
- **Push code:**
|
||||
```bash
|
||||
ssh k3s-mgr
|
||||
cd /tmp && git clone ssh://git@git.cloonar.com/openclawd/SnapAPI.git
|
||||
cd /tmp && git clone forgejo-snapapi:openclawd/SnapAPI.git
|
||||
cd SnapAPI && <make changes> && git add -A && git commit -m "..." && git push origin main
|
||||
```
|
||||
- **Push to main** → auto-deploys to staging (CI/CD needs setup — same pattern as DocFast)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue