Skip to main content

Deployment & Operations Guide

End-to-end guide for deploying and operating the Renault Club Bulgaria platform on a Hetzner VPS.

Follow the guides in order — each step builds on the previous one.


What You'll Set Up

GitHub Actions CI/CD

▼ push to `future` / `master`
┌──────────────────────────────────────────┐
│ 1. Maven build + tests (BE) │
│ 2. Docker build + push → GHCR │
│ 3. SSH → VPS → deploy.sh │
│ 4. Health gate (120 s / 60 s) │
│ 5. Slack ✅ / 🔴 notification │
└──────────────────────────────────────────┘


Hetzner VPS /opt/rcb/

├── Traefik v3 (TLS termination)
├── rcb-backend (Spring Boot 3.x)
├── rcb-frontend (React 19 / nginx)
├── Keycloak 26 (SSO / Auth)
├── PostgreSQL 16 (Primary DB)
├── Ghost CMS (Blog)
├── Prometheus (Metrics)
├── Alertmanager ──► Slack #rcb-alerts
├── Grafana (Dashboards)
└── Loki (Log aggregation)

Guide Index

#GuideResponsibility
1Architecture OverviewHow all components connect
2VPS BootstrapOne-time server setup
3Environment Variables & SecretsAll .env keys and GitHub Secrets
4GitHub Actions CI/CDAutomated build → push → deploy pipeline
5Deploy & RollbackDaily operations: deploy, rollback, health check
6Alertmanager SetupPrometheus alerts → Slack
7Slack NotificationsSlack incoming webhook configuration

Quick-Start Checklist

Before running anything in production, verify these prerequisites:

  • Hetzner VPS created (Ubuntu 22.04 LTS, 2 vCPU / 4 GB RAM minimum)
  • Domain name pointing to VPS IP (rcb.bg → VPS)
  • GitHub repos with Actions enabled: ivelin1936/Renault-Club-Bulgaria, ivelin1936/renault-club-bulgaria-fe
  • Slack workspace with incoming webhook URL (see Slack Notifications)
  • GHCR (GitHub Container Registry) — free with GitHub account, no setup needed
  • Docker installed on VPS (see VPS Bootstrap)