7.9 KiB
7.9 KiB
Shared Services Registry
Last updated: 2026-01-29 (v2 — added Resend, shared env patterns, AI APIs)
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 |
|---|---|---|---|
| Resend | Transactional email (noreply@donovankelly.xyz) | Todo App, Network App | RESEND_API_KEY in app envs |
| Dokploy API | Deploy apps via API | Dashboard deploy, cron task worker | "dokploy api key" |
| Brave Search API | Web search | Clawdbot gateway | "brave api key" |
| Anthropic API | LLM (Claude) | Network App AI features | ANTHROPIC_API_KEY in network-app env |
| OpenAI API | LLM (GPT) | Network App AI features | OPENAI_API_KEY in network-app env |
| BetterAuth | Auth framework (shared pattern) | Todo App, Network App | Per-app BETTER_AUTH_SECRET |
| Hammer Dashboard API | Task CRUD, webhooks | Cron jobs, heartbeat checks | "Hammer Queue (donovankelly.xyz)" |
| Gmail API (OAuth2) | Email monitoring | Heartbeat checks, ~/.local/bin/gmail |
"accounts.google.com" |
| Gitea (hammer) | Push code, create PRs | All repos | "git.infra.nkode.tech" |
| 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 |
| Todoist | Task management (legacy?) | Unknown | "Todoist" |
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:
- Hosting: Add to Dokploy under "Hammer Projects" or create a new project
- Domain: Add subdomain under
*.donovankelly.xyz(wildcard DNS already set) - Database: Create managed Postgres in Dokploy (free, internal networking)
- Code hosting: Create repo under
hammer/org ongit.infra.nkode.tech - Secrets: Store all API keys/creds in Bitwarden shared vault
- TLS: Automatic via Dokploy's Traefik (for Dokploy apps) or Caddy (for VPS services)
- Deploy: Use Dokploy API for automated deploys from task worker
Shared Env Patterns Across Apps
Apps on Dokploy share common env var patterns. When creating a new app:
| Env Var | What It Is | How to Get |
|---|---|---|
DATABASE_URL |
Postgres connection string | Create managed Postgres in Dokploy, use internal hostname |
BETTER_AUTH_SECRET |
Auth session signing key | Generate: openssl rand -hex 32 — store in Bitwarden |
RESEND_API_KEY |
Transactional email | Reuse existing key (same Resend account) |
FROM_EMAIL |
Sender address | Use noreply@donovankelly.xyz or per-app variant |
APP_URL |
Public URL | The app's subdomain (e.g. https://app.X.donovankelly.xyz) |
ALLOWED_ORIGINS |
CORS origins | Frontend + API URLs |
PORT |
Service port | Typically 3000/3001 — Dokploy routes via Traefik |
Not Yet Set Up (Opportunities)
- 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.xyzControl UI is BLOCKED — needs auth layer before re-enabling.
Keep this file updated when adding new services, domains, or accounts.