Ir para o conteúdo

Executar um Nó Tanssi Usando Systemd

Introdução

Neste guia, você aprenderá a iniciar um Nó Tanssi usando o binário estável mais recente e gerenciar o serviço com Systemd em sistemas Linux. Os nós fornecem endpoints de API essenciais para que aplicações e usuários interajam com a rede Tanssi.

O artigo segue a boa prática de executar o serviço com uma conta não-root e conceder a essa conta acesso de gravação a um diretório específico. Você pode adaptar as etapas à sua configuração, preferências e políticas de segurança.

Verificando Pré-requisitos

Para começar, você precisará de acesso a um computador executando Ubuntu Linux com Landlock habilitado e privilégios de root. Você também precisará de:

  • Arquivos binários do Nó - um nó requer três binários: tanssi-relay, tanssi-relay-execute-worker e tanssi-relay-prepare-worker

As instruções executam a versão estável mais recente. Você pode compilar seu próprio arquivo a partir do código-fonte.

Verificar Suporte Landlock

Os nós Tanssi usam o recurso Landlock do kernel Linux como medida de segurança para restringir acesso a recursos do sistema, limitando danos caso o aplicativo seja comprometido.

Verifique o suporte Landlock executando:

sudo dmesg | grep landlock || journalctl -kg landlock

Saída esperada:

sudo dmesg | grep landlock || journalctl -kg landlock [ 0.240344] landlock: Up and running.

Se o Landlock estiver desabilitado, atualize o kernel para a versão 5.13 ou superior.

Baixar a Versão Mais Recente

Baixe o binário mais recente e torne-o executável:

Note

Recomenda-se usar as versões binárias otimizadas para as arquiteturas Skylake da Intel ou Zen3 da AMD para melhor desempenho.

wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay && \
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-execute-worker && \
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-prepare-worker && \
chmod +x ./tanssi-relay*
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-skylake -O tanssi-relay && \
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-execute-worker-skylake -O tanssi-relay-execute-worker && \
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-prepare-worker-skylake -O tanssi-relay-prepare-worker && \
chmod +x ./tanssi-relay*
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-znver3 -O tanssi-relay && \
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-execute-worker-znver3 -O tanssi-relay-execute-worker && \
wget https://github.com/moondance-labs/tanssi/releases/download/v0.15.0/tanssi-relay-prepare-worker-znver3 -O tanssi-relay-prepare-worker && \
chmod +x ./tanssi-relay*

Configure o serviço Systemd

O Systemd é um sistema de gerenciamento para Linux que controla serviços (daemons), iniciando-os automaticamente quando o computador liga ou reinicia, ou reiniciando-os em caso de falhas.

Os comandos a seguir criam uma nova conta, o diretório e movem os arquivos previamente baixados para o local correto.

  1. Crie uma nova conta para executar o serviço:

    adduser tanssi_service --system --no-create-home
    
    adduser dancelight_service --system --no-create-home
    
  2. Crie um diretório para armazenar os arquivos e dados necessários:

    mkdir /var/lib/tanssi-data
    
    mkdir /var/lib/dancelight-data
    
  3. Defina a propriedade da pasta para a conta que executará o serviço, garantindo permissão de escrita:

    chown -R tanssi_service /var/lib/tanssi-data
    
    chown -R tanssi_service /var/lib/dancelight-data
    
  4. Mova os binários para a pasta:

    mv ./tanssi-relay* /var/lib/tanssi-data
    
    mv ./tanssi-relay* /var/lib/dancelight-data
    

Gerar a chave do nó

Para gerar e armazenar em disco as chaves de sessão que serão referenciadas no comando de inicialização, execute:

/var/lib/tanssi-data/tanssi-relay key generate-node-key --file /var/lib/tanssi-data/node-key
/var/lib/dancelight-data/tanssi-relay key generate-node-key --file /var/lib/dancelight-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.

Criar o arquivo de configuração do Systemd

O próximo passo é criar o arquivo de configuração do Systemd.

Crie o arquivo executando o comando:

sudo touch /etc/systemd/system/tanssi.service
sudo touch /etc/systemd/system/dancelight.service

Agora abra o arquivo com seu editor favorito (vim, emacs, nano etc.) e adicione a configuração do serviço, substituindo a tag INSERT_YOUR_TANSSI_NODE_NAME por um nome legível e INSERT_YOUR_IP_ADDRESS pelo seu endereço IP público. Esse nome ajuda a relacionar entradas de log e métricas ao nó que as gera.

