Universal Cloud-Init Deployment for ArcBlock Blocklet Server
Deploy a production-ready ArcBlock Blocklet Server to any cloud provider in under 10 minutes using cloud-init. Simple, secure, and reliable.
# 1. Clone repository
git clone https://github.com/Pocklabs/ArcDeploy.git
cd ArcDeploy
# 2. Add your SSH public key to cloud-init.yaml
nano cloud-init.yaml
# 3. Deploy to your cloud provider using the cloud-init.yaml file- π Security-First: SSH key authentication, custom ports, firewall protection
- β‘ High Performance: Native installation without container overhead
- π Universal: Works with any cloud provider that supports cloud-init
- π οΈ Production Ready: Auto-monitoring, SSL support, service integration
- π¦ Zero Dependencies: Single cloud-init file deployment
- π Enhanced Deployment: Advanced scripts with retry logic and validation
- π‘οΈ Security Hardening: Fail2ban, modern SSH ciphers, system optimization
- Minimum: 4 vCPUs, 8GB RAM, 80GB SSD
- Recommended: 8 vCPUs, 16GB RAM, 160GB SSD
- OS: Ubuntu 22.04 LTS (x86_64)
- 2222: SSH access
- 8080: HTTP web interface
- 8443: HTTPS web interface
For the fastest and easiest deployment, use our automated scripts:
Quick deployment with basic features:
# 1. Validate your setup
./check-setup.sh
# 2. Quick deploy with optimal defaults
export HETZNER_TOKEN="your-hetzner-cloud-api-token"
./quick-deploy.sh
# 3. Access your server (after 5-10 minutes)
ssh -p 2222 arcblock@YOUR_SERVER_IP
open http://YOUR_SERVER_IP:8080Features:
- β Automatic server creation and configuration
- β Built-in validation and error checking
- β Real-time deployment monitoring
- β SSH connectivity testing
- β One-command cleanup
Advanced deployment with improved security and monitoring:
# 1. Use enhanced script with validation
export HETZNER_TOKEN="your-hetzner-cloud-api-token"
./scripts/deploy-test-server-enhanced.sh --verbose my-server
# 2. Preview deployment (dry-run mode)
./scripts/deploy-test-server-enhanced.sh --dry-run my-server large ash
# 3. Manage servers
./scripts/deploy-test-server-enhanced.sh --list
./scripts/deploy-test-server-enhanced.sh --status my-server
./scripts/deploy-test-server-enhanced.sh --delete my-serverEnhanced Features:
- β API retry logic with rate limit handling
- β Real-time server type validation
- β Cloud-init size and syntax validation
- β Advanced security hardening
- β Automated health monitoring
- β Dry-run mode for testing
- β Verbose logging for troubleshooting
See DEPLOYMENT.md for detailed automation documentation and docs/enhanced-features.md for enhanced feature documentation.
If you prefer manual deployment or need to use a different cloud provider:
Generate an SSH key pair if you don't have one:
ssh-keygen -t ed25519 -C "your-email@example.com"
cat ~/.ssh/id_ed25519.pubEdit the cloud-init.yaml file and replace the SSH key placeholder with your actual public key:
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIYourActualPublicKeyHere your-email@example.comUse your cloud provider's interface to create a new server with cloud-init:
- Create new server (CX31 or higher)
- Select Ubuntu 22.04 LTS
- Paste
cloud-init.yamlcontent in "Cloud config" section - Create server
- Launch new EC2 instance (t3.large or higher)
- Select Ubuntu 22.04 LTS AMI
- In "Advanced Details" β "User data", paste
cloud-init.yamlcontent - Configure security groups for ports 2222, 8080, 8443
- Create new Compute Engine instance (e2-standard-4 or higher)
- Select Ubuntu 22.04 LTS
- In "Management" β "Automation", paste
cloud-init.yamlcontent - Configure firewall rules for required ports
- Create new Droplet (4GB or higher)
- Select Ubuntu 22.04 LTS
- Check "User data" and paste
cloud-init.yamlcontent - Configure firewall for required ports
Wait 5-10 minutes for installation to complete, then access your server:
# SSH access
ssh -p 2222 arcblock@YOUR_SERVER_IP
# Web interface
open http://YOUR_SERVER_IP:8080
# Admin panel
open http://YOUR_SERVER_IP:8080/.well-known/server/admin/# Check deployment status
ssh -p 2222 arcblock@YOUR_SERVER_IP
sudo cloud-init status --long
sudo systemctl status blocklet-server- Access Admin Panel: Visit
http://YOUR_SERVER_IP:8080/.well-known/server/admin/ - Complete Setup Wizard: Follow the on-screen instructions
- Configure SSL (optional): Set up Let's Encrypt certificates
- Install Blocklets: Browse and install your desired blocklets
This project includes powerful automation scripts for easy testing and deployment:
# Validate setup before deployment
./check-setup.sh
# Deploy with sensible defaults
./quick-deploy.sh
# Deploy different configurations
./quick-deploy.sh small # Minimal server (cx11)
./quick-deploy.sh large # High-performance (cx41)
./quick-deploy.sh us # Deploy to US location
# Manage test servers
./quick-deploy.sh list # List all test servers
./quick-deploy.sh delete my-test # Clean up when done# Custom deployment with all options
./deploy-test-server.sh my-server cx31 fsn1
# Advanced server management
./deploy-test-server.sh --delete my-serverFor complete automation documentation, see DEPLOYMENT.md
- SSH Hardening: Key-only authentication on port 2222
- Firewall Protection: UFW configured with minimal attack surface
- Intrusion Prevention: Fail2ban monitoring and blocking
- Automatic Updates: Security patches applied automatically
- Process Isolation: Services run as non-root user
- Automated Deployment - Quick deployment scripts and automation
- Quick Start Guide - Streamlined deployment
- Troubleshooting - Common issues and solutions
For advanced users, developers, and contributors, comprehensive development tools are available in the ArcDeploy-Dev repository:
- Testing Framework: Comprehensive test suites with 100+ scenarios
- Debug Tools: Advanced debugging and diagnostic utilities
- Failure Injection: Resilience testing with 31 failure scenarios
- Performance Benchmarking: System performance analysis tools
- Mock Infrastructure: Development and testing environments
Can't connect via SSH:
# Check if port 2222 is open
telnet YOUR_SERVER_IP 2222
# Verify SSH key is correct
ssh -p 2222 -v arcblock@YOUR_SERVER_IPBlocklet Server not responding:
# Check service status
ssh -p 2222 arcblock@YOUR_SERVER_IP
sudo systemctl status blocklet-server
sudo journalctl -u blocklet-server -fCloud-init failed:
# Check cloud-init logs
sudo tail -f /var/log/cloud-init-output.log
sudo cloud-init status --longWe welcome contributions! Please see our contribution guidelines.
For development-related contributions, please use the ArcDeploy-Dev repository.
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Project Documentation
Deploy with confidence. Scale with ease. π