# Что такое Self-Hosted и почему она так популярна

Индекс LLMS: [llms.txt](/llms.txt)

---

Вы платите за подписку на Notion, Dropbox и Google Drive. Затем Notion повышает цену, Dropbox ограничивает хранилище, а Google «улучшает» интерфейс Docs. Самостоятельный хостинг — это когда вы берёте инфраструктуру в свои руки и перестаёте зависеть от решений вендора.

## Определение: не ваше облако

Self-hosted — это модель, при которой вы разворачиваете и эксплуатируете приложения на собственных серверах или VPS вместо использования SaaS-аналогов. Сервер может стоять дома, в дата-центре или быть виртуалкой у хостера — главное, что железо под вашим контролем, а не у третьей стороны.

Отличие от классического хостинга простое: на виртуальном хостинге вы арендуете часть сервера с предустановленным софтом. На self-hosted вы ставите что угодно и настраиваете как хотите. Это ближе к VPS или bare metal, но с упором на именно приложения — а не на веб-сайты.

> [!NOTE]
> Self-hosted ≠ self-administered. Вы можете нанять админа, использовать managed-серверы или готовые образы. Суть в том, что данные и сервис принадлежат вам, а не облачному провайдеру.

## Типичный стек self-hosted

Большинство self-hosted-сетапов строятся вокруг Docker и Docker Compose. Это де-факто стандарт для изоляции и воспроизводимости.

```bash
# Установка Docker на Ubuntu
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# Минимальный docker-compose.yml для Nextcloud
cat << 'EOF' > docker-compose.yml
version: "3.8"
services:
  app:
    image: nextcloud:latest
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./data:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=changeme
  db:
    image: mariadb:latest
    restart: unless-stopped
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=rootpw
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=changeme
EOF

docker compose up -d
```

Рядом с Nextcloud обычно ставят обратный прокси — Traefik или Caddy. Traefik автоматически подхватывает контейнеры по labels, Caddy работает с нулевой конфигурацией для TLS.

```bash
# Traefik с Docker provider
cat << 'EOF' >> docker-compose.yml
  traefik:
    image: traefik:v3.0
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik/acme.json:/acme.json
    command:
      - "--providers.docker"
      - "--providers.docker.exposedbydefault=false"
EOF
```

Частый набор для домашнего сетапа:

| Категория | Примеры | Назначение |
|-----------|---------|------------|
| Файлы | Nextcloud, Syncthing | Хранилище и синхронизация |
| Медиа | Jellyfin, Plex | Персональный стриминг |
| Пароли | Bitwarden, Vaultwarden | Менеджер паролей |
| Код | Gitea, Forgejo | Git-репозитории |
| Умный дом | Home Assistant | IoT-контроллер |
| Мониторинг | Grafana, Prometheus | Метрики и алерты |

## Почему это массово

Главный драйвер — контроль данных. Когда облака регулярно получают утечки, а политики приватности корпораций меняются вслед за прибылью, идея «мой сервер — мои правила» привлекает не только параноиков.

Финансовый фактор тоже значим. Один сервер за $10–20 в месяц заменяет россыпь подписок. Bitwarden Premium стоит $10/год, Nextcloud AIO — $29/год. Даже личный NAS с кучей дисков окупается за пару лет против Dropbox и Google One.

Less obvious: vendor lock-in. Notion экспортирует данные криво, Slack не даёт нормального экспорта, а Discord вообще закрывает API. Когда вы держите инстанс, миграция — это просто бэкап и разворот на новом сервере.

> [!TIP]
> Держите конфигурацию в Git. Двадцать docker-compose.yml и compose-override.yml в репозитории — это не только backup, но и воспроизводимый сетап на новом железе за минуты.

Последний фактор — кривая обучения. Self-hosted стал проще: готовые образы, авто-TLS, Compose-файлы с GitHub. Это привлекает людей, которые хотят разобраться в инфраструктуре, а не просто пользоваться сервисом.

## Что отталкивает

Главная проблема — maintenance burden. SaaS обновляется без вашего участия. Self-hosted требует регулярных apt update && docker compose pull && docker compose up -d и мониторинга за устаревшими образами.

Безопасность — второе узкое место. Ваш сервер — ваша ответственность. Уязвимость в Nextcloud? Это ваш CVSS, ваши патчи, ваш downtime. Облака хотя бы закрывают дыры быстрее и оповещают пользователей.

```bash
# Проверка устаревших образов
docker images --format "{{.Repository}}:{{.Tag}}"
# Или через Trivy
trivy image --severity HIGH,CRITICAL nextcloud:latest
```

Uptime — третий барьер. Для домашнего сетапа это не критично. Для рабочего инструмента нужны резервный канал, мониторинг и process supervisor. Systemd unit или Watchtower с авторестартом — минимум.

| Задача | Инструмент | Сложность |
|--------|------------|-----------|
| Автообновление образов | Watchtower | Низкая |
| Мониторинг контейнеров | cAdvisor + Grafana | Средняя |
| Алерты на падение | Healthchecks.io, Uptime Kuma | Низкая |
| Резервирование данных | Restic, Duplicati | Средняя |

## Когда имеет смысл

Self-hosted оправдан в трёх сценариях.

**Homelab и личное использование.** Вы де факто получаете приватное облако за стоимость сервера. Файлы, пароли, фотографии, медиатека — всё под контролем. Для многих это и хобби, и практика.

**Малые команды безcompliance-требований.** Gitea для кода, Vaultwarden для паролей, Outline или HedgeDoc для документов заменяют GitHub, 1Password и Confluence. Бюджет — $20–50/мес на VPS.

**Специфические требования.** Кастомные интеграции, приватность выше среднего, данные, которые нельзя хранить у третьих лиц. Это может быть личный проект, клининговая компания с ПДн или стартап на ранней стадии.

> [!WARNING]
> Не пытайтесь заменить managed-сервисы на self-hosted, если у команды нет time budget на эксплуатацию. SRE-инженер на полставки обойдётся дороже подписки на Notion и сожжёт нервы.

Типичный путь: начинаете с одного сервиса, добавляете второй, третий. К шестому понимаете, что у вас homelab с десятью контейнерами и Ansible-плейбуком на 200 строк. Это нормально — многие так и пришли в DevOps.