[Unit]
Description="Serviço systemd Tanssi"
After=network.target
StartLimitIntervalSec=0

[Service]
User=tanssi_service
Type=simple
Restart=always
RestartSec=10
SyslogIdentifier=tanssi
SyslogFacility=local7
KillSignal=SIGHUP
LimitNOFILE=100000
ExecStart=/var/lib/tanssi-data/tanssi-relay --chain=tanssi \
--base-path /var/lib/tanssi-data/ \
--name INSERT_YOUR_TANSSI_NODE_NAME \
--node-key-file /var/lib/tanssi-data/node-key \
--database paritydb \
--rpc-port 9944 \
--prometheus-port 9615 \
--prometheus-external \
--listen-addr /ip4/0.0.0.0/tcp/30333 \
--public-addr /ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning archive \
--blocks-pruning archive \
--rpc-cors=all \
--unsafe-rpc-external \
--rpc-methods=safe \
--telemetry-url 'wss://telemetry.polkadot.io/submit/ 0'

[Install]
WantedBy=multi-user.target
[Unit]
Description="Serviço systemd Dancelight"
After=network.target
StartLimitIntervalSec=0

[Service]
User=dancelight_service
Type=simple
Restart=always
RestartSec=10
SyslogIdentifier=dancelight
SyslogFacility=local7
KillSignal=SIGHUP
LimitNOFILE=100000
ExecStart=/var/lib/dancelight-data/tanssi-relay --chain=dancelight \
--base-path /var/lib/tanssi-data/ \
--name INSERT_YOUR_TANSSI_NODE_NAME \
--node-key-file /var/lib/tanssi-data/node-key \
--database paritydb \
--rpc-port 9944 \
--prometheus-port 9615 \
--prometheus-external \
--listen-addr /ip4/0.0.0.0/tcp/30333 \
--public-addr /ip4/INSERT_YOUR_IP_ADDRESS/tcp/30333 \
--state-pruning archive \
--blocks-pruning archive \
--rpc-cors=all \
--unsafe-rpc-external \
--rpc-methods=safe \
--telemetry-url 'wss://telemetry.polkadot.io/submit/ 0'

[Install]
WantedBy=multi-user.target

Flags de Execução

As flags usadas no ExecStart podem ser ajustadas conforme suas preferências e hardware. Algumas das principais:

  • --state-pruning=archive - mantém todos os dados de estado (necessário para consultas históricas)
  • --blocks-pruning=archive - mantém todos os blocos (necessário para dados históricos de blocos)
  • --database=paritydb - usa ParityDB como back-end otimizado para desempenho de nó RPC
  • --unsafe-rpc-external - permite conexões externas ao RPC; requer medidas adicionais de segurança em produção (proxy reverso, autenticação, firewall)

Atenção

A flag --unsafe-rpc-external expõe o RPC externamente. Em produção, proteja com firewall, proxy reverso, autenticação e limitação de taxa.

Você pode visualizar todas as flags disponíveis executando:

/var/lib/tanssi-data/tanssi-relay --help
/var/lib/dancelight-data/tanssi-relay --help

Execute o serviço

Por fim, habilite o serviço e inicie-o pela primeira vez:

systemctl enable tanssi.service && \
systemctl start tanssi.service
systemctl enable dancelight.service && \
systemctl start dancelight.service

Você pode verificar se o serviço está ativo e rodando corretamente executando:

systemctl status tanssi.service
systemctl status dancelight.service
systemctl status network.service
● network.service - "Network systemd service"
   Loaded: loaded (/etc/systemd/system/network.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2024-02-18 18:16:40 EST; 14min ago
  Main PID: 4045278 (container-chain)
    Tasks: 44 (limit: 9462)
   Memory: 6.5G
   CGroup: /system.slice/network.service
           └─4045278 4045278 /var/lib/network-data/container-chain- ...

Verifique os logs, se necessário, com o comando a seguir:

journalctl -f -u tanssi.service
journalctl -f -u dancelight.service

Testando Seu Nó

Depois que seu nó estiver totalmente sincronizado, você pode verificar se o endpoint RPC está funcionando corretamente fazendo uma solicitação simples. Use curl para testar:

curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method":"chain_getHeader", "params":[]}' http://localhost:9944

Se o endpoint RPC estiver funcionando, você receberá uma resposta JSON contendo as informações do cabeçalho do bloco mais recente.

Última atualização: 9 de dezembro de 2025
| Criada: 9 de dezembro de 2025