{ "module": "route-proxy", "version": "1", "slug": "rproxy", "capabilities": [ "container-runtime" ], "provides": [ { "name": "route", "scope": "mesh" } ], "serves": { "route": {} }, "receives": { "route": "/var/lib/route-proxy/routes/mesh.json" }, "requires": [ "acme-ca" ], "binds": { "acme-ca": "/var/lib/route-proxy/acme-ca.json" }, "listens": [ { "port": 80, "protocol": "tcp", "from": "anywhere", "why": "public HTTP, and the ACME HTTP-01 challenge answered at the name being certified" }, { "port": 443, "protocol": "tcp", "from": "anywhere", "why": "public HTTPS for every name the mesh routes here" } ], "resources": [ { "id": "state", "type": "directory", "path": "/var/lib/route-proxy", "mode": "0700" }, { "id": "routes-dir", "type": "directory", "path": "/var/lib/route-proxy/routes", "mode": "0700" }, { "id": "acme-cache", "type": "directory", "path": "/var/lib/route-proxy/acme", "mode": "0700" }, { "id": "ca-dir", "type": "directory", "path": "/var/lib/route-proxy/ca", "mode": "0755" }, { "id": "ca-bundle", "type": "file", "path": "/var/lib/route-proxy/ca/root.crt", "mode": "0644", "content": "${bound:acme-ca:root}\n" }, { "id": "acme-env", "type": "file", "path": "/var/lib/route-proxy/acme.env", "mode": "0600", "content": "ACME_DIRECTORY=https://${bound:acme-ca:at}:${bound:acme-ca:port}${bound:acme-ca:path}\n" }, { "id": "server", "type": "container", "name": "route-proxy", "image": "mesh-route-proxy@sha256:0000000000000000000000000000000000000000000000000000000000000000", "network": "host", "env-file": [ "/var/lib/route-proxy/acme.env" ], "volumes": [ "/var/lib/route-proxy/routes:/routes:ro", "/var/lib/route-proxy/acme:/acme", "/var/lib/route-proxy/ca:/ca:ro" ], "env": { "ROUTES": "/routes/mesh.json", "LISTEN": ":80", "TLS_LISTEN": ":443", "ACME_CACHE": "/acme", "ACME_CA_BUNDLE": "/ca/root.crt" } } ] }