Add shared services registry - document all infrastructure, domains, APIs, repos

This commit is contained in:
2026-01-29 16:35:49 +00:00
parent 95f6dbed5f
commit f33c5673c2
3 changed files with 224 additions and 3 deletions

View File

@@ -0,0 +1,161 @@
# Shared Services Registry
*Last updated: 2026-01-29*
All reusable infrastructure, accounts, domains, and services across Hammer's projects.
---
## 🖥️ Infrastructure
### VPS — Clawdbot Host
- **Provider:** Hostinger
- **IP:** 72.60.68.214
- **OS:** Ubuntu Linux
- **User:** clawdbot (sudo, password required)
- **Purpose:** Runs Clawdbot gateway, Caddy reverse proxy
- **Services running:** Caddy (reverse proxy + TLS), Clawdbot gateway
### VPS — Dokploy (App Hosting)
- **Provider:** Dokploy Cloud
- **IP:** 191.101.0.153
- **Dashboard:** https://app.dokploy.com
- **API Key:** Stored in Bitwarden ("Dokploy API Key" or similar)
- **Purpose:** Docker-based app deployment (compose + individual apps + managed Postgres)
---
## 🌐 Domains
### Primary Domain: `donovankelly.xyz`
DNS managed via Hostinger. Wildcard `*.hammer.donovankelly.xyz` → 72.60.68.214.
| Subdomain | Points To | Purpose |
|-----------|-----------|---------|
| `hammer.donovankelly.xyz` | 72.60.68.214 (Caddy) | Clawdbot hooks endpoint (Control UI blocked) |
| `ws.hammer.donovankelly.xyz` | 72.60.68.214 (Caddy) | WebSocket relay (token-auth) for dashboard chat |
| `dash.donovankelly.xyz` | Dokploy (Traefik) | Hammer Dashboard (queue + chat + projects) |
| `app.todo.donovankelly.xyz` | Dokploy (Traefik) | Todo App frontend |
| `api.todo.donovankelly.xyz` | Dokploy (Traefik) | Todo App backend API |
| `app.thenetwork.donovankelly.xyz` | Dokploy (Traefik) | Network App (NWM CRM) frontend |
| `api.thenetwork.donovankelly.xyz` | Dokploy (Traefik) | Network App API backend |
| `app.nkode.donovankelly.xyz` | Dokploy (Traefik) | nKode frontend |
| `api.nkode.donovankelly.xyz` | Dokploy (Traefik) | nKode backend (Rust) |
### Other Domains
| Domain | Purpose |
|--------|---------|
| `git.infra.nkode.tech` | Gitea instance (code hosting) |
| `network-api.nkode.tech` | Alias for Network App API |
| `that2ndguy.com` | That2ndGuy golf brand (not yet live) |
---
## 📦 Dokploy Projects & Services
### Project: Hammer Projects (`EtUEaT-WRASozvV78tgPL`)
| Service | Type | Compose/App ID | Domain |
|---------|------|----------------|--------|
| hammer-queue | Compose | `kBdwrcZodIRyNIvQ-wrzG` | dash.donovankelly.xyz |
| network-app-api | Compose | `UKrNvUyMCdaSWkl6DcAGA` | api.thenetwork.donovankelly.xyz |
| network-app-web | Compose | `Sa1LrtH5uu-a7chrtebXb` | app.thenetwork.donovankelly.xyz |
| todo-app-v2 | Compose | `e07fMO8TXcHI_SkKqBWrl` | api.todo.donovankelly.xyz |
| todo-app-web | Compose | `ofMFmzQhEYK-3LfH5QmU_` | app.todo.donovankelly.xyz |
| network-app-db | Postgres | `KzFkJETXrW_oMaiPsUb2o` | (internal) |
| todo-app-db | Postgres | `WrvHLAc1kaqsrpTaSGOG4` | (internal) |
### Project: nKode (`rqBLzpkkE9b7hlQHh6tBG`)
| Service | Type | App ID | Domain |
|---------|------|--------|--------|
| nkode-frontend | Application | `f-9zg1S81u5Nzh_aZj2Jl` | app.nkode.donovankelly.xyz |
| nkode-backend | Application | `gEOD9RFeADCSYZscOI61B` | api.nkode.donovankelly.xyz |
| nkode-db | Postgres | `-kClddhuQsAWjy-ZP4anV` | (internal) |
---
## 📁 Git Repositories (Gitea)
All hosted at `git.infra.nkode.tech`. Two orgs: `hammer` (Hammer's repos) and `dkelly` (Donovan's repos).
### Hammer's Repos
| Repo | Purpose |
|------|---------|
| `hammer/clawd` | Clawdbot workspace (this repo) |
| `hammer/hammer-queue` | Hammer Dashboard (dash.donovankelly.xyz) |
| `hammer/network-app-api` | Network App backend |
| `hammer/network-app-web` | Network App frontend |
| `hammer/network-app-mobile` | Network App mobile (Flutter?) |
| `hammer/todo-app-web` | Todo App frontend |
| `hammer/donovan-portfolio` | Donovan's portfolio site |
| `hammer/nkode-web` | nKode frontend |
| `hammer/notes` | Markdown notes repo |
### Donovan's Repos
| Repo | Purpose |
|------|---------|
| `dkelly/Markdown-Notes` | Markdown notes app |
| `dkelly/flutter-nkode` | nKode Flutter mobile app |
| `dkelly/nkode-oidc` | nKode OIDC auth provider |
| `dkelly/nkode-rs` | nKode Rust backend |
---
## 🔑 Accounts & API Keys
All secrets stored in **Bitwarden** (shared org vault: `Hammer's Credentials`).
| Service | Purpose | Where Used | Bitwarden Item |
|---------|---------|-----------|----------------|
| Dokploy API | Deploy apps via API | Dashboard deploy, cron task worker | "Dokploy API Key" or similar |
| Hammer Dashboard API | Task CRUD, webhooks | Cron jobs, heartbeat checks | Bearer token in cron config |
| Gmail API (OAuth2) | Email monitoring | Heartbeat checks, `~/.local/bin/gmail` | OAuth tokens in gmail config |
| Gitea (hammer) | Push code, create PRs | All repos | Git credential in remote URLs |
| nKode Postgres | Database creds | nkode-backend env vars | "nKode Postgres (Dokploy)" |
| Clawdbot Gateway WS | WebSocket auth token | dash.donovankelly.xyz chat relay | GATEWAY_WS_URL / WS token |
### Bitwarden Vault Info
- **Organization:** `4e3ffbdb-0f8b-4f7a-a276-b0a30160e33f` (Hammer's Credentials)
- **Collection:** `320f9e42-607e-4180-8533-b0a30160e342` (Default collection)
- **CLI:** `/home/clawdbot/.npm-global/bin/bw`
- **Config:** `~/.clawdbot/.env` (BW_CLIENTID, BW_CLIENTSECRET, BW_PASSWORD)
---
## 🔧 Reusable for New Projects
When spinning up a new app, reuse:
1. **Hosting:** Add to Dokploy under "Hammer Projects" or create a new project
2. **Domain:** Add subdomain under `*.donovankelly.xyz` (wildcard DNS already set)
3. **Database:** Create managed Postgres in Dokploy (free, internal networking)
4. **Code hosting:** Create repo under `hammer/` org on `git.infra.nkode.tech`
5. **Secrets:** Store all API keys/creds in Bitwarden shared vault
6. **TLS:** Automatic via Dokploy's Traefik (for Dokploy apps) or Caddy (for VPS services)
7. **Deploy:** Use Dokploy API for automated deploys from task worker
### Not Yet Set Up (Opportunities)
- **Email sending (transactional):** No Resend/SendGrid account yet — would benefit Network App, Todo App, future apps
- **Stripe:** No account yet — needed if any app charges money
- **Analytics:** No Plausible/PostHog — could add self-hosted analytics
- **Error tracking:** No Sentry — could add for production monitoring
- **S3/Object storage:** No MinIO or cloud storage — would benefit file uploads
---
## 📋 Caddy Reverse Proxy (VPS: 72.60.68.214)
Caddy handles TLS termination for VPS-hosted services:
| Route | Target | Notes |
|-------|--------|-------|
| `hammer.donovankelly.xyz/hooks/*` | Clawdbot gateway | Webhook endpoint only |
| `ws.hammer.donovankelly.xyz` | Clawdbot gateway | WebSocket, token-authenticated |
| `app.todo.donovankelly.xyz` | Dokploy | Todo frontend |
| `api.todo.donovankelly.xyz` | Dokploy | Todo backend |
> ⚠️ `hammer.donovankelly.xyz` Control UI is BLOCKED — needs auth layer before re-enabling.
---
*Keep this file updated when adding new services, domains, or accounts.*

View File

@@ -1,8 +1,7 @@
# Personal # Personal
- [ ] Anniversary coming up @due(2026-09-01)
- [ ] Build personal website (need LinkedIn + resume for content) - [ ] Build personal website (need LinkedIn + resume for content)
- [ ] Congress gpt - [ ] Congress gpt
- [ ] App that gets rid of Twitter bots
- [ ] video streaming from vps: FFmpeg + Nginx or Peertube - [ ] video streaming from vps: FFmpeg + Nginx or Peertube
- [ ] install and practice home row mods - [ ] Post Clawdbot demo/intro in Executive AI Advisors group (James's group)
- [ ] Personal budgeting app (like EveryDollar) - use SimpleFIN ($1.50/mo) or CSV import for bank data

61
tasks/tasks_for_hammer.md Normal file
View File

@@ -0,0 +1,61 @@
# Todos for Hammer
Many of these are train of though.
## Moltbot Authentication and Authorization for new users
Moltbot isn't easy to share with other people.
I want to give other people access but i don't want them to be able to access sensitive info like bitwarden passwords or change code in repos that they shouldn't have access to.
Moltbot needs more than just skills. It needs authorizition with those skills too with mulitple users.
If I think of moltbot as a SaaS, as the admin, i want to give many people access. I want to control what they can do with their moltbot.
Moltbot shouldn't have skills. It should probably connect to an MCP that give it access controls.
## Moltbot Best Practices
- Prompt injection is the biggest and easiest security risk.
- If Moltbot has an email, it must have a whitelist.
- Moltbot should use MCPs with access control. It should be building its own MCPs with access control dashboard
## Systematize App building
When i ask moltbot to build an app, it should follow a procedure. It might go something like this:
- Ideation: get an Idea of what it's building
- When prototyping, it should use the same architecture everytime.
- SPA, Postgres, React, Dokploy, etc
- Many apps use the same external services. need a process for giving claudbot access to the same test API key so it can use the same ones over an over
- At somepoint, the app need to be a "production" app even if i'm the only user.
- What are the phases of development?
- Ideation
- Development
- Test Deployment
- Verification by user
- if user likes it, go to Prod deployment
- if the user wants things changed, go back to development
- Prod Deployment
- after prod deployment user might want new features.
- what's the protocol? probably the user goes back to the test env and works on changes until they like it.
- the biggest chanllenges i see are DB migration.
- what happens it the rollout breaks?
- should probably have a staging env that periodically syncs with prod.
- if something breaks it prod, what't roll back protocol? what are the processing for rolling back?
- what should always be in an application?
- logging
- testing
- metrics
- what tools are out there? what's best practice?
- user bug reporting? feature requests?
- partial feature rollouts?
- some of these features above will only be needed if i plan to make the app public.
- I've never used stripe for payment. are there other options? what's easiest?
- how to i protect myself legally? i know there are apps like termly but it seems expensive. What does pieter levels use?
## Moltbot visibility
Sometimes i'm working on many things in the telegram and it loses context.
Moltbot needs different task context and needs to have a queue of task that i can see. If moltbot is like a single threaded CPU, it needs schedule and process with their own context. want to see this queue of tasks and be able to control what task get done in which order. For example, this document has many task, each of which has its own context and should be done sequetially (or in parrallel if possible).