Skip to content

Repository files navigation

Chisel Web Proxy

Go Report Card ![Docker](https://img.shields.io/badge/Docker Hub-apavanello%2Fchisel--web--proxy-0db7ed?logo=docker&logoColor=white)

Chisel Web Proxy title with a web UI for managing chisel reverse HTTP tunnels from a dataset of environments and hosts

A lightweight web UI for managing chisel reverse HTTP tunnels.

Point it at a JSON dataset of environments, chisel servers, and target hosts, then use the browser to connect and disconnect tunnels without touching the CLI.

Chisel Web Proxy UI showing environment, hostname, connect, and disconnect controls

Why this exists

Most chisel usage is CLI-driven. This project adds a simple web layer around:

  • dataset configuration
  • environment / host selection
  • connect / disconnect controls
  • a gRPC-Web backend for browser-to-server communication

It is useful when you want a small self-hosted control panel for tunnel access instead of scripting every connection manually.

Quick start

Run it with Docker:

docker container run --rm --name web-proxy -d -p 8080:8080 -p 8090:8090 -p 9000:9000 --mount type=bind,src=$(pwd)/data,dst=/data apavanello/chisel-web-proxy data/dataset.json

Then open:

http://localhost:8080

That gives you:

  • 8080 → web UI
  • 8090 → local tunnel port
  • 9000 → gRPC-Web backend

Dataset

The backend needs a JSON file that defines available remote hosts and connection details.

Example:

{
  "Servers": [
    {
      "name": "MongoDB-1",
      "connections": [
        {
          "env": "Dev",
          "chiselServer": "172.17.0.18:8080",
          "value": "dev.mongo1.com:27017",
          "proxy": "http://myproxy.mycompany.com:8080"
        }
      ]
    }
  ]
}

See the full example in:

Docker usage

Default run

docker container run --rm --name web-proxy -d -p 8080:8080 -p 8090:8090 -p 9000:9000 --mount type=bind,src=$(pwd)/data,dst=/data apavanello/chisel-web-proxy data/dataset.json

Custom ports

docker container run --rm --name web-proxy -p <web-port>:8080 -p <tunnel-port>:8090 -p <grpc-port>:9000 --mount type=bind,src=<dataset-folder>,dst=/data apavanello/chisel-web-proxy data/dataset.json

Project structure

  • cmd/ - application entrypoint
  • internal/ - Go backend logic
  • pkg/frontend/ - Vue.js frontend
  • proto/ - gRPC service definition
  • examples/ - sample dataset

Notes

  • The app loads the dataset file passed as the final argument in the Docker command.
  • The frontend UI is in pkg/frontend.
  • The backend uses gRPC-Web so the browser can talk to the server without a separate proxy layer.

Chisel Web Proxy

Go Report Card ![Docker](https://img.shields.io/badge/Docker Hub-apavanello%2Fchisel--web--proxy-0db7ed?logo=docker&logoColor=white)

Chisel Web Proxy título com interface web para gerenciar túneis reverse HTTP do chisel a partir de um dataset de ambientes e hosts

Uma interface web leve para gerenciar túneis reverse HTTP com o chisel.

Aponte o projeto para um dataset JSON com ambientes, servidores chisel e hosts de destino, depois use o navegador para conectar e desconectar túneis sem usar o CLI.

Interface do Chisel Web Proxy mostrando seleção de ambiente, hostname, botões de connect e disconnect

Por que isso existe

A maioria das operações com chisel é feita por CLI. Este projeto adiciona uma camada web simples em torno de:

  • configuração via dataset
  • seleção de ambiente / host
  • controles de connect / disconnect
  • um backend gRPC-Web para comunicação entre navegador e servidor

Isso é útil quando você quer um pequeno painel self-hosted para gerenciar túneis, em vez de rodar cada conexão manualmente.

Início rápido

Execute com Docker:

docker container run --rm --name web-proxy -d -p 8080:8080 -p 8090:8090 -p 9000:9000 --mount type=bind,src=$(pwd)/data,dst=/data apavanello/chisel-web-proxy data/dataset.json

Depois acesse:

http://localhost:8080

Isso disponibiliza:

  • 8080 → interface web
  • 8090 → porta local do túnel
  • 9000 → backend gRPC-Web

Dataset

O backend precisa de um arquivo JSON que define os hosts remotos disponíveis e os dados de conexão.

Exemplo:

{
  "Servers": [
    {
      "name": "MongoDB-1",
      "connections": [
        {
          "env": "Dev",
          "chiselServer": "172.17.0.18:8080",
          "value": "dev.mongo1.com:27017",
          "proxy": "http://myproxy.mycompany.com:8080"
        }
      ]
    }
  ]
}

Veja o exemplo completo em:

Uso com Docker

Comando padrão

docker container run --rm --name web-proxy -d -p 8080:8080 -p 8090:8090 -p 9000:9000 --mount type=bind,src=$(pwd)/data,dst=/data apavanello/chisel-web-proxy data/dataset.json

Portas customizadas

docker container run --rm --name web-proxy -p <web-port>:8080 -p <tunnel-port>:8090 -p <grpc-port>:9000 --mount type=bind,src=<dataset-folder>,dst=/data apavanello/chisel-web-proxy data/dataset.json

Estrutura do projeto

  • cmd/ - entrypoint da aplicação
  • internal/ - lógica do backend em Go
  • pkg/frontend/ - frontend em Vue.js
  • proto/ - definição do serviço gRPC
  • examples/ - dataset de exemplo

Observações

  • O aplicativo carrega o arquivo de dataset informado como último argumento no comando Docker.
  • A interface web está em pkg/frontend.
  • O backend usa gRPC-Web para permitir a comunicação entre navegador e servidor sem uma camada de proxy separada.

About

A Chisel Web Proxy Interface using Vue, Go (golang), gRPC and gRPC-WEB

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages