Installa un server
Un server Kedalio sono tre container: il server, Caddy davanti per l’HTTPS e un primo host accanto. Li installi con un comando, oppure come risorsa su un server Coolify che hai già.
Cosa ti serve
Sezione intitolata “Cosa ti serve”- Una macchina Linux con Docker e Docker Compose v2 (
docker compose). Se manca uno dei due, l’installer si ferma e lo dice. - Un dominio il cui DNS punta alla macchina, per esempio
app.example.com. Caddy prende il certificato da Let’s Encrypt. - Le porte 80 e 443 (TCP, e UDP per la 443) libere. Caddy è l’unico container in ascolto verso l’esterno.
sudo, una volta, su una macchina con AppArmor attivo: il profilo dell’host va caricato nel kernel.
L’immagine dell’host è costruita per amd64 e arm64.
Con l’installer
Sezione intitolata “Con l’installer”curl -fsSL https://get.kedalio.com | shFa una domanda sola:
Domain for Kedalio (its DNS must point at this machine), e.g. app.example.com:Poi:
- scarica le immagini del server e dell’host;
- scrive la cartella dell’installazione,
~/kedalio:compose.yaml,Caddyfile, i profili seccomp e AppArmor dell’host, tutti presi dall’immagine dell’host della stessa versione, e.envcon il dominio e un codice monouso per il primo host; - carica il profilo AppArmor dell’host in
/etc/apparmor.d, se la macchina ha AppArmor (è ilsudo); - avvia i tre container;
- stampa il link che crea il tuo account.
Kedalio is up. Make your account (the link works once, for seven days):https://app.example.com/invite#…Aprilo, scegli come entri (una passkey, una password con il codice di un’app di autenticazione, o tutte e due) e sei il primo account del server e il suo amministratore. L’host avviato accanto al server entra da solo appena l’account esiste. I passi successivi sono in Account e accesso.
Senza terminale
Sezione intitolata “Senza terminale”In una CI o in uno script tutto arriva dall’ambiente: KEDALIO_DOMAIN e, se servono, KEDALIO_DIR (la cartella, di default ~/kedalio), KEDALIO_VERSION, KEDALIO_REGISTRY, KEDALIO_SERVER_IMAGE, KEDALIO_HOST_IMAGE, KEDALIO_HTTP_PORT, KEDALIO_HTTPS_PORT, KEDALIO_ENGINES (cambia le versioni dei motori che gli host installano, già fissate dal server; per esempio claude-code@2.1.0,codex@0.50.0) e KEDALIO_NO_PULL=1 per immagini già presenti sulla macchina.
Aggiornare
Sezione intitolata “Aggiornare”Lancia di nuovo l’installer. Conserva .env (il dominio, il codice, la versione e il registry), prende i file della nuova immagine e riavvia i container. Per passare a un’altra versione dai KEDALIO_VERSION; senza, resta quella installata. Gli host poi seguono da soli la versione del server (Aggiungi un host).
Se il link non compare
Sezione intitolata “Se il link non compare”L’installer aspetta due minuti il primo avvio del server. Un server che ha già il suo account non stampa nessun link:
Kedalio is up at https://app.example.com (no first-account link: the instance already has its account).Finché non esiste un account, il server crea un link nuovo a ogni avvio e i precedenti smettono di funzionare. Lo trovi nel log del server:
docker compose --project-directory ~/kedalio logs server | grep "first account"Su Coolify
Sezione intitolata “Su Coolify”deploy/coolify/compose.yaml fa girare il server e un host su un server Coolify, dalle immagini di Kedalio (le stesse che usa deploy/get.sh), senza che Coolify le ricostruisca. Davanti c’è il proxy di Coolify, quindi niente Caddy.
-
Una volta per macchina, da root, prima del primo deploy, carica il profilo AppArmor dell’host da un clone del repository:
Finestra del terminale sudo install -m 0644 apps/host/image/apparmor/kedalio-host /etc/apparmor.d/kedalio-hostsudo apparmor_parser -r -W /etc/apparmor.d/kedalio-host -
Aggiungi una risorsa dal repository con il build pack Docker Compose, directory di base
/, file composedeploy/coolify/compose.yaml. -
Dai al servizio
serveril suo dominio (https://app.example.com) e impostaKEDALIO_URLallo stesso indirizzo,KEDALIO_SERVER_IMAGEeKEDALIO_HOST_IMAGEalle due immagini (registry.example.com/kedalio/kedalio-server:<versione>e…/kedalio-host:<versione>). Con un tag che si sposta, come:dev, ogni deploy prende la più recente. -
Fai il deploy. Coolify genera una volta il codice del primo host e lo conserva. Il link del primo account è nel log del servizio
server, come sopra.
Variabili facoltative: KEDALIO_HOST_NAME (il nome dell’host, local di default), KEDALIO_HOST_MEMORY (8g di default) e KEDALIO_HOST_CPUS (4), KEDALIO_ENGINES, e KEDALIO_CLIENT_IP_HEADER, l’intestazione con l’indirizzo di chi visita. Di default non c’è, e allora ogni visitatore conta come il proxy di Coolify, quindi impostala: x-forwarded-for dietro il solo proxy di Coolify, cf-connecting-ip dietro Cloudflare quando solo Cloudflare raggiunge la macchina (altrimenti chiunque può scrivere quell’intestazione).
I tuoi dati
Sezione intitolata “I tuoi dati”Tutto sta nel volume del server (/data dentro il container):
instance.db, e un database per account inaccounts/<id>/account.db;kek, la chiave dell’istanza, che cifra il vault;backups/, una copia di ogni database fatta prima di ogni migrazione (si tengono le cinque più recenti) e una al giorno (si tengono le sette più recenti). Le migrazioni partono da sole all’avvio.
Il backup del volume è tuo o della tua piattaforma: Kedalio non ha un comando di backup. Tieni il file kek separato dal backup dei database. Se va perso, il vault resta chiuso finché non dai il codice di recupero mostrato al tuo primo accesso.
Controllare
Sezione intitolata “Controllare”https://app.example.com/healthrisponde con il nome e la versione del server.https://app.example.com/readydice se i database e il vault sono pronti.
La ricerca nella memoria funziona per parole e per significato. Sia l’installer sia il file per Coolify avviano accanto al server un servizio embed: llama.cpp con il modello bge-m3 (circa 600 MB, scaricato al primo avvio, circa 800 MB di memoria), su tre core con un peso di CPU basso, così il server e i run vengono prima. KEDALIO_EMBED_THREADS cambia i core. Finché non risponde, la ricerca è per parole, e lo dice.
Non ancora costruiti: un comando kedalio update, un modello per Railway e un comando per disinstallare.