chore(deploy): адреса серверов из deploy/.env.local, а не из репозитория
DEPLOY_HOST, RELAY_HOST и TELEGRAM_BOT_ID обязательны и читаются из неотслеживаемого deploy/.env.local (образец — .env.local.example).
This commit is contained in:
@@ -33,3 +33,4 @@ playwright-report/
|
||||
# бинарник детектора impeccable (16 МБ, ставится `npx impeccable install`)
|
||||
.claude/skills/impeccable/scripts/bin/
|
||||
.idea/
|
||||
!deploy/.env.local.example
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# Скопировать в deploy/.env.local (не коммитится) и заполнить.
|
||||
# ssh-адрес VPS для deploy.sh и setup-nginx.sh
|
||||
DEPLOY_HOST=root@<VPS_IP>
|
||||
# ssh-адрес домашнего сервера для tg-relay/deploy.sh
|
||||
RELAY_HOST=nick@<HOME_LAN_IP>
|
||||
# числовая часть токена бота до двоеточия
|
||||
TELEGRAM_BOT_ID=<BOT_ID>
|
||||
+5
-2
@@ -2,13 +2,16 @@
|
||||
# Деплой «Кварты» на VPS. Запускать локально из корня репозитория:
|
||||
# deploy/deploy.sh — собрать HEAD и выкатить
|
||||
# deploy/deploy.sh --rollback — вернуть предыдущий тег из /root/kvarta_site/.deployed
|
||||
# Хост: DEPLOY_HOST (по умолчанию root@185.5.249.52).
|
||||
# Хост: DEPLOY_HOST из deploy/.env.local или окружения.
|
||||
#
|
||||
# На сервере рядом чужие боевые сайты: скрипт трогает только /root/kvarta_site,
|
||||
# контейнеры проекта kvarta и образы kvarta-landing/kvarta-api. Никаких prune.
|
||||
set -euo pipefail
|
||||
|
||||
DEPLOY_HOST="${DEPLOY_HOST:-root@185.5.249.52}"
|
||||
# адреса серверов в репо не храним: deploy/.env.local (образец — deploy/.env.local.example)
|
||||
# shellcheck source=/dev/null
|
||||
[[ -f "$(dirname "$0")/.env.local" ]] && source "$(dirname "$0")/.env.local"
|
||||
DEPLOY_HOST="${DEPLOY_HOST:?задайте DEPLOY_HOST в deploy/.env.local (см. deploy/.env.local.example)}"
|
||||
REMOTE_DIR=/root/kvarta_site
|
||||
COMPOSE_FILE=docker-compose_vps.yml
|
||||
PROJECT=kvarta
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
# Однократная настройка nginx и HTTPS для kvarta.unuchak.com. Запускать локально из корня:
|
||||
# CERTBOT_EMAIL=you@example.com deploy/setup-nginx.sh
|
||||
# Хост: DEPLOY_HOST (по умолчанию root@185.5.249.52). Повторный запуск безопасен.
|
||||
# Хост: DEPLOY_HOST из deploy/.env.local или окружения. Повторный запуск безопасен.
|
||||
#
|
||||
# На сервере чужие боевые сайты: при ошибке `nginx -t` наш симлинк убирается
|
||||
# и reload не делается — общий nginx не должен упасть из-за нашего конфига.
|
||||
set -euo pipefail
|
||||
|
||||
DEPLOY_HOST="${DEPLOY_HOST:-root@185.5.249.52}"
|
||||
# адреса серверов в репо не храним: deploy/.env.local (образец — deploy/.env.local.example)
|
||||
# shellcheck source=/dev/null
|
||||
[[ -f "$(dirname "$0")/.env.local" ]] && source "$(dirname "$0")/.env.local"
|
||||
DEPLOY_HOST="${DEPLOY_HOST:?задайте DEPLOY_HOST в deploy/.env.local (см. deploy/.env.local.example)}"
|
||||
DOMAIN=kvarta.unuchak.com
|
||||
CONF_SRC="deploy/nginx/$DOMAIN.conf"
|
||||
AVAILABLE="/etc/nginx/sites-available/$DOMAIN"
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
# Ставит ретранслятор Bot API на домашний сервер. Запускать локально из корня:
|
||||
# TELEGRAM_BOT_ID=8959389487 deploy/tg-relay/deploy.sh
|
||||
# RELAY_HOST (по умолчанию nick@192.168.100.50), RELAY_BIND — адрес Tailscale хоста (по умолчанию его tailscale ip -4).
|
||||
# deploy/tg-relay/deploy.sh (TELEGRAM_BOT_ID и RELAY_HOST — в deploy/.env.local)
|
||||
# RELAY_HOST — ssh-адрес домашнего сервера, RELAY_BIND — адрес Tailscale хоста (по умолчанию его tailscale ip -4).
|
||||
# Токен бота сюда не нужен: ретранслятор только пересылает запросы.
|
||||
set -euo pipefail
|
||||
|
||||
RELAY_HOST="${RELAY_HOST:-nick@192.168.100.50}"
|
||||
# адреса серверов в репо не храним: deploy/.env.local (образец — deploy/.env.local.example)
|
||||
# shellcheck source=/dev/null
|
||||
[[ -f "$(dirname "$0")/../.env.local" ]] && source "$(dirname "$0")/../.env.local"
|
||||
RELAY_HOST="${RELAY_HOST:?задайте RELAY_HOST в deploy/.env.local (см. deploy/.env.local.example)}"
|
||||
RELAY_PATH="${RELAY_PATH:-/home/nick/home_server/kvarta_tg_relay}"
|
||||
: "${TELEGRAM_BOT_ID:?задайте TELEGRAM_BOT_ID — числовая часть токена до двоеточия}"
|
||||
[[ $TELEGRAM_BOT_ID =~ ^[0-9]+$ ]] || { echo "TELEGRAM_BOT_ID — только цифры" >&2; exit 1; }
|
||||
|
||||
+2
-1
@@ -11,10 +11,11 @@ kvarta-api → Tailscale → домашний сервер :8788 kvarta-tg-relay
|
||||
|
||||
## Первый запуск
|
||||
|
||||
0. `cp deploy/.env.local.example deploy/.env.local` и вписать ssh-адреса VPS и домашнего сервера и id бота — в репо адресов нет.
|
||||
1. `CERTBOT_EMAIL=… deploy/setup-nginx.sh` — конфиг nginx, `nginx -t`, reload, сертификат. Повторный запуск безопасен.
|
||||
2. `deploy/deploy.sh` — сборка образов `linux/amd64` локально (JS собирается нативно, нативные модули — под целевую платформу), `docker save | ssh docker load`, `docker-compose up -d`, проверка `/api/health`. Требует чистого дерева git.
|
||||
3. На VPS заполнить `/root/kvarta_site/api.env` (chmod 600, скрипты его не трогают): `TELEGRAM_BOT_TOKEN`, `TELEGRAM_ADMIN_ID`, `TELEGRAM_API_BASE=http://<tailscale-ip-домашнего>:8788`.
|
||||
4. `TELEGRAM_BOT_ID=<цифры токена до двоеточия> deploy/tg-relay/deploy.sh` — ретранслятор на домашнем сервере (оба узла должны быть в Tailscale; на VPS — `tailscale up --accept-dns=false`, чтобы не задеть DNS соседних сайтов).
|
||||
4. `deploy/tg-relay/deploy.sh` — ретранслятор на домашнем сервере (оба узла должны быть в Tailscale; на VPS — `tailscale up --accept-dns=false`, чтобы не задеть DNS соседних сайтов).
|
||||
5. Telegram: администратор пишет боту `/start`; в группе включить «Темы», сделать бота админом с правом «Управление темами»; написать в группе `/setup`. Бот создаст «Kvarta Cafe: Заявки» и «Kvarta Cafe: Система» и пришлёт в личку `TELEGRAM_CHAT_ID`, `TELEGRAM_LEADS_THREAD_ID`, `TELEGRAM_SYSTEM_THREAD_ID` — вписать в `api.env` и перезапустить api:
|
||||
|
||||
```
|
||||
|
||||
+1
-1
@@ -148,7 +148,7 @@ CREATE TABLE lead_clarifications (
|
||||
|
||||
## Деплой
|
||||
|
||||
- Сервер: root@185.5.249.52, x86_64, `docker-compose` v2.23 (плагина `docker compose` нет), диск занят на 89%. Рядом чужие боевые сайты — трогаем только своё.
|
||||
- Сервер: root@<VPS_IP>, x86_64, `docker-compose` v2.23 (плагина `docker compose` нет), диск занят на 89%. Рядом чужие боевые сайты — трогаем только своё.
|
||||
- `/root/kvarta_site/`: `docker-compose_vps.yml` (landing `127.0.0.1:13120:3000`, api `127.0.0.1:13121:3000`, volume `kvarta-data:/data` только у api, `restart: unless-stopped`), `api.env` (chmod 600, заполняет автор, скрипты не трогают).
|
||||
- `deploy/deploy.sh` (локально): чистое дерево → `SHA` → buildx `linux/amd64` → `kvarta-landing:$SHA`, `kvarta-api:$SHA` (+`latest`) → проверка ≥1 ГБ свободно → `docker save | gzip | ssh 'gunzip | docker load'` → scp compose → `up -d` → ждать `/api/health` 30 с → удалить `kvarta-*` кроме текущего и предыдущего. `--rollback` — на предыдущий тег. Никакого общего `docker image prune`.
|
||||
- `deploy/setup-nginx.sh` (однократно): конфиг по образцу ai-testing (`/` → 13120, `/api/` → 13121, `X-Real-IP`), `nginx -t` → reload → `certbot --nginx -d kvarta.unuchak.com`.
|
||||
|
||||
Reference in New Issue
Block a user