Vai al contenuto

Soluzioni · Chat sui documenti

Un VPS per AnythingLLM

AnythingLLM è uno spazio di chat privato sui vostri documenti: caricate i file, questi vengono convertiti in embedding in un database vettoriale integrato e potete interrogarli tramite un modello ospitato dietro una chiave API oppure un modello locale tramite Ollama. La documentazione richiede 2 GB di RAM, una CPU a 2 core con AVX2 e 5 GB di disco, e indica AVX2 come l'unico requisito rigido. GL2-4 a $11.90 al mese è la macchina più economica che soddisfa questa soglia; BD-8 a $12.90 è quella che compreremmo noi, perché l'embedder gira sulla CPU di questa macchina.

Cosa richiede

Software dalla documentazione, dimensioni con la fonte indicata

Il software e le impostazioni di sicurezza provengono dalla documentazione del progetto stesso. Dove il progetto non pubblica requisiti hardware, le dimensioni indicano di chi sono.

Da docs.anythingllm.com e dalla guida Docker del progetto

  • “RAM 2GB, 2-core CPU with AVX2, Storage 5GB”: il minimo della documentazione. Su una macchina cloud la guida Docker indica almeno 2 GB di RAM e un minimo di 10 GB di disco.
  • AVX2 è “l'unico requisito vincolante”: il database vettoriale predefinito è compilato per CPU dal 2013 in poi, e senza di esso il server si arresta all'avvio. Verificate dentro la macchina: lscpu | grep -o avx2. Se non stampa nulla, impostate VECTOR_DB su un altro database vettoriale.
  • Installazione: docker run -d -p 3001:3001 --cap-add SYS_ADMIN … mintplexlabs/anythingllm con una directory di archiviazione montata su /app/server/storage. L'app è sulla porta 3001.
  • La chat richiede un modello: una chiave API di un provider ospitato, oppure Ollama sulla stessa macchina o su un'altra. Per impostazione predefinita l'embedding gira sulla CPU di questa macchina. La modalità multiutente con permessi è una funzione della versione Docker. Nessuna GPU.

Dimensioni (il minimo del progetto, poi il nostro)

Dimensionamento per carico di lavoro
Carico di lavorovCPURAM
Documenti, chat, un modello ospitato (minimo ufficiale)Due core con AVX2. 5 GB di disco, 10 GB su una macchina cloud; le sole immagini occupano qualche gigabyte.22 GB
Una vera libreria di documenti, l'embedder CPU integrato, pochi utentiLa nostra. L'embedding gira su questa CPU; un caricamento grande su due core richiede molto tempo.48 GB
Ollama accanto, per uno stack interamente localeLa nostra. È una questione di hosting del modello, non di AnythingLLM: dimensionatela sulla pagina di Ollama.832 GB

I piani adatti

5 macchine, con prezzi in tempo reale

Prima la macchina adatta più economica. I prezzi sono quelli di oggi, al mese, letti dal catalogo. Eseguite la verifica AVX2 su qualunque macchina acquistiate, nel primo minuto.

  • GL2-4$11.90/mese

    2 vCPU · 4 GB · 40 GB di disco · Unmetered

    La più economica che soddisfa la soglia, Unmetered. 2 vCPU / 4 GB / 40 GB, il doppio della memoria richiesta dalla documentazione, e traffico unmetered per i caricamenti. Eseguite il controllo AVX2 prima di tutto.

  • BD-8$12.90/mese

    4 vCPU · 8 GB · 100 GB di disco · 32 TB

    Quella che compreremmo noi: 4 core per l'embedder. 4 vCPU, 8 GB, 100 GB e 32 TB di traffico per un dollaro in più. Indicizzare una libreria su quattro core invece di due è la differenza che si sente.

  • BD-24$31.90/mese

    8 vCPU · 24 GB · 300 GB di disco · 32 TB

    8 vCPU / 24 GB per molti utenti e Ollama accanto. Spazio per un modello 8B in Ollama sulla stessa macchina, lentamente, e per i documenti di un team.

  • C2-4-80$37.90/mese

    2 vCPU · 4 GB · 80 GB di disco · 3 TB

    La configurazione della soglia, in decine di città. 2 vCPU / 4 GB / 80 GB. Sceglietelo per la città. Modello ospitato, libreria modesta.

  • C4-8-160$75.90/mese

    4 vCPU · 8 GB · 160 GB di disco · 3 TB

    4 vCPU / 8 GB / 160 GB, in decine di città. La dimensione comoda, con disco per una libreria grande e i suoi vettori.

Non esiste ancora un preset di avvio per AnythingLLM: l'installazione consiste nei cinque passaggi qui sotto, digitati da voi. Il passaggio 3 differisce dal comando del progetto per un solo flag, che associa la porta al loopback, e lo indica.

L'installazione

Cinque passaggi, dalla guida Docker del progetto

