Deploy — единый процесс
Перед любым деплоем прочитай этот файл +
memory/SERVER.md+memory/projects/<name>.md
SSH:ssh -i ~/.ssh/id_ed25519_hetzner root@95.216.197.32
Сервер (кратко)
| Hetzner VPS ZHARRA | 95.216.197.32, Ubuntu 26.04 |
| Reverse proxy | Caddy (/etc/caddy/Caddyfile) |
| Статика | /var/www/<domain>/ |
| Docker apps | /opt/<project>/ |
Проекты
1. alxklim.com — портфолио (статика)
| Исходники | ~/Desktop/alxklim-portfolio |
| GitHub | alxndr-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/) |
| GitHub | alxndr-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 |
| GitHub | alxndr-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 |
| GitHub | alxndr-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, www | file_server | /var/www/alxklim.com |
medcard.alxklim.com | file_server + SPA fallback | /var/www/medcard.alxklim.com |
stats.medcard.alxklim.com | php_fastcgi | /var/www/stats.medcard.alxklim.com |
technobard.*, listen.*, pay.* | reverse_proxy | 127.0.0.1:3000 / :8080 |
technobard-livekit.* | reverse_proxy | 127.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