mirror of
https://github.com/altstackHQ/altstack-data.git
synced 2026-04-18 19:53:18 +02:00
Initialize public data and docs repository
This commit is contained in:
21
docs/app/quick-start/_meta.ts
Normal file
21
docs/app/quick-start/_meta.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { MetaRecord } from 'nextra'
|
||||
|
||||
const meta: MetaRecord = {
|
||||
'what-is-self-hosting': {
|
||||
title: 'What is Self-Hosting?',
|
||||
},
|
||||
'first-deployment': {
|
||||
title: 'Your First Deployment',
|
||||
},
|
||||
'choosing-a-server': {
|
||||
title: 'Choosing a Server',
|
||||
},
|
||||
'reverse-proxy': {
|
||||
title: 'Setting Up a Reverse Proxy',
|
||||
},
|
||||
'starter-kit': {
|
||||
title: 'The Starter Kit',
|
||||
},
|
||||
}
|
||||
|
||||
export default meta
|
||||
113
docs/app/quick-start/choosing-a-server/page.mdx
Normal file
113
docs/app/quick-start/choosing-a-server/page.mdx
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Choosing a Server
|
||||
description: "A no-nonsense comparison of VPS providers for self-hosting. Hetzner, DigitalOcean, Linode, and more — which one to pick and why."
|
||||
---
|
||||
|
||||
# Choosing a Server
|
||||
|
||||
You need a place to run your tools. That place is a **VPS** (Virtual Private Server) — basically a computer in a data center that you rent by the month.
|
||||
|
||||
> ⚠️ **Heads Up:** You *can* self-host on a Raspberry Pi or old laptop at home. But a VPS gives you a static IP, proper uptime, and you don't need to worry about your ISP blocking ports. Start with a VPS. Go homelab later.
|
||||
|
||||
## The Short Answer
|
||||
|
||||
**Just get a Hetzner CX22.** €4.50/mo, 2 vCPUs, 4GB RAM, 40GB SSD, 20TB traffic. It'll run 5–10 Docker containers comfortably.
|
||||
|
||||
If Hetzner isn't available in your region, get a [DigitalOcean $6/mo Droplet](https://m.do.co/c/2ed27757a361).
|
||||
|
||||
That's the recommendation. Below is the reasoning.
|
||||
|
||||
## The Comparison
|
||||
|
||||
| Provider | Cheapest Plan | CPU | RAM | Storage | Best For |
|
||||
|---|---|---|---|---|---|
|
||||
| **Hetzner** | €3.79/mo | 2 shared | 4 GB | 40 GB | Best value overall, EU & US |
|
||||
| [**DigitalOcean**](https://m.do.co/c/2ed27757a361) | $6/mo | 1 vCPU | 1 GB | 25 GB | Beginners, great docs |
|
||||
| **Linode (Akamai)** | $5/mo | 1 vCPU | 1 GB | 25 GB | Solid alternative to DO |
|
||||
| **Vultr** | $5/mo | 1 vCPU | 1 GB | 25 GB | Global edge locations |
|
||||
| **OVH** | €3.50/mo | 1 vCPU | 2 GB | 20 GB | Budget EU hosting |
|
||||
| **Oracle Cloud** | Free tier | 4 ARM | 24 GB | 200 GB | Can't beat free (if you qualify) |
|
||||
|
||||
## What Specs Do You Need?
|
||||
|
||||
Here's a rough guide based on what you want to run:
|
||||
|
||||
| Use Case | RAM | CPU | Storage | Monthly Cost |
|
||||
|---|---|---|---|---|
|
||||
| 1–3 lightweight tools (Plausible, Uptime Kuma, Listmonk) | 2 GB | 1 vCPU | 20 GB | ~$5 |
|
||||
| An entire Bootstrapper Stack (Supabase, Coolify, Plausible, etc.) | 4 GB | 2 vCPU | 40 GB | ~$6 |
|
||||
| AI models (Ollama, Stable Diffusion) | 8+ GB | 4+ vCPU | 80+ GB | ~$15+ |
|
||||
| "I self-host everything" | 16 GB | 4 vCPU | 160 GB | ~$25 |
|
||||
|
||||
> 🔥 **Pro Tip:** Start small. You can upgrade a VPS in about 30 seconds. It's way harder to downgrade. Get a 4GB plan and upgrade when you actually feel it.
|
||||
|
||||
Once you have a VPS, the setup is the same everywhere. Don't just install Docker and leave it open; follow these steps to secure your investment.
|
||||
|
||||
### 1. Hardening SSH (Don't skip this)
|
||||
Root password login is a magnet for brute-force attacks. Use SSH keys.
|
||||
|
||||
```bash
|
||||
# On your local machine:
|
||||
ssh-keygen -t ed25519 -C "your_email@example.com"
|
||||
ssh-copy-id root@your-server-ip
|
||||
|
||||
# Now SSH back into the server:
|
||||
ssh root@your-server-ip
|
||||
```
|
||||
|
||||
Disable password login:
|
||||
```bash
|
||||
nano /etc/ssh/sshd_config
|
||||
# Find and set: PasswordAuthentication no
|
||||
# Restart SSH: systemctl restart ssh
|
||||
```
|
||||
|
||||
### 2. Configure the Firewall (UFW)
|
||||
Only open the ports you actually need.
|
||||
|
||||
```bash
|
||||
# Allow SSH, HTTP, and HTTPS
|
||||
ufw allow ssh
|
||||
ufw allow 80/tcp
|
||||
ufw allow 443/tcp
|
||||
|
||||
# Enable firewall
|
||||
ufw enable
|
||||
```
|
||||
|
||||
### 3. Install Docker & Compose
|
||||
The easiest way is the official convenience script.
|
||||
|
||||
```bash
|
||||
# Update the system
|
||||
apt update && apt upgrade -y
|
||||
|
||||
# Install Docker
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
|
||||
# Install Docker Compose plugin
|
||||
apt install docker-compose-plugin -y
|
||||
|
||||
# Verify
|
||||
docker --version
|
||||
docker compose version
|
||||
```
|
||||
|
||||
### 4. Create a Non-Root User (Optional but Good)
|
||||
Running everything as root is risky. Create a user with sudo privileges.
|
||||
|
||||
```bash
|
||||
adduser dev
|
||||
usermod -aG sudo dev
|
||||
usermod -aG docker dev
|
||||
# Now log in as 'dev' for future work
|
||||
```
|
||||
|
||||
That's your server ready and secured. Every deploy guide in these docs assumes you've done this.
|
||||
|
||||
## Next Steps
|
||||
|
||||
Your server is ready. Time to deploy something real:
|
||||
|
||||
→ [The AltStack Starter Kit](/quick-start/starter-kit) — Our recommended first set of tools
|
||||
→ [Deploy Guides](/deploy) — Pick any tool and deploy it
|
||||
69
docs/app/quick-start/first-deployment/page.mdx
Normal file
69
docs/app/quick-start/first-deployment/page.mdx
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: Your First Deployment
|
||||
description: "Deploy Uptime Kuma in under 5 minutes with a single Docker command. Your first taste of self-hosting freedom."
|
||||
---
|
||||
|
||||
# Your First Deployment
|
||||
|
||||
**By the end of this page**, you'll have [Uptime Kuma](https://thealtstack.com/alternative-to/uptime-kuma) — a beautiful uptime monitor — running on your machine. It takes about 5 minutes.
|
||||
|
||||
We're starting with Uptime Kuma because:
|
||||
- It's a single Docker command (no compose file needed)
|
||||
- It has a gorgeous UI you'll actually enjoy using
|
||||
- It's immediately useful — it monitors your other self-hosted tools
|
||||
- It proves that self-hosting isn't scary
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Docker installed on your machine ([install guide](https://docs.docker.com/get-docker/))
|
||||
- A terminal (Terminal on Mac, PowerShell on Windows, or any Linux terminal)
|
||||
|
||||
> 💡 **Why?** Docker is how we package and run software without dependency hell. If you haven't installed it yet, the link above takes 3 minutes.
|
||||
|
||||
## Let's Ship It
|
||||
|
||||
Open your terminal and run this single command:
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--restart=unless-stopped \
|
||||
-p 3001:3001 \
|
||||
-v uptime-kuma:/app/data \
|
||||
--name uptime-kuma \
|
||||
louislam/uptime-kuma:1
|
||||
```
|
||||
|
||||
That's it. Not kidding.
|
||||
|
||||
### What just happened?
|
||||
|
||||
| Flag | What it does |
|
||||
|---|---|
|
||||
| `-d` | Runs in the background (detached) |
|
||||
| `--restart=unless-stopped` | Auto-restarts if your server reboots |
|
||||
| `-p 3001:3001` | Makes it accessible on port 3001 |
|
||||
| `-v uptime-kuma:/app/data` | Saves your data in a Docker volume (survives restarts) |
|
||||
| `--name uptime-kuma` | Gives the container a human-readable name |
|
||||
|
||||
## See It Live
|
||||
|
||||
Open your browser and go to:
|
||||
|
||||
```
|
||||
http://localhost:3001
|
||||
```
|
||||
|
||||
You should see the Uptime Kuma setup screen. Create an admin account, add a monitor for `https://google.com` to test it, and watch the green dots roll in.
|
||||
|
||||
**Congratulations. You just self-hosted your first tool.** 🎉
|
||||
|
||||
## You Did It. Now What?
|
||||
|
||||
You just proved to yourself that self-hosting works. Here's where to go next:
|
||||
|
||||
1. **[Choosing a Server](/quick-start/choosing-a-server)** — Move from localhost to a real VPS so others can access your tools
|
||||
2. **[Docker Basics](/concepts/docker-basics)** — Understand what Docker Compose is (spoiler: it's the next level)
|
||||
3. **[Deploy Plausible](/deploy/plausible)** — Replace Google Analytics entirely
|
||||
4. **[The Bootstrapper Stack](/stacks/bootstrapper)** — Deploy an entire SaaS toolkit for $0/mo
|
||||
|
||||
> 🏆 **The Verdict:** If this felt easy, that's because it *is* easy. The rest of our guides follow the same pattern: copy a config, run a command, own your software.
|
||||
88
docs/app/quick-start/page.mdx
Normal file
88
docs/app/quick-start/page.mdx
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: Quick Start
|
||||
description: "Your roadmap to self-hosting independence. Go from zero to a running infrastructure in under an hour."
|
||||
---
|
||||
|
||||
import { Clock, Server, Shield, Rocket, ArrowRight, CheckCircle } from 'lucide-react'
|
||||
|
||||
# Quick Start
|
||||
|
||||
**Go from "I've never self-hosted anything" to "I'm running my own infrastructure" in under an hour.** This guide is your roadmap — follow it in order.
|
||||
|
||||
<div className="mt-12 space-y-6">
|
||||
<div className="relative pl-12 pb-8 border-l-2 border-red-500/20">
|
||||
<div className="absolute -left-4 top-0 w-8 h-8 rounded-full bg-red-500 flex items-center justify-center text-white font-bold text-sm">{"1"}</div>
|
||||
<h3 className="text-lg font-bold mb-1">{"Understand the Basics"}</h3>
|
||||
<div className="flex items-center gap-2 text-sm text-[var(--altstack-text-dim)] mb-3">
|
||||
<Clock size={14} /><span>{" 5 min read"}</span>
|
||||
</div>
|
||||
<span className="block text-[var(--altstack-text-dim)] mb-3">{"What self-hosting actually means, why you'd do it, and the three things you need. No jargon, no gatekeeping."}</span>
|
||||
<a href="/quick-start/what-is-self-hosting" className="inline-flex items-center gap-2 text-red-500 font-semibold text-sm hover:underline">
|
||||
<span>{"What is Self-Hosting?"}</span> <ArrowRight size={14} />
|
||||
</a>
|
||||
</div>
|
||||
<div className="relative pl-12 pb-8 border-l-2 border-red-500/20">
|
||||
<div className="absolute -left-4 top-0 w-8 h-8 rounded-full bg-red-500 flex items-center justify-center text-white font-bold text-sm">{"2"}</div>
|
||||
<h3 className="text-lg font-bold mb-1">{"Deploy Your First Tool"}</h3>
|
||||
<div className="flex items-center gap-2 text-sm text-[var(--altstack-text-dim)] mb-3">
|
||||
<Clock size={14} /><span>{" 5 min hands-on"}</span>
|
||||
</div>
|
||||
<span className="block text-[var(--altstack-text-dim)] mb-3">{"One Docker command. One running tool. Prove to yourself that self-hosting works. We start with Uptime Kuma — it's beautiful, useful, and takes 30 seconds."}</span>
|
||||
<a href="/quick-start/first-deployment" className="inline-flex items-center gap-2 text-red-500 font-semibold text-sm hover:underline">
|
||||
<span>{"Your First Deployment"}</span> <ArrowRight size={14} />
|
||||
</a>
|
||||
</div>
|
||||
<div className="relative pl-12 pb-8 border-l-2 border-red-500/20">
|
||||
<div className="absolute -left-4 top-0 w-8 h-8 rounded-full bg-red-500 flex items-center justify-center text-white font-bold text-sm">{"3"}</div>
|
||||
<h3 className="text-lg font-bold mb-1">{"Get a Real Server"}</h3>
|
||||
<div className="flex items-center gap-2 text-sm text-[var(--altstack-text-dim)] mb-3">
|
||||
<Clock size={14} /><span>{" 15 min hands-on"}</span>
|
||||
</div>
|
||||
<span className="block text-[var(--altstack-text-dim)] mb-3">{"Move from localhost to a VPS. We compare providers, recommend the best value, and walk you through SSH hardening, firewalls, and Docker installation."}</span>
|
||||
<a href="/quick-start/choosing-a-server" className="inline-flex items-center gap-2 text-red-500 font-semibold text-sm hover:underline">
|
||||
<span>{"Choosing a Server"}</span> <ArrowRight size={14} />
|
||||
</a>
|
||||
</div>
|
||||
<div className="relative pl-12 pb-8 border-l-2 border-red-500/20">
|
||||
<div className="absolute -left-4 top-0 w-8 h-8 rounded-full bg-red-500 flex items-center justify-center text-white font-bold text-sm">{"4"}</div>
|
||||
<h3 className="text-lg font-bold mb-1">{"Set Up Domains & SSL"}</h3>
|
||||
<div className="flex items-center gap-2 text-sm text-[var(--altstack-text-dim)] mb-3">
|
||||
<Clock size={14} /><span>{" 10 min hands-on"}</span>
|
||||
</div>
|
||||
<span className="block text-[var(--altstack-text-dim)] mb-3">{"Give your tools proper domains like "}<code>{"uptime.yourdomain.com"}</code>{" with automatic HTTPS. We cover Caddy, Nginx Proxy Manager, and Traefik."}</span>
|
||||
<a href="/quick-start/reverse-proxy" className="inline-flex items-center gap-2 text-red-500 font-semibold text-sm hover:underline">
|
||||
<span>{"Setting Up a Reverse Proxy"}</span> <ArrowRight size={14} />
|
||||
</a>
|
||||
</div>
|
||||
<div className="relative pl-12">
|
||||
<div className="absolute -left-4 top-0 w-8 h-8 rounded-full bg-green-500 flex items-center justify-center text-white font-bold text-sm">{"✓"}</div>
|
||||
<h3 className="text-lg font-bold mb-1">{"Deploy Your Starter Kit"}</h3>
|
||||
<div className="flex items-center gap-2 text-sm text-[var(--altstack-text-dim)] mb-3">
|
||||
<Clock size={14} /><span>{" 20 min hands-on"}</span>
|
||||
</div>
|
||||
<span className="block text-[var(--altstack-text-dim)] mb-3">{"Your first real stack: Uptime Kuma + Plausible + Coolify. Three tools that replace ~$35/mo in SaaS, all running on a $6/mo server."}</span>
|
||||
<a href="/quick-start/starter-kit" className="inline-flex items-center gap-2 text-green-500 font-semibold text-sm hover:underline">
|
||||
<span>{"The AltStack Starter Kit"}</span> <ArrowRight size={14} />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before you start, you need:
|
||||
|
||||
- **A computer with a terminal** — Mac Terminal, Windows PowerShell, or any Linux shell
|
||||
- **Docker installed** — [Get Docker](https://docs.docker.com/get-docker/) (3 minutes)
|
||||
- **$0–6/mo budget** — Free for localhost experiments, ~$6/mo for a real VPS
|
||||
|
||||
That's genuinely it. No Kubernetes. No cloud certifications. No weekend-long setup marathons.
|
||||
|
||||
## Fast Track (Experienced Users)
|
||||
|
||||
Already comfortable with Docker and have a VPS? Skip straight to the good stuff:
|
||||
|
||||
1. **[The Starter Kit](/quick-start/starter-kit)** — Deploy Uptime Kuma + Plausible + Coolify in 20 minutes
|
||||
2. **[Deploy Guides](/deploy)** — Pick any of our 65+ tools and ship it
|
||||
3. **[Curated Stacks](/stacks)** — Grab a complete toolkit for your use case
|
||||
145
docs/app/quick-start/reverse-proxy/page.mdx
Normal file
145
docs/app/quick-start/reverse-proxy/page.mdx
Normal file
@@ -0,0 +1,145 @@
|
||||
---
|
||||
title: Setting Up a Reverse Proxy
|
||||
description: "How to use Caddy, Nginx Proxy Manager, or Traefik to give your self-hosted tools proper domains and automatic SSL."
|
||||
---
|
||||
|
||||
import { Tabs } from 'nextra/components'
|
||||
|
||||
# Setting Up a Reverse Proxy
|
||||
|
||||
Right now your tools are running on ports like `:3001` or `:8080`. A **reverse proxy** is the traffic cop that maps a domain like `uptime.yourdomain.com` to your server's local port and handles SSL automatically.
|
||||
|
||||
## Which one should I pick?
|
||||
|
||||
- **Caddy:** Best for 99% of people. Zero-config SSL, human-readable config, extremely fast.
|
||||
- **Nginx Proxy Manager:** Best if you want a web UI to click and manage your domains.
|
||||
- **Traefik:** Best if you want a "hands-off" approach that auto-discovers new containers as you spin them up (complex but powerful).
|
||||
|
||||
---
|
||||
|
||||
<Tabs items={['Caddy (Recommended)', 'Nginx Proxy Manager', 'Traefik']}>
|
||||
<Tabs.Tab>
|
||||
### Caddy Setup
|
||||
Caddy is the "batteries included" proxy. It just works.
|
||||
|
||||
#### 1. The Docker Compose
|
||||
Create a folder for Caddy and add this `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
caddy:
|
||||
image: caddy:2-alpine
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "443:443/udp"
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile
|
||||
- caddy_data:/data
|
||||
- caddy_config:/config
|
||||
|
||||
volumes:
|
||||
caddy_data:
|
||||
caddy_config:
|
||||
```
|
||||
|
||||
#### 2. The Caddyfile
|
||||
In the same folder, create a file named `Caddyfile`:
|
||||
|
||||
```caddy
|
||||
uptime.yourdomain.com {
|
||||
reverse_proxy localhost:3001
|
||||
}
|
||||
|
||||
plausible.yourdomain.com {
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. Start it
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
</Tabs.Tab>
|
||||
|
||||
<Tabs.Tab>
|
||||
### Nginx Proxy Manager (NPM) Setup
|
||||
NPM gives you a beautiful web interface to manage your SSL and proxy hosts.
|
||||
|
||||
#### 1. The Docker Compose
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
app:
|
||||
image: 'jc21/nginx-proxy-manager:latest'
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '80:80'
|
||||
- '81:81'
|
||||
- '443:443'
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./letsencrypt:/etc/letsencrypt
|
||||
```
|
||||
|
||||
#### 2. Access the UI
|
||||
1. Visit `http://your-server-ip:81`
|
||||
2. Default credentials:
|
||||
- Email: `admin@example.com`
|
||||
- Password: `changeme`
|
||||
3. Change your login info immediately.
|
||||
4. Click **Proxy Hosts** -> **Add Proxy Host** to point your domain to your tool's port.
|
||||
</Tabs.Tab>
|
||||
|
||||
<Tabs.Tab>
|
||||
### Traefik Setup
|
||||
Traefik uses "labels" on your other containers to automatically route traffic.
|
||||
|
||||
#### 1. The Traefik Container
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v3.0
|
||||
command:
|
||||
- "--api.insecure=true"
|
||||
- "--providers.docker=true"
|
||||
- "--entrypoints.web.address=:80"
|
||||
- "--entrypoints.websecure.address=:443"
|
||||
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
|
||||
- "--certificatesresolvers.myresolver.acme.email=your-email@example.com"
|
||||
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "./letsencrypt:/letsencrypt"
|
||||
```
|
||||
|
||||
#### 2. Routing a container
|
||||
Add these labels to any *other* container you want to proxy:
|
||||
|
||||
```yaml
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.mytool.rule=Host(`mytool.yourdomain.com`)"
|
||||
- "traefik.http.routers.mytool.entrypoints=websecure"
|
||||
- "traefik.http.routers.mytool.tls.certresolver=myresolver"
|
||||
```
|
||||
</Tabs.Tab>
|
||||
</Tabs>
|
||||
|
||||
---
|
||||
|
||||
## 🔒 A Note on SSL/TLS
|
||||
Every proxy above handles SSL certificates via **Let's Encrypt** automatically.
|
||||
|
||||
**Crucial Step:** Before you start your proxy, your domain's **DNS A Record** must point to your server's public IP address. If the DNS isn't pointing correctly, Let's Encrypt will fail to issue a certificate.
|
||||
|
||||
## Next Steps
|
||||
→ [Your First Deployment](/quick-start/first-deployment) — Connect your tools to your new proxy.
|
||||
→ [SSL/TLS Deep Dive](/concepts/ssl-tls) — How it works under the hood.
|
||||
46
docs/app/quick-start/starter-kit/page.mdx
Normal file
46
docs/app/quick-start/starter-kit/page.mdx
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: The AltStack Starter Kit
|
||||
description: "The recommended first 3 tools to self-host: Uptime Kuma, Plausible, and Coolify. Your foundation for software independence."
|
||||
---
|
||||
|
||||
# The AltStack Starter Kit
|
||||
|
||||
If you're new to self-hosting, don't try to replace your entire SaaS stack on day one. Start with three tools that are immediately useful, easy to deploy, and will teach you how everything works.
|
||||
|
||||
## The Stack
|
||||
|
||||
| Tool | Replaces | Why It's First |
|
||||
|---|---|---|
|
||||
| [**Uptime Kuma**](/deploy/uptime-kuma) | Pingdom, UptimeRobot ($15/mo) | Monitors everything else you deploy. Set it up first. |
|
||||
| [**Plausible**](/deploy/plausible) | Google Analytics (free but creepy) | Privacy-respecting analytics. You'll see results immediately. |
|
||||
| [**Coolify**](/deploy/coolify) | Vercel, Heroku ($20+/mo) | Deploy future apps with git push. Your own PaaS. |
|
||||
|
||||
**Total monthly cost:** ~$6 (one small VPS)
|
||||
**Total SaaS cost replaced:** ~$35+/mo
|
||||
|
||||
## Deploy Order
|
||||
|
||||
This order matters:
|
||||
|
||||
### 1. Uptime Kuma (5 min)
|
||||
Your monitoring dashboard. Once it's running, add monitors for everything else you deploy. You'll always know if something goes down.
|
||||
|
||||
→ [Deploy Uptime Kuma](/deploy/uptime-kuma)
|
||||
|
||||
### 2. Plausible Analytics (10 min)
|
||||
Lightweight, cookie-free analytics. Add the tracking script to your site and immediately start seeing real visitor data — without the privacy guilt.
|
||||
|
||||
→ [Deploy Plausible](/deploy/plausible)
|
||||
|
||||
### 3. Coolify (15 min)
|
||||
This is the game-changer. Coolify turns your server into a self-hosted Vercel/Netlify. Git push → auto deploy. It'll become the foundation for everything you build.
|
||||
|
||||
→ [Deploy Coolify](/deploy/coolify)
|
||||
|
||||
## After the Starter Kit
|
||||
|
||||
Once you're comfortable, explore the [Curated Stacks](/stacks) — pre-built bundles of tools designed for specific use cases:
|
||||
|
||||
- 🚀 [The Bootstrapper Stack](/stacks/bootstrapper) — Full SaaS toolkit for $0/mo
|
||||
- 🔒 [The Privacy Stack](/stacks/privacy) — Maximum data sovereignty
|
||||
- 🤖 [The AI-First Stack](/stacks/ai-first) — Run LLMs and image gen locally
|
||||
62
docs/app/quick-start/what-is-self-hosting/page.mdx
Normal file
62
docs/app/quick-start/what-is-self-hosting/page.mdx
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: What is Self-Hosting?
|
||||
description: "Self-hosting explained without the gatekeeping. What it is, why you'd do it, and what you actually need to get started."
|
||||
---
|
||||
|
||||
# What is Self-Hosting?
|
||||
|
||||
**In one sentence:** Self-hosting means running software on a server *you* control, instead of paying someone else to run it for you.
|
||||
|
||||
That's it. That's the whole concept.
|
||||
|
||||
When you use Gmail, Google runs the email server. When you use Notion, Notion Inc runs the database. When you self-host, **you** run these things — on a cheap VPS, a spare laptop, or even a Raspberry Pi.
|
||||
|
||||
## Why Would You Do This?
|
||||
|
||||
| Reason | What It Means |
|
||||
|---|---|
|
||||
| **💰 Cost** | Most open source tools are free. A $5/mo server can replace $200+/mo in SaaS subscriptions. |
|
||||
| **🔒 Privacy** | Your data lives on your server. No one mines it, sells it, or trains AI on it. |
|
||||
| **🎛️ Control** | No surprise feature removals. No price hikes. No "we're sunsetting this product" emails. |
|
||||
| **🧠 Learning** | You'll actually understand how software works. This makes you a better developer, designer, or founder. |
|
||||
|
||||
## What You Actually Need
|
||||
|
||||
Here's the brutal truth: **self-hosting requires effort**. Not *genius-level* effort, but *following-a-recipe* effort.
|
||||
|
||||
You need three things:
|
||||
|
||||
1. **A server** — A $4–6/mo VPS from Hetzner, [DigitalOcean](https://m.do.co/c/2ed27757a361), or similar. [We compare them →](/quick-start/choosing-a-server)
|
||||
2. **Docker** — The tool that packages software into neat, runnable containers. [Docker basics →](/concepts/docker-basics)
|
||||
3. **20 minutes of patience** — Most tools deploy in under 20 minutes if you follow our guides.
|
||||
|
||||
> 🔥 **Pro Tip:** You don't need to know Linux commands by heart. You need to know how to copy-paste. Seriously.
|
||||
|
||||
## The Self-Hosting Spectrum
|
||||
|
||||
Not all self-hosting is equal. Here's where most people land:
|
||||
|
||||
```
|
||||
Easy ─────────────────────────────────────── Hard
|
||||
|
||||
Docker run Docker Compose Kubernetes
|
||||
(1 command) (1 YAML file) (for masochists)
|
||||
```
|
||||
|
||||
**Good news:** 95% of the tools in our directory work with Docker Compose — a single file that describes your entire setup. Our guides always give you that file, ready to go.
|
||||
|
||||
## Common Fears (Debunked)
|
||||
|
||||
**"I'll get hacked"** → You're more likely to get breached through a SaaS provider's data leak than through a properly configured VPS with a firewall and SSH keys.
|
||||
|
||||
**"I can't handle maintenance"** → Docker makes updates a two-command affair: `docker-compose pull && docker-compose up -d`. That's it.
|
||||
|
||||
**"What if it breaks at 3 AM?"** → Set up [Uptime Kuma](/deploy/uptime-kuma) (takes 5 minutes) and you'll know before your users do.
|
||||
|
||||
**"I don't have time"** → You don't have time to submit GDPR data requests to 47 SaaS vendors either. Pick your battles.
|
||||
|
||||
## Next Steps
|
||||
|
||||
Ready? Let's deploy something real.
|
||||
|
||||
→ [Your First Deployment](/quick-start/first-deployment) — Get a tool running in 5 minutes flat.
|
||||
Reference in New Issue
Block a user