7.5 KiB
7.5 KiB
🚀 Установка 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)
# Установите 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
# Удалите старые версии
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. Загрузите конфигурацию
# Создайте папку
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:
POSTGRES_PASSWORD=ваш_надёжный_пароль_здесь
4. Запустите Gitea
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. Загрузите код (с локальной машины)
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:
- Перейдите: Releases → New Release
- Tag:
v1.7.3 - Title:
Umbrix v1.7.3 - Описание: (release notes)
- Прикрепите файлы:
umbrix-1.7.3-linux-x86_64.debumbrix-1.7.3-linux-x86_64.rpmUmbrix-1.7.3-linux-x86_64.AppImage
Через API:
# Получите 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:
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
}
Пересоберите:
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: Поддомены-зеркала
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 (обходит блокировки):
// 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
📊 Мониторинг
# Логи Gitea
docker-compose logs -f gitea
# Статус
docker-compose ps
# Использование ресурсов
docker stats
🔄 Обновление Gitea
docker-compose pull
docker-compose up -d
💾 Бэкапы
# Бэкап данных 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!