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

# optical-dev — Docker App Dev/Staging Server

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

## Overview

Primary Docker-based development and staging server for Oliver internal tools. All apps run as Docker Compose stacks in `/opt/{name}/`. Apache handles routing on port 80 (SSL terminated at upstream load balancer).

- **Hostname**: (GCP instance, europe-west2)
- **Platform**: GCP
- **OS**: Ubuntu (likely 24.04)
- **IP**: 10.220.168.9
- **Web server**: Apache 2.4 (single vhost: `optical-dev.oliver.solutions`)
- **Domain**: optical-dev.oliver.solutions
- **Disk**: 532 GB / 288 GB used (55%)

## Docker Containers Running

| Container | Image | Exposed Port | Status |
|-----------|-------|-------------|--------|
| cc-dashboard-app-1 | cc-dashboard-app | 8800 | Up 4 weeks |
| cc-dashboard-db-1 | postgres:16-alpine | — | Up 4 weeks |
| ppt-tool-web-1 | ppt-tool-web | 127.0.0.1:3000 | Up 3 weeks |
| ppt-tool-api-1 | ppt-tool-api | 127.0.0.1:8001 | Up 3 weeks |
| ppt-tool-worker-1 | ppt-tool-worker | — | Up 3 weeks |
| ppt-tool-postgres-1 | postgres:16-alpine | — | Up 4 weeks |
| ppt-tool-redis-1 | redis:7-alpine | — | Up 4 weeks |
| semblance-backend-1 | semblance-backend | 127.0.0.1:5137 | Up 4 weeks |
| semblance-mongo-1 | mongo:7 | 127.0.0.1:27017 | Up 4 weeks |
| olivas-backend-1 | olivas-backend | 0.0.0.0:8000 | Up 4 weeks |
| olivas-postgres-1 | postgres:16-alpine | — | Up 4 weeks |
| barclays-banner-builder-api-1 | barclays-banner-builder-api | 127.0.0.1:8010 | Up 3 days |
| barclays-banner-builder-worker-1 | — | — | Up 3 days |
| barclays-banner-builder-redis-1 | redis:7-alpine | — | Up 6 days |
| barclays-banner-builder-postgres-1 | pgvector/pgvector:pg16 | — | Up 6 days |
| social-mi-bi-api-1 | social-mi-bi-api | 127.0.0.1:8302 | Up 3 days |
| social-mi-bi-worker-1 | — | — | Up 3 days |
| social-mi-bi-minio-1 | minio/minio | 127.0.0.1:8303→9000 | Up 3 days |
| social-mi-bi-db-1 | postgres:16-alpine | — | Up 3 days |
| social-mi-bi-redis-1 | redis:7-alpine | — | Up 3 days |
| social-reporting-social-listening-1 | social-reporting | 127.0.0.1:3456 | Up 8 days |
| social-reporting-db-1 | postgres:16-alpine | 0.0.0.0:5436 | Up 8 days |
| amazon-transcreation-frontend-1 | — | 127.0.0.1:3050 | Up 7 days |
| amazon-transcreation-backend-1 | — | 127.0.0.1:8040 | Up 7 days |
| amazon-transcreation-celery_worker-1 | — | — | Up 7 days |
| amazon-transcreation-db-1 | postgres:16 | 127.0.0.1:5492 | Up 7 days |
| amazon-transcreation-redis-1 | redis:7-alpine | 127.0.0.1:6389 | Up 7 days |
| gmal-scope-builder-backend-1 | — | 127.0.0.1:8002 | Up 10 days |
| gmal-scope-builder-db-1 | postgres:16-alpine | — | Up 3 weeks |
| salary-benchmark-app | salary-benchmark-app | 127.0.0.1:8100 | Up 3 days |
| salary-benchmark-db | postgres:16-alpine | — | Up 3 days |
| hp-prod-tracker-app-1 | hp-prod-tracker-app | 0.0.0.0:3001 | Up 7 days (unhealthy) |
| hp-prod-tracker-db-1 | pgvector/pgvector:pg17 | 0.0.0.0:5491 | Up 8 days |
| dow-prod-tracker-app-1 | dow-prod-tracker-app | 0.0.0.0:3002 | Up 41 hours (unhealthy) |
| dow-prod-tracker-db-1 | pgvector/pgvector:pg17 | 0.0.0.0:5493 | Up 41 hours |
| hp-studios-ai-content-agent-frontend-1 | — | 127.0.0.1:22970 | Up 37 hours |
| hp-studios-ai-content-agent-api-1 | — | 127.0.0.1:22409 | Up 37 hours |
| hp-studios-ai-content-agent-worker-1 | — | — | Up 37 hours |
| hp-studios-ai-content-agent-redis-1 | redis:7-alpine | — | Up 37 hours |
| hp-studios-ai-content-agent-postgres-1 | pgvector/pgvector:pg16 | — | Up 37 hours |

## Apache Routing (optical-dev.oliver.solutions)

SSL terminated upstream. Single vhost on `:80`.

| Path | Backend | App |
|------|---------|-----|
| `/ppt-tool/api/v1/` | :8001 | DeckForge FastAPI |
| `/ppt-tool` | :3000 | DeckForge Next.js |
| `/api/` | :8000 | OliVAS FastAPI |
| `/olivas/` | static `/var/www/html/olivas` | OliVAS SPA |
| `/semblance_back/` | :5137 | Semblance Quart backend (WebSocket) |
| `/semblance/` | static `/var/www/html/semblance` | Semblance SPA |
| `/cc-dashboard/api/` | :8800 | CC Dashboard FastAPI |
| `/cc-dashboard/` | static `/var/www/html/cc-dashboard` | CC Dashboard SPA |
| `/gsb/api/` | :8002 | GMAL Scope Builder API |
| `/gsb/` | static `/var/www/html/gmal-scope-builder` | GMAL SPA |
| `/hp-prod-tracker/` | :3001 | HP Prod Tracker |
| `/amazon-transcreation/` | :8040 / :3050 | via Include |
| `/barclays*` | :8010 | Barclays Banner Builder via Include |
| `/salary-benchmark*` | :8100 | via Include |
| `/social-mi-bi*` | :8302 | via Include |
| `/dow-prod-tracker*` | :3002 | via Include |
| `/ai-qc*` | — | via Include |
| `/hp-content-agent*` | :22409 / :22970 | via Include |

Each app defines its own Apache include at `/opt/{name}/deploy/apache-*.conf`.

## Deployment Pattern

```bash
# Standard deploy
cd /opt/{app-name}
git pull
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d
# or
docker compose up -d --build
```

Static SPA builds go to `/var/www/html/{app-name}/`.

## Key Takeaways

- All apps in `/opt/{name}/` as Docker Compose stacks
- Apache config: `/etc/apache2/sites-enabled/optical-dev.oliver.solutions.conf`
- Per-app Apache includes let each project own its routing config
- `hp-prod-tracker` and `dow-prod-tracker` currently **unhealthy** — check logs
- `deploy-api` service is running (uvicorn on :9000) — deployment automation
- Exposed Postgres ports 5436/5491/5493 accessible from GCP internal network

## Related

- [[wiki/infrastructure/server-optical|server-optical]] — main production server
- [[wiki/infrastructure/ssh-aliases|ssh-aliases]]
- [[wiki/architecture/docker-compose-deploy|docker-compose-deploy]]
