7.4 KiB
Онбординг: мы переехали с GitLab на Forgejo
GitLab выключен. Весь код, CI и деплой теперь на Forgejo: https://git.154.83.149.72.nip.io
Твой аккаунт и все репы (код + история) уже перенесены — заводить ничего не надо. Ниже — что поменялось лично для тебя и что сделать один раз.
TL;DR (5 минут)
- Зайди на https://git.154.83.149.72.nip.io — логин тот же, временный пароль возьми у админа → смени при первом входе.
- Добавь свой SSH-ключ (Settings → SSH/GPG Keys). Новый порт — 2223.
- Перепривяжи
remoteсвоих реп на новый хост. - Деплой теперь через
.forgejo/workflows/deploy.yml+.env(форкниtemplates/starter). Push вmain→ сайт с SSL.
1. Доступ
- Форж: https://git.154.83.149.72.nip.io
- Логин: твой прежний username (как на GitLab).
- Пароль: временный, возьми у админа. При первом входе форж заставит сменить.
⚠️ Пока не сменишь пароль в вебе — git по HTTPS/паролю работать НЕ будет (так задумано: временный пароль одноразовый).
2. Git: новый хост, порт и ключ
SSH-ключи с GitLab не переехали — добавь заново.
| было (GitLab) | стало (Forgejo) | |
|---|---|---|
| SSH | git@gitlab.extractl.online:2222 |
git@git.154.83.149.72.nip.io:2223 |
| HTTPS | https://gitlab.extractl.online/… |
https://git.154.83.149.72.nip.io/… |
- Settings → SSH/GPG Keys → Add Key → вставь
~/.ssh/id_ed25519.pub. ~/.ssh/config:Host git.154.83.149.72.nip.io Port 2223 User git- Перепривяжи каждую репу:
(Или HTTPS — логин + новый пароль, безgit remote set-url origin git@git.154.83.149.72.nip.io:<твой-логин>/<репа>.git~/.ssh/config.)
3. Твои репы
Уже на Forgejo, код и история целы. Просто перепривяжи remote (см. выше) — и работаешь как раньше.
4. Деплой: новый флоу
Принцип тот же (.env с DOMAIN → push → сайт с SSL), формат CI поменялся.
| было (GitLab) | стало (Forgejo) | |
|---|---|---|
| CI-файл | .gitlab-ci.yml (include auto.yml) |
.forgejo/workflows/deploy.yml |
| конфиг | .env |
.env (почти то же) |
| триггер | push в main |
push в дефолт-ветку |
| скорость | ~1–2 мин | ~20–60 сек |
Что сделать: добавь в свою (уже существующую) репу 2 файла — возьми их из
templates/starter (https://git.154.83.149.72.nip.io/templates/starter).
Форкать стартер не надо — он просто источник этих двух файлов:
.forgejo/workflows/deploy.yml— трогать не надо (тянет платформенный action по ссылке).env— минимумDOMAIN=твойсайт.com
Push в main → сайт встаёт. (Форк/клон всего стартера не нужен даже для проекта с нуля — достаточно этих 2 файлов в твоём репозитории.)
Тип проекта — новое поле DEPLOY в .env (можно не указывать, авто-детект)
static— фронт (Vite / CRA / Next static export): build → раздаётся статикой. Дефолт, если в корне НЕТDockerfile. Самый быстрый.docker— свойDockerfile→ контейнер. Дефолт, еслиDockerfileесть.docker-db— docker + персистентная SQLite: монтируется volume в/data, прокидываетсяDATABASE_URL=file:/data/app.db.
5. Секреты (DATABASE_URL, API-ключи) — поменялось
| было (GitLab) | стало (Forgejo) | |
|---|---|---|
| где задать | CI/CD Variables с префиксом RUNTIME_ |
Settings → Actions → Secrets (имя секрета = имя переменной) |
| как включить | автоматом все RUNTIME_* |
перечислить в .env: RUNTIME_KEYS=DATABASE_URL,JWT_SECRET |
В коде читаешь как раньше — process.env.DATABASE_URL. Для DEPLOY=docker-db переменную DATABASE_URL указывать не надо (ставится автоматически).
6. Ещё мелочи
- Build на bun — если закоммитишь
bun.lock, install в 10–30× быстрее npm. Для Web3/Solana-проектов огромная разница. - Registry больше не нужен — образ собирается и запускается на месте.
- Kill-switch как раньше:
ENABLED=falseв.env→ сайт отдаёт 404; убери строку (илиtrue) → вернётся. - БД: вместо общего Postgres — своя SQLite в volume (
docker-db). Если нужна была твоя старая Postgres-дата — скажи админу, достанем из бэкапа.
7. curl get.твойдомен | sh — установочный сабдомен (self-service)
Хочешь красивый one-liner установки (curl get.mysite.com | sh)? Делается сам,
без админа, для static-сайтов. Три шага:
- Скрипт кладёшь в репу →
public/install.sh(папкаpublic/у Vite попадает вdist/как есть, т.е. окажется в корне сайта). - DNS: в своём регистраторе добавь A-запись
get→ IP сервера платформы (там же, где@иwww). Толькоget, host =get. .env: добавь строкуINSTALL_SH=install.shиgit push.
Всё. CI сам поднимет get.твойдомен, выпустит SSL и будет отдавать install.sh
как text/plain (то, что нужно для | sh). Убери INSTALL_SH из .env и запушь —
сабдомен снимется.
Тонкости: работает для
static; имя файла вINSTALL_SH— как в сборке (лежит в корнеdist/). Если сабдомен отдаёт 404 — значит скрипта ещё нет в сборке или DNS-записьgetне указывает на наш IP (в логе деплоя будет::warning::про это). Апекс-домен иwwwне затрагиваются — это отдельный фрагмент.
8. Полная дока
Деплой во всех деталях (CRA, Next.js, монорепо, кастомный Dockerfile, авто-www и т.д.) —
README в templates/starter: https://git.154.83.149.72.nip.io/templates/starter
Застрял — пиши админу.