Fell St Data Center

The Fell St Data Center consists of a home router forwarding all inbound HTTP, HTTPS, and SSH traffic (ports 80, 443, and 22) directly to a reverse proxy server named maestro04. Maestro04 handles public exposure of internal services and performs routing using Nginx.

Internal machines include:

Remote access is achieved by SSH tunneling through maestro04. Maestro04 serves as the single public entry point, proxying traffic to the internal machines based on ports or hostnames (e.g., macmini.the404api.dashanddata.com for the Mac mini's port 8000 service). This setup centralizes exposure of LAN-hosted services while keeping the internal network private.

alias ssh_tunnel_Maestro04_to_fell-st-langflow_9001="ssh -L 9001:10.0.0.63:22 nick@24.130.60.53 -p 22"
alias ssh_tunnel_Maestro04_to_macmini_9002="ssh -L 9002:10.0.0.40:22 nick@24.130.60.53 -p 22"

Then

alias ssh_localhost_9001="ssh nick@localhost -p 9001"
alias ssh_localhost_9002="ssh nick@localhost -p 9002"

Rochester Data Center

The "Rochester Data Center" or the RDC is home to many VM's stored on my brother's server. It has the reverse proxy server called maestro03 that is exposed to the public internet using Nginx. Like all my VM's it is using Ubuntu. But this version is 20.04 LTS.

Behind the maestro03 server are many VM's. Some of them are running Ubuntu 20.04 LTS and some are running Ubuntu 24.04 LTS. There is Avatar04, nn10prod, and nn10dev. Running Ubuntu. I access these using a SSH tunnel through maestro03. For example my .zshrc file has the following aliases:

alias ssh_tunnel_Maestro_to_Avatar04_9000="ssh -L 9000:192.168.100.174:22 nick@<public_ip_address> -p 22"
alias ssh_tunnel_Maestro_to_nn09dev_9007="ssh -L 9007:192.168.100.167:22 nick@<public_ip_address> -p 22"

Then

alias ssh_localhost_9000="ssh nick@localhost -p 9000"
alias ssh_localhost_9007="ssh nick@localhost -p 9007"

Production and PM2 setup

On the Ubuntu servers I use pm2 to manage the applications. I use a ecosystem.config.js file. Here is an example of one that manages node.js and Python applications.:

module.exports = {
  apps: [
    {
      name: "The404-API",
      script: "dist/server.js",
      cwd: "/home/nick/applications/The404-API/",
      log_date_format: "YYYY-MM-DD HH:mm Z",
      env: {
        NODE_ENV: "production",
        PORT: 8000, // The port the app will listen on
      },
    },
    {
      name: "NewsNexus10Portal",
      script: "npm",
      args: "start",
      cwd: "/home/nick/applications/NewsNexus10Portal/",
      log_date_format: "YYYY-MM-DD HH:mm Z",
      env: {
        NODE_ENV: "production",
        PORT: 8002, // The port the app will listen on
      },
    },
    {
      name: "NewsNexusPythonQueuer01",
      script: "/home/nick/environments/news_nexus/bin/gunicorn",
      args: "-w 3 -b 0.0.0.0:8003 --timeout 600 'src.app:app'",
      cwd: "/home/nick/applications/NewsNexusPythonQueuer01/",
      interpreter: "none", // direct python path from venv
      env: {
        PORT: 8003, // The port the app will listen on
      },
    },
    {
      name: "Fluxion00API",
      script: "/home/nick/environments/fluxion/bin/uvicorn",
      args: "src.api.app:app --host 0.0.0.0 --port 8005 --workers 3",
      cwd: "/home/nick/applications/Fluxion00API/",
      interpreter: "/home/nick/environments/fluxion/bin/python3",
      env: {
        PORT: 8005, // The port the app will listen on
        NAME_APP: "Fluxion00API",
        JWT_SECRET:
          "SECRET",
        PATH_TO_DATABASE: "/home/nick/databases/NewsNexus10/",
        NAME_DB: "newsnexus10.db",
        PATH_TO_PYTHON_VENV: "/home/nick/environments/fluxion",
        PATH_TO_DOCUMENTS:
          "/home/nick/project_resources/Fluxion00API/docs_for_agent",
        URL_BASE_OLLAMA: "https://fell-st-ollama.dashanddata.com",
        KEY_OLLAMA: "NICK_SECRET_KEY",
        URL_BASE_OPENAI: "https://api.openai.com/v1",
        KEY_OPENAI:
          "SECRET",
      },
    }
  ],
};