2026-04-19 00:55:59 +03:00
2026-04-19 00:55:59 +03:00

🖥️ TrueNAS SCALE AI Workspace

code-server + OmniRoute + Claude Code — полноценное AI-окружение разработчика прямо в браузере, развёрнутое на домашнем сервере TrueNAS SCALE.


📋 Содержание

  1. О проекте
  2. Архитектура стека
  3. Требования
  4. Подготовка системы
  5. Развёртывание контейнеров
  6. Установка Claude Code
  7. Настройка OmniRoute + Kiro AI
  8. Решение проблемы Ambiguous model
  9. Удобные алиасы
  10. Полезные команды Claude Code
  11. Устранение неполадок

О проекте

Этот проект предоставляет готовую конфигурацию для развёртывания AI-окружения на TrueNAS SCALE 24.x (Electric Eel) и новее.

Что получите в итоге:

  • 🌐 VS Code в браузере (code-server) на порту 18443
  • 🔀 Единый API-шлюз OmniRoute для управления ключами на порту 20128
  • 🤖 Claude Code CLI, работающий через локальный прокси (без прямых трат на Anthropic API)
  • 💾 Доступ к файлам всех приложений прямо из редактора

Архитектура стека

Браузер
  │
  ▼
code-server (VS Code) :18443
  │  терминал
  ▼
Claude Code CLI
  │  ANTHROPIC_BASE_URL
  ▼
OmniRoute (локальный шлюз) :20128
  │  model mapping
  ▼
Kiro AI / Anthropic API

Требования

Компонент Версия
TrueNAS SCALE Electric Eel 24.x+
Docker (встроенный) любая
Пул хранилища /mnt/ssd (замените на свой)
UID пользователя apps 568

1. Подготовка системы (Shell TrueNAS)

⚠️ Критично: Выполняйте из Shell TrueNAS, а не из контейнера. Права 568:568 обязательны — без них контейнеры не смогут писать в тома.

# Создание директорий на пуле хранилища
mkdir -p /mnt/ssd/apps/vscode/config \
         /mnt/ssd/apps/vscode/workspace \
         /mnt/ssd/apps/omniroute

# Настройка прав доступа (рекурсивно)
chown -R 568:568 /mnt/ssd/apps
chmod -R 775 /mnt/ssd/apps

2. Развёртывание (Custom App / Docker Compose)

Используйте этот YAML при создании Custom App в интерфейсе TrueNAS SCALE:

services:

  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    environment:
      - PUID=568
      - PGID=568
      - TZ=Europe/Moscow
      - PASSWORD=your_password_here       # Пароль для входа в VS Code
    volumes:
      - /mnt/ssd/apps/vscode/config:/config
      - /mnt/ssd/apps/vscode/workspace:/config/workspace
      - /mnt/ssd/apps:/mnt/ssd/apps       # Доступ к конфигам других приложений
    ports:
      - 18443:8443
    restart: unless-stopped

  omniroute:
    image: diegosouzapw/omniroute:latest
    container_name: omniroute
    environment:
      - PUID=568
      - PGID=568
      - PORT=20128
      - GEMINI_OAUTH_CLIENT_SECRET=not_used   # Заглушка (если не используете Gemini)
      - GEMINI_OAUTH_CLIENT_ID=not_used
    volumes:
      - /mnt/ssd/apps/omniroute:/app/data
    ports:
      - 20128:20128
    restart: unless-stopped

3. Установка Claude Code

💡 Используем docker exec -u 0 для установки от root — это надёжнее, чем sudo внутри контейнера.

Выполните из Shell TrueNAS (не из терминала VS Code):

# Установка Node.js и Claude Code
docker exec -u 0 -it code-server bash -c \
  "apt update && apt install -y nodejs npm && npm install -g @anthropic-ai/claude-code"

# Настройка PATH и прокси OmniRoute
docker exec -u 0 -it code-server bash -c \
  "echo 'export PATH=\$PATH:/usr/local/bin' >> /config/.bashrc"

docker exec -u 0 -it code-server bash -c \
  "echo 'export ANTHROPIC_BASE_URL=\"http://192.168.31.100:20128/v1\"' >> /config/.bashrc"

