# Self-hosting

A self-hosted cronpad is one process (the `cronpad` binary or container) and a data directory; there is no other service to run. All durable data is in two SQLite files on a local volume, backed up continuously with Litestream, next to a third, rebuildable SQLite file that holds the delivery queue. Self-hosted servers have every feature, no usage limits, and can run shell commands and call services on private networks.

| Step | Page |
|---|---|
| Install with Docker, Compose, Kubernetes or a binary | [Installation](installation.md) |
| Every setting and its environment variable | [Configuration reference](configuration.md) |
| Google and GitHub sign-in | [Authentication](authentication.md) |
| Continuous backups and restores | [Backups with Litestream](backups.md) |
| Before you rely on it | [Production checklist](production-checklist.md) |
| Moving to a new version | [Upgrading](upgrading.md) |
| Metrics, logs, traces | [Observability](../observability/index.md) |

## Requirements

| | Minimum | Comfortable for ~1,000 runs/s |
|---|---|---|
| CPU | 1 vCPU | 4 vCPU |
| Memory | 256 MB | 2 GB |
| Disk | 1 GB local SSD | Local NVMe, sized for your [retention](../platform/data-retention.md); the queue adds ~100 bytes per active job |