2026-05-15 14:26:32 +00:00
# Services Inventory
Production server: 15.204.247.153
2026-06-24 15:48:11 +00:00
> Migration complete. The source DigitalOcean VPS (`hyperthrive-docker-services`,
2026-06-25 16:20:08 +00:00
> 161.35.12.75) was deleted on 2026-06-24. Services originating from that VPS now
> run solely on this OVH host with no DigitalOcean fallback. ("Deployed:
2026-06-24 15:48:11 +00:00
> Previous" entries were migrated from the old VPS in earlier sessions.)
2026-06-25 16:20:08 +00:00
>
> **Exception — remetrics:** `remetrics` and `strapi-remetrics` were migrated on
> 2026-06-24 from a *separate* DigitalOcean web droplet (147.182.131.217). That
> droplet is currently **frozen and kept as a short-term rollback (NOT deleted)**
> pending decommission — it is the only remaining DigitalOcean fallback.
2026-06-24 15:48:11 +00:00
2026-05-15 14:26:32 +00:00
## Active Services
### n8n (Hyperthrive Production)
- **Status**: Running
- **Domain**: n8n.hyperthrive.io
- **Port**: 5678 (internal), exposed via Traefik HTTPS
- **Docker Network**: traefik, internal
- **Container Image**: docker.n8n.io/n8nio/n8n:1.71.3
- **Database**: PostgreSQL 16 (local service_postgres)
- **Storage**: Named volume n8n_storage
- **Key Environment Variables**:
- N8N_HOST=n8n.hyperthrive.io
- N8N_PROTOCOL=https
- EXECUTIONS_DATA_MAX_AGE=72
- NODE_ENV=production
- **Special Features**:
- Community packages enabled
- Webhook support via HTTPS
- MCP route support with no-buffer middleware
- Health check enabled
- **Traefik Config**:
- Main route: Host(n8n.hyperthrive.io) && !PathPrefix(/mcp)
- MCP route: Host(n8n.hyperthrive.io) && PathPrefix(/mcp) with custom buffering headers
- **Deployed**: 2026-05-14
### n8n-test (Hyperthrive Testing)
- **Status**: Running
- **Domain**: testn8n.hyperthrive.io
- **Port**: 5678 (internal), exposed via Traefik HTTPS
- **Docker Network**: test_n8n_internal, traefik
- **Container Image**: docker.n8n.io/n8nio/n8n:latest
- **Database**: PostgreSQL 16 (local service_postgres)
- **Storage**: Named volume test_n8n_storage
- **Key Environment Variables**:
- N8N_HOST=testn8n.hyperthrive.io
- N8N_PROTOCOL=https
- EXECUTIONS_DATA_MAX_AGE=72
- NODE_ENV=production
- **Purpose**: Testing and staging environment for n8n workflows
- **Traefik Config**:
- Route: Host(testn8n.hyperthrive.io)
- **Deployed**: 2026-05-14
### n8n-swanson (Personal n8n Instance)
- **Status**: Running
- **Port**: 5678
- **Container Image**: n8nio/n8n:latest
- **Purpose**: Personal/Jared's n8n instance
- **Deployed**: Previous
### Vaultwarden
- **Status**: Running
- **Purpose**: Password manager and vault
- **Deployed**: Previous
### Invoice Ninja
- **Status**: Running
- **Purpose**: Invoicing and billing system
- **Deployed**: Previous
### NocoDB
- **Status**: Running
- **Purpose**: No-code database platform
- **Deployed**: Previous
### LandHomeTeam
- **Status**: Running
- **Purpose**: Business-specific application
- **Deployed**: Previous
### BestSolarTech
- **Status**: Running
- **Purpose**: Business-specific application
- **Deployed**: Previous
### Forgejo
- **Status**: Running
- **Purpose**: Git repository platform
- **Deployed**: Previous
### Traefik
- **Status**: Running
- **Purpose**: Reverse proxy, SSL termination, routing
- **Version**: v3.0+
- **Deployed**: Previous
### Watchtower
- **Status**: Running
- **Purpose**: Automated container updates
- **Deployed**: Previous
2026-06-25 16:20:08 +00:00
### remetrics (Rails Application)
- **Status**: Running
- **Domain**: remetrics.io, www.remetrics.io
- **Port**: 3000 (internal), exposed via Traefik HTTPS
- **Docker Network**: traefik, internal
- **Service Directory**: ~/services/remetrics/
- **Containers**:
- `remetrics-remetrics-1` — Rails web, image `remetrics-web:staging-baked`
- `remetrics-worker-1` — Sidekiq worker, image `remetrics-worker:staging-baked`
- `remetrics-db-1` — PostgreSQL (db `remetrics_production` , user `estatioro` )
- redis (job queue / cache)
- **Database**: PostgreSQL — `remetrics_production` (480 users migrated, zero data loss)
- **Traefik Config**:
- Routers for remetrics.io / www.remetrics.io use `certresolver=cloudflare` (ACME DNS-01)
- **Notes**:
- Web and worker images are **baked** to be GitHub-independent at boot (no `bundle install` / no git fetch at startup).
- The Rails app fetches CMS content from a **HARDCODED** URL `https://cms.remetrics.io`
(in app source `strapi/article.rb` and `help_page.rb` ) — NOT env-configurable.
- Sitemap refresh cron on OVH: `~/services/remetrics/sitemap_refresh.sh` at 01:00
(replaces a broken DO cron that referenced a non-existent container).
- **Migration**: From DigitalOcean web droplet 147.182.131.217 (frozen rollback, not deleted)
- **Deployed**: 2026-06-24 (migrated from DigitalOcean)
### strapi-remetrics (Strapi CMS)
- **Status**: Running
- **Domain**: cms.remetrics.io
- **Port**: 1337 (internal), exposed via Traefik HTTPS
- **Docker Network**: traefik
- **Service Directory**: ~/services/strapi-remetrics/
- **Container**: `strapi-remetrics`
- **Database**: SQLite (local)
- **Storage**: Media stored on GCS bucket `remetrics-strapi`
- **Traefik Config**:
- Router for cms.remetrics.io uses `certresolver=cloudflare` (ACME DNS-01)
- **Notes**:
- This is the CMS that the Rails `remetrics` app reads from via the hardcoded `https://cms.remetrics.io` URL.
- `strapi.remetrics.io` (a legacy hostname) remains on the old DO box and is dead/unused — NOT served from OVH.
- **Migration**: From DigitalOcean web droplet 147.182.131.217 (frozen rollback, not deleted)
- **Deployed**: 2026-06-24 (migrated from DigitalOcean)
2026-05-15 14:26:32 +00:00
## Automation & Utilities
### backup.sh
- Location: ~/services/backup.sh
2026-06-25 16:20:08 +00:00
- Purpose: Automated backup of all service data (auto-discovers all services)
- Schedule: Nightly at 02:00 EST (07:00 UTC)
- See [Disaster Recovery ](./disaster-recovery.md ) for restore procedures
2026-05-15 14:26:32 +00:00
### container-health-monitor.sh
- Location: ~/services/container-health-monitor.sh
2026-06-25 16:20:08 +00:00
- Purpose: Health monitor for BestSolarTech containers only (misleading name — not server-wide)
- Schedule: Every 10 minutes
- See [Health Monitoring ](./health-monitoring.md ) for coverage details and gaps
2026-05-15 14:26:32 +00:00
### daily-maintenance.sh
- Location: ~/services/daily-maintenance.sh
2026-06-25 16:20:08 +00:00
- Purpose: Daily maintenance for BestSolarTech only (misleading name — not server-wide)
- Schedule: Daily at 04:30 EST (moved from 03:00 on 2026-06-25 to de-collide from Watchtower)
---
## Known Gaps
### mailpace.env — UNDOCUMENTED
- Location: `~/services/mailpace.env` (in the `~/services/` root)
- An environment file for MailPace transactional email exists but no container is documented as using it.
- **TODO**: Identify which service(s) consume this env file and add them to the inventory. MailPace may be referenced by an existing service's compose file via a path like `env_file: ../mailpace.env` .