feat: update to v1.7.3 with smart asset detection and auto-install
This commit is contained in:
260
update-server/GITEA_SETUP.md
Normal file
260
update-server/GITEA_SETUP.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# 🚀 Установка Gitea для системы обновлений Umbrix
|
||||
|
||||
## 📋 Подготовка
|
||||
|
||||
### 1. Аренда VPS
|
||||
**Минимальные требования:**
|
||||
- RAM: 1GB (рекомендую 2GB для комфорта)
|
||||
- CPU: 1 vCore
|
||||
- SSD: 20GB
|
||||
- OS: Ubuntu 22.04 / Debian 12
|
||||
|
||||
**Рекомендуемые провайдеры:**
|
||||
- Hetzner Cloud (от €3.79/мес, 2GB RAM)
|
||||
- DigitalOcean Droplet ($6/мес)
|
||||
- Contabo VPS (от €4.99/мес, 4GB RAM)
|
||||
|
||||
### 2. Домены
|
||||
Настройте DNS записи для:
|
||||
```
|
||||
git.umbrix.net → IP вашего сервера
|
||||
git-mirror1.umbrix.net → IP сервера (или другой сервер)
|
||||
git-mirror2.umbrix.net → IP сервера (или другой сервер)
|
||||
```
|
||||
|
||||
### 3. SSL сертификаты (Let's Encrypt)
|
||||
```bash
|
||||
# Установите certbot
|
||||
sudo apt update && sudo apt install -y certbot
|
||||
|
||||
# Получите сертификаты для всех доменов
|
||||
sudo certbot certonly --standalone -d git.umbrix.net
|
||||
sudo certbot certonly --standalone -d git-mirror1.umbrix.net
|
||||
sudo certbot certonly --standalone -d git-mirror2.umbrix.net
|
||||
|
||||
# Скопируйте в папку nginx/ssl/
|
||||
sudo cp /etc/letsencrypt/live/git.umbrix.net/fullchain.pem nginx/ssl/
|
||||
sudo cp /etc/letsencrypt/live/git.umbrix.net/privkey.pem nginx/ssl/
|
||||
# Повторите для mirror1 и mirror2
|
||||
```
|
||||
|
||||
## 🐳 Установка Gitea
|
||||
|
||||
### 1. Установите Docker
|
||||
```bash
|
||||
# Удалите старые версии
|
||||
sudo apt remove docker docker-engine docker.io containerd runc
|
||||
|
||||
# Установите Docker
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||
sudo sh get-docker.sh
|
||||
|
||||
# Добавьте пользователя в группу docker
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker
|
||||
|
||||
# Установите Docker Compose
|
||||
sudo apt install -y docker-compose
|
||||
```
|
||||
|
||||
### 2. Загрузите конфигурацию
|
||||
```bash
|
||||
# Создайте папку
|
||||
mkdir -p ~/gitea-server
|
||||
cd ~/gitea-server
|
||||
|
||||
# Скопируйте файлы:
|
||||
# - gitea-docker-compose.yml → docker-compose.yml
|
||||
# - nginx.conf → nginx/nginx.conf
|
||||
|
||||
# Создайте папки для SSL
|
||||
mkdir -p nginx/ssl gitea/data gitea/postgres
|
||||
```
|
||||
|
||||
### 3. Настройте пароль БД
|
||||
Отредактируйте `docker-compose.yml`:
|
||||
```yaml
|
||||
POSTGRES_PASSWORD=ваш_надёжный_пароль_здесь
|
||||
```
|
||||
|
||||
### 4. Запустите Gitea
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 5. Первоначальная настройка
|
||||
Откройте браузер: `https://git.umbrix.net`
|
||||
|
||||
**Настройки установки:**
|
||||
- Database Type: `PostgreSQL`
|
||||
- Host: `db:5432`
|
||||
- Username: `gitea`
|
||||
- Password: (ваш пароль из docker-compose.yml)
|
||||
- Database Name: `gitea`
|
||||
- SSH Server Domain: `git.umbrix.net`
|
||||
- Gitea Base URL: `https://git.umbrix.net`
|
||||
- **Отключите регистрацию** (только вы сможете создавать аккаунты)
|
||||
|
||||
## 📦 Создание репозитория и релиза
|
||||
|
||||
### 1. Создайте репозиторий
|
||||
- Войдите в Gitea
|
||||
- Нажмите "+" → "New Repository"
|
||||
- Название: `umbrix`
|
||||
- Visibility: `Public` (для обновлений)
|
||||
|
||||
### 2. Загрузите код (с локальной машины)
|
||||
```bash
|
||||
cd ~/dorod/hiddify-umbrix-v1.7.0
|
||||
|
||||
# Инициализируйте Git (если не инициализирован)
|
||||
git init
|
||||
git add .
|
||||
git commit -m "Initial commit"
|
||||
|
||||
# Добавьте remote (замените на свой домен)
|
||||
git remote add gitea https://git.umbrix.net/your-username/umbrix.git
|
||||
|
||||
# Запушьте код
|
||||
git push -u gitea main
|
||||
```
|
||||
|
||||
### 3. Создайте релиз
|
||||
**Через UI:**
|
||||
1. Перейдите: Releases → New Release
|
||||
2. Tag: `v1.7.3`
|
||||
3. Title: `Umbrix v1.7.3`
|
||||
4. Описание: (release notes)
|
||||
5. Прикрепите файлы:
|
||||
- `umbrix-1.7.3-linux-x86_64.deb`
|
||||
- `umbrix-1.7.3-linux-x86_64.rpm`
|
||||
- `Umbrix-1.7.3-linux-x86_64.AppImage`
|
||||
|
||||
**Через API:**
|
||||
```bash
|
||||
# Получите Access Token: Настройки → Applications → Generate Token
|
||||
|
||||
curl -X POST "https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases" \
|
||||
-H "Authorization: token YOUR_ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"tag_name": "v1.7.3",
|
||||
"name": "Umbrix v1.7.3",
|
||||
"body": "## Что нового\n- Улучшена стабильность",
|
||||
"draft": false,
|
||||
"prerelease": false
|
||||
}'
|
||||
|
||||
# Загрузите файлы релиза
|
||||
curl -X POST "https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases/ID/assets" \
|
||||
-H "Authorization: token YOUR_ACCESS_TOKEN" \
|
||||
-F "attachment=@dist/umbrix-1.7.3.deb"
|
||||
```
|
||||
|
||||
## 🔧 Настройка Umbrix для Gitea
|
||||
|
||||
Отредактируйте `lib/core/model/constants.dart`:
|
||||
|
||||
```dart
|
||||
abstract class Constants {
|
||||
static const appName = "Umbrix";
|
||||
static const githubUrl = "https://git.umbrix.net/your-username/umbrix";
|
||||
static const githubReleasesApiUrl = "https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases";
|
||||
static const githubLatestReleaseUrl = "https://git.umbrix.net/your-username/umbrix/releases/latest";
|
||||
|
||||
// ... остальное без изменений
|
||||
static const useCustomUpdateServer = false; // Используем Gitea API
|
||||
}
|
||||
```
|
||||
|
||||
**Пересоберите:**
|
||||
```bash
|
||||
flutter build linux --release
|
||||
```
|
||||
|
||||
## 🌐 Стратегия зеркал (антиблокировка)
|
||||
|
||||
### Вариант 1: DNS Load Balancing
|
||||
Несколько IP для одного домена:
|
||||
```
|
||||
git.umbrix.net → 1.2.3.4, 5.6.7.8, 9.10.11.12
|
||||
```
|
||||
|
||||
### Вариант 2: Поддомены-зеркала
|
||||
```dart
|
||||
static const githubReleasesApiUrl = List<String>[
|
||||
"https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases",
|
||||
"https://git-mirror1.umbrix.net/api/v1/repos/your-username/umbrix/releases",
|
||||
"https://git-mirror2.umbrix.net/api/v1/repos/your-username/umbrix/releases",
|
||||
];
|
||||
|
||||
// В app_update_repository.dart пробуем по очереди:
|
||||
for (final url in Constants.githubReleasesApiUrl) {
|
||||
try {
|
||||
final response = await httpClient.get(url);
|
||||
if (response.statusCode == 200) return response;
|
||||
} catch (e) {
|
||||
continue; // Пробуем следующее зеркало
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Вариант 3: Cloudflare + Workers
|
||||
Прокси через Cloudflare Workers (обходит блокировки):
|
||||
```javascript
|
||||
// worker.js
|
||||
export default {
|
||||
async fetch(request) {
|
||||
const url = new URL(request.url);
|
||||
const targetUrl = "https://git.umbrix.net" + url.pathname;
|
||||
return fetch(targetUrl);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Домен: `updates.umbrix.workers.dev`
|
||||
|
||||
## 📊 Мониторинг
|
||||
|
||||
```bash
|
||||
# Логи Gitea
|
||||
docker-compose logs -f gitea
|
||||
|
||||
# Статус
|
||||
docker-compose ps
|
||||
|
||||
# Использование ресурсов
|
||||
docker stats
|
||||
```
|
||||
|
||||
## 🔄 Обновление Gitea
|
||||
|
||||
```bash
|
||||
docker-compose pull
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 💾 Бэкапы
|
||||
|
||||
```bash
|
||||
# Бэкап данных Gitea
|
||||
docker exec -u git gitea gitea dump -c /data/gitea/conf/app.ini
|
||||
|
||||
# Бэкап БД
|
||||
docker exec gitea-db pg_dump -U gitea gitea > backup.sql
|
||||
```
|
||||
|
||||
## 🎉 Готово!
|
||||
|
||||
Теперь у вас:
|
||||
- ✅ Свой GitHub-клон на домене `git.umbrix.net`
|
||||
- ✅ API для проверки обновлений (совместим с GitHub API)
|
||||
- ✅ Зеркала для обхода блокировок
|
||||
- ✅ UI для управления релизами
|
||||
|
||||
**URL releases API:**
|
||||
```
|
||||
https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases
|
||||
```
|
||||
|
||||
Формат ответа идентичен GitHub API!
|
||||
Reference in New Issue
Block a user