Ctrl K
ComunidadGuías…

README.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot

#### A docker-compose setup of [common services](SERVICES.md) with Traefik using Cloudflare dns-01 for letsencrypt certificates

Here is a complete list of [available services](SERVICES.md) and [available games](SERVICES.md#available-games)

## 📚 Documentation

### Service Documentation
Each of the 287+ services has comprehensive documentation including configuration details, environment variables, and available overrides:
- **[Service Documentation Index](services-docs/README.md)** - Browse all service docs
- **[SERVICES.md](SERVICES.md)** - Quick service list with links to detailed docs

**Example service docs:** [Plex](services-docs/plex.md) • [Jellyfin](services-docs/jellyfin.md) • [Immich](services-docs/immich.md) • [Nextcloud](services-docs/nextcloud.md)

### User Guides
- [Dashboard Guide](docs/dashboard.md) - Web UI for managing your homelab
- [Scaffolding Guide](docs/scaffolding.md) - Convention-based service configuration
- [Migration Guide](docs/main-branch-announcement.md) - Switching from master to main

### Architecture Documentation
- [Database Architecture](.github/shared/database-architecture.md) - Dedicated vs shared databases
- [Network Architecture](.github/shared/network-architecture.md) - Traefik and network patterns
- [Backup Strategy](.github/shared/backup-strategy.md) - Backup and restore procedures
- [Health Check Patterns](.github/shared/healthcheck-patterns.md) - Standard health checks

### For AI Agents
- [Agent Guide](.agents/README.md) - Comprehensive guide for AI assistants working on OnRamp

Onramp uses Docker and it installs docker if you don't already have it installed (a check is run as part of the 'make install' command below).

This repo assumes that you are running a debian linux disto like Ubuntu!

A podman version is available as a branch here: [https://github.com/traefikturkey/onramp/tree/podman](https://github.com/traefikturkey/onramp/tree/podman)
This branch is in testing and may have bugs/issues that are not present in main branch
Testing and PR's are welcome and encouraged!

You'll need a personal domain that's setup with Cloudflare
and an scoped API token created like shown below, [https://dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens) 

![Cloudflare api token](https://raw.githubusercontent.com/traefikturkey/onramp/main/docs/assets/read%2Bedit-token.png "Cloudflare api token")


## Download OnRamp

After getting your Cloudflare API key
you can run the following to do the basic setup automagically:

```bash
sudo apt update
sudo apt install git make -y

sudo mkdir /apps
sudo chown -R $USER:$USER /apps
cd /apps
git clone -b main https://github.com/traefikturkey/onramp.git onramp
cd onramp

make install
```

> **Important:** You must use `-b main` when cloning. The `master` branch is legacy and no longer maintained. If you cloned without `-b main`, switch with: `git checkout main && git pull`

> **Note:** If this is a fresh system without Docker, `make install` will automatically install Docker and add your user to the docker group. After installation completes, you'll need to run `newgrp docker` (or log out and back in) to use Docker commands, then run `make continue-install` to complete setup.

The install process includes an interactive wizard that will prompt you for:
- Server hostname and domain
- Timezone
- Cloudflare credentials

If you prefer to edit the configuration manually, you can skip the wizard and use:

```bash
make edit-env-onramp
```

To re-run the wizard later:

```bash
make env-wizard
```

Then start the staging environment:

```bash
make start-staging
```

Traefik will start and attempt to obtain a staging certificate, wait and then follow the on screen directions.

```bash
make down-staging
```

You are now ready to bring things up with the production certificates

```bash
make
```

## Docker Services

OnRamp includes **287+ services** in the `./services-available` directory, each with comprehensive documentation including configuration details, environment variables, Docker images, port mappings, and available overrides.

**Browse services:**
- **[Service Documentation](services-docs/README.md)** - Full documentation for all services
- **[SERVICES.md](SERVICES.md)** - Quick reference list with links

To list available services:
```bash
make list-services
```

To enable a service:
```bash
make enable-service uptime-kuma
make restart
```
> **Note:** This creates a symlink in `./services-enabled/` to the service config in `./services-available/`.
> A `.env` file is auto-generated at `services-enabled/<service>.env` from the template (if available).

To view service documentation:
```bash
# View full documentation with configuration details and overrides
cat services-docs/uptime-kuma.md

# Or browse all services
ls services-docs/
```

To disable a service:
```bash
make disable-service uptime-kuma
make restart
```

To create a new service:
```bash
make create-service name-of-service
```

This creates a file in `./services-available/` using the template from `make.d/templates/service.template`



## Docker Overrides

OnRamp includes **109 override configurations** that extend service functionality with features like:
- **NFS storage** - Mount media from NAS/NFS servers
- **GPU acceleration** - NVIDIA, AMD, Intel QuickSync support
- **Dedicated databases** - Dedicated Redis, PostgreSQL, MariaDB containers
- **Extra configurations** - Additional features and integrations

**Each service's documentation lists available overrides.** For example, see [Plex overrides](services-docs/plex.md#available-overrides) or [Jellyfin overrides](services-docs/jellyfin.md#available-overrides).

To list all available overrides:
```bash
make list-overrides
```

To view what an override does before enabling:
```bash
# Check the service documentation for override details
cat services-docs/plex.md  # Shows all Plex overrides
```

To enable an override:
```bash
make enable-override plex-nfs
make restart
```

To disable an override:
```bash
make disable-override plex-nfs
make restart
```

> **Note:** Overrides create symlinks in `./overrides-enabled/` pointing to configs in `./overrides-available/`.
> You can also place custom docker-compose files in `./overrides-enabled/` - they'll be included on startup and in backups.
> 
> For more on Docker Compose overrides: https://docs.docker.com/compose/extends/#adding-and-overriding-configuration

### NFS Quick Start

If your media (movies, TV shows, downloads) lives on a NAS or NFS server:

**1. Configure your NFS server and paths:**
```bash
make edit-env-nfs
```

Set at minimum:
```bash
NFS_SERVER=192.168.1.100          # Your NAS/NFS server IP
NFS_MEDIA_PATH=/mnt/media         # Base path on the NFS server
NFS_MOVIES_PATH=${NFS_MEDIA_PATH}/movies
NFS_SHOWS_PATH=${NFS_MEDIA_PATH}/shows
NFS_DOWNLOADS_PATH=${NFS_MEDIA_PATH}/downloads
```

**2. Enable NFS overrides for your services:**
```bash
make enable-override radarr-nfs
make enable-override sonarr-nfs
make enable-override plex-nfs
```

**3. Restart:**
```bash
make restart
```

> **Troubleshooting:** If you see `permission denied` or `device: "::"` in mount errors, your `.env.nfs` is missing or has empty paths. Run `make edit-env-nfs` and verify `NFS_SERVER` and the path variables are set correctly. Also ensure your NFS server allows access from this machine's IP.

To see all available NFS overrides:
```bash
make list-overrides | grep nfs
```

## Docker Game servers

Docker based Game servers are included in the ./services-available/games directory.
The configuration files include links to the web page for the services which has 
the available documentation.

To list available games:
```
make list-games
```

To enable a game:
```
make enable-game factorio
make restart
```

To disable a game:
```
make disable-game factorio
make restart
```

## External Services
External services can also be proxied through Traefik to list the available configurations:

```
make list-external
```

They can be enabled by running the following commands:

```
make enable-external proxmox
make restart
```

And disabled with the following:
```
make disable-external proxmox
make restart
```

## Scaffolding

OnRamp uses convention-based scaffolding to auto-generate service configurations. When you enable a service that has templates in `services-scaffold/`, configs are automatically created in `etc/<service>/`.

See [docs/scaffolding.md](docs/scaffolding.md) for details on:
- How to add scaffolding to a service
- Template file conventions
- The difference between `disable-service` and `nuke-service`

## Backing up Configuration

### Disaster Recovery Philosophy
Instead of complex High Availability (HA) setups (like Docker Swarm or Kubernetes) which can be overkill for a home lab, OnRamp encourages a "Disaster Recovery" (DR) approach. The goal is to be able to rebuild your entire stack from scratch in minutes using backups and automation.

**The 3-2-1 Backup Strategy:**
- **3** copies of your data
- **2** different media types
- **1** offsite copy

By backing up your configuration and using tools like Ansible to provision the base OS, you can restore your services quickly on new hardware if a failure occurs.

### Create backup file
```
make create-backup
```
This will create `onramp-config-backup-{hostname}-{timestamp}.tar.gz` in the `backups/` directory

### Copy backup file to another machine
```
scp ./backups/onramp-config-backup-*.tar.gz <user>@<other_host>:/apps/onramp/backups/
```

### Restore backup file on the other machine
```
make restore-backup
```

## Other make commands

Then you can run any of the following:

```
make          # does a docker compose up -d
make up       # does a docker compose up (this will show you the log output of the containers, but will not stay running if you hit ctrl-c or log out)
make down     # does a docker compose down
make restart  # does a docker compose down followed by an up -d
make logs     # does a docker compose logs -f
make update   # does a docker compose down, pull (to get the latest docker images) and up -d

# You can run multiple commands at once like this
make; make logs
```
## Environment Variables

OnRamp uses a modular environment system where configuration is split into separate files:

- **Global config:** `services-enabled/.env` - Core settings (domain, Cloudflare credentials, timezone, etc.)
- **Service-specific:** `services-enabled/<service>.env` - Settings for individual services
- **NFS config:** `services-enabled/.env.nfs` - NFS mount settings (optional)
- **External services:** `services-enabled/.env.external` - External service proxy settings (optional)

### Editing Environment Files

```bash
make edit-env-onramp      # Edit global configuration
make edit-env <service>   # Edit service-specific config (e.g., make edit-env adguard)
make edit-env-nfs         # Edit NFS configuration
make edit-env-external    # Edit external services config
```

### Variable Syntax

If you open a service file, you'll see variables like `${UNIFI_DOCKER_TAG:-latest-ubuntu}`:
- `UNIFI_DOCKER_TAG` is the variable name
- `latest-ubuntu` is the default value

Override by adding to the appropriate env file:
```
UNIFI_DOCKER_TAG=latest-ubuntu-beta
```

### Migrating from Legacy .env

If you have an existing OnRamp installation with a monolithic `.env` file, the migration happens automatically on the first `make` command. Your old `.env` will be:
1. Split into appropriate `services-enabled/*.env` files
2. Backed up to `backups/.env.legacy`
3. Removed

To preview what migration would do:
```bash
make migrate-env-dry-run
```

Please see https://docs.docker.com/compose/environment-variables/ for more information about environment variables in docker compose

![Alt](https://repobeats.axiom.co/api/embed/1f05fd9a7be98c1958a107a05bd450049b2e9eb7.svg "Repobeats analytics image")