CLI & Автоматизация

CLI, автоматизация и API

MQXX CLI позволяет зарегистрировать аккаунт, создать репозиторий и настроить SSH — всё одной командой из любого терминала. Без предварительной настройки ключей.

mqxx CLI

Регистрация, создание репозитория и управление прямо из терминала. Одна команда — полный онбординг.

CI/CD Pipeline

SSH-команды и REST API для автоматического создания репозитория при деплое нового сервиса.

REST API

Полноценный HTTP API для управления репозиториями, синхронизацией и настройками.

Безопасность

Magic-link аутентификация, HMAC-токены, PoW-проверка. Никаких паролей.

Shell-скрипты

Инициализация репо через bash без веб-интерфейса. Поддержка SSH-ключей из файла.

Установка mqxx CLI

Единый bash-скрипт curl | sh для Linux/macOS и готовые .exe бинарники для Windows.

Установка mqxx CLI

CLI-инструмент для управления MQXX из командной строки. Работает на Linux, macOS и Windows.

bash
# Linux / macOS (автоустановка)
curl -sSL https://mqxx.ru/install.sh | sh

# Или скачайте бинарник напрямую:
# https://mqxx.ru/releases/latest/mqxx-linux-amd64
# https://mqxx.ru/releases/latest/mqxx-darwin-arm64
# https://mqxx.ru/releases/latest/mqxx-windows-amd64.exe

# Проверка установки
mqxx --version   # mqxx 2.0.0

Регистрация и создание репозитория

Если аккаунта нет — он создаётся автоматически. Если есть — создаётся только репозиторий. Всё через одну команду, без предварительной настройки ключей.

bash
# Создать репозиторий (регистрация при необходимости)
mqxx init myrepo --email you@example.com

# SSH-ключ подхватится автоматически из ~/.ssh/id_ed25519.pub
# или укажите явно:
mqxx init myrepo --email you@example.com --ssh-key ~/.ssh/id_rsa.pub

# Импорт существующего репозитория (GitHub/GitLab/etc)
mqxx import my-project --url https://github.com/user/repo.git

# Только регистрация (без создания репо)
mqxx register --email you@example.com
🔄 Как работает процесс:
  1. CLI отправляет запрос на сервер с email и именем репо
  2. На email приходит ссылка подтверждения (15 мин)
  3. После клика — аккаунт создан, репо инициализирован, SSH ключ добавлен
  4. CLI автоматически делает git init и git remote add origin
terminal
$ mqxx init myapi --email dev@example.com

┌──────────────────────────────────────────┐
│ MQXX Init                                │
│ Repository:  myapi                       │
│ Email:       dev@example.com             │
│ Server:      mqxx.ru                     │
└──────────────────────────────────────────┘

🔑 Using SSH key: ~/.ssh/id_ed25519.pub
✉️  Email sent to dev@example.com
   (Новый аккаунт — будет создан после подтверждения)

⏳ Waiting for confirmation....

✅ Confirmed!
🔗 Git remote 'origin' added

🚀 Remote URL:
   ssh://git@mqxx.ru:2222/dev/myapi.git

   git push -u origin master

Список репозиториев

bash
# После initы сессия сохраняется в ~/.config/mqxx/mqxx_ru.json
mqxx list

# Вывод:
# 📦 Repositories for @dev:
#   myapi                        2.3KB  ssh://git@mqxx.ru:2222/dev/myapi.git
#   backend                     14.7MB  ssh://git@mqxx.ru:2222/dev/backend.git

Информация о сервере

bash
mqxx info

# ┌──────────────────────────────┐
# │ Server Info                  │
# │ Host:     mqxx.ru            │
# │ SSH Port: 2222               │
# │ Git URL:  ssh://git@mqxx.ru:2222/{owner}/{repo}.git
# └──────────────────────────────┘

Переменные окружения

bash
# Сохраните, чтобы не вводить каждый раз
export MQXX_SERVER=mqxx.ru
export MQXX_EMAIL=you@example.com
export MQXX_SSH_KEY=~/.ssh/id_ed25519.pub
export MQXX_CLI_TOKEN=<token из ~/.config/mqxx/mqxx_ru.json>

Создание репозитория через SSH (без CLI)

Если CLI не установлен — репозиторий можно создать SSH-командой (требуется добавленный ключ):

