Common issues and solutions for ArcDeploy
This guide covers the most common issues users encounter when deploying ArcBlock Blocklet Server using ArcDeploy, along with step-by-step solutions.
If you're experiencing issues, run these commands first to gather information:
# Check cloud-init status
sudo cloud-init status --long
# Check Blocklet Server service
sudo systemctl status blocklet-server
# Check system logs
sudo journalctl -u blocklet-server --since "1 hour ago"
# Test network connectivity
curl -I http://localhost:8080Symptoms:
Connection refusederrorConnection timed outerrorPermission denied (publickey)error
Solutions:
# Test if port 2222 is reachable
telnet YOUR_SERVER_IP 2222
# If that fails, check if default SSH port is open
telnet YOUR_SERVER_IP 22- Hetzner: Verify Cloud Firewall allows port 2222
- AWS: Check Security Group rules
- GCP: Verify VPC firewall rules
- DigitalOcean: Check Cloud Firewall settings
- Azure: Verify Network Security Group
# Check your SSH key format
ssh-keygen -l -f ~/.ssh/your_key.pub
# Try verbose SSH connection
ssh -p 2222 -v arcblock@YOUR_SERVER_IP# On the server (if you have console access)
sudo cat /home/arcblock/.ssh/authorized_keys
sudo tail -f /var/log/auth.logSolutions:
# Correct format:
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIYourActualKeyHere user@hostname
# NOT this:
ssh_authorized_keys:
- "ssh-ed25519 AAAAC3..." # Remove quotes
- YOUR_SSH_KEY_HERE # Must be actual key# On your local machine
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
# Check key ownership
ls -la ~/.ssh/Symptoms:
- Browser shows "This site can't be reached"
- Connection timeout errors
- ERR_CONNECTION_REFUSED
Solutions:
# Check Blocklet Server
sudo systemctl status blocklet-server
# Check nginx
sudo systemctl status nginx
# Check processes
ps aux | grep -E "(blocklet|nginx)"# Verify ports are listening
sudo netstat -tlnp | grep -E "(8080|8443)"
# Expected output:
# tcp 0.0.0.0:8080 0.0.0.0:* LISTEN 1234/nginx
# tcp 0.0.0.0:8443 0.0.0.0:* LISTEN 1234/nginx# Test from server itself
curl -I http://localhost:8080
curl -I http://127.0.0.1:8080
# Test blocklet server directly
curl -I http://localhost:3030# Check UFW status
sudo ufw status verbose
# Check iptables
sudo iptables -L -n
# Temporarily disable firewall for testing
sudo ufw disable
# Test access, then re-enable: sudo ufw enable# Test nginx configuration
sudo nginx -t
# Check nginx error logs
sudo tail -f /var/log/nginx/error.log
# Restart nginx
sudo systemctl restart nginxSymptoms:
sudo cloud-init statusshows "error" or "degraded"- Services not installed or configured properly
Solutions:
# Check main cloud-init log
sudo tail -f /var/log/cloud-init-output.log
# Check detailed logs
sudo tail -f /var/log/cloud-init.log
# Check for specific errors
sudo journalctl -u cloud-init-local -u cloud-init -u cloud-config -u cloud-final# On your local machine, validate YAML
python3 -c "import yaml; yaml.safe_load(open('cloud-init.yaml'))"
# Or use online YAML validator
# Copy cloud-init.yaml content to: https://yaml-online-parser.appspot.com/# Validate cloud-init schema (on server)
sudo cloud-init schema --config-file /var/lib/cloud/instance/cloud-config.txtSymptoms:
- Cloud provider rejects the configuration
- "User data too large" error
Solutions:
- Remove unnecessary comments
- Use shorter variable names
- Consider using external scripts
Solutions:
# Detailed status
sudo systemctl status blocklet-server -l
# Check if service exists
sudo systemctl list-unit-files | grep blocklet
# Check service definition
sudo cat /etc/systemd/system/blocklet-server.service# Verify arcblock user exists
id arcblock
# Check home directory permissions
sudo ls -la /home/arcblock/
# Check service file ownership
sudo ls -la /etc/systemd/system/blocklet-server.service# Try starting manually
sudo -u arcblock /usr/bin/blocklet server start
# Check for error messages
sudo -u arcblock /usr/bin/blocklet server status# Uninstall
sudo -u arcblock npm uninstall -g @blocklet/cli
# Reinstall
sudo -u arcblock npm install -g @blocklet/cli
# Reconfigure
sudo -u arcblock blocklet server init --mode productionSolutions:
# Check if services are enabled
sudo systemctl is-enabled blocklet-server
sudo systemctl is-enabled nginx
# Enable if needed
sudo systemctl enable blocklet-server
sudo systemctl enable nginxSolutions:
# Test DNS resolution
nslookup google.com
# Test internet speed
curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -
# Check routing
traceroute 8.8.8.8# Check CPU usage
top
htop
# Check memory usage
free -h
# Check disk I/O
iostat -x 1
# Check network usage
iftop
nethogsSolutions:
- Verify security groups/firewall rules
- Check for IP allowlisting restrictions
- Verify network ACLs
# Check UFW rules
sudo ufw status numbered
# Check for blocking rules
sudo iptables -L -n --line-numbersSolutions:
# Check if certificates exist
sudo ls -la /etc/letsencrypt/live/*/
# Check certificate validity
sudo openssl x509 -in /etc/letsencrypt/live/yourdomain.com/cert.pem -text -noout# Check nginx SSL config
sudo nginx -T | grep ssl
# Test nginx configuration
sudo nginx -tSolutions:
# Check available space
df -h /home/arcblock/
# Check inode usage
df -i# Check blocklet server data directory
sudo -u arcblock ls -la /home/arcblock/.local/share/blocklet-server/
# Check for database locks
sudo -u arcblock find /home/arcblock/.local/share/blocklet-server/ -name "*.lock"Create this script to quickly diagnose issues:
#!/bin/bash
# Save as check-health.sh
echo "=== ArcDeploy Health Check ==="
echo
echo "1. Cloud-init Status:"
sudo cloud-init status --long
echo
echo "2. Service Status:"
sudo systemctl status blocklet-server --no-pager -l
echo
echo "3. Port Status:"
sudo netstat -tlnp | grep -E "(2222|8080|8443)"
echo
echo "4. Disk Usage:"
df -h | grep -E "(/$|/home)"
echo
echo "5. Memory Usage:"
free -h
echo
echo "6. Web Interface Test:"
curl -I http://localhost:8080 2>/dev/null | head -1
echo
echo "7. Recent Errors:"
sudo journalctl -u blocklet-server --since "1 hour ago" | grep -i error | tail -5
echo
echo "=== Health Check Complete ==="If you can't resolve the issue using this guide:
# Run health check
bash check-health.sh > health-report.txt
# Collect logs
sudo journalctl -u blocklet-server --since "1 hour ago" > blocklet-logs.txt
sudo tail -100 /var/log/cloud-init-output.log > cloud-init-logs.txtInclude the following information when asking for help:
- Cloud Provider: (Hetzner, AWS, GCP, etc.)
- Server Specs: (CPU, RAM, Storage)
- Operating System:
lsb_release -a - Error Messages: Copy exact error messages
- Steps Taken: What you've already tried
- Log Files: Relevant log excerpts
- GitHub Issues: ArcDeploy Issues
- GitHub Discussions: Community Help
- Documentation: Project Documentation
If all else fails, these steps can help recover your deployment:
# Backup blocklet data
sudo -u arcblock tar -czf blocklet-backup-$(date +%Y%m%d).tar.gz /home/arcblock/.local/share/blocklet-server/
# Download backup to local machine
scp -P 2222 arcblock@YOUR_SERVER_IP:blocklet-backup-*.tar.gz .# Create new server with same cloud-init.yaml
# Wait for installation to complete
# Restore data if neededRemember: Most issues can be resolved by checking logs, verifying configuration, and ensuring proper network connectivity. When in doubt, start with the basics! π§