dal-license-server/docs/SETUP.md
djuka dc0114e4b7 Inicijalni commit: kompletna implementacija + dokumentacija + testovi
- Kompletna Go implementacija licencnog servera (19 Go fajlova)
- Klijentski API: activate, deactivate, validate
- Admin API: CRUD licence, stats, audit log
- Admin dashboard: htmx + Go templates
- RSA-2048 potpisivanje licencnih podataka
- Rate limiting i API key autentifikacija
- MySQL migracije i seed podaci (ESIR, ARV, LIGHT_TICKET)
- Unit testovi: keygen, crypto, model, middleware (24 testa)
- Dokumentacija: SPEC.md, ARCHITECTURE.md, SETUP.md, API.md, TESTING.md, README.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 07:42:25 +00:00

2.9 KiB

DAL License Server — Setup i Deployment

Preduslovi

  • Go 1.22+
  • MySQL 8.0
  • OpenSSL (za generisanje RSA kljuceva)

Instalacija

1. Kloniraj projekat

cd /root/projects
git clone http://localhost:3000/dal/dal-license-server.git
cd dal-license-server

2. Instaliraj Go zavisnosti

go mod download

3. Kreiraj MySQL bazu

CREATE DATABASE dal_license_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'license'@'localhost' IDENTIFIED BY 'TVOJA_LOZINKA';
GRANT ALL PRIVILEGES ON dal_license_db.* TO 'license'@'localhost';
FLUSH PRIVILEGES;

4. Generiši RSA kljuceve

mkdir -p crypto
openssl genrsa -out crypto/private.pem 2048
openssl rsa -in crypto/private.pem -pubout -out crypto/public.pem
chmod 600 crypto/private.pem

Vazno: private.pem nikad ne sme uci u git. public.pem se deli sa klijentskim aplikacijama.

5. Konfiguracija

cp .env.example .env

Uredi .env:

APP_PORT=8090
APP_ENV=production

DB_HOST=localhost
DB_PORT=3306
DB_NAME=dal_license_db
DB_USER=license
DB_PASS=tvoja_lozinka

ADMIN_API_KEY=generisi-min-32-char-kljuc
ADMIN_PASSWORD=jaka_lozinka
SESSION_SECRET=random-32-char-string

RSA_PRIVATE_KEY_PATH=./crypto/private.pem

RATE_LIMIT_ACTIVATE=10
RATE_LIMIT_VALIDATE=60

LOG_LEVEL=info

6. Pokretanje

go run cmd/server/main.go

Server se pokrece na http://localhost:8090. Migracije se izvrsavaju automatski pri prvom pokretanju.

Produkcijski deployment

Build

go build -o dal-license-server cmd/server/main.go

Systemd servis

Kreiraj /etc/systemd/system/dal-license-server.service:

[Unit]
Description=DAL License Server
After=network.target mysql.service

[Service]
Type=simple
User=root
WorkingDirectory=/root/projects/dal-license-server
ExecStart=/root/projects/dal-license-server/dal-license-server
Restart=always
RestartSec=5
EnvironmentFile=/root/projects/dal-license-server/.env

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable dal-license-server
systemctl start dal-license-server

HTTPS (reverse proxy)

Preporuceno: Caddy ili Nginx kao reverse proxy sa TLS:

# Caddy primer
license.dal.rs {
    reverse_proxy localhost:8090
}

Backup

MySQL backup

mysqldump -u license -p dal_license_db > backup_$(date +%Y%m%d).sql

RSA kljucevi

Obavezno backup-ovati crypto/private.pem na sigurno mesto. Gubitak private key-a znaci da nijedna postojeca licenca ne moze biti verifikovana.

Testiranje

# Svi testovi
go test ./... -v -count=1

# Health check
curl http://localhost:8090/api/v1/health

Pristup

Interfejs URL Auth
Dashboard http://localhost:8090/dashboard Username + password iz .env
Admin API http://localhost:8090/api/v1/admin/* X-API-Key header
Klijentski API http://localhost:8090/api/v1/* Bez auth-a

Mart 2026