Skip to content

Releases: KiboMibo/mini-repo

Release list

apprepo v0.1.0

Choose a tag to compare

@KiboMibo KiboMibo released this 09 Aug 18:47

Первый публичный релиз apprepo — своего репозитория бинарников приложений.

Один бинарник на Go: веб-интерфейс и JSON API, метаданные в SQLite, файлы на диске. Без Docker, внешней базы и CGO — драйвер SQLite работает на WASM через wazero, поэтому сборка под любую платформу обходится без тулчейнов.

Что умеет

  • Загрузка версий — semver с канонизацией, проверка SHA-256, запрет перезаписи существующего файла. Публикация атомарна: временный файл, затем эксклюзивный os.Link, проигравший гонку получает 409, а файл победителя не трогается.
  • Стабильные ссылки — /download/{app}/{version}, latest резолвится на лету (максимум semver или закреплённая версия), отдельного поля в БД нет.
  • Платформа версии — определяется из самого файла по заголовку: ELF, Mach-O, PE, fat Mach-O. Читается меньше килобайта независимо от размера файла, поэтому 256-мегабайтная «бомба» стоит десятки микросекунд. Архив определить нечего — для него платформа указывается явно, иначе загрузка отклоняется.
  • Роли — deployer < developer < maintainer < admin. Матрица прав живёт в одном месте, роль читается из БД на каждом запросе, поэтому смена роли действует немедленно. deployer намеренно не пускают в веб-интерфейс: это машинная роль для CI и прямых ссылок.
  • Управление учётками — через API, интерфейс и CLI. Последнего активного администратора нельзя разжаловать, заблокировать или удалить; смена пароля и блокировка мгновенно гасят все сессии пользователя.
  • Аварийный вход — группа команд apprepo user работает с базой напрямую, без сессии: в установку, куда некому войти, можно попасть.

Установка

Скачайте архив для своей платформы, распакуйте и запустите:

tar xzf apprepo_v0.1.0_linux_amd64.tar.gz
./apprepo user add admin        # пароль спросит интерактивно
./apprepo serve -data-dir /opt/apps

Юнит systemd, конфигурация через флаги и переменные окружения, примеры curl — в README. Описание API с таблицей «маршрут → требуемое право» — в docs/api.md.

Проверьте контрольную сумму — файл SHA256SUMS приложен к релизу.

Сборки

Платформа Файл
Linux x86-64 apprepo_v0.1.0_linux_amd64.tar.gz
Linux ARM64 apprepo_v0.1.0_linux_arm64.tar.gz
macOS Intel apprepo_v0.1.0_darwin_amd64.tar.gz
macOS Apple Silicon apprepo_v0.1.0_darwin_arm64.tar.gz
Windows x86-64 apprepo_v0.1.0_windows_amd64.zip

Версию сборки печатает apprepo -version.

Что стоит знать

  • Ограничения частоты входа нет. Нижняя граница пароля в 8 байт — единственное, что стоит между установкой и перебором. Не выставляйте наружу без обратного прокси, который это закрывает.
  • Отката миграций нет. Перед обновлением существующей установки снимите копию файла базы: store.Open досоздаёт недостающие колонки автоматически и назад их не убирает.
  • Загрузка архива теперь требует явной платформы. Определить её в .tar.gz или .zip нечего, поэтому без параметра запрос отклоняется с 400 и перечнем допустимых значений; для платформо-независимого артефакта есть значение any.

Нулевая мажорная версия означает ровно то, что означает: ломающие изменения возможны без смены мажора.