← Docs · Deploy

Deploy — единый процесс

Перед любым деплоем прочитай этот файл + memory/SERVER.md + memory/projects/<name>.md
SSH: ssh -i ~/.ssh/id_ed25519_hetzner root@95.216.197.32

Сервер (кратко)

Hetzner VPS ZHARRA95.216.197.32, Ubuntu 26.04
Reverse proxyCaddy (/etc/caddy/Caddyfile)
Статика/var/www/<domain>/
Docker apps/opt/<project>/

Проекты

1. alxklim.com — портфолио (статика)

Исходники~/Desktop/alxklim-portfolio
GitHubalxndr-klmnko/alxklim
Сервер/var/www/alxklim.com (git repo)
Сборканет — чистый HTML/CSS/JS
cd ~/Desktop/alxklim-portfolio
git add -A && git commit -m "..." && git push origin main
ssh -i ~/.ssh/id_ed25519_hetzner root@95.216.197.32 \
  'cd /var/www/alxklim.com && git pull origin main'
curl -sI https://alxklim.com | head -1

Альтернатива (без git на сервере): rsync -avz --delete --exclude '.git' ./ root@95.216.197.32:/var/www/alxklim.com/


2. medcard.alxklim.com — MedCard PWA

Исходники (код)~/Desktop/curescroll (Vite/React)
Артефакт деплоя~/Desktop/medcard (собранный dist/)
GitHubalxndr-klmnko/medcard
Сервер/var/www/medcard.alxklim.com (git repo)
# 1. Сборка
cd ~/Desktop/curescroll
npm run build
cp public/.htaccess dist/.htaccess 2>/dev/null || true

# 2. Копировать в deploy-репо
cp -r dist/* ~/Desktop/medcard/

# 3. Push
cd ~/Desktop/medcard
git add -A
git commit -m "Deploy: $(date +'%Y-%m-%d %H:%M:%S')"
git push origin main

# 4. Pull на сервере
ssh -i ~/.ssh/id_ed25519_hetzner root@95.216.197.32 \
  'cd /var/www/medcard.alxklim.com && git pull origin main'

curl -sI https://medcard.alxklim.com | head -1

⚠️ curescroll/deploy.sh устарел — там ultahost (oevvzpbk@medcard.alxklim.com). Не использовать. Актуальный flow — Hetzner + git pull.

stats.medcard.alxklim.com (PHP аналитика)

Исходники~/Desktop/curescroll/analytics-server/
Сервер/var/www/stats.medcard.alxklim.com
СтекPHP 8.5-fpm + Caddy php_fastcgi

Деплой:

cd ~/Projects/alxklim-infra
make deploy-medcard-stats

config.php на сервере не перезаписывается (rsync exclude).


3. technobard.alxklim.com — TechnoBard (Docker)

Репо~/Projects/techno_bard
GitHubalxndr-klmnko/techno_bard
Сервер/opt/technobard
Секретыtechno_bard/infra/alexklim/.env.production
cd ~/Projects/techno_bard
make deploy-alexklim
curl -s https://technobard.alxklim.com/health

Подробности: techno_bard/docs/DEPLOY-ALEXKLIM.md

Домены: technobard, listen.technobard, pay.technobard, technobard-livekit → Caddy reverse_proxy на localhost.


4. ZHARRA_BOT — Telegram-бот

Репо~/Projects/ZHARRA_BOT
Серверещё не задеплоен (план: тот же Hetzner)
План доменbot.alxklim.com или zharra.alxklim.com (TBD)
СтекDocker Compose (bot + Caddy) или host Caddy → container

Статус в dashboard: planned / not_deployed


5. dashboard.alxklim.com — infra dashboard

Репо~/Projects/alxklim-dashboard
GitHubalxndr-klmnko/alxklim-dashboard
Сервер/opt/alxklim-dashboard (Docker, порт 3010)
memory/opt/alxklim-infra/memory (volume, не копия)
cd ~/Projects/alxklim-dashboard
make deploy
curl -sI https://dashboard.alxklim.com | head -1

Подробности: memory/projects/dashboard.md


Caddy

Файл: /etc/caddy/Caddyfile на сервере.

БлокТипBackend
alxklim.com, wwwfile_server/var/www/alxklim.com
medcard.alxklim.comfile_server + SPA fallback/var/www/medcard.alxklim.com
stats.medcard.alxklim.comphp_fastcgi/var/www/stats.medcard.alxklim.com
technobard.*, listen.*, pay.*reverse_proxy127.0.0.1:3000 / :8080
technobard-livekit.*reverse_proxy127.0.0.1:7880

TechnoBard блок помечен # technobard-managed — обновляется через techno_bard/infra/hetzner/setup-caddy.sh.


Секреты

См. memory/SECRETS.md. Не коммитить, не писать в чат.


Healthcheck

make healthcheck
# или: ~/Projects/alxklim-infra/scripts/healthcheck.sh

Deploy scripts (alxklim-infra)

make deploy-portfolio
make deploy-medcard
make deploy-medcard-stats
make deploy-technobard
make healthcheck
make sync-infra

Проверяет: alxklim.com, medcard, stats, technobard /health