Verificate la CPU, installate Docker, avviate il container su loopback, configuratelo via SSH, poi assegnategli un dominio.

  1. Controllate prima AVX2. lscpu | grep -o avx2 Deve stampare avx2. La documentazione è chiara: questo è l'unico requisito hardware e non può essere emulato; su una macchina che ne è priva occorre impostare VECTOR_DB su un database vettoriale esterno prima del primo avvio.
  2. Docker. curl -fsSL https://get.docker.com | sh
  3. Avviatelo, su loopback. export STORAGE_LOCATION=/opt/anythingllm && mkdir -p $STORAGE_LOCATION && touch $STORAGE_LOCATION/.env docker run -d --name anythingllm --restart unless-stopped -p 127.0.0.1:3001:3001 --cap-add SYS_ADMIN --add-host=host.docker.internal:host-gateway -v $STORAGE_LOCATION:/app/server/storage -v $STORAGE_LOCATION/.env:/app/server/.env -e STORAGE_DIR="/app/server/storage" mintplexlabs/anythingllm È il comando del progetto con una sola modifica: -p 127.0.0.1:3001:3001 invece di -p 3001:3001, così la chat non è esposta su internet prima che abbiate impostato una password. La directory di storage contiene il database, i vettori e i vostri documenti; fatene il backup.
  4. Configuratelo via SSH. ssh -N -L 3001:127.0.0.1:3001 root@your-server poi http://127.0.0.1:3001. Scegliete l'LLM: un provider ospitato e la sua chiave API, oppure Ollama su http://host.docker.internal:11434 se gira su questa macchina. Attivate la modalità multiutente o impostate la password dell'istanza in Impostazioni prima che chiunque altro possa raggiungerla.
  5. Assegnategli un dominio. Puntate un record A sul server, installate Caddy, e un solo blocco Caddyfile reverse_proxy 127.0.0.1:3001 sotto il vostro dominio ottiene il certificato e mette HTTPS davanti alla 3001. Aprite la 80 e la 443 sul firewall, nient'altro.

Onestamente

Cosa acquisteremmo davvero

La soglia è 2 core e 2 GB, e la riga più economica la soddisfa. Noi spenderemmo comunque il dollaro in più.

Per una libreria di documenti che userete davvero

BD-8 · $12.90/mese

4 vCPU, 8 GB e 100 GB a $12.90, contro GL2-4 a $11.90: un dollaro al mese compra due core in più per l'embedder che gira su questa macchina a ogni caricamento, e 100 GB per i documenti e i loro vettori. Il modello è altrove, dietro una chiave API, quindi niente GPU; se volete Ollama accanto, leggete la pagina di Ollama e acquistate in base al modello, non ad AnythingLLM. Su qualunque di queste, eseguite la verifica AVX2 prima di caricare un solo file.

Domande

Le domande che si pongono prima dell'acquisto.

Quali sono i requisiti di sistema di AnythingLLM?
La documentazione indica un minimo di 2 GB di RAM, una CPU a 2 core con AVX2 e 5 GB di spazio, e afferma che è sufficiente per archiviare alcuni documenti, chattare e usarne le funzioni. La guida Docker del progetto aggiunge che su una macchina cloud conviene puntare ad almeno 2 GB di RAM e 10 GB di disco, perché il disco cresce con documenti, vettori ed eventuali modelli locali. La documentazione dice anche che l'app è un involucro attorno a servizi esterni, quindi è leggera quando modello ed embedder sono altrove, e più pesante quando girano sulla stessa macchina.
Cos'è il requisito AVX2, e il mio VPS lo avrà?
Il database vettoriale predefinito, LanceDB, è compilato per CPU con il set di istruzioni AVX2 (Intel Haswell, 2013, e successive). Senza di esso il processo del server viene terminato nel momento in cui il database si carica, e la documentazione lo indica come l'unico requisito hardware rigido. Il problema sono le macchine virtuali: un hypervisor può presentare un modello di CPU generico che nasconde AVX2 anche su un host moderno, per questo la documentazione dice di verificare all'interno del guest con lscpu | grep -o avx2, non sull'host. Non promettiamo un flag della CPU che non possiamo vedere dal catalogo, quindi eseguite quella riga nel primo minuto. Se non stampa nulla, impostate VECTOR_DB su uno degli altri database vettoriali supportati, che girano come servizi separati.
Serve una GPU?
No. AnythingLLM in sé esegue l'app web, la pipeline dei documenti e, per impostazione predefinita, un embedder solo CPU. Le risposte della chat arrivano dal LLM che collegate: un provider ospitato tramite chiave API, con un sovraccarico che la documentazione definisce quasi nullo, oppure un modello locale tramite Ollama. Il consiglio stesso della documentazione è ospitare un modello locale su un'altra macchina dotata di GPU se quella di AnythingLLM non ce l'ha. Questo riguarda la pagina di Ollama e la linea GPU, non questa.
Dopo l'installazione è esposto su internet?
Il comando del progetto pubblica la porta 3001 su tutte le interfacce, e un'istanza nuova non ha password finché non ne impostate una. L'installazione di questa pagina associa invece la 3001 a 127.0.0.1, quindi finché non aggiungete un dominio l'unico accesso è un tunnel SSH. Poi, in Settings, impostate la password dell'istanza o attivate la modalità multiutente, che il README elenca come funzione della versione Docker, prima di metterci davanti HTTPS.
Dove risiedono i miei dati?
Nella directory di archiviazione che montate su /app/server/storage: il database SQLite, i vettori LanceDB, i documenti caricati e gli eventuali modelli scaricati localmente. La guida Docker indica di montarla sull'host proprio per poter scaricare una nuova immagine senza perdere nulla. Fate il backup di quella directory e del file .env accanto; insieme costituiscono l'intera istanza.
Può usare Ollama sulla stessa macchina?
Sì. Dall'interno del container l'host è http://host.docker.internal:11434, che su Linux richiede --add-host=host.docker.internal:host-gateway nel comando run; il passaggio sopra lo include. In quel caso dimensionate la macchina per il modello: un modello 8B richiede 8 GB propri oltre ad AnythingLLM, e risponde a pochi token al secondo su CPU. La riga da 24 GB è la più piccola di questa pagina in cui ciò è comodo.