From 835a9da3b9051de420c650c3072c90d23ccc4abc Mon Sep 17 00:00:00 2001 From: Containerman17 <8990432+containerman17@users.noreply.github.com> Date: Fri, 17 Jan 2025 05:27:46 +0000 Subject: [PATCH] addresses the feedback --- README.md | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 34dab4713c..a0a0ba0383 100644 --- a/README.md +++ b/README.md @@ -107,16 +107,13 @@ The `subnet-evm` Docker image comes with AvalancheGo pre-installed, making it ea You can configure the `subnet-evm` Docker container using environment variables, flags or standard AvalancheGo config files. -- **Environment Variables**: Use uppercase variables prefixed with `AVAGO_`. For example, `AVAGO_NETWORK_ID` corresponds to the `--network-id` flag in AvalancheGo. -- **Config Files**: Configure as you would with the regular AvalancheGo binary using config files. Ensure `HOME` is set to `/home/avalanche` and mount the config directory with `-v ~/.avalanchego:/home/avalanche/.avalanchego`. +- **Environment Variables**: Use uppercase variables prefixed with `AVAGO_`. For example, `AVAGO_NETWORK_ID` corresponds to the `--network-id` [flag in AvalancheGo](https://docs.avax.network/nodes/configure/configs-flags#--network-id-string). +- **Flags**: Please refer to the [AvalancheGo documentation](https://docs.avax.network/nodes/configure/configs-flags) for a list of available flags. +- **Config Files**: Configure as you would with the regular AvalancheGo binary using config files. Mount the config directory with `-v ~/.avalanchego:/root/.avalanchego`. ### Data Persistence -To persist data across container restarts, you need to mount the `.avalanchego` directory. - -- **Create Directory**: Run `mkdir -p ~/.avalanchego/staking` beforehand to create the necessary directories and avoid file system access issues. -- **Set Permissions**: Run the container with `--user $(id -u):$(id -g)` to ensure proper access rights. -- **Set Home and Mount**: Set `HOME` to `/home/avalanche` and mount the data directory with `-v ~/.avalanchego:/home/avalanche/.avalanchego`. +To persist data across container restarts, you need to mount the `/root/.avalanchego` directory. For example, `-v ~/.avalanchego:/root/.avalanchego`. The container runs as root by default. ### Updating @@ -125,15 +122,16 @@ Run `docker stop avago; docker rm avago;` then start a new container with the la ### Networking Using `--network host` is recommended to avoid any issues. - If you know what you are doing, you will need port `AVAGO_STAKING_PORT` (default `9651`) open for the validator to connect to the subnet. For the RPC server, open `AVAGO_HTTP_PORT` (default `9650`). Do not attempt to remap `AVAGO_STAKING_PORT` using the Docker `-p` flag (e.g., `-p 9651:1234`); it will not work. Instead, set `AVAGO_STAKING_PORT=1234` and then use `-p 1234:1234`. +This is because the staking port is used for peer-to-peer communication between validators, and the port number is part of the node's identity in the network. If you remap it using Docker's port mapping, other nodes will still try to connect to the original port number advertised by your node, leading to connection failures. The HTTP port can be remapped freely since it's only used for API calls. + ### Example Configs #### Fuji Subnet Validator ```bash -mkdir -p ~/.avalanchego/staking; docker run -it -d \ +docker run -it -d \ --name avago \ --network host \ -v ~/.avalanchego:/home/avalanche/.avalanchego \ @@ -141,9 +139,7 @@ mkdir -p ~/.avalanchego/staking; docker run -it -d \ -e AVAGO_PARTIAL_SYNC_PRIMARY_NETWORK=true \ -e AVAGO_TRACK_SUBNETS=REPLACE_THIS_WITH_YOUR_SUBNET_ID \ -e AVAGO_PUBLIC_IP_RESOLUTION_SERVICE=ifconfigme \ - -e HOME=/home/avalanche \ - --user $(id -u):$(id -g) \ - avaplatform/subnet-evm:v0.7.1 + avaplatform/subnet-evm:v0.7.1-rc.0 ``` - `AVAGO_PARTIAL_SYNC_PRIMARY_NETWORK`: Ensures you don't sync the X and C-Chains. @@ -154,24 +150,22 @@ mkdir -p ~/.avalanchego/staking; docker run -it -d \ #### Fuji Subnet RPC ```bash -mkdir -p ~/.avalanchego_rpc/staking; docker run -it -d \ +docker run -it -d \ --name rpc \ --network host \ -v ~/.avalanchego_rpc/:/home/avalanche/.avalanchego \ -e AVAGO_NETWORK_ID=fuji \ -e AVAGO_PARTIAL_SYNC_PRIMARY_NETWORK=true \ - -e AVAGO_TRACK_SUBNETS=REPLACE_THIS_WITH_YOUR_SUBNET_ID \ + -e AVAGO_TRACK_SUBNETS=hk755meusfKqBb9C9RfzzCxZFkdSXhaFHTcbtycMUSQ11o2cd \ -e AVAGO_HTTP_PORT=8080 \ -e AVAGO_STAKING_PORT=9653 \ -e AVAGO_HTTP_ALLOWED_HOSTS="*" \ -e AVAGO_HTTP_HOST=0.0.0.0 \ -e AVAGO_PUBLIC_IP_RESOLUTION_SERVICE=ifconfigme \ - -e HOME=/home/avalanche \ - --user $(id -u):$(id -g) \ - avaplatform/subnet-evm:v0.7.1 + avaplatform/subnet-evm:v0.7.1-rc.0 ``` -- `AVAGO_STAKING_PORT` is set to `9653` in case you want to run this on the same machine as the validator. +- `AVAGO_STAKING_PORT` is set to `9653` in case you want to run this on the same machine as the validator. Remove this to set to the default `9651`. - `AVAGO_HTTP_PORT` is set to `8080` instead of `9650` to avoid conflicts with the validator. - `AVAGO_HTTP_ALLOWED_HOSTS` and `AVAGO_HTTP_HOST` are required to allow the RPC server to be accessed from outside. You'll need to secure it with HTTPS; Caddy is recommended.