Last Updated: January 8, 2026 at 05:30 UTC

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