---
tags: [infrastructure, server, gcp, oliver-internal]
updated: 2026-04-24
---

# optical — optical-web-1 (Main AI Production)

> SSH alias: `optical` → `vadym.samoilenko@10.220.168.5:22`
> Key: `~/.ssh/id_rsa_vadym`

## Overview

Main Oliver Agency AI production server. Hosts ~35 client and internal AI applications as systemd services (mix of Python/FastAPI, Node.js, Docker Compose). The biggest server in the fleet — many apps share resources on a single GCP instance.

- **Hostname**: optical-web-1
- **Platform**: GCP (europe-west2 assumed)
- **OS**: Ubuntu 22.04.4 LTS
- **IP**: 10.220.168.5
- **Web server**: Apache 2.4 (no Nginx)
- **Domain**: ai-sandbox.oliver.solutions
- **Disk**: 116 GB total

## Running Applications (`/opt/`)

| App | Service | Port | Tech |
|-----|---------|------|------|
| agent_collector | agent_collector.service | — | Python |
| AgentHub / agent_tracker | agent_tracker.service | 17000 | Python/FastAPI |
| AI QC | ai_qc.service | — | Python |
| Box→Bynder | box2bynder.service | — | Python |
| Brief Extractor | brief-extractor.service | — | Python |
| Cannes Video Generator | cannes-video-generator.service | — | Python |
| Contract Query | contract-query.service | — | Python |
| Ferrero CreativeX | creativex-service.service | — | Python |
| Ferrero AC Booking | ferrero-ac.service | — | Python |
| Ferrero Orchestrator | ferrero-orchestrator-prod.service | — | Python |
| Hiring Calculator | hiring_calculator.service | 8127 | Flask/Gunicorn |
| H&M EMS | hm-ems.service | 3001 (Node) | Node.js |
| HP Chatbot | hp_chatbot.service | — | Python |
| JustEight | justeight.service | 7395 | Python |
| Markdown→PDF | markdown2pdf.service | — | Python |
| MSFT Melanie Bot | melanie_bot.service | 8475/8505 | Python |
| Netflix Chatbot | netflix_chatbot.service | — | Python |
| Netflix V2 | netflix_v2.service | — | Python |
| PDF Extract | pdf_extract.service | 8746 | Python |
| Semblance | semblance.service | 8001 | Python |
| Veo Video Generator | veo-video-generator.service | 7394 | Python |
| Video Optimizer | video-optimizer-backend.service | 8003 | Python |
| Video Query | video_query.service | 8000 | Python |
| Voice→Text (Whisper) | voice2text-api.service | 8100 | Python |
| PM2 apps (vadym) | pm2-vadym.samoilenko.service | 3000, 4000, 3100, 3456 | Node.js |

**Other `/opt/` dirs**: apac-ops-bot, apac-strategy-dashboard, build-a-squad, enterprise-ai-hub-nexus, ferrero-opentext, hm-ems-data, hm_ai_qc, hm_ems_report, loreal-sla-calculator, lusa-back-planner, mongodb, oliver-metadata-tool, ollie-brandtech-strategic-intelligence, pimco-charts, rackham-meeting-analyzer, sandbox-notebookllamalm-nextjs, smartcrop26, veo3, video-accessibility, video-subtitle, backups, agent-sync

## Port Map

| Port | Service | Notes |
|------|---------|-------|
| 80 / 443 | Apache | ai-sandbox.oliver.solutions |
| 3000 | PM2 / Node.js | — |
| 3001 | H&M EMS Node | — |
| 3100 | PM2 / Node.js | — |
| 3456 | Node.js (fac) | ProxyPass /fac/ → :3456 |
| 4000 | PM2 / Node.js | — |
| 5000 | Gunicorn (localhost) | — |
| 5432 / 5433 / 5437 | PostgreSQL | Three instances |
| 6174 / 6175 / 6176 | Redis internal | — |
| 6333 | Qdrant | Vector DB (internal: 10.220.168.5:6333) |
| 6379 / 6380 / 6399 | Redis | Three instances |
| 7474 / 7475 | Neo4j HTTP | — |
| 7687 / 7688 | Neo4j Bolt | — |
| 7394 / 7395 | JustEight | — |
| 8000 | Video Query | — |
| 8001 | Semblance | — |
| 8003 | Video Optimizer | — |
| 8038 / 8048 | Various | — |
| 8080 | — | — |
| 8100 | Voice2Text | — |
| 8127 | Hiring Calculator | — |
| 8475 / 8505 | Melanie Bot | — |
| 8746 | PDF Extract | — |
| 8877 / 8569 | Internal only (localhost) | — |
| 9000 / 9001 | — | — |
| 17000 | AgentHub | — |
| 27017 / 27019 / 27021 | MongoDB | Three instances |

## Databases Running

- **PostgreSQL**: :5432, :5433, :5437 (three instances)
- **MongoDB**: :27017, :27019, :27021 (three instances)
- **Redis**: :6379, :6380, :6399 + internal on 6174–6176
- **Qdrant** (vector DB): :6333 (bound to 10.220.168.5 only)
- **Neo4j**: :7474/:7475 (HTTP), :7687/:7688 (Bolt)
- Also: internal Redis exposed to optical-dev via :15432 (PG) and :16379 (Redis)

## Apache Config

- Single vhost: `ai-sandbox.oliver.solutions`
- SSL termination: upstream (GCP load balancer)
- PHP 8.1-FPM running alongside
- ProxyPass: `/fac/` → `http://127.0.0.1:3456/`

## Key Takeaways

- This is the **main workhorse** — don't restart services carelessly
- Multiple databases of each type — always confirm which port before connecting
- Apps deployed in `/opt/{name}/` as systemd services — manage with `sudo systemctl {start|stop|status} {service-name}`
- Also some Docker Compose apps (loreal-sla-calculator, enterprise-ai-hub-nexus, video-accessibility, pdf-accessibility, pimco-charts, ac-helper, sandbox apps)
- PM2 manages Node.js apps under `vadym.samoilenko` user

## Related

- [[wiki/infrastructure/server-optical-dev|server-optical-dev]] — Docker staging server
- [[wiki/infrastructure/ssh-aliases|ssh-aliases]] — all server quick reference
- [[wiki/architecture/docker-compose-deploy|docker-compose-deploy]]
