← back to Agent Cabinet

deploy/cabinet.agentabrams.com.nginx

47 lines

# cabinet.agentabrams.com — public door onto the cabinet-mindmap app (mac3 tailnet 100.82.17.107:9766)
# Modeled on animals.agentabrams.com, BUT the app is OPEN (no built-in auth) so nginx basic-auth is MANDATORY.
# /healthz stays UNAUTHed so the fleet keepalive doesn't misread a healthy 401 as dead.
server {
  listen 45.61.58.125:80;
  server_name cabinet.agentabrams.com;
  location ^~ /.well-known/acme-challenge/ { allow all; root /var/www/html; }
  return 301 https://$host$request_uri;
}

server {
  listen 45.61.58.125:443 ssl http2;
  server_name cabinet.agentabrams.com;

  ssl_certificate     /etc/letsencrypt/live/cabinet.agentabrams.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/cabinet.agentabrams.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

  access_log /var/log/nginx/cabinet.agentabrams.com.access.log;
  error_log  /var/log/nginx/cabinet.agentabrams.com.error.log;

  client_max_body_size 10M;

  # Open, unauthenticated health check (BEFORE the auth gate) — fleet keepalive reads this.
  location = /healthz {
    auth_basic off;
    proxy_pass http://100.82.17.107:9766/healthz;
    proxy_set_header Host $host;
  }

  # Everything else: admin/DW2024! basic-auth (the app itself has none).
  location / {
    auth_basic "cabinet";
    auth_basic_user_file /etc/nginx/.htpasswd-cabinet;

    proxy_pass http://100.82.17.107:9766;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_connect_timeout 10s;
    proxy_read_timeout 60s;
  }
}