tzproxy

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2023 License: MIT Imports: 12 Imported by: 0

README

TzProxy

TzProxy is a reverse proxy specifically designed for Tezos nodes, offering a range of features that enhance node performance, security, and manageability.

Features

  • Rate limit
  • Block IPs
  • Blocklist routes
  • Cache
  • CORS
  • GZIP
  • Metrics

How to run

Make sure that your Tezos Node is running and set its host address in the tezos_host configuration.

If you want to test only TzProxy without a real Tezos Node, you can simulate a Tezos Node with our flextesa.sh script. Make sure that you have a docker.

./flextesa.sh

If you want custom configurations, create a file named as tzproxy.yaml in the same directory of the binary. This file will be created if you don't create it.

Then, just download the binary and run it:

./tzproxy

Finally, test it with:

curl http://localhost:8080/chains/main/blocks/head/header

Configuration

Yaml File

Here a default tzproxy.yaml file:

cache:
    disabled_routes:
        - /monitor/.*
    enabled: true
    size_mb: 100
    ttl: 5
cors:
    enabled: true
deny_list:
    enabled: false
    values: []
deny_routes:
    enabled: true
    values:
        - /injection/block
        - /injection/protocol
        - /network.*
        - /workers.*
        - /worker.*
        - /stats.*
        - /config
        - /chains/main/blocks/.*/helpers/baking_rights
        - /chains/main/blocks/.*/helpers/endorsing_rights
        - /helpers/baking_rights
        - /helpers/endorsing_rights
        - /chains/main/blocks/.*/context/contracts(/?)$
gc:
    percent: 20
gzip:
    enabled: true
host: 0.0.0.0:8080
logger:
    bunch_size: 1000
    pool_interval_seconds: 10
metrics:
    enabled: true
    host: 0.0.0.0:9000
    pprof: false
rate_limit:
    enabled: false
    max: 300
    minutes: 1
tezos_host: 127.0.0.1:8732
Environment Variables

You can also configure or overwrite TzProxy with environment variables, using the same structure:

  • TZPROXY_HOST is the host of the proxy.
  • TZPROXY_TEZOS_HOST is the host of the tezos node.
  • TZPROXY_LOGGER_BUNCH_SIZE is the bunch size of the logger.
  • TZPROXY_LOGGER_POOL_INTERVAL_SECONDS is the pool interval of the logger.
  • TZPROXY_RATE_LIMIT_ENABLED is a flag to enable rate limiting.
  • TZPROXY_RATE_LIMIT_MINUTES is the minutes of the period of rate limiting.
  • TZPROXY_RATE_LIMIT_MAX is the max of requests permitted in a period.
  • TZPROXY_DENY_LIST_ENABLED is a flag to block IP addresses.
  • TZPROXY_DENY_LIST_VALUES is the IP Address that will be blocked on the proxy.
  • TZPROXY_DENY_ROUTES_ENABLED is a flag to block the Tezos node's routes.
  • TZPROXY_DENY_ROUTES_VALUES is the Tezos nodes routes that will be blocked on the proxy.conf.
  • TZPROXY_CACHE_ENABLED is the flag to cache enable cache.
  • TZPROXY_CACHE_DISABLED_ROUTES is the variable with the routes to cache.
  • TZPROXY_CACHE_SIZE_MB is the size of the cache in megabytes.
  • TZPROXY_CACHE_TTL is the time to live in seconds for cache.
  • TZPROXY_METRICS_ENABLED is the flag to enable metrics.
  • TZPROXY_METRICS_PPROF is the flag to enable pprof.
  • TZPROXY_METRICS_HOST is the host of the prometheus metrics and pprof (if enabled).
  • TZPROXY_GZIP_ENABLED is the flag to enable gzip.
  • TZPROXY_CORS_ENABLED is the flag to enable cors.
  • TZPROXY_GC_PERCENT is the percent of the garbage collector.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL