ollama-manager

Gestisce il ciclo di vita dei modelli Ollama e li espone in modo sicuro via API compatibile OpenAI.

Funzionalità

Routing per sottodominio

Il microservizio legge l'header X-Forwarded-Host (o Host) per determinare il modello:


gemma4b.vinovalab.ai  →  Bearer olm_xxx  →  ollama-manager  →  ollama (model: gemma4:e2b)

La mappatura sottodominio → model name si gestisce via /api/admin/aliases.

Variabili d'ambiente

| Variabile | Default | Descrizione | |---|---|---| | PORT | 5029 | Porta HTTP | | DATABASE_URL | — | Connessione PostgreSQL (per token e alias) | | REDIS_HOST | redis | Host Redis (cache token) | | REDIS_PORT | 6379 | Porta Redis | | REDIS_PASSWORD | — | Password Redis | | OLLAMA_BASE_URL | http://ollama:11434 | URL base Ollama | | OLLAMA_ADMIN_SUBDOMAIN | ollama | Sottodominio riservato all'admin (non proxy) |

API Routes

Admin (richiede autenticazione interna)


GET    /api/admin/models            Lista modelli installati

GET    /api/admin/models/running    Modelli in esecuzione (VRAM)

GET    /api/admin/models/:name      Dettagli modello

POST   /api/admin/models/pull       Pull modello (SSE progress stream)

DELETE /api/admin/models/:name      Elimina modello



GET    /api/admin/tokens            Lista token di accesso

POST   /api/admin/tokens            Crea token (restituisce il plaintext una volta sola)

DELETE /api/admin/tokens/:id        Revoca token



GET    /api/admin/aliases           Lista alias sottodominio → modello

POST   /api/admin/aliases           Crea alias

DELETE /api/admin/aliases/:id       Elimina alias

Inference proxy (richiede Bearer token olm_*)


GET    /v1/models

POST   /v1/chat/completions

POST   /v1/completions

POST   /v1/embeddings

Token flow

1. Admin genera token via POST /api/admin/tokens 2. Il server genera olm_<64hex>, salva SHA256(token) in DB, restituisce il plaintext **una volta sola** 3. Il client chiama /v1/chat/completions con Authorization: Bearer olm_xxx 4. ollama-manager verifica (Redis cache 60s → fallback DB), poi proxya verso Ollama