docs: restore haproxy-kalinamall.md with git.kalinamall.ru guide
Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# HAProxy и Gitea для kalinamall.ru
|
||||
|
||||
Этот документ описывает **боевую схему kalinamall.ru**: HAProxy на периметре в режиме **TCP + SNI на порту 443** без завершения TLS на самом HAProxy — соединение с шифрованием уходит на внутренние серверы (**GlobalSign wildcard *.kalinamall.ru** на каждом бэкенде, включая Gitea).
|
||||
|
||||
Актуальный конфиг целиком лежит в репозитории:
|
||||
|
||||
- **[`docs/haproxy-kalinamall.cfg`](haproxy-kalinamall.cfg)**
|
||||
|
||||
## Общая логика
|
||||
|
||||
| Снаружи клиент видит | HAProxy делает | Бэкенд |
|
||||
|----------------------|----------------|--------|
|
||||
| HTTPS по имени из списка SNI | Прозрачный TCP-туннель по выбранному правилу | Сервер с TLS на своём порту |
|
||||
|
||||
Для **git.kalinamall.ru**:
|
||||
|
||||
- По **SNI `git.kalinamall.ru`** на `:443` трафик идёт на **`192.168.160.129:443`** (`backend be_gitea`), проверка `check ssl verify none`.
|
||||
- Сертификат **wildcard** должен быть настроен **на узле Gitea** (или на промежуточном TLS-терминаторе перед Gitea на этом IP): HAProxy только пересылает уже установленное клиентом TLS-соединение.
|
||||
|
||||
По **SSH для Git**:
|
||||
|
||||
- На HAProxy слушатель **`*:2222`** → **`192.168.160.129:2222`** (типичный SSH-порт контейнера Gitea на хосте).
|
||||
|
||||
Остальные имена на том же `:443` (Exchange, RDS, ERP, SMTP на `:25`, stats на `:8404`) — как в файле конфигурации и комментариях к нему.
|
||||
|
||||
## Имена и адреса для Gitea
|
||||
|
||||
| Роль | Значение |
|
||||
|------|----------|
|
||||
| Публичный URL веб-интерфейса и HTTPS Git | `https://git.kalinamall.ru` |
|
||||
| SSH Git (`clone` / `push`) | хост `git.kalinamall.ru`, порт **2222** (на периметре) |
|
||||
| Бэкенд в LAN | **`192.168.160.129`** — HTTPS **443**, SSH **2222** |
|
||||
|
||||
Если на HAProxy имя `git.kalinamall.ru` резолвится во внутренний адрес — это удобно для диагностики из LAN; для самого HAProxy маршрутизация задаётся по **SNI**, а не по DNS на прокси.
|
||||
|
||||
## Gitea: `app.ini`
|
||||
|
||||
На сервере Gitea (не на HAProxy):
|
||||
|
||||
- **`ROOT_URL=https://git.kalinamall.ru/`**
|
||||
- В настройках SSH для пользователей укажите домен **`git.kalinamall.ru`** и внешний порт **`2222`** (тот, что опубликован на HAProxy).
|
||||
|
||||
Убедитесь, что Gitea реально отдаёт **HTTPS на 443** на `192.168.160.129`, если в конфиге HAProxy указан именно этот порт. Если контейнер слушает только HTTP `:3000`, нужен отдельный TLS-фронт на этом хосте или изменение схемы публикации (см. комментарии в [`haproxy-kalinamall.cfg`](haproxy-kalinamall.cfg)).
|
||||
|
||||
После правок перезапустите Gitea.
|
||||
|
||||
## DNS
|
||||
|
||||
- **Из интернета:** записи для нужных имён (в том числе `git.kalinamall.ru`) должны указывать на публичный IP HAProxy (или NAT на него).
|
||||
- **Из LAN:** по желанию **Split DNS**, чтобы те же FQDN резолвились во внутренний адрес HAProxy или сервера.
|
||||
|
||||
## Проверка после выкладки конфига HAProxy
|
||||
|
||||
На узле HAProxy:
|
||||
|
||||
```bash
|
||||
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||||
sudo systemctl reload haproxy
|
||||
```
|
||||
|
||||
Проверки с клиента (после того как DNS и сертификаты готовы):
|
||||
|
||||
```bash
|
||||
curl -fsS -o /dev/null -w "%{http_code}\n" https://git.kalinamall.ru/api/healthz
|
||||
ssh -T -p 2222 git@git.kalinamall.ru
|
||||
```
|
||||
|
||||
Статистика HAProxy в примере конфига на порту `:8404`; в файле репозитория пароль — **заглушка**, на сервере задайте свой и не коммитьте секреты в Git.
|
||||
|
||||
## Клиент SSH (`~/.ssh/config`)
|
||||
|
||||
Пример:
|
||||
|
||||
```sshconfig
|
||||
Host git-kalinamall
|
||||
HostName git.kalinamall.ru
|
||||
User git
|
||||
Port 2222
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
```
|
||||
|
||||
## Отличие от варианта «TLS на HAProxy»
|
||||
|
||||
В [`haproxy/haproxy.cfg`](../haproxy/haproxy.cfg) для домашней сети используется режим **HTTP на HAProxy**, сертификат PEM на прокси и бэкенд Gitea по **HTTP :3000**. В kalinamall.ru наоборот: **TLS до бэкенда**, один общий паттерн с Exchange/RDS/ERP.
|
||||
Reference in New Issue
Block a user