Claude-skill-registry coolify-deployment
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/coolify-deployment" ~/.claude/skills/majiayu000-claude-skill-registry-coolify-deployment && rm -rf "$T"
manifest:
skills/data/coolify-deployment/SKILL.mdsource content
Coolify Self-Hosted PaaS Deployment
Quick Start
Install Coolify on VM
ssh -i <key-file> <user>@<instance-ip> curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash # Access: http://<instance-ip>:8000
Deploy Application
- Access Coolify UI at
http://<instance-ip>:8000 - Create admin account (first visitor gets admin)
- Add GitHub source → Create project → Deploy from repo
- Access app at
http://<container-id>.<instance-ip>.sslip.io
Server Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 2GB | 4GB |
| Storage | 30GB | 50GB |
| OS | Ubuntu 20.04/22.04/24.04 LTS | Ubuntu 24.04 LTS |
Required Ports:
- TCP 22 (SSH)
- TCP 80 (HTTP/Let's Encrypt)
- TCP 443 (HTTPS)
- TCP 8000 (Coolify UI)
Cloud VM Deployment
1. Provision Infrastructure
# Create security group with required ports # - TCP 22 (SSH) # - TCP 80 (HTTP) # - TCP 443 (HTTPS) # - TCP 8000 (Coolify UI) # Launch instance with: # - 2+ vCPU, 2GB+ RAM # - 30GB+ root volume # - Ubuntu LTS # - Public IP # - SSH key pair
2. Install Coolify
# Set key permissions chmod 400 /path/to/key.pem # Connect and install ssh -o StrictHostKeyChecking=no -i /path/to/key.pem <user>@<instance-ip> curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
3. Initial Setup
- Open browser:
http://<instance-ip>:8000 - IMPORTANT: Create admin account immediately
- Complete setup wizard
4. Verify Installation
ssh -i /path/to/key.pem <user>@<instance-ip> \ "sudo docker ps --format 'table {{.Names}}\t{{.Status}}' | grep coolify"
Application Deployment
Supported Build Methods
| Method | Use Case |
|---|---|
| Dockerfile | Custom container builds |
| Nixpacks | Auto-detected language builds |
| Docker Compose | Multi-container apps |
| Static | HTML/JS/CSS sites |
Deploy from GitHub
- Add Source: Sources → Add New → GitHub App
- Create Project: Projects → Add New Project
- Add Resource: Add New Resource → Public/Private Repository
- Configure:
- Repository URL
- Branch
- Build pack (Dockerfile/Nixpacks)
- Port to expose
- Deploy: Click Deploy button
Sample Dockerfile Application
app/ ├── main.py # Application code ├── requirements.txt # Dependencies └── Dockerfile # Container definition
Dockerfile:
FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8080 CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
Domain Configuration
Auto-generated (sslip.io):
- Format:
<container-id>.<public-ip>.sslip.io - Works immediately, no DNS required
Custom Domain:
- Add DNS A record → EC2 public IP
- Update domain in Coolify resource settings
- Enable SSL (Let's Encrypt auto-configured)
Verification
Check Container Status
ssh -i /path/to/key.pem <user>@<instance-ip> \ "sudo docker ps --format 'table {{.Names}}\t{{.Ports}}\t{{.Status}}'"
Test Application
# Get app URL from Coolify UI APP_URL="http://<container-id>.<public-ip>.sslip.io" curl -s $APP_URL/ curl -s $APP_URL/health
Check Logs
# Application logs ssh -i /path/to/key.pem <user>@<instance-ip> \ "sudo docker logs <container-name> --tail 50" # Coolify logs ssh -i /path/to/key.pem <user>@<instance-ip> \ "sudo docker logs coolify --tail 50"
Configuration Reference
Coolify Containers
| Container | Purpose | Port |
|---|---|---|
| coolify | Main application | 8000 |
| coolify-proxy | Traefik reverse proxy | 80, 443 |
| coolify-db | PostgreSQL database | 5432 |
| coolify-redis | Redis cache | 6379 |
| coolify-realtime | WebSocket server | 6001-6002 |
Important Paths
| Path | Purpose |
|---|---|
| Coolify configuration |
| Traefik dynamic config |
| Application data |
| Database volumes |
Environment Variables (Installation)
| Variable | Purpose | Example |
|---|---|---|
| Admin username | |
| Admin email | |
| Admin password | |
| Auto-update toggle | / |
Production Checklist
- Create admin account immediately after install
- Backup
to secure location/data/coolify/source/.env - Configure firewall/security group rules
- Set up custom domain with SSL
- Restrict SSH access to specific IPs
- Configure monitoring/alerts
- Test deployment rollback procedure
- Document access credentials securely
Troubleshooting
| Issue | Solution |
|---|---|
| 404 on public IP | Access via sslip.io domain, not raw IP |
| Cannot access Coolify UI | Check security group allows port 8000 |
| Deployment fails | Check Coolify logs and Dockerfile syntax |
| SSL certificate fails | Ensure port 80 open, DNS configured |
| Container not starting | Check container logs for errors |
| Out of disk space | Prune Docker: |
| Coolify unresponsive | Restart: |
Update Coolify
ssh -i /path/to/key.pem <user>@<instance-ip> \ "cd /data/coolify/source && sudo bash upgrade.sh"
Cleanup
# Stop all containers ssh -i /path/to/key.pem <user>@<instance-ip> \ "cd /data/coolify/source && sudo docker compose down" # Remove Coolify data (destructive) ssh -i /path/to/key.pem <user>@<instance-ip> \ "sudo rm -rf /data/coolify" # Terminate cloud instance