Skip to content

Feature: Optional ngrok and have self host dns with one endpoint per runner/commit id #21

Description

@rajuversespace

We should add a GitHub Actions workflow with optional ngrok API key add self-host DNS with one endpoint per commit/runner-id.
This will allow user to manually approve without a new clone from HEAD branch and allow approver, keeping the commit stable while approving for TF Apply

✅ Acceptance Criteria

  • Mode Selection: Users can toggle between ngrok (default) and self-hosted using the portal-host-mode input.
  • Custom Network Binding: The action successfully binds the internal web server to a user-defined IP and port via the selfhosted-listen-address parameter.
  • Public URL Injection: The interactive portal correctly generates and displays the URL using the provided selfhosted-public-url instead of a dynamic ngrok address.
  • Endpoint Isolation: Support for runner-endpoint-key ensures that multiple concurrent runners can share the same public DNS/IP without URL collisions (e.g., https://dns.com/run-1 vs https://dns.com/run-2).
  • Notification Accuracy: Slack and Discord notifications correctly broadcast the custom self-hosted URL to stakeholders.
  • Backward Compatibility: If no self-hosted parameters are provided, the action continues to function with ngrok as the fallback, ensuring zero breaking changes for existing users.

🌟 Why This Matters

  • Security & Compliance: Allows teams to run interactive inputs within private networks or behind internal load balancers, keeping traffic off third-party tunneling servers.
  • Infrastructure Control: Gives team full control over the networking stack, including SSL termination and traffic logging at the reverse proxy level.
  • Cost Efficiency: Removes the dependency on paid ngrok tiers for features like reserved domains or increased tunnel limits.

🙋 This workflow is already in-use internally. If you’d like, can open a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions