261 lines
7.5 KiB
Markdown
261 lines
7.5 KiB
Markdown
# 🚀 Установка 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!
|