Przewodnik krok po krok dla deployment'u architektury OPA Zero Poll na Railway.
- Konto Railway (https://railway.app)
- GitHub repo z kodem OPA Zero Poll
- Railway CLI (opcjonalne):
npm install -g @railway/cli
- PostgreSQL Database → Foundation
- Data Provider API → Backend services
- Next.js Frontend Update → Environment variables
-
Idź do Railway Dashboard: https://railway.app/dashboard
-
Kliknij "New Project"
-
Wybierz "Deploy PostgreSQL"
-
Konfiguracja:
Service Name: opa-postgres-db Database Name: opa_zero_poll Username: opa_user Password: [auto-generated] -
Po utworzeniu bazy:
- Przejdź do zakładki "Connect"
- Skopiuj "Private Network URL"
- Zapisz też DATABASE_URL (będzie potrzebny)
railway login
railway init opa-zero-poll
railway add postgresql- W Railway Dashboard → PostgreSQL service → "Data" tab
- Otwórz Query Editor
- Uruchom skrypty w kolejności:
-- 1. Wklej zawartość new-architecture/database/schema.sql
-- 2. Uruchom (Create Tables)
-- 3. Wklej zawartość new-architecture/database/seed_data.sql
-- 4. Uruchom (Load Sample Data)Alternatywnie - użyj psql lokalnie:
# Pobierz DATABASE_URL z Railway Dashboard
export DATABASE_URL="postgresql://postgres:password@host:port/dbname"
# Uruchom inicjalizację
psql $DATABASE_URL -f new-architecture/database/schema.sql
psql $DATABASE_URL -f new-architecture/database/seed_data.sql- W Railway Dashboard → "New Service"
- Wybierz "GitHub Repo"
- Podłącz repo:
opa-zero-poll - Root Directory:
new-architecture/components/data-provider-api - Environment Variables:
# Basic Configuration
PORT=8110
DEBUG=false
WEBHOOK_SECRET=railway_production_secret_2025!
# Database Connection (używaj wartości z PostgreSQL service)
DB_HOST=[Private Network URL z PostgreSQL - tylko hostname]
DB_PORT=5432
DB_USER=opa_user
DB_PASSWORD=[hasło z PostgreSQL service]
DB_NAME=opa_zero_poll
# Feature Flags
DISABLE_JWT_VALIDATION=true- Deploy → Railway automatycznie użyje Dockerfile
W Railway Dashboard:
- PostgreSQL service → "Settings" → "Networking"
- Zanotuj Private Network URL:
opa-postgres-db.railway.internal:5432 - Data Provider API → "Variables" → użyj:
DB_HOST=opa-postgres-db.railway.internal
- Istniejący Next.js service → "Variables"
- Dodaj/Aktualizuj:
# Data Provider API URL (użyj Public URL z service)
DATA_PROVIDER_API_URL=https://[data-provider-api-url].railway.app
# Opcjonalne - dla development debug
NODE_ENV=productionRailway automatycznie zredeploy'uje frontend po dodaniu zmiennych.
curl https://[data-provider-api-url].railway.app/healthExpected response:
{
"status": "healthy",
"database": "available",
"timestamp": "2025-01-17T..."
}# Users
curl https://[data-provider-api-url].railway.app/api/users
# Applications
curl https://[data-provider-api-url].railway.app/api/applications
# Profiles
curl https://[data-provider-api-url].railway.app/api/profiles- Otwórz: https://opa-zero-poll-production.up.railway.app/users
- Sprawdź czy:
- Lista użytkowników się ładuje
- Zarządzanie dostępem działa
- Brak błędów w konsoli
# Check PostgreSQL service logs
railway logs --service opa-postgres-db
# Check Data Provider API logs
railway logs --service data-provider-api- Connection refused: Sprawdź Private Network URL
- Authentication failed: Sprawdź DB_PASSWORD
- Database not found: Sprawdź DB_NAME
- CORS errors: Sprawdź DATA_PROVIDER_API_URL w frontend
Railway Dashboard provides:
- Metrics: CPU, Memory, Network usage
- Logs: Real-time application logs
- Health Checks: Automated service monitoring
Po pomyślnym deployment'u podstawowych komponentów:
- OPA Standalone (authorization engine)
- OPAL Server/Client (policy management)
- Provisioning API (tenant management)
- Redis (caching layer)
Ready to deploy! 🚀