Executar um Nó Operator Usando Docker¶
Introdução¶
Os operators são fundamentais no ecossistema Tanssi, fornecendo segurança e validação para redes baseadas em Tanssi. Como operator, você participa do consenso que protege a rede e ganha recompensas.
Conforme apresentado na seção de integração, executar o nó é o primeiro passo da sua participação ativa no protocolo.
Este guia mostra como iniciar um operator Tanssi usando a imagem oficial com Docker em sistemas Linux.
Verificando Pré-Requisitos¶
Instalando o Docker¶
Para começar, você precisará de um computador com Linux e instalar o Docker.
Execute o comando a seguir para instalar o Docker em um Ubuntu:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
E o comando abaixo para verificar a instalação:
sudo docker run hello-world
Uma execução bem-sucedida no terminal se parece com isto:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Puxar a Imagem Docker¶
Uma imagem Docker é construída e publicada em cada versão, contendo todas as dependências necessárias e o binário do operator.
A imagem combina o binário estável mais recente do nó cliente com o arquivo de especificação do orquestrador Tanssi.
Execute o comando a seguir para puxar a imagem Docker:
docker pull moondancelabs/starlight
docker pull moondancelabs/starlight
O comando fará download/extrair a imagem e exibirá o status após a execução:
Using default tag: latest
latest: Pulling from moondancelabs/starlight
e1caac4eb9d2: Pull complete
1d4409959e6d: Pull complete
b8beed19c122: Pull complete
c0fab1f18601: Pull complete
Digest: sha256:0f717d6cf247bbb1b082f5f9e5761b23c44a0be8b704492a57fdbf8c63c0a91c
Status: Downloaded newer image for moondancelabs/starlight
docker.io/moondancelabs/starlight
Configure o diretório de dados¶
Executar um nó requer sincronizar com a cadeia Tanssi e armazenar seu estado.
Crie o diretório onde o nó armazenará os bancos de dados contendo blocos e estados de cadeia:
mkdir /var/lib/tanssi-data
mkdir /var/lib/dancelight-data
Set the folder's ownership to the account that will run the Docker image to ensure writing permission:
chown INSERT_DOCKER_USER /var/lib/tanssi-data
chown INSERT_DOCKER_USER /var/lib/dancelight-data
Ou execute o comando a seguir se quiser rodar o nó com o usuário atualmente logado:
sudo chown -R $(id -u):$(id -g) /var/lib/tanssi-data
sudo chown -R $(id -u):$(id -g) /var/lib/dancelight-data
Note
O diretório é um parâmetro no comando de inicialização do Docker. Se decidir criá-lo em outro lugar, ajuste o comando.
Gerar a Chave do Nó¶
Para gerar e armazenar as chaves de sessão em disco (referenciadas no comando de inicialização), execute:
docker run --network="host" -v "/var/lib/tanssi-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moondancelabs/starlight key generate-node-key --file /data/node-key
docker run --network="host" -v "/var/lib/dancelight-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moondancelabs/starlight key generate-node-key --file /data/node-key
Note
Esta etapa poderia ser evitada usando o parâmetro --unsafe-force-node-key-generation no comando de inicialização, embora essa não seja a prática recomendada.
Inicie Seu Nó¶
Para iniciar seu nó, execute a imagem Docker com docker run.
Substitua INSERT_YOUR_TANSSI_NODE_NAME por um nome legível e INSERT_YOUR_IP_ADDRESS pelo IP público.
Note
Recomenda-se usar as versões binárias otimizadas para as arquiteturas Skylake da Intel ou Zen3 da AMD para melhor desempenho.
docker run --network="host" -v "/var/lib/tanssi-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moondancelabs/starlight \
--chain=tanssi \
--base-path=/data/ \
--node-key-file /data/node-key \
--database=paritydb \
--rpc-port=9944 \
--prometheus-port=9615 \
--prometheus-external \
--name=INSERT_YOUR_TANSSI_NODE_NAME \
--listen-addr=/ip4/0.0.0.0/tcp/30333 \
--public-addr=/ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning=2000 \
--blocks-pruning=2000 \
--telemetry-url='wss://telemetry.polkadot.io/submit/ 0' \
--validator
docker run --network="host" -v "/var/lib/tanssi-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
--entrypoint "/tanssi-relay/tanssi-relay-skylake" \
moondancelabs/starlight \
--chain=tanssi \
--base-path=/data/ \
--node-key-file /data/node-key \
--database=paritydb \
--rpc-port=9944 \
--prometheus-port=9615 \
--prometheus-external \
--name=INSERT_YOUR_TANSSI_NODE_NAME \
--listen-addr=/ip4/0.0.0.0/tcp/30333 \
--public-addr=/ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning=2000 \
--blocks-pruning=2000 \
--telemetry-url='wss://telemetry.polkadot.io/submit/ 0' \
--validator
docker run --network="host" -v "/var/lib/tanssi-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
--entrypoint "/tanssi-relay/tanssi-relay-znver3" \
moondancelabs/starlight \
--chain=tanssi \
--base-path=/data/ \
--node-key-file /data/node-key \
--database=paritydb \
--rpc-port=9944 \
--prometheus-port=9615 \
--prometheus-external \
--name=INSERT_YOUR_TANSSI_NODE_NAME \
--listen-addr=/ip4/0.0.0.0/tcp/30333 \
--public-addr=/ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning=2000 \
--blocks-pruning=2000 \
--telemetry-url='wss://telemetry.polkadot.io/submit/ 0' \
--validator
docker run --network="host" -v "/var/lib/dancelight-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moondancelabs/starlight \
--chain=dancelight \
--base-path=/data/ \
--node-key-file /data/node-key \
--database=paritydb \
--rpc-port=9944 \
--prometheus-port=9615 \
--prometheus-external \
--name=INSERT_YOUR_TANSSI_NODE_NAME \
--listen-addr=/ip4/0.0.0.0/tcp/30333 \
--public-addr=/ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning=2000 \
--blocks-pruning=2000 \
--telemetry-url='wss://telemetry.polkadot.io/submit/ 0' \
--validator
docker run --network="host" -v "/var/lib/dancelight-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
--entrypoint "/tanssi-relay/tanssi-relay-skylake" \
moondancelabs/starlight \
--chain=dancelight \
--base-path=/data/ \
--node-key-file /data/node-key \
--database=paritydb \
--rpc-port=9944 \
--prometheus-port=9615 \
--prometheus-external \
--name=INSERT_YOUR_TANSSI_NODE_NAME \
--listen-addr=/ip4/0.0.0.0/tcp/30333 \
--public-addr=/ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning=2000 \
--blocks-pruning=2000 \
--telemetry-url='wss://telemetry.polkadot.io/submit/ 0' \
--validator
docker run --network="host" -v "/var/lib/dancelight-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
--entrypoint "/tanssi-relay/tanssi-relay-znver3" \
moondancelabs/starlight \
--chain=dancelight \
--base-path=/data/ \
--node-key-file /data/node-key \
--database=paritydb \
--rpc-port=9944 \
--prometheus-port=9615 \
--prometheus-external \
--name=INSERT_YOUR_TANSSI_NODE_NAME \
--listen-addr=/ip4/0.0.0.0/tcp/30333 \
--public-addr=/ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning=2000 \
--blocks-pruning=2000 \
--telemetry-url='wss://telemetry.polkadot.io/submit/ 0' \
--validator
Flags de Execução¶
As flags usadas no comando docker run podem ser ajustadas conforme suas preferências e configuração de hardware. Algumas das principais são:
--name INSERT_NAME- a human-readable name for this node--rpc-port INSERT_PORT- specifies the JSON-RPC TCP port the node listens on--unsafe-rpc-external- exposes the RPC service on all the interfaces--state-pruning INSERT_STATE_PRUNING_TYPE- specifies when the Tanssi-powered network state should be removed from the database. The pruning type can be eitherarchive(which makes the node behave as a full node keeping all the state),archive-canonical(which keeps only the state of finalized blocks), or anynumber(representing the number of blocks whose states are kept)--blocks-pruning INSERT_BLOCKS_PRUNING_TYPE- specifies how many blocks should be kept in the database. The pruning type can be eitherarchive(which makes the node behave as a full node keeping all the blocks),archive-canonical(which keeps only finalized blocks), or anynumber(representing the amount of finalized blocks to keep)--detailed-log-output- enables detailed log output
Warning
The --unsafe-rpc-external enables external access to your node’s RPC interface, making it accessible from any IP address. Make sure that proper security controls are in place.
For a complete list of available flags, their description, and possible values, run the following command:
docker run -ti moondancelabs/starlight --help
docker run -ti moondancelabs/starlight --help
Sincronizando Seu Nó¶
Na primeira execução, o processo de sincronização exibirá muitos logs do nó e da cadeia sendo sincronizada. Alguns erros iniciais são esperados e desaparecem quando a cadeia alcança o último bloco.
2024-02-08 18:30:04.093 INFO tokio-runtime-worker substrate: [Parachain] 💤 Idle (0 peers), best: #0 (0x4a2b…7de3), finalized #0 (0x4a2b…7de3), ⬇ 0 ⬆ 0
2024-02-08 18:30:06.368 INFO tokio-runtime-worker substrate: [Relaychain] ✨ Imported #14139635 (0x8c41…8df6)
2024-02-08 18:30:08.809 INFO tokio-runtime-worker substrate: [Relaychain] 💤 Idle (8 peers), best: #14139635 (0x8c41…8df6), finalized #14139632 (0xa9a8…cab9), ⬇ 32.7kiB/s ⬆
Quando a sincronização terminar, seu nó estará pronto para as próximas etapas.
| Criada: 27 de novembro de 2025