Sometimes you need to start mulitple tunnels at once without starting loclx instance multiple times, with a yaml config file you can do that.

You can create a sample config file so that you can change it to your needs:

# create a sample config file in the current working directory
./loclx tunnel config init

the above command will generate a sample config.yaml file like the below one

dev:
  type: http
  region: us
  to: localhost:9090
 
ssh:
  type: tcp
  region: us
  port: 7676
  to: localhost:22
  plugins:
    ip_whitelist:
      - 127.0.0.1
 
portal:
  type: http
  subdomain: hello
  region: us
  to: localhost:8080
  plugins:
    basic_auth: user:pass
    ip_whitelist:
      - 127.0.0.1
      - 192.168.100.21/24
 
chat:
  type: tls
  subdomain: secure
  region: us
  to: localhost:2090
 
work:
  type: http
  region: us
  to: localhost:9090
  plugins:
    request_header:
      - host:mydomain.com
      - X-Token:secureToken
    response_header:
      - role:admin
 
file-server:
  type: http
  region: us
  reserved_domain: mydomain.com
  apps:
    file_server:
      path: ./

After modifing the config file you can start multiple tunnels as follow:

loclx tunnel config -f /path/to/config.yaml

Config file syntax

dev:                     # give your tunnel a name so you can identify it later in the terminal
 type: http              # tunnel type
 to: localhost:80        # the localhost service address
 region: us              # region name to start a tunnel at, possible values (us, ap and eu)
 subdomain: hello        # a temporary subdomain that your tunnel will be accessible at
 reserved_domain: hello.example.com # if you have a reserved subdomain or custom domain it should be here
 plugins:                # the middlewares that you wanna use for this tunnel, read more here https://localxpose.io/docs/tunnels/http/http-middlewares
   https_redirect: true  # redirect http requests to https
   basic_auth: user:pass # use basic authentication to access the tunnel
   ip_whitelist: 127.0.0.1,82.87.12.199 # only allow specific ip adresses to access
   request_header:       # edit request headers before forwarding the traffic to your service
      - host:mydomain.com
      - X-Token:secureToken
   response_header:      # edit response headers before forwarding the traffic to your service
      - role:admin
   prefix_path: /api     # prefix the URL path before reaching your localhost service
   rate_limit: 20        # limit the incoming requests to 20/s
   key_auth: secure_toke # protect the tunnel with a key authentication
 
 
ssh:
 type: tcp
 to: localhost:22
 region: ap
 port: 2233                  # temporary port number
 reserved_endpoint: us.loclx.io:2255 # if you have a reserved endpoint
 
 
 ftps:
  type: tls
  to: 21
  crt: /path/to/crt   # path to your TLS certificate
  key: /path/to/key   # path to your TLS key

© xLab 2023. All Rights Reserved