
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.
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.
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.jsonThen open:
http://localhost:8080That gives you:
- 8080 → web UI
- 8090 → local tunnel port
- 9000 → gRPC-Web backend
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 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.jsondocker 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.jsoncmd/- application entrypointinternal/- Go backend logicpkg/frontend/- Vue.js frontendproto/- gRPC service definitionexamples/- sample dataset
- 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.

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.
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.
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.jsonDepois acesse:
http://localhost:8080Isso disponibiliza:
- 8080 → interface web
- 8090 → porta local do túnel
- 9000 → backend gRPC-Web
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:
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.jsondocker 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.jsoncmd/- entrypoint da aplicaçãointernal/- lógica do backend em Gopkg/frontend/- frontend em Vue.jsproto/- definição do serviço gRPCexamples/- dataset de exemplo
- 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.
