# Landing + androidcast — BE only, port 80 **Full topology:** [docs/INFRA.md](../../docs/INFRA.md) — read after any agent/context reset. Public: `https://apps.f0xx.org/app/androidcast_project/` ## Topology (no :8089) ```text Browser → apps.f0xx.org (Gentoo FE, TLS) → http://artc0.intra.raptor.org:80 ← this vhost only → /etc/nginx/conf.d/apps.conf listen 80 ``` **8089 is not this installation** (Janus/other). Do not point androidcast FE locations at :8089. On FE, hub and (if you fix it) crashes should both target **`http://artc0.intra.raptor.org:80`**, same as `location /`. ## 1. `index.html` + hub assets ```bash cp .../android_cast/examples/app_hub/index.html \ .../htdocs/apps/app/androidcast_project/index.html cp .../android_cast/examples/app_hub/hub.css \ .../htdocs/apps/app/androidcast_project/hub.css cp .../android_cast/examples/app_hub/assets/overtime-01-alphabet.svg \ .../htdocs/apps/app/androidcast_project/assets/ # GA4 (optional): set measurementId in analytics.config.js before copy cp .../android_cast/examples/app_hub/assets/analytics.config.js \ .../htdocs/apps/app/androidcast_project/assets/ ``` Crash console ships `analytics.js` via `deploy-to-be-mount.sh` (under `crashes/assets/js/`). ## 2. BE nginx Edit **`/etc/nginx/conf.d/apps.conf`** on Alpine (sshfs: `tmp/BE_alpine/etc/nginx/...`). Replace the whole **`server { listen 80; ... }`** block with: **`examples/crash_reporter/backend/nginx.apps-port80.fragment`** That file has hub + crashes + build on **port 80**. Or run (from repo, with write access to the mount): ```bash sudo ./examples/crash_reporter/backend/scripts/apply-be-port80-nginx.sh ``` **FE** (`tmp/FE_gentoo/etc/nginx/nginx.conf`): hub and crashes must use `proxy_pass http://artc0.intra.raptor.org:80;` **without** a trailing slash or path suffix. See **`nginx.fe-apps.f0xx.org.snippet`**. The **`listen 443 ssl`** block can stay for direct HTTPS to the VM if you use it internally; public traffic from FE should prefer **:80** for one consistent vhost. Use prefix location for the hub (not `alias` to a single file): ```nginx location /app/androidcast_project/ { alias /var/www/localhost/htdocs/apps/app/androidcast_project/; index index.html; } ``` ## 3. Reload BE ```bash ssh alpine-be 'sudo nginx -t && sudo rc-service nginx reload' ``` ## 4. Verify ```bash curl -sS -o /dev/null -w "%{http_code}\n" -H "Host: apps.f0xx.org" \ "http://artc0.intra.raptor.org/app/androidcast_project/" curl -sS -o /dev/null -w "%{http_code}\n" \ "https://apps.f0xx.org/app/androidcast_project/" ``` ## FE (optional, not required if `location /` already proxies to :80) If crashes on FE still say `proxy_pass https://artc0...:8089/.../crashes/`, change to: ```nginx proxy_pass http://artc0.intra.raptor.org/app/androidcast_project/crashes/; ``` (same upstream as the hub — port **80**, no TLS to BE from FE)