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