80 lines
2.8 KiB
Plaintext
80 lines
2.8 KiB
Plaintext
Step 002B: agave-validator pod systemd (RPC-only, non-voting) + fix na problemy z ExecStart
|
|
|
|
Ten krok naprawia 2 typowe bledy po wklejeniu unit-a:
|
|
1) "error: The subcommand '\\' wasn't recognized"
|
|
2) RPC nie startuje, bo ExecStart zostal "polamany" (brakuje --rpc-port albo --log ma sciezke do katalogu)
|
|
|
|
Przyczyna:
|
|
- W unit file kontynuacja linii w ExecStart to JEDEN backslash na koncu linii: `\`
|
|
- NIE uzywaj `\\` (dwa backslashe) bo wtedy do programu trafia literalny argument `\` i validator pada.
|
|
- Dodatkowo: unikaj bardzo dlugich linii, bo clipboard/paste potrafi je rozciac (i systemd wtedy ignoruje reszte).
|
|
|
|
0) Stop/wycisz restart loop
|
|
sudo systemctl disable --now agave-validator
|
|
sudo systemctl reset-failed agave-validator
|
|
|
|
1) Wrzuc poprawny unit (wielolinijkowy ExecStart z poprawna kontynuacja `\`)
|
|
sudo tee /etc/systemd/system/agave-validator.service >/dev/null <<'EOF'
|
|
[Unit]
|
|
Description=Agave validator (mainnet, RPC-only, non-voting)
|
|
After=network-online.target wg-quick@wg0.service
|
|
Wants=network-online.target wg-quick@wg0.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=solana
|
|
Group=solana
|
|
WorkingDirectory=/var/lib/solana
|
|
Environment=RUST_LOG=info
|
|
LimitNOFILE=1048576
|
|
Restart=always
|
|
RestartSec=5
|
|
TimeoutStopSec=120
|
|
ExecStart=/opt/solana/bin/agave-validator \
|
|
--identity /var/lib/solana/identity.json \
|
|
--no-voting \
|
|
--private-rpc \
|
|
--ledger /var/lib/solana/ledger \
|
|
--accounts /var/lib/solana/accounts \
|
|
--log /var/log/solana/validator.log \
|
|
--bind-address 0.0.0.0 \
|
|
--rpc-bind-address 10.66.66.1 \
|
|
--rpc-port 8899 \
|
|
--dynamic-port-range 8000-8025 \
|
|
--entrypoint entrypoint.mainnet-beta.solana.com:8001 \
|
|
--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \
|
|
--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \
|
|
--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
|
|
--full-rpc-api \
|
|
--limit-ledger-size 50000000 \
|
|
--geyser-plugin-config /etc/solana/yellowstone-geyser.json
|
|
NoNewPrivileges=true
|
|
PrivateTmp=true
|
|
ProtectSystem=full
|
|
ReadWritePaths=/var/lib/solana/ledger /var/lib/solana/accounts /var/log/solana /var/lib/solana
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
2) Reload + start
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable --now agave-validator
|
|
|
|
3) Weryfikacja (na hoście)
|
|
# Sprawdz, czy systemd widzi kompletne argv[] (ma byc --rpc-port 8899 i poprawna sciezka --log):
|
|
systemctl show agave-validator -p ExecStart --no-pager
|
|
|
|
sudo systemctl status agave-validator --no-pager -l
|
|
|
|
# Czy porty sluchaja (RPC/WS na wg0):
|
|
sudo ss -lntp | egrep ':8899\\b|:8900\\b' || true
|
|
|
|
# getHealth moze zwracac blad dopoki node nie dogoni klastra, wiec sprawdz getVersion:
|
|
curl -sS -H 'content-type: application/json' \
|
|
--data '{"jsonrpc":"2.0","id":1,"method":"getVersion"}' \
|
|
http://10.66.66.1:8899 | jq .
|
|
|
|
# Logi:
|
|
sudo journalctl -u agave-validator -n 120 --no-pager
|