115 lines
5.1 KiB
Markdown
115 lines
5.1 KiB
Markdown
---
|
||
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]]
|