ci: registry-based releases — multi-arch images built in CI, servers only pull

- release workflow: buildx multi-arch (amd64+arm64) build+push of bot and admin images to Gitea Container Registry (git.softuniq.eu/telegram-market/telegram-shop[-admin])
- docker-compose: bot/admin use registry images (IMAGE_TAG for pinning); tor-proxy stays local alpine build
- install.sh: pull from registry instead of local docker build (no native compilation on weak hardware); interactive .env setup preserved
- new buildx runner gitea-host-buildx (label buildx) on x86_64 host
- REGISTRY_TOKEN replaced with package-scoped token (write:package)
- README/VERSION/.env.example updated
This commit is contained in:
NW
2026-08-11 10:37:09 +01:00
parent 33ec420fc0
commit 5c7bc242c5
6 changed files with 272 additions and 85 deletions

View File

@@ -32,9 +32,14 @@ bash install.sh
1. Определит архитектуру (x86_64 / ARM64 / ARMv7)
2. Установит Docker если не установлен
3. Создаст `.env` из шаблона
4. Проверит обязательные переменные
5. Соберёт Docker-образ под текущую архитектуру
6. Запустит контейнер и проверит health-check
4. Интерактивно запросит недостающие переменные (BOT_TOKEN, ADMIN_IDS) и сгенерирует ключи (ENCRYPTION_KEY, ADMIN_SECRET, SUPER_ADMIN_SECRET) если они не заданы
5. Установит SHOP_ACTIVATED=false для нового магазина (стартует заблокированным)
6. Автоматически определит LAN IP и установит ADMIN_URL
7. Соберёт Docker-образ под текущую архитектуру
8. Запустит контейнер и проверит health-check
#### Активация магазина
После установки магазин стартует заблокированным (SHOP_ACTIVATED=false). Оператор получает onion-адрес от клиента, заходит в админку по onion/LAN, входит с SUPER_ADMIN_SECRET, добавляет комиссионные кошельки (Кошельки → Edit Wallets), настраивает бота, нажимает "Activate Shop" в Настройках.
### Ручная установка
@@ -46,8 +51,8 @@ git clone <repo-url> && cd telegram-shop
cp .env.example .env
nano .env # заполнить BOT_TOKEN, ADMIN_IDS, ENCRYPTION_KEY
# 3. Собрать и запустить
docker compose up -d --build
# 3. Запустить (образы тянутся из Gitea Container Registry, сборка не нужна)
docker compose up -d
# 4. Проверить статус
docker compose ps
@@ -55,6 +60,8 @@ curl http://localhost:3001/health # бот (health-сервер)
curl -o /dev/null -w "%{http_code}\n" http://localhost:3000/login # новая админка
```
> Образы бота и админки собираются в CI (Gitea Actions, buildx multi-arch) и публикуются в Gitea Container Registry. На сервере ничего не компилируется — только `docker compose pull`. Для пиннинга версии: `IMAGE_TAG=1.2.9 docker compose up -d`. Локальная сборка (dev): `docker compose up -d --build`.
## Настройка .env
Скопируйте `.env.example` в `.env` и заполните:
@@ -82,6 +89,7 @@ curl -o /dev/null -w "%{http_code}\n" http://localhost:3000/login # новая
| `WG_ENDPOINT` | — | Адрес сервера WireGuard |
| `WG_ADDRESS` | — | Адрес интерфейса WireGuard |
| `WG_DNS` | — | DNS для WireGuard |
| `SHOP_ACTIVATED` | — | Флаг активации магазина. false = магазин заблокирован до активации супер-админом в админке (Настройки → Shop Activation). |
Генерация ключа шифрования:
```bash
@@ -194,8 +202,9 @@ Docker автоматически собирает нативные модули
# Запуск
docker compose up -d
# Пересборка после изменений
docker compose up -d --build
# Пересборка (dev-сборка локально) или обновление до новой версии из registry
docker compose up -d --build # dev: собрать локально
IMAGE_TAG=1.2.9 docker compose up -d # prod: взять конкретную версию из registry
# Логи
docker compose logs -f