Metadata-Version: 2.4
Name: gpu-server-setup
Version: 0.4.6
Summary: Один клик — удалённый GPU-сервер с Ollama + VS Code Remote
Author: The Fool
License: MIT
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typer[all]>=0.12
Requires-Dist: rich>=13.7
Requires-Dist: paramiko>=3.4
Requires-Dist: pydantic-settings>=2.5
Requires-Dist: tomli>=2.0; python_version >= "3.9"
Dynamic: license-file

```markdown
# Gpu-setup — один клик до удалённого GPU-сервера с Ollama и VS Code Remote

Автоматическая настройка SSH, установка [Ollama](https://ollama.com/), загрузка LLM-моделей и открытие VS Code Remote на удалённом GPU-сервере — всё одной командой.

---

## Возможности

- **Генерация SSH-ключей** (ed25519 / RSA) и автоматическое копирование публичного ключа на сервер.
- **Настройка `~/.ssh/config`** с алиасом для удобного подключения.
- **Установка Ollama** (через официальный скрипт) с запуском сервиса.
- **Загрузка моделей** (например, `llama3.2`, `gemma2`) с живым выводом прогресса.
- **Автоматический запуск VS Code Remote** (если установлен `code` CLI).
- **Режим `--dry-run`** для безопасного просмотра плана действий.
- **Красивый вывод** с помощью `rich`.

---

## Предварительные требования

- Python 3.8+ (рекомендуется 3.10)
- Удалённый сервер с Linux (Ubuntu/Debian/CentOS) и предустановленным Python
- Доступ по SSH с паролем (для первого копирования ключа)
- На локальной машине:
  - `ssh-keygen` (обычно уже есть)
  - `ssh` клиент
  - (опционально) `code` для VS Code Remote (если планируете открывать редактор)

---

## Установка

pip install gpu-server-setup

После этого команда `gpu-server-setup` будет доступна в терминале.

---

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

Общий синтаксис:

```bash
gpu-server-setup [команда] [опции]
```

### Доступные команды

| Команда           | Описание |
|-------------------|----------|
| `setup`           | **Полная настройка:** SSH, Ollama, модель, VS Code |
| `ssh`             | Только настройка SSH-ключей и алиаса |
| `ollama-install`  | Установка Ollama на сервер |
| `model-pull`      | Загрузка указанной модели (после установки Ollama) |
| `vscode`          | Открытие VS Code Remote (если `code` установлен) |
| `plan`            | Показать план действий без выполнения (dry-run) |

---

## Подробное описание команд

### `gpu-server-setup setup`

Выполняет все шаги: генерация ключа, копирование, настройка SSH-конфига, установка Ollama, загрузка модели, открытие VS Code.

**Опции:**

- `--ip` (обязательный) — IP сервера
- `--user` (обязательный) — имя пользователя
- `--password` (обязательный для первого подключения) — пароль (можно ввести интерактивно)
- `--model` — модель для скачивания (например `llama3.2`)
- `--install-ollama` / `--no-install` — устанавливать Ollama (по умолчанию `--install-ollama`)
- `--no-vscode` — не открывать VS Code (по умолчанию открывает)
- `--dry-run` — только показать план
- `--key-type` — тип ключа: `ed25519` (по умолчанию) или `rsa`

---

### `gpu-setup ssh`

Только настройка SSH-доступа по ключу.

**Опции:**

- `--ip` (обязательный)
- `--user` (обязательный)
- `--password` (обязательный для первого копирования)
- `--dry-run`
- `--key-type`

---

### `gpu-server-setup ollama-install`

Устанавливает Ollama на сервер (требуется пароль для sudo).

**Опции:**

- `--ip` (обязательный)
- `--user` (обязательный)
- `--password` (обязательный, т.к. нужен sudo)
- `--dry-run`

---

### `gpu-server-setup model-pull MODEL`

Скачивает указанную модель через Ollama. Если сервис Ollama не запущен, пытается запустить его автоматически.

**Аргументы:**

- `MODEL` — имя модели (например `llama3.2`)

**Опции:**

- `--ip` (обязательный)
- `--user` (обязательный)
- `--password` (необязателен, если SSH уже настроен; нужен только для запуска сервиса)
- `--dry-run`

---

### `gpu-server-setup vscode`

Открывает текущую сессию в VS Code Remote.

**Опции:**

- `--ip` (обязательный)
- `--user` (обязательный)
- `--password` (не требуется, если ключ настроен)
- `--dry-run`

---

### `gpu-server-setup plan`

Показывает, какие шаги будут выполнены при вызове `setup` с указанными параметрами.

**Опции:**

- `--ip` (обязательный)
- `--user` (обязательный)
- `--model`
- `--install-ollama` / `--no-install`
- `--no-vscode`

---

## Примеры использования

### 1. Полная настройка (самый частый вариант)

```bash
gpu-server-setup setup --ip IP --user user --password password --model llama3.2
```

### 2. Только SSH-ключи + config

```bash
gpu-server-setup ssh --ip IP --user user --password password
```

### 3. Только установить Ollama

```bash
gpu-server-setup ollama-install --ip IP --user user --password password
```

### 4. Только скачать модель (пароль уже не нужен, если SSH настроен)

```bash
gpu-server-setup model-pull llama3.2 --ip IP --user user
```

### 5. Только открыть VS Code Remote

```bash
gpu-server-setup vscode --ip IP --user user
```

### 6. Посмотреть план перед запуском

```bash
gpu-server-setup plan --ip IP --user user --model llama3.2
```

---

## Dry-run

Любая команда поддерживает флаг `--dry-run`.  
В этом режиме ничего не изменяется, а только выводится, что было бы сделано.

```bash
gpu-server-setup setup --ip IP --user user --dry-run
```
---

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

- **`ssh: Could not resolve hostname`** — проверьте IP и доступность сервера.
- **Ошибка при копировании ключа** — убедитесь, что пароль верный и на сервере разрешена аутентификация по паролю (`PasswordAuthentication yes` в `/etc/ssh/sshd_config`).
- **Ollama не устанавливается** — возможно, требуется вручную разрешить `sudo` без пароля или передать пароль в опции.
- **VS Code не открывается** — установите CLI-команду `code` (в VS Code: `Shift+Ctrl+P` → `Install 'code' command in PATH`).

---

## Лицензия

MIT License. См. файл [LICENSE](LICENSE).

---

## Вклад

PR и issues приветствуются!
