Skip to content

Jerusalem is a lightweight tunneling solution designed to provide a seamless experience similar to Ngrok. It is written in Go and brings additional capabilities such as automatic port management, user-specific port allocations, and persistent registrations using SQLite.

License

Notifications You must be signed in to change notification settings

mjm918/jerusalem-server

Repository files navigation

Jerusalem Tunnel

Jerusalem Tunnel is a cross-platform ngrok alternative written in Go. It allows clients to reserve a port and complete a handshake using a secret key shared between the server and the client, identified uniquely by a clientID. ss.png

Features

  • Cross-Platform: Works on Windows, macOS, and Linux.
  • Port Reservation: Reserve a port for the client.
  • Secure Handshake: Client and server complete a handshake using a secret key and unique clientID.

Installation

  1. Ensure you have Go 1.22 or later installed.

  2. Clone the repository:

    git clone https://github.com/yourusername/jerusalem-tunnel.git
    cd jerusalem-tunnel
  3. Build the project:

    go build -o jerusalem-tunnel -v ./...

Usage

Start the server:

./jerusalem-tunnel --config config.yaml

Start the server using Docker:

docker build -t jerusalem-tunnel .
docker run -d -p 8901:8901 --name jerusalem-tunnel -v $(pwd)/config.yaml:/app/config.yaml jerusalem-tunnel

Or using docker compose:

docker compose up -d

Configuration

The server requires a configuration file in YAML format to run. Example server.yaml:

PORT_RANGE: "2000...8999"
SECRET_KEY: "2y6sUp8cBSfNDk7Jq5uLm0xHAIOb9ZGqE4hR1WVXtCwKjP3dYzvTn2QiFXe8rMb6"
SERVER_PORT: 8901

Contributing

Contributions are welcome! Please fork the repository and submit a pull request.

License

This project is licensed under the Mozilla Public License Version 2.0. See the LICENSE file for details.

About

Jerusalem is a lightweight tunneling solution designed to provide a seamless experience similar to Ngrok. It is written in Go and brings additional capabilities such as automatic port management, user-specific port allocations, and persistent registrations using SQLite.

Resources

License

Stars

Watchers

Forks

Packages

No packages published