Domain Names & URLs
Primary Domains
Short URL Domain:
mmlnk.us
www subdomain:
www.mmlnk.us (redirects to apex)
Admin Interface:
admin.mmlnk.us (IP-restricted to 10.0.0.157)
Main Website:
mad-monkey-creations.com
www subdomain:
www.mad-monkey-creations.com
n8n (Mad Monkey):
n8n.mad-monkey-creations.com (10.0.0.250)
Traefik Dashboard:
traefik.mad-monkey-creations.com
Listmonk:
list.mad-monkey-creations.com
n8n Webhooks:
hooks.mad-monkey-creations.com
Adventure/Landing:
adventure.mad-monkey-creations.com (Benny campaign)
IP Addresses
Network Architecture - 3-Server
NGINX SSL Proxy: 10.0.0.251 (NGINX Proxy Manager, Let's Encrypt SSL)
NPM Admin: http://10.0.0.251:81 - Login: indigoproductions@yahoo.com
Orchestrator: 10.0.0.197 (Claude Code, Projects, Documentation)
BennyBeen: 10.0.0.250 (PostgreSQL, Shlink, Listmonk, n8n - All Mad Monkey Services)
External IP: 76.150.65.61 (DYNAMIC - can change)
SSL Flow: Internet → 76.150.65.61:443 → NGINX Proxy (10.0.0.251) → Internal Services
Full Details: See Infrastructure Page
SSL Proxy Server (10.0.0.251)
Server Hostname:
dockerhost-02
Internal IP:
10.0.0.251
SSH User:
indigoadmin
SSH Command:
ssh -i /root/.ssh/id_ed25519_to_250 indigoadmin@10.0.0.251
NPM Admin UI:
http://10.0.0.251:81
NPM Admin Login:
indigoproductions@yahoo.com
Proxy Hosts:
27 configured
Redirection Hosts:
5 configured
Orchestrator Server (10.0.0.197)
Server Hostname:
orchestrator
Internal IP:
10.0.0.197
SSH User:
indigoadmin or root
Project Path:
/home/indigoadmin/projects/
Purpose:
Claude Code CLI, project files, documentation
BennyBeen Docker Host (10.0.0.250)
| Service | Port | Domain | Status |
|---|---|---|---|
| PostgreSQL | 5432 | Internal only | Active |
| n8n (Mad Monkey) | 5678 | n8n.mad-monkey-creations.com, hooks.mad-monkey-creations.com | Active |
| Shlink | 8081 | mmlnk.us, admin.mmlnk.us | Active |
| Traefik Dashboard | 8080 | traefik.mad-monkey-creations.com | Active |
| Listmonk | 9000 | list.mad-monkey-creations.com | Active |
| Adventure (Landing Page) | 80 (via Traefik) | adventure.mad-monkey-creations.com | Active |
| HTTP | 80 | All domains | Active |
| HTTPS | 443 | All domains | Active |
Server Access - BennyBeen
Server Hostname:
bennybeen
Internal IP:
10.0.0.250
External IP:
76.150.65.61 (dynamic)
SSH User:
bennybeen
Project Path:
/home/bennybeen/mad-monkey/
Admin Whitelist IP:
10.0.0.157
Email Services
ForwardMail.net (Primary Email Provider)
Purpose:
SMTP relay and email delivery
Status:
ACTIVE
SMTP Server:
smtp.forwardemail.net
Port:
587
From Email:
hello@mad-monkey-creations.com
Why ForwardMail.net:
Better deliverability, PostgreSQL integration, webhooks, API access, no vendor lock-in
Mail Server Port Status
| Port | Service | Status | Notes |
|---|---|---|---|
| 25 | SMTP | FILTERED | Blocked by Comcast ISP |
| 465 | SMTPS | OPEN | Secure SMTP |
| 587 | Submission | OPEN | Mail submission |
| 993 | IMAPS | OPEN | Secure IMAP |
| 110 | POP3 | CLOSED | - |
| 143 | IMAP | CLOSED | - |
| 995 | POP3S | CLOSED | - |
Database Information
PostgreSQL 16 (on bennybeen @ 10.0.0.250)
Host:
10.0.0.250
Port:
5432
Database:
madmonkey
Username:
mm_user
Password:
YOUR_STRONG_PASS (placeholder)
Connection String:
postgresql://mm_user:PASSWORD@10.0.0.250:5432/madmonkey
Environment Variables:
POSTGRES_PASSWORD="YOUR_STRONG_PASS" POSTGRES_USER="mm_user" POSTGRES_DB="madmonkey" DB_HOST="10.0.0.250" DB_DRIVER="postgres"
Database Tables (CREATED):
- cards - QR card inventory (Created)
- scans - Scan event logs (Created)
- entries - Contest entry records (Created)
- moves - Traveler card movement logs (Created)
- nests - Venue/location tracking (Created)
- prizes - Winner fulfillment (Created)
- users - Subscriber profiles (Created)
- referrals - Referral tracking (Created)
Listmonk Database
Schema:
listmonk
Separate from app database, managed by Listmonk installer
Shlink Database
Uses same PostgreSQL instance with separate schema
API Keys & Integrations
Environment Variables Required
MM_SENDER_EMAIL="hello@mad-monkey-creations.com" MM_LANDING_BASE="https://www.mad-monkey-creations.com" MM_REWARD_URL="https://www.mad-monkey-creations.com/reward" MM_DISCOUNT_CODE="BANANAS10" LISTMONK_URL="<listmonk-instance-url>" LISTMONK_LIST_ID="<list-id>" N8N_WEBHOOK_SECRET="********" N8N_ENCRYPTION_KEY="<encryption-key>" DEFAULT_DOMAIN="mmlnk.us" ETSY_API_KEY="********"
External API Services
| Service | Purpose | Access Level |
|---|---|---|
| Etsy API | Product linking | Read-only |
| TeePublic | Merchandise fulfillment | - |
| Printify API | Print-on-demand fulfillment | Order creation |
| Shlink REST API | URL shortening | Full access |
| Listmonk API | Email list management | Full access |
| ipapi.co | Geolocation services | Optional |
| ipinfo | IP geolocation (alternative) | Optional |
| Cloudflare Turnstile | Bot protection/CAPTCHA | - |
| hCaptcha | Bot protection (alternative) | - |
Docker Container Information
BennyBeen Containers (10.0.0.250)
n8n - Workflow Automation (Mad Monkey Dedicated)
Container:
mm-n8n
Status:
Active
Access URL:
http://10.0.0.250:5678
Webhook Domain:
hooks.mad-monkey-creations.com
n8n API Key:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkODI3ZTFhZC0xMzU1LTRiMWYtOTZlMi1hOTNiYzQxNDgwYzciLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzY3NDU3MDcwfQ.I6AL5E62mCMbIMZrfPap9MgZNXvmbNqrCgJqPbK04GU
API Usage:
curl -X GET "http://10.0.0.250:5678/api/v1/workflows" \ -H "X-N8N-API-KEY: <API_KEY>"
Listmonk - Email Platform
Container:
mm-listmonk
Status:
Active
Access URL:
http://10.0.0.250:9000
Email:
hello@mad-monkey-creations.com
Admin Username:
mmadmin
Admin Password:
t1a (no caps or special chars)
API Access (for n8n integration)
API Username:
n8n_api
API Token:
madmonkey-api-token-2026
API Usage:
curl -X GET "http://10.0.0.250:9000/api/subscribers" \ -u "n8n_api:madmonkey-api-token-2026"
Listmonk v6 API users store plaintext tokens (not hashed). User type is 'api' with Super Admin role.
Shlink - URL Shortener
Container:
mm-shlink
Status:
Active
Access URL:
http://10.0.0.250:8081
Short URLs Configured:
T01-T05 active, pointing to
/webhook/scan
API Key:
71870798-7566-4fce-bff3-055a3a076710
API Usage:
curl -X GET "http://10.0.0.250:8081/rest/v3/short-urls" \ -H "X-Api-Key: 71870798-7566-4fce-bff3-055a3a076710"
URL Pattern:
mmlnk.us/T01 → https://hooks.mad-monkey-creations.com/webhook/scan?qr_id=T01
PostgreSQL
Container:
mm-postgres
Status:
Active
Port:
5432
postgres:
image: postgres:16-alpine
ports: 5432
environment:
POSTGRES_USER: mm_user
POSTGRES_PASSWORD: (from .env)
POSTGRES_DB: madmonkey
Traefik - Reverse Proxy
Container:
mm-traefik
Status:
Active
Dashboard:
http://10.0.0.250:8080
SSL:
Handled by NGINX SSL Proxy on 10.0.0.251 (NOT Traefik)
Adventure - Landing Page (Benny Campaign)
Container:
mm-adventure
Status:
Active
Image:
nginx:alpine
Domain:
adventure.mad-monkey-creations.com
Landing Page:
https://adventure.mad-monkey-creations.com/benny
Form Submit:
https://hooks.mad-monkey-creations.com/webhook/entry
Files Location:
/home/bennybeen/mad-monkey/landing-page/
CLI Tools & Node.js
Node.js Installation
Version:
v24.12.0
Binary Location:
/usr/local/bin/node
NVM Path:
/home/bennybeen/.nvm/versions/node/v24.12.0/
Accessible by:
bennybeen user
npm
Version:
9.2.0
Binary Location:
/usr/bin/npm
Claude Code CLI
Version:
2.0.76
Binary Location:
/usr/local/bin/claude
Purpose:
AI assistant for automation
Security Notes
- All credentials marked with
********should be replaced with actual secure values - API keys should be rotated regularly
- Database passwords should be strong (min 16 chars, mixed case, numbers, symbols)
- N8N_ENCRYPTION_KEY must be kept secure - credentials won't decrypt without it
- Admin endpoints (admin.mmlnk.us) must be IP-restricted
- Never commit credentials to version control