# Services Inventory Production server: 15.204.247.153 > Migration complete. The source DigitalOcean VPS (`hyperthrive-docker-services`, > 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: > Previous" entries were migrated from the old VPS in earlier sessions.) > > **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. ## 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 ### 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) ## Automation & Utilities ### backup.sh - Location: ~/services/backup.sh - 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 ### container-health-monitor.sh - Location: ~/services/container-health-monitor.sh - 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 ### daily-maintenance.sh - Location: ~/services/daily-maintenance.sh - 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`.