Files
aitbc/.windsurf/skills/ssh-access-patterns.md
aitbc 2acb5ccc49
Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Has been cancelled
Deploy to Testnet / deploy-testnet (push) Has been cancelled
Documentation Validation / validate-docs (push) Has been cancelled
Documentation Validation / validate-policies-strict (push) Has been cancelled
Multi-Node Stress Testing / stress-test (push) Has been cancelled
Coverage Phase 1 (70% Target) / test-coverage-70 (push) Has been cancelled
Coverage Phase 2 (85% Target) / test-coverage-85 (push) Has been cancelled
Python Tests / test-python (push) Has been cancelled
Update SSH access patterns documentation and expand workflow integration test suite
- ssh-access-patterns.md: Clarify ns3/aitbc container setup with correct paths and service names
  - Add container hostname verification command
  - Update paths: /etc/aitbc/blockchain.env, /opt/aitbc/apps/blockchain-node/
  - Fix service name: aitbc-blockchain-node (not aitbc-blockchain-node-3)
  - Add service restart and log viewing examples
- test_workflow.sh: Rewrite as comprehensive integration test suite
  - Add
2026-05-27 09:16:23 +02:00

3.4 KiB

SSH Access Patterns for AITBC Nodes

Purpose

Document SSH access patterns for all AITBC nodes in the infrastructure.

Node Access Patterns

aitbc (localhost)

Direct access - no SSH required.

# Run commands directly on localhost
echo "command"
systemctl restart service-name
curl http://127.0.0.1:8006/rpc/head

aitbc1

Direct SSH access.

ssh aitbc1
# Or execute single command
ssh aitbc1 "command"
# Access aitbc1's blockchain RPC
ssh aitbc1 "curl http://127.0.0.1:8006/rpc/head"
# Access aitbc from aitbc1
ssh aitbc1 "curl http://aitbc:8006/rpc/head"

gitea-runner (hosts aitbc2 blockchain node)

Direct SSH access. The aitbc2 blockchain node runs on this same host.

ssh gitea-runner
# Or execute single command
ssh gitea-runner "command"
# aitbc2 blockchain node runs on this host

# Execute aitbc2-specific commands
ssh gitea-runner "/opt/aitbc/aitbc-cli blockchain info"
ssh gitea-runner "systemctl status aitbc-blockchain-node --no-pager"

ns3 (hosts hub.aitbc.bubuit.net incus container)

Direct SSH access. The hub.aitbc.bubuit.net service runs as an incus container named "aitbc" on ns3.

ssh ns3
# Or execute single command
ssh ns3 "command"

# Access the aitbc container (hub.aitbc.bubuit.net)
ssh ns3 "incus exec aitbc -- bash"
# Or execute single command in container
ssh ns3 "incus exec aitbc -- command"

# Check container hostname
ssh ns3 "incus exec aitbc -- hostname"
# Output: hub.aitbc.bubuit.net

# Container IP: 192.168.100.10
# Access via container IP from ns3
ssh ns3 "curl http://192.168.100.10:8006/rpc/head"

# Check environment configuration in container
ssh ns3 "incus exec aitbc -- cat /etc/aitbc/blockchain.env"
ssh ns3 "incus exec aitbc -- cat /etc/aitbc/node.env"

# Check blockchain node configuration
ssh ns3 "incus exec aitbc -- cat /opt/aitbc/apps/blockchain-node/src/aitbc_chain/config.py"

# Check service status in container
ssh ns3 "incus exec aitbc -- systemctl status aitbc-blockchain-node --no-pager"

# Restart service in container
ssh ns3 "incus exec aitbc -- systemctl restart aitbc-blockchain-node"

# View service logs in container
ssh ns3 "incus exec aitbc -- journalctl -u aitbc-blockchain-node -n 50 --no-pager"

Important Notes

  • Never SSH to localhost: Commands should run directly on the local machine
  • Use proper quoting: When passing commands to SSH, use single quotes to prevent shell expansion
  • Test connectivity: Verify RPC endpoints are accessible before running sync operations

Common Operations

Check service status on aitbc1

ssh aitbc1 "systemctl status aitbc-blockchain-node --no-pager"

Restart service on gitea-runner (aitbc2)

ssh gitea-runner "systemctl restart aitbc-blockchain-node"

Copy file to aitbc1

scp /path/to/file aitbc1:/path/to/destination

Execute script on gitea-runner

ssh gitea-runner "bash /path/to/script.sh"

Multi-Node Operations

Run command on all remote nodes

for node in aitbc1 gitea-runner ns3; do
  ssh "$node" "systemctl status aitbc-blockchain-node --no-pager"
done

Check block heights across all nodes

for node in aitbc1 gitea-runner; do
  echo "=== $node ==="
  ssh "$node" "curl -s http://localhost:8006/rpc/bestBlock | jq '.height'"
done

# Check ns3 (public hub) separately as it may have different RPC port
echo "=== ns3 ==="
ssh ns3 "curl -s http://localhost:8006/rpc/bestBlock | jq '.height'"