144 lines
5.5 KiB
Markdown
144 lines
5.5 KiB
Markdown
# Quick Comparison Reference
|
|
|
|
Quick reference for alternatives we researched. See [ALTERNATIVES_CONSIDERED.md](./ALTERNATIVES_CONSIDERED.md) for detailed analysis.
|
|
|
|
---
|
|
|
|
## Git Server: Gitea vs Forgejo
|
|
|
|
| Factor | Gitea ✅ | Forgejo |
|
|
|--------|---------|---------|
|
|
| **CapRover Support** | ✅ One-click app | ❌ Manual setup required |
|
|
| **Setup Time** | ⚡ 5 minutes | ⏱️ 15-30 minutes |
|
|
| **Security Practices** | ⚠️ Adequate (corporate) | ✅ Excellent (community) |
|
|
| **Development Activity** | 153 contributors, 1.2K commits | 232 contributors, 3K commits |
|
|
| **Governance** | Corporate (Gitea Limited) | Non-profit (Codeberg e.V.) |
|
|
| **Community Size** | Larger | Smaller |
|
|
| **Version** | 1.21.1 | 10.0 (Jan 2025) |
|
|
| **For Personal Use** | ✅ Perfect | ⚠️ Overkill |
|
|
|
|
**Winner for our use case:** Gitea (easier setup via CapRover)
|
|
|
|
**When to reconsider Forgejo:**
|
|
- Hosting sensitive code
|
|
- Security transparency matters
|
|
- Don't mind manual Docker setup
|
|
|
|
---
|
|
|
|
## Container Management Platform
|
|
|
|
| Feature | CapRover ✅ | Portainer | Dockge | Coolify |
|
|
|---------|------------|-----------|---------|---------|
|
|
| **One-click apps** | ✅ 200+ | ⚠️ Limited | ❌ None | ✅ Some |
|
|
| **Built-in reverse proxy** | ✅ Yes | ❌ No | ❌ No | ✅ Yes |
|
|
| **Automatic SSL** | ✅ Yes | ❌ No | ❌ No | ✅ Yes |
|
|
| **Git deployments** | ✅ Yes | ❌ No | ❌ No | ✅ Yes |
|
|
| **Granular control** | ⚠️ Limited | ✅ Full | ✅ Good | ⚠️ Limited |
|
|
| **Learning curve** | 🟢 Easy | 🟡 Medium | 🟢 Easy | 🟡 Medium |
|
|
| **Resource usage** | 🟢 ~300MB | 🟡 ~100MB | 🟢 ~100MB | 🔴 ~500MB+ |
|
|
| **Maturity** | 🟢 Stable | 🟢 Very stable | 🟡 Newer | 🟡 Active dev |
|
|
| **TrueNAS-like experience** | ✅ Yes | ❌ No | ❌ No | ✅ Yes |
|
|
|
|
**Winner:** CapRover (best for "app store" experience)
|
|
|
|
---
|
|
|
|
## Container Runtime: Docker vs Podman
|
|
|
|
| Factor | Docker ✅ | Podman |
|
|
|--------|----------|--------|
|
|
| **CapRover Compatible** | ✅ Yes (required) | ❌ No (missing Swarm) |
|
|
| **Security Model** | Root daemon (can use rootless mode) | Rootless by default |
|
|
| **GUI Support** | ✅ Excellent (CapRover, Portainer, etc.) | ⚠️ Limited |
|
|
| **Ecosystem** | 🟢 Massive | 🟡 Growing |
|
|
| **For This Project** | ✅ Required | ❌ Won't work |
|
|
|
|
**Winner:** Docker (CapRover requires Docker Swarm)
|
|
|
|
**Note:** Podman explicitly won't implement Swarm. CapRover = Docker only.
|
|
|
|
---
|
|
|
|
## Reverse Proxy
|
|
|
|
| Feature | CapRover Built-in ✅ | Traefik | Caddy | Nginx Proxy Manager |
|
|
|---------|---------------------|---------|-------|-------------------|
|
|
| **Integration** | ✅ Built-in | ❌ Separate | ❌ Separate | ❌ Separate |
|
|
| **Auto SSL** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes (via GUI) |
|
|
| **Auto Config** | ✅ Per app deploy | ⚠️ Via labels | ⚠️ Manual | ⚠️ GUI but manual |
|
|
| **Learning Curve** | 🟢 None (automatic) | 🔴 Steep | 🟡 Medium | 🟢 Easy (GUI) |
|
|
| **Setup Time** | ⚡ 0 min (included) | ⏱️ 30+ min | ⏱️ 15+ min | ⏱️ 20+ min |
|
|
|
|
**Winner:** CapRover's built-in proxy (zero setup, automatic)
|
|
|
|
---
|
|
|
|
## Domain Strategy
|
|
|
|
| Option | Cloudflare ✅ | DuckDNS | Tailscale |
|
|
|--------|--------------|---------|-----------|
|
|
| **Cost** | Free (user already has) | Free | Free (personal) |
|
|
| **Domain Type** | Custom domain | yourname.duckdns.org | Private network IPs |
|
|
| **Professional** | ✅ Yes | ⚠️ Subdomain only | ❌ Not public |
|
|
| **Public Access** | ✅ Yes | ✅ Yes | ❌ VPN only |
|
|
| **Setup** | Simple DNS records | Very simple | Install on all devices |
|
|
|
|
**Winner:** Cloudflare (user already has domain)
|
|
|
|
---
|
|
|
|
## Architecture Patterns
|
|
|
|
| Pattern | Single VM ✅ | Multi-VM | Kubernetes (K3s) |
|
|
|---------|-------------|----------|-----------------|
|
|
| **Complexity** | 🟢 Simple | 🟡 Medium | 🔴 High |
|
|
| **Setup Time** | ⚡ 3-4 hours | ⏱️ 6-8 hours | ⏱️ Days |
|
|
| **Maintenance** | 🟢 Easy | 🟡 Medium | 🔴 Complex |
|
|
| **Resource Overhead** | 🟢 Low (~1GB) | 🟡 Medium | 🔴 High (>2GB) |
|
|
| **For Personal Use** | ✅ Perfect | ⚠️ Overkill | ❌ Way overkill |
|
|
|
|
**Winner:** Single ARM VM (simple, sufficient, efficient)
|
|
|
|
---
|
|
|
|
## Final Stack Summary
|
|
|
|
Our chosen stack:
|
|
|
|
```
|
|
Infrastructure: Oracle Cloud Free Tier (ARM VM: 4 cores, 24GB RAM)
|
|
OS: Ubuntu 22.04 LTS ARM64
|
|
Runtime: Docker Engine
|
|
Platform: CapRover (PaaS with one-click apps)
|
|
Git Server: Gitea (one-click deploy)
|
|
Code Editor: code-server (one-click deploy)
|
|
AI Assistant: Claude Code (VS Code extension)
|
|
Reverse Proxy: CapRover's built-in Nginx
|
|
SSL: Let's Encrypt (automatic via CapRover)
|
|
DNS: Cloudflare (existing domain)
|
|
```
|
|
|
|
**Total setup time:** ~3-4 hours
|
|
**Monthly cost:** $0
|
|
**Resource usage:** ~1GB RAM, ~10GB storage (23GB RAM and 190GB storage remaining)
|
|
|
|
---
|
|
|
|
## Why This Stack Wins
|
|
|
|
1. **Fastest time to value:** One-click deployments vs manual Docker setup
|
|
2. **Lowest cognitive load:** CapRover handles proxy, SSL, routing automatically
|
|
3. **Best UX:** TrueNAS-like app store experience (what user wanted)
|
|
4. **iPad optimized:** code-server has proven PWA support
|
|
5. **Zero cost:** Stays within Oracle Free Tier
|
|
6. **Adequate security:** Good enough for personal knowledge repository
|
|
7. **Easy maintenance:** CapRover handles updates, SSL renewals
|
|
8. **Room to grow:** 23GB RAM for additional apps via one-click marketplace
|
|
|
|
**Result:** iPad development environment with Claude Code in ~3-4 hours instead of days/weeks with alternatives.
|
|
|
|
---
|
|
|
|
See [ALTERNATIVES_CONSIDERED.md](./ALTERNATIVES_CONSIDERED.md) for detailed analysis of each alternative.
|