- Remove executable permissions from configuration files (.editorconfig, .env.example, .gitignore) - Remove executable permissions from documentation files (README.md, LICENSE, SECURITY.md) - Remove executable permissions from web assets (HTML, CSS, JS files) - Remove executable permissions from data files (JSON, SQL, YAML, requirements.txt) - Remove executable permissions from source code files across all apps - Add executable permissions to Python
2.9 KiB
2.9 KiB
AITBC Remote Deployment Guide
Overview
This deployment strategy builds the blockchain node directly on the ns3 server to utilize its gigabit connection, avoiding slow uploads from localhost.
Quick Start
1. Deploy Everything
./scripts/deploy/deploy-all-remote.sh
This will:
- Copy deployment scripts to ns3
- Copy blockchain source code from localhost
- Build blockchain node directly on server
- Deploy a lightweight HTML-based explorer
- Configure port forwarding
2. Access Services
Blockchain Node RPC:
- Internal: http://localhost:8082
- External: http://aitbc.keisanki.net:8082
Blockchain Explorer:
- Internal: http://localhost:3000
- External: http://aitbc.keisanki.net:3000
Architecture
ns3-root (95.216.198.140)
├── Blockchain Node (port 8082)
│ ├── Auto-syncs on startup
│ └── Serves RPC API
└── Explorer (port 3000)
├── Static HTML/CSS/JS
├── Served by nginx
└── Connects to local node
Key Features
Blockchain Node
- Built directly on server from source code
- Source copied from localhost via scp
- Auto-sync on startup
- No large file uploads needed
- Uses server's gigabit connection
Explorer
- Pure HTML/CSS/JS (no build step)
- Served by nginx
- Real-time block viewing
- Transaction details
- Auto-refresh every 30 seconds
Manual Deployment
If you need to deploy components separately:
Blockchain Node Only
ssh ns3-root
cd /opt
./deploy-blockchain-remote.sh
Explorer Only
ssh ns3-root
cd /opt
./deploy-explorer-remote.sh
Troubleshooting
Check Services
# On ns3 server
systemctl status blockchain-node blockchain-rpc nginx
# Check logs
journalctl -u blockchain-node -f
journalctl -u blockchain-rpc -f
journalctl -u nginx -f
Test RPC
# From ns3
curl http://localhost:8082/rpc/head
# From external
curl http://aitbc.keisanki.net:8082/rpc/head
Port Forwarding
If port forwarding doesn't work:
# Check iptables rules
iptables -t nat -L -n
# Re-add rules
iptables -t nat -A PREROUTING -p tcp --dport 8082 -j DNAT --to-destination 192.168.100.10:8082
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.10 --dport 8082 -j MASQUERADE
Configuration
Blockchain Node
Location: /opt/blockchain-node/.env
- Chain ID: ait-devnet
- RPC Port: 8082
- P2P Port: 7070
- Auto-sync: enabled
Explorer
Location: /opt/blockchain-explorer/index.html
- Served by nginx on port 3000
- Connects to localhost:8082
- No configuration needed
Security Notes
- Services run as root (simplify for dev)
- No authentication on RPC (dev only)
- Port forwarding exposes services externally
- Consider firewall rules for production
Next Steps
- Set up proper authentication
- Configure HTTPS with SSL certificates
- Add multiple peers for network resilience
- Implement proper backup procedures
- Set up monitoring and alerting