Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
| vm:claudeapi:01-install_docker [2025/11/25 16:27] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | vm:claudeapi:01-install_docker [2025/11/25 16:27] (текущий) – ↷ Имя страницы vm:claudeapi:01-install изменено на vm:claudeapi:01-install_docker admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Установка Claude API в Docker с Nginx Proxy Manager ====== | ||
| + | ===== Содержание ===== | ||
| + | |||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | * [[# | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 1. Создание структуры директорий ===== | ||
| + | |||
| + | <code bash> | ||
| + | # Создать основную директорию | ||
| + | sudo mkdir -p / | ||
| + | |||
| + | # Создать поддиректории | ||
| + | sudo mkdir -p / | ||
| + | |||
| + | # Установить права доступа | ||
| + | sudo chown -R $USER:$USER / | ||
| + | chmod -R 755 / | ||
| + | </ | ||
| + | |||
| + | Итоговая структура директорий: | ||
| + | < | ||
| + | / | ||
| + | ├── app/ # Исходный код приложения | ||
| + | ├── logs/ # Логи контейнера | ||
| + | ├── data/ # Данные приложения | ||
| + | ├── credentials/ | ||
| + | ├── scripts/ | ||
| + | ├── .env # Переменные окружения | ||
| + | ├── Dockerfile | ||
| + | └── docker-compose.yml | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 2. Создание необходимых файлов ===== | ||
| + | |||
| + | ==== 2.1 Клонирование репозитория ==== | ||
| + | |||
| + | <code bash> | ||
| + | cd / | ||
| + | git clone https:// | ||
| + | </ | ||
| + | |||
| + | Если git не установлен: | ||
| + | |||
| + | ==== 2.2 Создание Dockerfile ==== | ||
| + | |||
| + | **Шаг 1: Откройте редактор nano** | ||
| + | |||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | |||
| + | **Шаг 2: Скопируйте содержимое** | ||
| + | |||
| + | Для вставки в nano используйте '' | ||
| + | |||
| + | <code dockerfile> | ||
| + | FROM python: | ||
| + | |||
| + | # Установка системных зависимостей | ||
| + | RUN apt-get update && apt-get install -y \ | ||
| + | curl \ | ||
| + | git \ | ||
| + | nodejs \ | ||
| + | npm \ | ||
| + | && rm -rf / | ||
| + | |||
| + | # Установка Claude CLI | ||
| + | RUN npm install -g @anthropic-ai/ | ||
| + | |||
| + | # Создание рабочей директории | ||
| + | WORKDIR /app | ||
| + | |||
| + | # Копирование requirements | ||
| + | COPY app/ | ||
| + | |||
| + | # Установка Python зависимостей | ||
| + | RUN pip install --no-cache-dir -r requirements.txt | ||
| + | |||
| + | # Копирование приложения | ||
| + | COPY app/ . | ||
| + | |||
| + | # Создание директории для credentials | ||
| + | RUN mkdir -p / | ||
| + | |||
| + | # Открытие порта | ||
| + | EXPOSE 8001 | ||
| + | |||
| + | # Healthcheck | ||
| + | HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ | ||
| + | CMD curl -f http:// | ||
| + | |||
| + | # Запуск приложения | ||
| + | CMD [" | ||
| + | </ | ||
| + | |||
| + | **Шаг 3: Сохраните файл** | ||
| + | * Нажмите '' | ||
| + | * Нажмите '' | ||
| + | * Нажмите '' | ||
| + | |||
| + | ==== 2.3 Создание docker-compose.yml ==== | ||
| + | |||
| + | **Шаг 1: Откройте редактор** | ||
| + | |||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | |||
| + | **Шаг 2: Вставьте содержимое** | ||
| + | |||
| + | **ВАЖНО: | ||
| + | |||
| + | <code yaml> | ||
| + | version: ' | ||
| + | |||
| + | services: | ||
| + | claude-api: | ||
| + | build: . | ||
| + | container_name: | ||
| + | restart: unless-stopped | ||
| + | # Порт НЕ пробрасывается наружу - доступ только через NPM | ||
| + | expose: | ||
| + | - " | ||
| + | environment: | ||
| + | - PORT=8001 | ||
| + | - HOST=0.0.0.0 | ||
| + | - CLAUDE_TIMEOUT_SECONDS=300 | ||
| + | - CLAUDE_MAX_TURNS=50 | ||
| + | env_file: | ||
| + | - .env | ||
| + | volumes: | ||
| + | - ./ | ||
| + | - ./ | ||
| + | - ./ | ||
| + | networks: | ||
| + | - webproxy | ||
| + | logging: | ||
| + | driver: " | ||
| + | options: | ||
| + | max-size: " | ||
| + | max-file: " | ||
| + | |||
| + | networks: | ||
| + | webproxy: | ||
| + | external: true | ||
| + | </ | ||
| + | |||
| + | **Шаг 3: Сохраните файл** ('' | ||
| + | |||
| + | ==== 2.4 Создание .env файла ==== | ||
| + | |||
| + | **Шаг 1: Сгенерируйте безопасный API ключ** | ||
| + | |||
| + | <code bash> | ||
| + | # Вариант 1: через openssl | ||
| + | openssl rand -hex 32 | ||
| + | |||
| + | # Вариант 2: через Python | ||
| + | python3 -c " | ||
| + | </ | ||
| + | |||
| + | Скопируйте полученный ключ. | ||
| + | |||
| + | **Шаг 2: Создайте файл .env** | ||
| + | |||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | |||
| + | **Шаг 3: Вставьте конфигурацию** | ||
| + | |||
| + | <code bash> | ||
| + | # API ключ для HTTP запросов (используйте сгенерированный ключ!) | ||
| + | CLAUDE_API_KEY=ВСТАВЬТЕ_ВАШ_СГЕНЕРИРОВАННЫЙ_КЛЮЧ_СЮДА | ||
| + | |||
| + | # Anthropic API Key (если используете API вместо локальной подписки) | ||
| + | # ANTHROPIC_API_KEY=sk-ant-your-anthropic-api-key-here | ||
| + | |||
| + | # Настройки сервера | ||
| + | PORT=8001 | ||
| + | HOST=0.0.0.0 | ||
| + | |||
| + | # Настройки Claude | ||
| + | CLAUDE_TIMEOUT_SECONDS=300 | ||
| + | CLAUDE_MAX_TURNS=50 | ||
| + | |||
| + | # Режим работы | ||
| + | ENVIRONMENT=production | ||
| + | |||
| + | # Логирование | ||
| + | LOG_LEVEL=INFO | ||
| + | </ | ||
| + | |||
| + | **Шаг 4: Сохраните файл** ('' | ||
| + | |||
| + | **Шаг 5: Установите правильные права доступа** | ||
| + | |||
| + | <code bash> | ||
| + | chmod 600 / | ||
| + | </ | ||
| + | |||
| + | **КРИТИЧЕСКИ ВАЖНО: | ||
| + | |||
| + | ==== 2.5 Создание скрипта управления с меню ==== | ||
| + | |||
| + | **Создайте единый скрипт управления: | ||
| + | |||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | |||
| + | **Вставьте содержимое: | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | # Цвета для вывода | ||
| + | RED=' | ||
| + | GREEN=' | ||
| + | YELLOW=' | ||
| + | BLUE=' | ||
| + | NC=' | ||
| + | |||
| + | # Директория проекта | ||
| + | PROJECT_DIR="/ | ||
| + | |||
| + | # Функция отображения меню | ||
| + | show_menu() { | ||
| + | clear | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | # Функция запуска контейнера | ||
| + | start_container() { | ||
| + | echo -e " | ||
| + | cd " | ||
| + | docker compose up -d | ||
| + | if [ $? -eq 0 ]; then | ||
| + | echo -e " | ||
| + | else | ||
| + | echo -e " | ||
| + | fi | ||
| + | read -p " | ||
| + | } | ||
| + | |||
| + | # Функция остановки контейнера | ||
| + | stop_container() { | ||
| + | echo -e " | ||
| + | cd " | ||
| + | docker compose down | ||
| + | if [ $? -eq 0 ]; then | ||
| + | echo -e " | ||
| + | else | ||
| + | echo -e " | ||
| + | fi | ||
| + | read -p " | ||
| + | } | ||
| + | |||
| + | # Функция перезапуска контейнера | ||
| + | restart_container() { | ||
| + | echo -e " | ||
| + | cd " | ||
| + | docker compose restart | ||
| + | if [ $? -eq 0 ]; then | ||
| + | echo -e " | ||
| + | else | ||
| + | echo -e " | ||
| + | fi | ||
| + | read -p " | ||
| + | } | ||
| + | |||
| + | # Функция просмотра логов | ||
| + | view_logs() { | ||
| + | echo -e " | ||
| + | sleep 2 | ||
| + | cd " | ||
| + | docker compose logs -f --tail=100 | ||
| + | } | ||
| + | |||
| + | # Функция проверки статуса | ||
| + | check_status() { | ||
| + | echo -e " | ||
| + | cd " | ||
| + | docker compose ps | ||
| + | echo "" | ||
| + | read -p " | ||
| + | } | ||
| + | |||
| + | # Функция пересборки контейнера | ||
| + | rebuild_container() { | ||
| + | echo -e " | ||
| + | read -p "Вы уверены? | ||
| + | if [[ $confirm == [yY] ]]; then | ||
| + | cd " | ||
| + | echo -e " | ||
| + | docker compose down | ||
| + | echo -e " | ||
| + | docker compose build --no-cache | ||
| + | echo -e " | ||
| + | docker compose up -d | ||
| + | if [ $? -eq 0 ]; then | ||
| + | echo -e " | ||
| + | else | ||
| + | echo -e " | ||
| + | fi | ||
| + | else | ||
| + | echo -e " | ||
| + | fi | ||
| + | read -p " | ||
| + | } | ||
| + | |||
| + | # Функция проверки здоровья | ||
| + | health_check() { | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | | ||
| + | # Проверка через docker | ||
| + | echo -e " | ||
| + | docker exec claudeapi curl -s http:// | ||
| + | docker exec claudeapi curl -s http:// | ||
| + | echo "" | ||
| + | | ||
| + | # Проверка через внешний URL | ||
| + | echo -e " | ||
| + | curl -s https:// | ||
| + | curl -s https:// | ||
| + | echo "" | ||
| + | | ||
| + | read -p " | ||
| + | } | ||
| + | |||
| + | # Функция мониторинга ресурсов | ||
| + | monitor_resources() { | ||
| + | echo -e " | ||
| + | echo "" | ||
| + | sleep 2 | ||
| + | docker stats claudeapi | ||
| + | } | ||
| + | |||
| + | # Основной цикл | ||
| + | while true; do | ||
| + | show_menu | ||
| + | read -p " | ||
| + | | ||
| + | case $choice in | ||
| + | 1) start_container ;; | ||
| + | 2) stop_container ;; | ||
| + | 3) restart_container ;; | ||
| + | 4) view_logs ;; | ||
| + | 5) check_status ;; | ||
| + | 6) rebuild_container ;; | ||
| + | 7) health_check ;; | ||
| + | 8) monitor_resources ;; | ||
| + | 0) | ||
| + | echo -e " | ||
| + | exit 0 | ||
| + | ;; | ||
| + | *) | ||
| + | echo -e " | ||
| + | sleep 2 | ||
| + | ;; | ||
| + | esac | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | **Сохраните файл** ('' | ||
| + | |||
| + | **Сделайте скрипт исполняемым: | ||
| + | |||
| + | <code bash> | ||
| + | chmod +x / | ||
| + | </ | ||
| + | |||
| + | **Запуск скрипта управления: | ||
| + | |||
| + | <code bash> | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Или создайте алиас для удобства: | ||
| + | |||
| + | <code bash> | ||
| + | echo "alias claude-manage='/ | ||
| + | source ~/.bashrc | ||
| + | |||
| + | # Теперь можно запускать просто: | ||
| + | claude-manage | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 3. Настройка аутентификации Claude ===== | ||
| + | |||
| + | У вас есть **три варианта** аутентификации: | ||
| + | |||
| + | ==== Вариант A: Anthropic API Key (рекомендуется) ==== | ||
| + | |||
| + | - Зарегистрируйтесь на https:// | ||
| + | - Создайте новый API ключ | ||
| + | - Откройте файл .env: | ||
| + | |||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | |||
| + | - Раскомментируйте и добавьте ваш ключ: | ||
| + | |||
| + | <code bash> | ||
| + | ANTHROPIC_API_KEY=sk-ant-ваш-ключ-здесь | ||
| + | </ | ||
| + | |||
| + | - Сохраните файл ('' | ||
| + | |||
| + | ==== Вариант B: Локальная подписка (бесплатно) ==== | ||
| + | |||
| + | **Шаг 1: Установите Claude CLI на хосте** | ||
| + | |||
| + | <code bash> | ||
| + | npm install -g @anthropic-ai/ | ||
| + | </ | ||
| + | |||
| + | **Шаг 2: Авторизуйтесь** | ||
| + | |||
| + | <code bash> | ||
| + | claude | ||
| + | </ | ||
| + | |||
| + | В интерактивном режиме выполните: | ||
| + | < | ||
| + | /login | ||
| + | </ | ||
| + | |||
| + | Следуйте инструкциям в браузере для входа. | ||
| + | |||
| + | **Шаг 3: Скопируйте credentials** | ||
| + | |||
| + | <code bash> | ||
| + | # Проверьте наличие файла | ||
| + | ls -la ~/ | ||
| + | |||
| + | # Скопируйте его в директорию контейнера | ||
| + | cp ~/ | ||
| + | |||
| + | # Установите правильные права | ||
| + | chmod 600 / | ||
| + | </ | ||
| + | |||
| + | ==== Вариант C: Аутентификация внутри контейнера ==== | ||
| + | |||
| + | После запуска контейнера: | ||
| + | |||
| + | <code bash> | ||
| + | docker exec -it claudeapi bash | ||
| + | claude | ||
| + | </ | ||
| + | |||
| + | Внутри Claude CLI выполните ''/ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 4. Сборка и запуск ===== | ||
| + | |||
| + | ==== 4.1 Проверка конфигурации ==== | ||
| + | |||
| + | <code bash> | ||
| + | cd / | ||
| + | docker compose config | ||
| + | </ | ||
| + | |||
| + | Эта команда проверит правильность вашего docker-compose.yml | ||
| + | |||
| + | ==== 4.2 Сборка образа ==== | ||
| + | |||
| + | <code bash> | ||
| + | docker compose build | ||
| + | </ | ||
| + | |||
| + | Примечание: | ||
| + | |||
| + | ==== 4.3 Запуск контейнера ==== | ||
| + | |||
| + | <code bash> | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | Флаг '' | ||
| + | |||
| + | ==== 4.4 Проверка статуса ==== | ||
| + | |||
| + | <code bash> | ||
| + | docker compose ps | ||
| + | </ | ||
| + | |||
| + | Ожидаемый вывод: | ||
| + | < | ||
| + | Name Command | ||
| + | -------------------------------------------------------- | ||
| + | claudeapi | ||
| + | </ | ||
| + | |||
| + | ==== 4.5 Просмотр логов ==== | ||
| + | |||
| + | <code bash> | ||
| + | docker compose logs -f | ||
| + | </ | ||
| + | |||
| + | Для выхода из просмотра логов нажмите '' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 5. Тестирование ===== | ||
| + | |||
| + | ==== 5.1 Health Check ==== | ||
| + | |||
| + | **Локальный (внутри Docker):** | ||
| + | |||
| + | <code bash> | ||
| + | docker exec claudeapi curl http:// | ||
| + | </ | ||
| + | |||
| + | **Через Nginx Proxy Manager:** | ||
| + | |||
| + | <code bash> | ||
| + | curl https:// | ||
| + | </ | ||
| + | |||
| + | ==== 5.2 Получение API ключа ==== | ||
| + | |||
| + | <code bash> | ||
| + | API_KEY=$(grep CLAUDE_API_KEY / | ||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | ==== 5.3 Тестовый запрос ==== | ||
| + | |||
| + | <code bash> | ||
| + | curl -X POST https:// | ||
| + | -H " | ||
| + | -H " | ||
| + | -d '{ | ||
| + | " | ||
| + | " | ||
| + | }' | ||
| + | </ | ||
| + | |||
| + | Ожидаемый ответ: | ||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== 5.4 Тест продолжения сессии ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Используйте session_id из предыдущего ответа | ||
| + | SESSION_ID=" | ||
| + | |||
| + | curl -X POST https:// | ||
| + | -H " | ||
| + | -H " | ||
| + | -d "{ | ||
| + | \" | ||
| + | \" | ||
| + | \" | ||
| + | }" | ||
| + | </ | ||
| + | |||
| + | ==== 5.5 Красивый вывод с jq ==== | ||
| + | |||
| + | Установите jq для форматированного JSON: | ||
| + | |||
| + | <code bash> | ||
| + | sudo apt install jq | ||
| + | </ | ||
| + | |||
| + | Используйте с curl: | ||
| + | |||
| + | <code bash> | ||
| + | curl -X POST https:// | ||
| + | -H " | ||
| + | -H " | ||
| + | -d ' | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 5. Управление контейнером ===== | ||
| + | |||
| + | ==== 6.1 Использование скрипта управления ==== | ||
| + | |||
| + | Запустите интерактивное меню управления: | ||
| + | |||
| + | <code bash> | ||
| + | / | ||
| + | # или если создали алиас: | ||
| + | claude-manage | ||
| + | </ | ||
| + | |||
| + | Меню предоставляет следующие опции: | ||
| + | |||
| + | * **1** - Запустить контейнер | ||
| + | * **2** - Остановить контейнер | ||
| + | * **3** - Перезапустить контейнер | ||
| + | * **4** - Просмотр логов | ||
| + | * **5** - Статус контейнера | ||
| + | * **6** - Пересборка контейнера | ||
| + | * **7** - Проверка здоровья (Health Check) | ||
| + | * **8** - Мониторинг ресурсов | ||
| + | * **0** - Выход | ||
| + | |||
| + | ==== 6.2 Команды Docker Compose (ручное управление) ==== | ||
| + | |||
| + | Если предпочитаете использовать команды напрямую: | ||
| + | |||
| + | <code bash> | ||
| + | # Перейти в директорию проекта | ||
| + | cd / | ||
| + | |||
| + | # Запустить контейнер | ||
| + | docker compose up -d | ||
| + | |||
| + | # Остановить контейнер | ||
| + | docker compose down | ||
| + | |||
| + | # Перезапустить контейнер | ||
| + | docker compose restart | ||
| + | |||
| + | # Просмотр логов в реальном времени | ||
| + | docker compose logs -f | ||
| + | |||
| + | # Просмотр последних 50 строк логов | ||
| + | docker compose logs --tail=50 | ||
| + | |||
| + | # Просмотр статуса | ||
| + | docker compose ps | ||
| + | |||
| + | # Войти в контейнер | ||
| + | docker exec -it claudeapi bash | ||
| + | |||
| + | # Удалить контейнер с volumes | ||
| + | docker compose down -v | ||
| + | </ | ||
| + | |||
| + | ===== 7. Мониторинг и безопасность ===== | ||
| + | |||
| + | ==== 7.1 Скрипт мониторинга ==== | ||
| + | |||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | echo "=== Claude API Monitoring ===" | ||
| + | echo "" | ||
| + | echo " | ||
| + | docker ps --filter name=claudeapi --format "table {{.Names}}\t{{.Status}}\t{{.Size}}" | ||
| + | echo "" | ||
| + | echo " | ||
| + | curl -s https:// | ||
| + | echo "" | ||
| + | echo " | ||
| + | docker stats claudeapi --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}" | ||
| + | echo "" | ||
| + | echo " | ||
| + | docker logs claudeapi --tail 20 | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | chmod +x / | ||
| + | </ | ||
| + | |||
| + | **Запуск: | ||
| + | |||
| + | <code bash> | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ==== 7.2 Создание backup ==== | ||
| + | |||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | BACKUP_DIR="/ | ||
| + | DATE=$(date +%Y%m%d_%H%M%S) | ||
| + | |||
| + | mkdir -p " | ||
| + | |||
| + | tar -czf " | ||
| + | -C / | ||
| + | .env \ | ||
| + | docker-compose.yml \ | ||
| + | Dockerfile \ | ||
| + | credentials/ | ||
| + | data/ | ||
| + | |||
| + | echo " | ||
| + | |||
| + | # Удалить старые backup (старше 30 дней) | ||
| + | find " | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | chmod +x / | ||
| + | </ | ||
| + | |||
| + | **Автоматический backup (cron):** | ||
| + | |||
| + | <code bash> | ||
| + | crontab -e | ||
| + | # Добавьте строку: | ||
| + | 0 3 * * * / | ||
| + | </ | ||
| + | |||
| + | ==== 7.3 Рекомендации по безопасности ==== | ||
| + | |||
| + | * ✅ Используйте сложный API ключ (32+ символов) | ||
| + | * ✅ Ограничьте доступ по IP в NPM (если возможно) | ||
| + | * ✅ Регулярно обновляйте Docker образ | ||
| + | * ✅ Создавайте backup конфигурации | ||
| + | * ✅ Мониторьте логи на подозрительную активность | ||
| + | * ✅ Используйте HTTPS (через NPM) | ||
| + | * ✅ Ограничьте права доступа к файлам | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 7. Быстрая справка команд ===== | ||
| + | |||
| + | ==== Интерактивное меню ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Запуск меню управления | ||
| + | / | ||
| + | |||
| + | # Или через алиас | ||
| + | claude-manage | ||
| + | </ | ||
| + | |||
| + | ==== Основные команды Docker Compose ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Перейти в директорию | ||
| + | cd / | ||
| + | |||
| + | # Запуск | ||
| + | docker compose up -d | ||
| + | |||
| + | # Остановка | ||
| + | docker compose down | ||
| + | |||
| + | # Перезапуск | ||
| + | docker compose restart | ||
| + | |||
| + | # Логи | ||
| + | docker compose logs -f | ||
| + | |||
| + | # Статус | ||
| + | docker compose ps | ||
| + | |||
| + | # Вход в контейнер | ||
| + | docker exec -it claudeapi bash | ||
| + | |||
| + | # Health check | ||
| + | curl https:// | ||
| + | |||
| + | # Пересборка | ||
| + | docker compose build --no-cache && docker compose up -d | ||
| + | </ | ||
| + | |||
| + | ==== Полезные алиасы для ~/.bashrc ==== | ||
| + | |||
| + | <code bash> | ||
| + | nano ~/.bashrc | ||
| + | </ | ||
| + | |||
| + | Добавьте в конец файла: | ||
| + | |||
| + | <code bash> | ||
| + | # Claude API shortcuts | ||
| + | alias claude-manage='/ | ||
| + | alias claude-start=' | ||
| + | alias claude-stop=' | ||
| + | alias claude-restart=' | ||
| + | alias claude-logs=' | ||
| + | alias claude-status=' | ||
| + | </ | ||
| + | |||
| + | Применить изменения: | ||
| + | |||
| + | <code bash> | ||
| + | source ~/.bashrc | ||
| + | </ | ||
| + | |||
| + | Теперь можно использовать: | ||
| + | |||
| + | <code bash> | ||
| + | claude-manage | ||
| + | claude-start | ||
| + | claude-logs | ||
| + | claude-status | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 8. Примеры интеграции ===== | ||
| + | |||
| + | ==== Python ==== | ||
| + | |||
| + | <code python> | ||
| + | import requests | ||
| + | |||
| + | API_URL = " | ||
| + | API_KEY = " | ||
| + | |||
| + | def ask_claude(prompt, | ||
| + | headers = { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | | ||
| + | data = {" | ||
| + | if session_id: | ||
| + | data[" | ||
| + | | ||
| + | response = requests.post(API_URL, | ||
| + | return response.json() | ||
| + | |||
| + | # Использование | ||
| + | result = ask_claude(" | ||
| + | print(result[' | ||
| + | </ | ||
| + | |||
| + | ==== Java ==== | ||
| + | |||
| + | <code java> | ||
| + | import java.net.http.*; | ||
| + | import java.net.URI; | ||
| + | |||
| + | public class ClaudeClient { | ||
| + | private static final String API_URL = " | ||
| + | private static final String API_KEY = " | ||
| + | | ||
| + | public static void main(String[] args) throws Exception { | ||
| + | HttpClient client = HttpClient.newHttpClient(); | ||
| + | | ||
| + | String json = " | ||
| + | | ||
| + | HttpRequest request = HttpRequest.newBuilder() | ||
| + | .uri(URI.create(API_URL)) | ||
| + | .header(" | ||
| + | .header(" | ||
| + | .POST(HttpRequest.BodyPublishers.ofString(json)) | ||
| + | .build(); | ||
| + | | ||
| + | HttpResponse< | ||
| + | request, | ||
| + | HttpResponse.BodyHandlers.ofString() | ||
| + | ); | ||
| + | | ||
| + | System.out.println(response.body()); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Bash ==== | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | API_URL=" | ||
| + | API_KEY=" | ||
| + | |||
| + | curl -X POST " | ||
| + | -H " | ||
| + | -H " | ||
| + | -d ' | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Заключение ===== | ||
| + | |||
| + | Теперь у вас есть полностью работающий Claude API: | ||
| + | |||
| + | ✅ Доступен по адресу: | ||
| + | ✅ Защищён SSL сертификатом \\ | ||
| + | ✅ Интегрирован с Nginx Proxy Manager \\ | ||
| + | ✅ Работает в Docker контейнере \\ | ||
| + | ✅ Имеет автозапуск при загрузке системы \\ | ||
| + | ✅ Настроен мониторинг и backup | ||
| + | |||
| + | ==== Что дальше? | ||
| + | |||
| + | - Интегрируйте API в свои приложения | ||
| + | - Настройте регулярный backup | ||
| + | - Мониторьте использование ресурсов | ||
| + | - Экспериментируйте с промптами | ||
| + | |||
| + | ==== Полезные ссылки ==== | ||
| + | |||
| + | * GitHub проекта: | ||
| + | * Документация Claude: https:// | ||
| + | * Nginx Proxy Manager: https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Автор: | ||
| + | **Дата: | ||
| + | **Версия: | ||