From e7e653a9e89529b70949b4b71989c5a2fbd176d4 Mon Sep 17 00:00:00 2001 From: Andrey Lutsenko Date: Sat, 13 Jun 2026 16:29:18 +1000 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D0=BE=D0=BB=D0=B8=D1=82=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20Gitea=20=D0=BA=D0=B0=D0=BA=20=D0=BE=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BD=D0=BE=D0=B9,=20GitHub=20=E2=80=94=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=D0=B5=D1=80=D0=B2=20=D0=B1=D0=B5=D0=B7=20=D1=81?= =?UTF-8?q?=D0=B5=D0=BA=D1=80=D0=B5=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Два remote, таблица репозиториев и workflow push origin/github. --- README.md | 4 +- docs/git.md | 26 ++++++++++++- docs/repo-policy.md | 95 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 docs/repo-policy.md diff --git a/README.md b/README.md index b3f7697..9e55f8c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ TLS: HAProxy на **443** в режиме **TCP + SNI**, **не терминир Доступ снаружи по allowlist: **Git** и **веб-SAC** (`sac.kalinamall.ru`) — файл `git-sac-allowed`; **1С** (`erp.kalinamall.ru`) — `1c-allowed`. **Seaca** — **`sac-api.kalinamall.ru`** без IP-фильтра (аутентификация на SAC). -Репозиторий: [https://git.kalinamall.ru/PapaTramp/reverse-proxy](https://git.kalinamall.ru/PapaTramp/reverse-proxy) +**Основной репозиторий:** [git.kalinamall.ru/PapaTramp/reverse-proxy](https://git.kalinamall.ru/PapaTramp/reverse-proxy) +**Резерв (без секретов):** [github.com/PTah/reverse-proxy](https://github.com/PTah/reverse-proxy) — см. [политику репозиториев](docs/repo-policy.md) ## Соответствие имён и адресов @@ -30,4 +31,5 @@ DNS: **A** для `ext`, `autodiscover`, `rds`, `erp`, `git`, `sac`, **`sac-api` - [Установка HAProxy и развёртывание конфигурации](docs/haproxy-install.md) - [SAC: веб vs sac-api, Seaca, Git+SAC в браузере](docs/sac-access.md) - [Работа с Git: clone, pull, push, ключи и PAT](docs/git.md) +- [Политика: Gitea — основной, GitHub — резерв без секретов](docs/repo-policy.md) - [Let's Encrypt / ACME через HAProxy (порт 80)](docs/letsencrypt-acme.md) diff --git a/docs/git.md b/docs/git.md index 0dcbf8a..a319cf5 100644 --- a/docs/git.md +++ b/docs/git.md @@ -1,4 +1,7 @@ -# Работа с Git на Ubuntu +# Работа с Git + +**Основной remote:** `git.kalinamall.ru` (полная копия, включая секреты). +**Резерв:** `github.com/PTah/...` (без паролей и токенов). Подробно — [repo-policy.md](repo-policy.md). Репозиторий: [https://git.kalinamall.ru/PapaTramp/reverse-proxy](https://git.kalinamall.ru/PapaTramp/reverse-proxy) @@ -107,3 +110,24 @@ git config --global credential.helper 'cache --timeout=28800' ``` После истечения срока кеша или срока действия токена снова создайте новый PAT и при необходимости обновите сохранённые учётные данные (удалите строчку с `git.kalinamall.ru` из `~/.git-credentials` или снова выполните `git pull` и введите новый токен). + +## Два remote: Gitea и GitHub + +```bash +cd ~/reverse-proxy +git remote -v +# origin → git@git.kalinamall.ru:PapaTramp/reverse-proxy.git +# github → git@github.com:PTah/reverse-proxy.git + +git push origin main # основной — всегда +git push github main # резерв — только без секретов в коммите +``` + +Если `origin` ещё указывает на GitHub: + +```bash +git remote rename origin github +git remote add origin git@git.kalinamall.ru:PapaTramp/reverse-proxy.git +git fetch origin +git branch -u origin/main main +``` diff --git a/docs/repo-policy.md b/docs/repo-policy.md new file mode 100644 index 0000000..34557c3 --- /dev/null +++ b/docs/repo-policy.md @@ -0,0 +1,95 @@ +# Политика репозиториев: git.kalinamall.ru и GitHub + +Для перечисленных проектов действует единая схема: **основное хранилище — корпоративный Gitea**, **GitHub — резервная копия без секретов**. + +## Репозитории + +| Проект | Основной (Gitea) | Резерв (GitHub) | +|--------|------------------|-----------------| +| reverse-proxy | [PapaTramp/reverse-proxy](https://git.kalinamall.ru/PapaTramp/reverse-proxy) | [PTah/reverse-proxy](https://github.com/PTah/reverse-proxy) | +| security-alert-center | [PapaTramp/security-alert-center](https://git.kalinamall.ru/PapaTramp/security-alert-center) | [PTah/security-alert-center](https://github.com/PTah/security-alert-center) | +| seaca | [PapaTramp/seaca](https://git.kalinamall.ru/PapaTramp/seaca) | резерв не ведётся (только Gitea) | +| rdp-login-monitor | [PapaTramp/rdp-login-monitor](https://git.kalinamall.ru/PapaTramp/rdp-login-monitor) | [PTah/RDP-login-monitor](https://github.com/PTah/RDP-login-monitor) | +| ssh-monitor | [PapaTramp/ssh-monitor](https://git.kalinamall.ru/PapaTramp/ssh-monitor) | [PTah/ssh-monitor](https://github.com/PTah/ssh-monitor) | + +**seaca** — мобильное приложение; публичного зеркала на GitHub нет. При необходимости можно создать отдельный репозиторий **без** `google-services.json`, keystore, API-ключей и prod-конфигов. + +## Правила + +### git.kalinamall.ru (origin) + +- Полный исходный код, конфиги, allowlist-файлы, пароли, токены, `.env`, ключи, keystore — **всё, что нужно для развёртывания внутри сети**. +- Сюда делается обычная разработка: `git push origin main`. +- Доступ только из корпоративной сети / allowlist. + +### GitHub (remote `github`) + +- Только **резерв** исходников и документации. +- **Запрещено** коммитить и пушить: + - пароли, PIN, учётные записи; + - API-токены, PAT, JWT-секреты, `SECRET_KEY`, `DATABASE_URL` с паролем; + - приватные ключи (`*.pem`, `*.key`, `id_rsa`, keystore, `*.jks`, `*.p12`); + - `.env`, `.env.local`, `*.secret`, `credentials.json`, `google-services.json` (prod); + - файлы с реальными SMTP/Telegram/SAC credentials; + - дампы БД с персональными или служебными данными. +- Допустимо: примеры конфигов (`*.example`, `*.sample`, `env.example`), код, README, схемы без секретов. +- Перед `git push github` — просмотр `git diff github/main` или `git log -p` на предмет утечек. + +## Настройка remotes (один раз на машине) + +```bash +# origin — Gitea (основной) +git remote add origin git@git.kalinamall.ru:PapaTramp/ИМЯ-РЕПО.git +# если origin уже указывает на GitHub: +# git remote rename origin github +# git remote add origin git@git.kalinamall.ru:PapaTramp/ИМЯ-РЕПО.git + +# резерв на GitHub +git remote add github git@github.com:PTah/ИМЯ-НА-GITHUB.git +``` + +Проверка: + +```bash +git remote -v +# origin git@git.kalinamall.ru:PapaTramp/... (fetch/push) +# github git@github.com:PTah/... (fetch/push) +``` + +## Ежедневный workflow + +```bash +# 1. Работа и пуш в основное хранилище +git add ... +git commit -m "..." +git push origin main + +# 2. Резерв на GitHub — только после проверки, что нет секретов +git push github main +``` + +Для **seaca** и любых репозиториев без `github` remote — только шаг 1. + +## Что хранить только в Gitea (примеры по проектам) + +| Проект | Только в Gitea | +|--------|----------------| +| reverse-proxy | `git-sac-allowed`, `1c-allowed` (при желании), внутренние IP/пути | +| security-alert-center | `.env`, `SECRET_KEY`, пароль PostgreSQL, SMTP, Telegram bot token | +| seaca | prod URL, токены, `google-services.json`, signing keys | +| rdp-login-monitor | пароли WinRM, Telegram/SMTP, SAC registration tokens | +| ssh-monitor | `sacmob_*`, Telegram, SMTP, списки банов с чувствительным контекстом | + +На GitHub для мониторов и SAC оставляют `*.example` / шаблоны с плейсхолдерами. + +## Клонирование новой машины + +```bash +# предпочтительно — полная копия с секретами +git clone git@git.kalinamall.ru:PapaTramp/reverse-proxy.git + +# с GitHub — только если Gitea недоступен; секреты восстановить вручную из Gitea или vault +git clone git@github.com:PTah/reverse-proxy.git +``` + +См. также [git.md](git.md) — SSH-ключи и PAT для Gitea.