onboarding/README.md

111 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Онбординг: мы переехали с GitLab на Forgejo
GitLab выключен. Весь код, CI и деплой теперь на **Forgejo**:
**https://git.154.83.149.72.nip.io**
Твой аккаунт и все репы (код + история) уже перенесены — заводить ничего не надо.
Ниже — что поменялось лично для тебя и что сделать один раз.
---
## TL;DR (5 минут)
1. Зайди на https://git.154.83.149.72.nip.io — логин тот же, **временный пароль возьми у админа** → смени при первом входе.
2. Добавь свой SSH-ключ (Settings → SSH/GPG Keys). Новый порт — **2223**.
3. Перепривяжи `remote` своих реп на новый хост.
4. Деплой теперь через `.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/…` |
1. **Settings → SSH/GPG Keys → Add Key** → вставь `~/.ssh/id_ed25519.pub`.
2. `~/.ssh/config`:
```
Host git.154.83.149.72.nip.io
Port 2223
User git
```
3. Перепривяжи каждую репу:
```
git remote set-url origin git@git.154.83.149.72.nip.io:<твой-логин>/<репа>.git
```
(Или HTTPS — логин + новый пароль, без `~/.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 в дефолт-ветку |
| скорость | ~12 мин | ~2060 сек |
**Что сделать:** добавь в свою (уже существующую) репу 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 в 1030× быстрее 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`-сайтов. Три шага:
1. **Скрипт кладёшь в репу** → `public/install.sh` (папка `public/` у Vite попадает
в `dist/` как есть, т.е. окажется в корне сайта).
2. **DNS**: в своём регистраторе добавь A-запись `get` → IP сервера платформы
(там же, где `@` и `www`). Только `get`, host = `get`.
3. **`.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
Застрял — пиши админу.