# Инструкция по публикации сайта через SFTP ## Описание Этот документ описывает процесс публикации сгенерированного сайта (папка `public`) на хостинге через SFTP. **Деплой автоматизирован через Gitea Actions.** Публикация выполняется автоматически при каждом пуше в ветку `main` репозитория или вручную через Workflow Dispatch в Gitea UI (Actions -> deploy-dedinit -> Run workflow). ## Учетные данные и параметры подключения - **Хост**: kpa39l.myjino.ru - **Порт SFTP**: 2222 - **Пользователь**: kpa39l_dedinit - **Пароль**: хранится в секрете Gitea `SSHPASS` (Settings -> Actions -> Secrets репозитория). В открытом виде в репозитории **не хранится**. - **Целевой путь**: /dedinit.ru (относительно корня аккаунта) ## Как работает деплой 1. Workflow `.gitea/workflows/deploy.yml` (события: `push` в `main` и `workflow_dispatch`). 2. Шаги: - **Checkout** — `actions/checkout@v4` (самодостаточный зеркальный экшен, без обращения к github.com); - **Install dependencies** — `python3`, `python3-venv`, `python3-pip`, `hugo`; - **Deploy via SFTP** — сборка `hugo --minify`, создание `.venv` с `paramiko`, проверка секрета `SSHPASS` и запуск `tools/deploy_sftp.py` (рекурсивный mirror + удаление устаревших файлов). > **ВАЖНО: аккаунт Jino — SFTP-only:** удалённый запуск команд (rsync, > ssh-exec) запрещён сервером (ошибка `exec request failed on channel 0`). > Прямой rsync на этот аккаунт НЕ РАБОТАЕТ — только `tools/deploy_sftp.py`. ## Запуск вручную В Gitea: открыть репозиторий -> Actions -> workflow `deploy-dedinit` -> кнопка **Run workflow** (ветка `main`). ## Локальный запуск (без Actions) Только для отладки. Требуется заранее заданный секрет: ```bash export SSHPASS='<пароль из секрета Gitea SSHPASS>' hugo --minify python3 -m venv .venv && .venv/bin/pip install -q paramiko .venv/bin/python tools/deploy_sftp.py ``` ## Симуляция деплоя (dry-run) ```bash export SSHPASS='<пароль из секрета Gitea SSHPASS>' .venv/bin/python tools/deploy_sftp.py --dry-run ``` Собирает сайт и показывает, какие файлы будут загружены/удалены, без заливки. ## Конфигурация Параметры подключения находятся в `tools/deploy_sftp.py` (переменные `DEDINIT_HOST`, `DEDINIT_PORT`, `DEDINIT_USER`, `DEDINIT_REMOTE`, по умолчанию — kpa39l.myjino.ru:2222 / kpa39l_dedinit / /dedinit.ru). При необходимости вы можете изменить эти параметры. ## Управление паролем (секрет SSHPASS) - Пароль задан один раз через Gitea API: `PUT /api/v1/repos/estorozhenko/dedinit.ru/actions/secrets/SSHPASS`. - Обновить/посмотреть наличие: Gitea UI -> Settings -> Actions -> Secrets. - Workflow читает его как `${{ secrets.SSHPASS }}` и передаёт в переменную окружения `SSHPASS` шагу Deploy via SFTP.