# Создание системной ссылки (чтобы claude был доступен для всех пользователей)
docker exec -u 0 -it code-server \
  ln -s /usr/local/bin/claude /usr/bin/claude

Затем в терминале VS Code примените настройки:

source /config/.bashrc
claude   # запуск агента

4. Настройка OmniRoute + Kiro AI

  1. Откройте OmniRoute Dashboard: http://<IP_ВАШЕГО_СЕРВЕРА>:20128

  2. Перейдите в раздел Providers → добавьте провайдера Kiro AI (тип: Custom OpenAI)

  3. Укажите Base URL и API-ключ из вашего кабинета Kiro

  4. В настройках провайдера добавьте Model Mapping:

    Inbound (что запрашивает Claude) Outbound (имя в Kiro)
    claude-sonnet-4-6 claude-sonnet-4.5
    claude-haiku-4-5 claude-haiku-4.5
  5. Установите Kiro как провайдера по умолчанию для семейства Claude


5. Решение проблемы "Ambiguous model"

Симптом

API Error: 400 {"error":{"message":"Ambiguous model 'claude-sonnet-4-6'.
Use provider/model prefix (ex: cc/claude-sonnet-4-6 or antigravity/claude-sonnet-4-6)."}}

Причина

OmniRoute видит несколько провайдеров для одной модели и не знает, какой выбрать.

Решение A — Быстрое (разово, через флаг)

claude --model kr/claude-sonnet-4-6
# или
claude --model kiro/claude-sonnet-4-6
# (используйте тот префикс, который вы задали провайдеру в Dashboard)

Решение B — Постоянное (через Dashboard OmniRoute)

  1. http://<IP>:20128 → Providers → Kiro AI
  2. Раздел Model Mapping → добавить правило (см. таблицу выше)
  3. Установить Kiro как Default для Claude-моделей

Решение C — Через алиас в .bashrc

echo "alias claude='claude --model kr/claude-sonnet-4.5'" >> /config/.bashrc
source /config/.bashrc

6. Удобные алиасы

Добавьте в терминале VS Code:

cat >> /config/.bashrc << 'EOF'

# Claude Code — быстрое переключение моделей
alias c4s='claude --model kr/claude-sonnet-4.5'   # Мощная модель (Sonnet)
alias c4h='claude --model kr/claude-haiku-4.5'    # Быстрая модель (Haiku)
alias c='claude --model kr/claude-sonnet-4.5'     # Краткий алиас
EOF

source /config/.bashrc

Использование:

c4s   # запустить Claude Sonnet (сложные задачи)
c4h   # запустить Claude Haiku (быстрые вопросы)

7. Полезные команды Claude Code

Команда Описание
/init Индексация текущего проекта
/terminal-setup Оптимизация горячих клавиш терминала
/help Список всех команд
Shift+Enter Перенос строки в промпте
Esc Прерывание выполнения
exit Выход из агента

8. Устранение неполадок

Claude не находит API

# Проверьте переменную окружения
echo $ANTHROPIC_BASE_URL
# Должно быть: http://192.168.31.100:20128/v1

# Если пусто — примените профиль
source /config/.bashrc

Проверка логов OmniRoute

# Из Shell TrueNAS
docker logs omniroute -f --tail=50

Или через Dashboard: http://<IP>:20128 → вкладка Logs.

Права доступа к файлам

# Из Shell TrueNAS — сброс прав если что-то пошло не так
chown -R 568:568 /mnt/ssd/apps
chmod -R 775 /mnt/ssd/apps

Переустановка Claude Code

docker exec -u 0 -it code-server bash -c \
  "npm uninstall -g @anthropic-ai/claude-code && npm install -g @anthropic-ai/claude-code"

Авторы

Проект подготовлен Анатолием на основе реального опыта развёртывания.
Публикуется для сообщества разработчиков на TrueNAS SCALE.


💬 Нашли ошибку или есть улучшение? Открывайте Issue или Pull Request!

S
Description
No description provided
Readme 33 KiB
Languages
Markdown 100%