> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skye-bot.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Свой сервер

> Запустите Skye на компьютере, которым управляете, от начала до конца.

Skye можно развернуть у себя. Запустите её на своей машине и держите включённой; она отвечает, только пока работает. Это страница для оператора, поэтому она техничнее остальной документации.

## Что понадобится

* Машина, которая не выключается, с **Docker** и **Docker Compose**.
* **Токен бота Telegram** от [@BotFather](https://t.me/BotFather).
* Модельный эндпоинт с OpenAI API. Подойдёт любой OpenAI-совместимый адрес, например OpenAI или OpenRouter.
* Ваш **Telegram user id** как владельца. Его подскажет бот вроде `@userinfobot`.

## Установка

<Steps>
  <Step title="Создайте бота">
    Напишите [@BotFather](https://t.me/BotFather) и скопируйте токен. Не вставляйте секреты в чат.
  </Step>

  <Step title="Скопируйте проект">
    Клонируйте [skye-next](https://github.com/evvyraine/skye-next) и перейдите в папку.
  </Step>

  <Step title="Настройте">
    Скопируйте `.env.example` в `.env` и заполните как минимум обязательные значения ниже.
  </Step>

  <Step title="Запустите">
    Выполните `docker compose up -d`. Логи — `docker compose logs -f`.
  </Step>

  <Step title="Обновляйте">
    Заберите свежий код и выполните `docker compose up -d --build`.
  </Step>
</Steps>

## Обязательные настройки

| Переменная | Что это |
| - | - |
| `TELEGRAM_BOT_TOKEN` | Токен от BotFather. |
| `SKYE_OWNER_IDS` | Ваш Telegram user id. Через запятую — если владельцев несколько. Владелец допущен всегда. |
| `SKYE_PROVIDER_API_KEY` | Ключ модельного провайдера. |
| `SKYE_PROVIDER_BASE_URL` | Корень API, например `https://openrouter.ai/api/v1`. |
| `OPENAI_API_KEY` | Устаревший синоним, используется только если значения выше не заданы. |

Нужен хотя бы один ключ провайдера. Если задан ключ OpenRouter без явного базового адреса, берётся `https://openrouter.ai/api/v1`.

## Модели

Skye не привязана к провайдеру. Каждая роль — это модель, доступная у вашего провайдера.

| Переменная | Роль | Пример |
| - | - | - |
| `SKYE_DEFAULT_MODEL` | Чат и рассуждения. | `deepseek/deepseek-v4.1-flash` |
| `SKYE_IMAGE_MODEL` | Генерация и редактирование изображений. | `microsoft/mai-image-2.6` |
| `SKYE_SPEECH_MODEL` | Голосовые ответы. | `google/gemini-3.1-flash-tts-preview` |
| `SKYE_TRANSCRIPTION_MODEL` | Расшифровка голосовых. | `nvidia/parakeet-tdt-0.6b-v3` |
| `SKYE_SPEECH_VOICE` | Голос для озвучки. | `Aoede` |

<Note>
  Если провайдер не принимает аудио или файлы, кроме PDF, оставьте `SKYE_NATIVE_MEDIA=false` (значение по умолчанию). Тогда Skye сама расшифровывает аудио и извлекает текст локально — это работает с текстово-визуальными моделями вроде DeepSeek V4.
</Note>

## Веб-чат

Браузерное приложение необязательно и выключено, пока не настроено.

| Переменная | Что это |
| - | - |
| `SKYE_WEB_ORIGIN` | Публичный адрес, например `https://chat.skye-bot.com`. |
| `TELEGRAM_LOGIN_CLIENT_ID` | Client id виджета входа от BotFather. |
| `TELEGRAM_LOGIN_CLIENT_SECRET` | Секрет виджета входа. |
| `SKYE_WEB_FILES_PATH` | Где хранятся загруженные и созданные файлы. |

Контейнер слушает `SKYE_WEB_HOST`:`SKYE_WEB_PORT` (по умолчанию `127.0.0.1:8080`). Для TLS поставьте впереди обратный прокси.

## Рабочее пространство с кодом

Песочница для shell и Python выключена по умолчанию.

| Переменная | Что делает |
| - | - |
| `SKYE_SANDBOX_ENABLED` | Включает рабочее пространство. |
| `SKYE_SANDBOX_IMAGE` | Образ для контейнеров команд (по умолчанию `python:3.14-slim`). |
| `SKYE_SANDBOX_ALLOW_NETWORK` | Разрешает командам выходить в интернет. |
| `SKYE_SANDBOX_TTL_SECONDS` | Удалить простаивающее пространство через это время (по умолчанию 7 дней). |
| `SKYE_SANDBOX_SCOPE_BYTES` | Лимит размера на одно пространство (по умолчанию 1 ГиБ). |
| `SKYE_SANDBOX_TOTAL_BYTES` | Общий лимит по всем пространствам (по умолчанию 20 ГиБ). |
| `SKYE_SANDBOX_MAX_CONCURRENT` | Сколько команд выполняется одновременно. |

Контейнеру бота нужен доступ к Docker-сокету хоста; в поставляемом `compose.yaml` он смонтирован. Команды идут в одноразовых контейнерах не от root и без доступа к хосту. Подробнее — в разделе [Как устроена Skye](/ru/under-the-hood).

## Контроль доступа

Для групп доступ закрыт по умолчанию.

* Личные чаты открыты всем, кроме забаненных.
* Владелец допущен всегда.
* Группа допущена, если она в списке разрешённых или если у кого-то из админов есть Skye Plus (или доступ без оплаты).
* В личном чате `/admin` позволяет разрешать или банить людей и группы.

## Где лежат данные

Настройки, память, навыки, агенты, автоматизации и веб-проекты лежат в локальной базе SQLite (`SKYE_DATABASE_PATH`). Веб-файлы — в `SKYE_WEB_FILES_PATH`. Рабочие пространства — на Docker-томе `skye-sandbox-work`. Резервируйте базу и эти пути вместе.

## Безопасные значения по умолчанию

Держите `.env` вне системы контроля версий, открывайте веб-порт только через прокси и не включайте сеть песочницы, пока задача действительно её не требует.