terminal
ssh -p 2222 git@mqxx.ru init <repo-name>
✅ SSH-ключ должен быть добавлен в Настройках или через CLI перед использованием этой команды.

Облачная синхронизация (Cloud Sync)

MQXX поддерживает автоматическое резервное копирование ваших репозиториев в облако. Бекап создается в виде сжатого архива .tar.gz, полностью сохраняя историю коммитов.

📂 Где искать бекапы?

Все архивы сохраняются в корневую папку /MQXX на вашем Яндекс Диске. Структура:

/MQXX/username/project.git.tar.gz

Особенности:

  • Авто-создание папок: Система сама создаст нужные каталоги на Диске.
  • Отказоустойчивость: Если настроено несколько облаков (например, S3 и Яндекс), сбой одного не помешает загрузке в другое.
  • Управление в профиле: Вы можете видеть статус синхронизации и переходить к настройкам прямо со страницы своего профиля.

REST API

Все операции доступны через HTTP API. Аутентификация — через cookie-сессию после входа на mqxx.ru.

http
# ── Аутентификация ─────────────────────────────────────────────
# Запросить magic link
POST /api/auth/request
{"email": "you@example.com"}

# Проверить сессию
GET  /api/auth/session

# Выход
POST /api/auth/logout

# ── CLI сессии ──────────────────────────────────────────────────
# Инициировать CLI сессию (создать аккаунт + репо)
POST /api/cli/init
{"email": "you@...", "repo_name": "myrepo", "ssh_pub_key": "ssh-ed25519 AAAA..."}

# Опрашивать статус
GET  /api/cli/poll/:token

# Информация о сервере
GET  /api/cli/info

# Список репозиториев
GET  /api/cli/repos          (X-CLI-Token: <token>)

# ── Репозитории ─────────────────────────────────────────────────
GET  /api/repositories                   # Список (auth required)
POST /api/repositories                   # Создать {"name": "myrepo"}
POST /api/repositories/import            # Импорт {"name": "...", "url": "..."}
DELETE /api/repositories/:owner/:name    # Удалить
PATCH  /api/repositories/:owner/:name/visibility  # Видимость

# ── Просмотр кода ───────────────────────────────────────────────
GET /api/repositories/:owner/:name/files?path=/&ref=main
GET /api/repositories/:owner/:name/content?path=README.md&ref=main
GET /api/repositories/:owner/:name/commits
GET /api/repositories/:owner/:name/branches
GET /api/repositories/:owner/:name/archive?format=zip

# ── Синхронизация ───────────────────────────────────────────────
# Запустить ручную синхронизацию репозитория
POST /api/repositories/:owner/:name/sync

# Статус подключения (активно/провайдеры)
GET  /api/sync/status

# Отключить провайдера
POST /api/sync/disconnect

# ── Комьюнити ───────────────────────────────────────────────────
# Список тредов обсуждений
GET  /api/community/threads

# Создать новый тред (auth required)
POST /api/community/threads
{"title": "...", "content": "..."}

# ── Статус ──────────────────────────────────────────────────────
GET /api/status                 # Общая статистика (repo count, users)
GET /api/health                 # Проверка работоспособности

GitHub Actions — зеркало на MQXX

.github/workflows/mirror.yml
name: Mirror to MQXX

on:
  push:
    branches: [main]

jobs:
  mirror:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup SSH
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.MQXX_SSH_KEY }}" > ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519
          ssh-keyscan -p 2222 mqxx.ru >> ~/.ssh/known_hosts

      - name: Push to MQXX
        run: |
          git remote add mqxx ssh://git@mqxx.ru:2222/${{ github.repository }}.git
          git push mqxx main --force

Bash-скрипт деплоя нового сервиса

deploy.sh
#!/bin/bash
set -e

SERVICE="my-api"
MQXX_HOST="git@mqxx.ru"
MQXX_PORT="2222"

echo "🚀 Создание репозитория на MQXX..."
ssh -p $MQXX_PORT $MQXX_HOST init $SERVICE

echo "📦 Инициализация локального репо..."
git init .
git remote add origin ssh://$MQXX_HOST:$MQXX_PORT/$SERVICE.git

echo "📤 Первый коммит..."
git add .
git commit -m "feat: initial commit"
git push -u origin master

echo "✅ Готово! Репозиторий $SERVICE создан."