Platform comparison
This document provides a comprehensive comparison between SHC and other deployment platforms, including Docker Compose, Docker Swarm, Kubernetes, HashiCorp Nomad, Coolify, Netlify, Vercel, Portainer, Cloudron, and CapRover.
Platform Overview
Section titled “Platform Overview”SHC (Self-Hosted Cloud)
Section titled “SHC (Self-Hosted Cloud)”SHC is Docker Compose on steroids — a CLI-first tool for deploying and managing self-hosted applications with multi-tenant support, built-in backups, and one-command app integrations. It targets power users who prefer terminal workflows over web UIs.
Philosophy: CLI-first, no web UI, composable, multi-tenant by design.
Docker Compose
Section titled “Docker Compose”Docker Compose is the standard tool for defining and running multi-container Docker applications using a YAML file. It’s simple but limited to single-host deployments without built-in orchestration features.
Philosophy: Simple container definition, single host, no opinions on deployment patterns.
Docker Swarm
Section titled “Docker Swarm”Docker Swarm is Docker’s native clustering and orchestration solution. It extends Docker Engine with multi-node capabilities, service scaling, and rolling updates.
Philosophy: Docker-native clustering, simpler than Kubernetes, built-in to Docker Engine.
Kubernetes (K8s)
Section titled “Kubernetes (K8s)”Kubernetes is the industry-standard container orchestration platform. It’s extremely powerful but complex, designed for large-scale, production-grade deployments.
Philosophy: Declarative infrastructure, massive ecosystem, enterprise-grade, steep learning curve.
HashiCorp Nomad
Section titled “HashiCorp Nomad”Nomad is a flexible, lightweight orchestrator that can schedule containers, VMs, and standalone applications. It integrates with Consul (service discovery) and Vault (secrets).
Philosophy: Simple single-binary orchestrator, workload-agnostic, HashiCorp ecosystem integration.
Coolify
Section titled “Coolify”Coolify is an open-source, self-hosted PaaS with a web UI. It supports git-push-to-deploy, automatic builds, and one-click database provisioning.
Philosophy: Web-first, Heroku/Vercel alternative, self-hosted.
Netlify
Section titled “Netlify”Netlify is a cloud platform for static sites and serverless functions. It focuses on the Jamstack architecture with git-based deployments.
Philosophy: Static-first, edge functions, managed infrastructure, developer experience.
Vercel
Section titled “Vercel”Vercel is a cloud platform optimized for frontend frameworks (especially Next.js). It provides serverless functions, edge computing, and automatic deployments.
Philosophy: Frontend-focused, serverless, edge-first, managed infrastructure.
Portainer
Section titled “Portainer”Portainer is a lightweight management UI for Docker and Kubernetes. It makes container management accessible without deep CLI knowledge.
Philosophy: Web UI for Docker/K8s, team management, visual container administration.
Cloudron
Section titled “Cloudron”Cloudron is a platform for deploying and managing web applications with automatic updates, backups, and SSL. It has an app store model.
Philosophy: App store model, automatic updates, managed self-hosting, web UI.
CapRover
Section titled “CapRover”CapRover is an open-source PaaS for deploying applications with git push, automatic SSL, and a web dashboard.
Philosophy: Simple PaaS, git push deploy, web UI, open source.
Detailed Feature Comparison
Section titled “Detailed Feature Comparison”Deployment Model
Section titled “Deployment Model”| Platform | Deployment Style | Container Support | VM Support | Bare Metal |
|---|---|---|---|---|
| SHC | CLI commands | Docker Compose | No | No |
| Docker Compose | CLI + YAML | Docker | No | No |
| Docker Swarm | CLI + YAML | Docker | No | No |
| Kubernetes | kubectl + YAML/Helm | Docker/containerd/CRI-O | No | No |
| Nomad | CLI + HCL | Docker/Podman | Yes | Yes |
| Coolify | Web UI + Git | Docker | No | No |
| Netlify | Git push | Serverless only | No | No |
| Vercel | Git push | Serverless only | No | No |
| Portainer | Web UI | Docker/K8s | No | No |
| Cloudron | Web UI | Docker | No | No |
| CapRover | Web UI + Git | Docker | No | No |
Interface and Workflow
Section titled “Interface and Workflow”| Platform | Primary Interface | CLI Support | Web UI | API |
|---|---|---|---|---|
| SHC | CLI (primary) | Full | None | REST |
| Docker Compose | CLI | Full | None | None |
| Docker Swarm | CLI | Full | None | Docker API |
| Kubernetes | CLI (kubectl) | Full | Dashboard (optional) | Full API |
| Nomad | CLI | Full | Optional UI | Full API |
| Coolify | Web UI | Limited | Primary | REST |
| Netlify | Web UI + CLI | Yes | Primary | REST/GraphQL |
| Vercel | Web UI + CLI | Yes | Primary | REST |
| Portainer | Web UI | Limited | Primary | REST |
| Cloudron | Web UI | Limited | Primary | REST |
| CapRover | Web UI + CLI | Limited | Primary | REST |
Multi-Tenancy and Isolation
Section titled “Multi-Tenancy and Isolation”| Platform | Multi-Tenant | Tenant Isolation | Resource Quotas | RBAC |
|---|---|---|---|---|
| SHC | Built-in | Full (tenants/stacks/envs) | Yes | Planned |
| Docker Compose | No | None | No | No |
| Docker Swarm | No | Namespace-like | Limited | No |
| Kubernetes | Namespaces | Namespace-based | Yes | Yes |
| Nomad | Namespaces | Namespace-based | Yes | ACLs |
| Coolify | No | Project-based | No | Team roles |
| Netlify | No | Project-based | Plan limits | Team roles |
| Vercel | No | Project-based | Plan limits | Team roles |
| Portainer | Teams | Environment-based | Yes | Yes |
| Cloudron | No | App-based | No | User roles |
| CapRover | No | App-based | No | No |
Application Management
Section titled “Application Management”| Platform | App Catalog | App Integrations | VApps/Plugins | Version Control |
|---|---|---|---|---|
| SHC | Repositories | Plugs/Sockets | Yes (VApps) | Git repos |
| Docker Compose | None | Manual | No | None |
| Docker Swarm | None | Manual | No | None |
| Kubernetes | Helm/Operators | Service mesh | Operators | Helm charts |
| Nomad | Packs | Consul Connect | No | HCL files |
| Coolify | Templates | Limited | No | Git repos |
| Netlify | None | Plugins | Build plugins | Git repos |
| Vercel | None | Integrations | None | Git repos |
| Portainer | Templates | None | None | Git repos |
| Cloudron | App Store | Built-in | No | Cloudron repos |
| CapRover | One-click apps | None | No | Git repos |
Secrets Management
Section titled “Secrets Management”| Platform | Secrets Storage | External Vault | Encryption | Scoped Secrets |
|---|---|---|---|---|
| SHC | Built-in encrypted | AWS/Azure/GCP/HashiCorp/1Password | Yes | Tenant/Stack/Env |
| Docker Compose | Env files | No | No | No |
| Docker Swarm | Docker secrets | No | At rest + transit | Service-scoped |
| Kubernetes | K8s Secrets | External Secrets Operator | Base64 (etcd encryption) | Namespace |
| Nomad | Vault integration | HashiCorp Vault | Yes | Job/Task |
| Coolify | Environment vars | No | Limited | Project |
| Netlify | Environment vars | No | Yes | Site/Team |
| Vercel | Environment vars | No | Yes | Project/Team |
| Portainer | Docker secrets | No | Docker-level | Environment |
| Cloudron | Built-in | No | Yes | App |
| CapRover | Environment vars | No | Limited | App |
Backup and Restore
Section titled “Backup and Restore”| Platform | Built-in Backups | Backup Scheduling | Point-in-Time | Backup Destinations |
|---|---|---|---|---|
| SHC | Yes (Restic) | Cron-based | Yes | Local/S3/SFTP/REST |
| Docker Compose | No | No | No | None |
| Docker Swarm | No | No | No | None |
| Kubernetes | No (use Velero) | Via add-ons | Via add-ons | S3/GCS/Azure |
| Nomad | No | No | No | None |
| Coolify | Yes | Yes | Limited | S3/Local |
| Netlify | N/A (stateless) | N/A | N/A | N/A |
| Vercel | N/A (stateless) | N/A | N/A | N/A |
| Portainer | Limited | No | No | Local |
| Cloudron | Yes | Yes | Yes | S3/Local |
| CapRover | Limited | Manual | No | Local |
Networking and Ingress
Section titled “Networking and Ingress”| Platform | Reverse Proxy | Auto SSL | DNS Management | Service Mesh |
|---|---|---|---|---|
| SHC | Traefik | Yes (ACME) | Yes (providers) | No |
| Docker Compose | Manual | No | No | No |
| Docker Swarm | Manual/Traefik | Manual | No | No |
| Kubernetes | Ingress controllers | Cert-manager | External-DNS | Istio/Linkerd |
| Nomad | Manual/Traefik | Manual | Consul | Consul Connect |
| Coolify | Traefik | Yes | No | No |
| Netlify | Managed | Yes | Managed | No |
| Vercel | Managed | Yes | Managed | No |
| Portainer | Manual | No | No | No |
| Cloudron | Built-in | Yes | Partial | No |
| CapRover | nginx | Yes | Partial | No |
CI/CD and Source Builds
Section titled “CI/CD and Source Builds”| Platform | Git Push Deploy | Source Builds | Dockerfile Builds | Preview Envs |
|---|---|---|---|---|
| SHC | No (image-based) | No | No | Via environments |
| Docker Compose | No | No | Yes | No |
| Docker Swarm | No | No | Yes | No |
| Kubernetes | Via GitOps tools | Via CI/CD | Yes | Namespace-based |
| Nomad | Via CI/CD | No | Yes | Namespace-based |
| Coolify | Yes | Nixpacks/Dockerfile | Yes | Yes |
| Netlify | Yes | Node/Static | No | Yes |
| Vercel | Yes | Node/Static/Edge | No | Yes |
| Portainer | GitOps | No | Yes | No |
| Cloudron | No | No | No | No |
| CapRover | Yes | Buildpacks | Yes | No |
Scaling and High Availability
Section titled “Scaling and High Availability”| Platform | Horizontal Scaling | Multi-Node | Load Balancing | Rolling Updates |
|---|---|---|---|---|
| SHC | Replicas | Yes (mTLS) | Via Traefik | Yes |
| Docker Compose | No | No | No | No |
| Docker Swarm | Yes | Yes | Built-in | Yes |
| Kubernetes | Yes | Yes | Services/Ingress | Yes |
| Nomad | Yes | Yes | Built-in | Yes |
| Coolify | Limited | Yes | Via Traefik | Limited |
| Netlify | Managed | Managed | Managed | Instant |
| Vercel | Managed | Managed | Managed | Instant |
| Portainer | Via Swarm/K8s | Via Swarm/K8s | Via Swarm/K8s | Via Swarm/K8s |
| Cloudron | No | No | No | Yes |
| CapRover | Basic | No | nginx | Limited |
Observability
Section titled “Observability”| Platform | Logging | Metrics | Tracing | Health Checks |
|---|---|---|---|---|
| SHC | Built-in + OTEL | Built-in + OTEL | Built-in + OTEL | Yes |
| Docker Compose | Docker logs | No | No | Container-level |
| Docker Swarm | Docker logs | No | No | Service-level |
| Kubernetes | Add-ons | Prometheus | Jaeger/Zipkin | Probes |
| Nomad | Add-ons | Add-ons | Add-ons | Checks |
| Coolify | Container logs | Basic | No | Container-level |
| Netlify | Yes | Analytics | No | N/A |
| Vercel | Yes | Analytics | No | N/A |
| Portainer | Container logs | Basic | No | Container-level |
| Cloudron | Yes | Basic | No | App-level |
| CapRover | Container logs | No | No | Container-level |
Licensing and Cost
Section titled “Licensing and Cost”| Platform | License | Self-Hosted | Cloud Offering | Free Tier |
|---|---|---|---|---|
| SHC | Proprietary | Yes (only) | No | Yes (free tier) |
| Docker Compose | Apache 2.0 | Yes | Docker Hub | Yes |
| Docker Swarm | Apache 2.0 | Yes | No | Yes |
| Kubernetes | Apache 2.0 | Yes | GKE/EKS/AKS | Yes (OSS) |
| Nomad | MPL 2.0 / Enterprise | Yes | HCP | Yes (OSS) |
| Coolify | Apache 2.0 | Yes | Coolify Cloud | Yes (OSS) |
| Netlify | Proprietary | No | Netlify.com | Yes |
| Vercel | Proprietary | No | Vercel.com | Yes |
| Portainer | Zlib / Business | Yes | Portainer.io | Yes (CE) |
| Cloudron | Proprietary | Yes | No | 2 apps free |
| CapRover | Apache 2.0 | Yes | No | Yes (OSS) |
Comprehensive Feature Matrix
Section titled “Comprehensive Feature Matrix”| Feature | SHC | Compose | Swarm | K8s | Nomad | Coolify | Netlify | Vercel | Portainer | Cloudron | CapRover |
|---|---|---|---|---|---|---|---|---|---|---|---|
| CLI-first | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ⚠️ | ⚠️ | ❌ | ❌ | ❌ |
| Web UI | ❌ | ❌ | ❌ | ⚠️ | ⚠️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Multi-tenant | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ |
| Multi-node | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | N/A | N/A | ✅ | ❌ | ❌ |
| App catalog | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| App integrations (plugs/sockets) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| VApps/plugins | ✅ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ |
| Built-in backups | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | N/A | N/A | ⚠️ | ✅ | ⚠️ |
| Backup scheduling | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | N/A | N/A | ❌ | ✅ | ❌ |
| Secrets management | ✅ | ❌ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ | ✅ | ✅ | ⚠️ |
| External vault providers | ✅ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Scoped secrets | ✅ | ❌ | ⚠️ | ✅ | ✅ | ❌ | ⚠️ | ⚠️ | ⚠️ | ❌ | ❌ |
| Auto SSL (ACME) | ✅ | ❌ | ❌ | ⚠️ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
| DNS provider integration | ✅ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ✅ | ✅ | ❌ | ⚠️ | ⚠️ |
| Reverse proxy | ✅ | ❌ | ❌ | ✅ | ⚠️ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
| Git push deploy | ❌ | ❌ | ❌ | ⚠️ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | ❌ | ✅ |
| Source builds | ❌ | ❌ | ❌ | ⚠️ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| Preview environments | ⚠️ | ❌ | ❌ | ⚠️ | ⚠️ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Horizontal scaling | ✅ | ❌ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ | ❌ | ⚠️ |
| Rolling updates | ✅ | ❌ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ | ✅ | ⚠️ |
| Health monitoring | ✅ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
| OTEL export | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Resource quotas | ✅ | ❌ | ⚠️ | ✅ | ✅ | ❌ | ⚠️ | ⚠️ | ✅ | ❌ | ❌ |
| Lifecycle hooks | ✅ | ❌ | ❌ | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ | ❌ | ⚠️ | ⚠️ |
| Cron scheduling | ✅ | ❌ | ❌ | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ | ❌ | ✅ | ⚠️ |
| Audit logging | ✅ | ❌ | ❌ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | ❌ |
| Notifications/webhooks | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ⚠️ |
| Self-hosted only | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Open source | ❌ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ❌ | ❌ | ⚠️ | ❌ | ✅ |
| Typed variables | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Clone/move stacks | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Rollback | ✅ | ❌ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ⚠️ | ✅ | ⚠️ |
Legend:
- ✅ = Full support
- ⚠️ = Partial/limited support or requires add-ons
- ❌ = Not supported
- N/A = Not applicable
When to Choose Each Platform
Section titled “When to Choose Each Platform”Choose SHC if you:
Section titled “Choose SHC if you:”- Prefer CLI over web UIs
- Need multi-tenant isolation
- Want built-in backups with scheduling
- Need app integrations (plugs/sockets)
- Want typed, validated configuration
- Self-host everything
Choose Docker Compose if you:
Section titled “Choose Docker Compose if you:”- Need simple single-host deployments
- Already know Docker
- Don’t need orchestration features
- Want minimal overhead
Choose Docker Swarm if you:
Section titled “Choose Docker Swarm if you:”- Need simple multi-node orchestration
- Already use Docker
- Want built-in secrets and networking
- Don’t need Kubernetes complexity
Choose Kubernetes if you:
Section titled “Choose Kubernetes if you:”- Need enterprise-grade orchestration
- Have a large team with K8s expertise
- Need the massive K8s ecosystem
- Can afford the operational complexity
Choose Nomad if you:
Section titled “Choose Nomad if you:”- Want simpler orchestration than K8s
- Need to run non-container workloads
- Use other HashiCorp tools
- Value operational simplicity
Choose Coolify if you:
Section titled “Choose Coolify if you:”- Prefer web UI
- Want git-push-to-deploy with builds
- Need a Heroku/Vercel alternative
- Don’t need multi-tenancy
Choose Netlify/Vercel if you:
Section titled “Choose Netlify/Vercel if you:”- Build static sites or Jamstack apps
- Want managed infrastructure
- Need edge functions
- Don’t need self-hosting
Choose Portainer if you:
Section titled “Choose Portainer if you:”- Want a web UI for Docker/K8s
- Need team management
- Already have infrastructure
- Want visual container management
Choose Cloudron if you:
Section titled “Choose Cloudron if you:”- Want an app store experience
- Need automatic updates
- Prefer managed self-hosting
- Don’t need multi-tenancy
Choose CapRover if you:
Section titled “Choose CapRover if you:”- Want a simple, free PaaS
- Need git-push deployment
- Want automatic SSL
- Have basic requirements
See Also
Section titled “See Also”- Coolify Comparison (detailed comparison)
- SHC Overview
- Getting Started