Claude-skill-registry enter-services
Deploy and manage enter.pollinations.ai text/image services on EC2 and Cloudflare Workers. Requires: SSH keys, sops, wrangler.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/enter-services" ~/.claude/skills/majiayu000-claude-skill-registry-enter-services && rm -rf "$T"
manifest:
skills/data/enter-services/SKILL.mdsource content
Requirements
Before using this skill, ensure you have:
- SSH keys: Configured via GitHub secrets (see workflow)
- sops:
(for decrypting secrets)brew install sops - Wrangler:
npm install -g wrangler - Node.js:
brew install node
Must run from the
pollinations repo root.
Architecture Overview
| Environment | Gateway (Cloudflare Worker) | Text/Image Services (EC2) |
|---|---|---|
| Production | | (ports 16384/16385) |
| Staging | | (ports 16384/16385) |
SSH Configuration
Add to
~/.ssh/config:
# Production instance Host enter-services HostName 3.80.56.235 User ubuntu IdentityFile ~/.ssh/enter-services-shared-key # Staging instance Host enter-services-staging HostName 44.222.254.250 User ubuntu IdentityFile ~/.ssh/enter-services-staging-key
Quick Commands
Production
# Service status ssh enter-services "sudo systemctl status text-pollinations.service image-pollinations.service" # View logs (real-time) ssh enter-services "sudo journalctl -u text-pollinations.service -f" ssh enter-services "sudo journalctl -u image-pollinations.service -f" # Restart services ssh enter-services "sudo systemctl restart text-pollinations.service image-pollinations.service" # Recent errors ssh enter-services "sudo journalctl -u text-pollinations.service -p err -n 20"
Staging
# Service status ssh enter-services-staging "sudo systemctl status text-pollinations.service image-pollinations.service" # View logs ssh enter-services-staging "sudo journalctl -u text-pollinations.service -f" # Restart ssh enter-services-staging "sudo systemctl restart text-pollinations.service image-pollinations.service"
Deploy to Production
The GitHub workflow handles production deployments automatically on push to
production branch.
Manual deployment:
# 1. SSH into production ssh enter-services # 2. Pull and restart cd /home/ubuntu/pollinations git pull origin production cd text.pollinations.ai && npm install cd ../image.pollinations.ai && npm install sudo systemctl restart text-pollinations.service image-pollinations.service
Deploy to Staging
Full Setup (New Instance)
# 1. SSH into the new instance ssh enter-services-staging # 2. Install build tools (if needed) sudo apt-get update && sudo apt-get install -y build-essential # 3. Clone repo git clone https://github.com/pollinations/pollinations.git cd pollinations # 4. Run setup script bash enter.pollinations.ai/scripts/setup-services.sh /home/ubuntu/pollinations # 5. From your LOCAL machine - decrypt and copy env files cd /path/to/pollinations sops --output-type dotenv -d text.pollinations.ai/secrets/env.json > /tmp/text.env sops --output-type dotenv -d image.pollinations.ai/secrets/env.json > /tmp/image.env scp /tmp/text.env enter-services-staging:/home/ubuntu/pollinations/text.pollinations.ai/.env scp /tmp/image.env enter-services-staging:/home/ubuntu/pollinations/image.pollinations.ai/.env rm /tmp/text.env /tmp/image.env # 6. Restart services ssh enter-services-staging "sudo systemctl restart text-pollinations.service image-pollinations.service"
Update Staging
ssh enter-services-staging "cd /home/ubuntu/pollinations && git pull && cd text.pollinations.ai && npm install && cd ../image.pollinations.ai && npm install && sudo systemctl restart text-pollinations.service image-pollinations.service"
Deploy Cloudflare Worker (enter.pollinations.ai)
cd enter.pollinations.ai # Production npm run deploy:production # Staging npm run deploy:staging
Service Locations (on EC2)
- Service definitions:
/etc/systemd/system/ - Text service:
/home/ubuntu/pollinations/text.pollinations.ai/ - Image service:
/home/ubuntu/pollinations/image.pollinations.ai/
Wrangler Configuration
The
wrangler.toml contains environment configs:
| Environment | Route | Service URLs |
|---|---|---|
| | Production EC2 |
| | Staging EC2 |
| | Local dev |
Troubleshooting
Services won't start
# Check logs ssh enter-services-staging "sudo journalctl -u text-pollinations.service -n 50" # Check if .env exists ssh enter-services-staging "ls -la /home/ubuntu/pollinations/text.pollinations.ai/.env" # Check node/npm ssh enter-services-staging "node -v && npm -v"
Missing dependencies
ssh enter-services-staging "cd /home/ubuntu/pollinations/text.pollinations.ai && npm install"
Need build tools
ssh enter-services-staging "sudo apt-get install -y build-essential"
Notes
- Production deploys on push to
branchproduction - Staging deploys on push to
branchstaging - Always test on staging before merging to production
- The Cloudflare Worker (enter.pollinations.ai) routes to EC2 services
- Text service: port 16385, Image service: port 16384