{
  "generated_at": "2026-10-28T10:20:54+00:00",
  "source": "http://127.0.0.1:2019/config/",
  "sites": [
    {
      "label": "climatoclabteam.csic.es",
      "listen": [
        ":443"
      ],
      "entries": [
        {
          "methods": [],
          "paths": [
            "*"
          ],
          "kind": "respond",
          "target": "HTTP 404",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/",
            "/json",
            "/json/",
            "/logo.png"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:9111",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/climatoc_database_api",
            "/climatoc_database_api/"
          ],
          "kind": "redirect",
          "target": "/climatoc_database_api/docs",
          "notes": []
        },
        {
          "methods": [
            "OPTIONS"
          ],
          "paths": [
            "/climatoc_database_api/*"
          ],
          "kind": "respond",
          "target": "HTTP 204",
          "notes": [
            "CORS <code>*</code>"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/climatoc_database_api/*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:8001",
          "notes": [
            "CORS <code>*</code>"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/endpoints"
          ],
          "kind": "redirect",
          "target": "/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/endpoints/*"
          ],
          "kind": "redirect",
          "target": "/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/endpoints/json"
          ],
          "kind": "redirect",
          "target": "/json",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/mattermost"
          ],
          "kind": "redirect",
          "target": "/mattermost/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/mattermost/*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:8065",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/mtg"
          ],
          "kind": "redirect",
          "target": "/mtg/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/mtg/*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:8000",
          "notes": [
            "prefijo <code>/mtg</code> retirado",
            "sin caché"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/mtg/api/history"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:8000",
          "notes": [
            "rewrite interno a <code>/api/history</code>",
            "body de la respuesta reescrito"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/wiki"
          ],
          "kind": "redirect",
          "target": "/wiki/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/wiki/*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:10115",
          "notes": [
            "prefijo <code>/wiki</code> retirado"
          ]
        }
      ]
    },
    {
      "label": "climatoclab.ddns.net",
      "listen": [
        ":443"
      ],
      "entries": [
        {
          "methods": [],
          "paths": [
            "*"
          ],
          "kind": "respond",
          "target": "HTTP 404",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/admin"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/api/*"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/avamet_mirror/*"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8000",
          "notes": [
            "prefijo <code>/avamet_mirror</code> retirado"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/health"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/live/*"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8889",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/main_logo.png"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/mediamtx/*"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8888",
          "notes": [
            "prefijo <code>/mediamtx</code> retirado"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/panel"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/pilot"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/py8002/*"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": [
            "prefijo <code>/py8002</code> retirado"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/sondeo.png"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:8002",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/sondeo/*"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:9005",
          "notes": [
            "prefijo <code>/sondeo</code> retirado"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/wiki"
          ],
          "kind": "redirect",
          "target": "/wiki/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/wiki/*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:10115",
          "notes": [
            "prefijo <code>/wiki</code> retirado"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/wrf"
          ],
          "kind": "redirect",
          "target": "/wrf/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/wrf/*"
          ],
          "kind": "proxy",
          "target": "ccalvosa.github.io:443",
          "notes": [
            "rewrite interno a <code>/VisorWRF/{http.regexp.w.1}</code>",
            "body de la respuesta reescrito"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/wrf_castellon"
          ],
          "kind": "redirect",
          "target": "/wrf_castellon/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/wrf_castellon/*"
          ],
          "kind": "proxy",
          "target": "ccalvosa.github.io:443",
          "notes": [
            "rewrite interno a <code>/VisorWRF_Castellon/{http.regexp.wc.1}</code>",
            "body de la respuesta reescrito"
          ]
        }
      ]
    },
    {
      "label": "twindpred.csic.es",
      "listen": [
        ":443"
      ],
      "entries": [
        {
          "methods": [],
          "paths": [
            "*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:3000",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/api/*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:5000",
          "notes": [
            "prefijo <code>/api</code> retirado"
          ]
        }
      ]
    },
    {
      "label": "89.38.129.4",
      "listen": [
        ":80"
      ],
      "entries": [
        {
          "methods": [],
          "paths": [
            "/climatoc_database_api",
            "/climatoc_database_api/"
          ],
          "kind": "redirect",
          "target": "/climatoc_database_api/docs",
          "notes": []
        },
        {
          "methods": [
            "OPTIONS"
          ],
          "paths": [
            "/climatoc_database_api/*"
          ],
          "kind": "respond",
          "target": "HTTP 204",
          "notes": [
            "CORS <code>*</code>"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/climatoc_database_api/*"
          ],
          "kind": "proxy",
          "target": "100.68.89.80:8001",
          "notes": [
            "CORS <code>*</code>"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/meteo_meshtastic"
          ],
          "kind": "redirect",
          "target": "/meteo_meshtastic/",
          "notes": []
        },
        {
          "methods": [],
          "paths": [
            "/meteo_meshtastic/*"
          ],
          "kind": "proxy",
          "target": "127.0.0.1:9998",
          "notes": [
            "prefijo <code>/meteo_meshtastic</code> retirado",
            "sin caché"
          ]
        }
      ]
    },
    {
      "label": "*:9010",
      "listen": [
        ":9010"
      ],
      "entries": [
        {
          "methods": [],
          "paths": [
            "/li550/data.txt"
          ],
          "kind": "static",
          "target": "/li550_recibidos.txt  (raíz /opt/meteodrone)",
          "notes": [
            "CORS <code>*</code>",
            "sin caché"
          ]
        },
        {
          "methods": [],
          "paths": [
            "/li550/status"
          ],
          "kind": "static",
          "target": "/li550_status.json  (raíz /opt/meteodrone)",
          "notes": [
            "CORS <code>*</code>",
            "sin caché"
          ]
        },
        {
          "methods": [],
          "paths": [
            "^/li550/([A-Za-z0-9_-]+)/data\\.txt$"
          ],
          "kind": "static",
          "target": "/li550_{http.regexp.dev.1}.txt  (raíz /opt/meteodrone)",
          "notes": [
            "CORS <code>*</code>",
            "sin caché"
          ]
        }
      ]
    }
  ]
}