Skip to content

Commit

Permalink
addresses the feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
containerman17 committed Jan 17, 2025
1 parent 6d33427 commit 835a9da
Showing 1 changed file with 12 additions and 18 deletions.
30 changes: 12 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -125,25 +122,24 @@ 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 \
-e AVAGO_NETWORK_ID=fuji \
-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.
Expand All @@ -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.

Expand Down

0 comments on commit 835a9da

Please sign in to comment.