Féin-óstáil

Is é Node agus eolaire in-scríofa an t-aon riachtanas. Léadh na ráitis thíos ó na comhaid a ainmnítear ina dteannta; níl aon rud nár féidir a dhearbhú anseo.

Pointí iontrála

  • Éilíonn package.json Node >= 22.5. Is é an stór SQLite modúl node:sqlite Node féin.
  • Níl aon liosta spleáchas ar chor ar bith: ritheann aipeanna, pacáistí, scripteanna agus tástálacha ar leabharlann chaighdeánach Node, agus ní shuiteálann an Dockerfile aon rud.
  • Tá trí phróiseas ann; osclaíonn gach ceann acu an bunachar sonraí agus ritheann sé an imirce ag am tosaithe.
node apps/web/server/main.mjs                   # hub + console + embedded API
API_EMBED=false node apps/api/src/main.mjs    # API only, no pages
node apps/worker/src/run.mjs                  # probes, latency, rollup, housekeeping

Stór Sonraí

Ní theastaíonn freastalaí ó DATABASE_URL=sqlite:./data/llmeu.db, agus cruthaítear an eolaire agus an comhad ar an gcéad oscailt. Ritheann an láimhseáil i mód WAL le heochracha coimhthíocha ar siúl agus am istigh gnóthach 5 s.

Is é packages/shared/src/db/schema.sql an scéimre. Níl ann ach cruthú agus tá sé ionannchumhachtach, mar sin tá sé sábháilte é a rith arís; caithfear colún a chuirtear le tábla atá ann cheana a dhearbhú freisin sa chéim bhreise i packages/shared/src/db/index.mjs.

Tógann URL postgres:// brainse oiriúnaitheora ar leith. Teastaíonn an pacáiste pg ón mbrainse sin, nach bhfuil sé dearbhaithe mar spleáchas, agus deir ceanntásc schema.sql gur cheart an cosán Postgres a mheas mar neamhfhíoraithe go dtí go mbeidh tiománaí fíor agus imirce thástáilte ann. Is é SQLite an cosán a ritheann an stór seo.

CLI Oibreora

Léann node scripts/db.mjs DATABASE_URL agus ní theastaíonn aon seirbhísí. Orduithe:

Ordú Cad a dhéanann sé
node scripts/db.mjs migrateCuireann sé schema.sql i bhfeidhm agus tuairiscíonn sé líon na ráiteas.
node scripts/db.mjs seedIonsáíonn nó athnuann sé an catalóg agus an eagraíocht taispeána, agus scríobhann sé an eochair taispeána chuig data/demo-key.txt le mód 0600.
node scripts/db.mjs resetDo SQLite amháin: baintear an comhad bunachar sonraí agus a chompánaigh -wal agus -shm, ansin déantar imirce agus síolú. Ar Postgres diúltaíonn sé.
node scripts/db.mjs statusPriontálann sé an t-inneall, líon na dtáblaí agus líon na rónna de gach tábla neamhfholamh.
node scripts/db.mjs demo-keyEisíonn sé eochair úr don eagraíocht taispeána agus priontálann sé í uair amháin.
node scripts/db.mjs passwd <email>Socraíonn sé pasfhocal úsáideora ón bhfreastalaí agus scriosann sé gach seisiún den úsáideoir sin. Is é seo an cosán téarnaimh nuair nach bhfuil aon iompar poist cumraithe. Gan --password gineann sé ceann agus priontálann sé uair amháin é.

Timpeallacht

Grúpáilte mar a ghrúpálann .env.example iad.

Grúpa Athróga Nótaí
URLanna agus poirtAPP_URL, API_URL, WEB_PORT, API_PORT, API_EMBED, PUBLIC_API_URLIs é 8088 an port API réamhshocraithe, ní 8080. Tá API_EMBED=false le haghaidh imscartha a ritheann an API mar phróiseas dá chuid féin; is é PUBLIC_API_URL an bonn a thaispeántar i sleachta doiciméad.
Stór SonraíDATABASE_URL, REDIS_URLRoghnaíonn DATABASE_URL an stór; tá REDIS_URL curtha in áirithe don scuaine jabanna agus ní léann cosán cód v1 é.
TátalINFERENCE_MOCK, GPU_ENABLED, VLLM_BASE_URL, VLLM_REGION, VLLM_MODEL_VERSION, VLLM_BASE_URL_<REGION>, DEFAULT_REGION, PARTNER_*Féach ar an gcuid tátal thíos; clúdaíonn PARTNER_* bun-URL an pháirtí, an réigiún, an aicme ceannasachta agus an eochair API.
BilleáilFX_EUR_USDCoinnítear an leabhar mór i micrea USD agus díorthaítear EUR le haghaidh taispeána ag FX_EUR_USD.
RíomhphostMAIL_FROM, MAIL_SMTP_HOST, MAIL_SMTP_PORT, MAIL_SMTP_SECURE, MAIL_SMTP_USER, MAIL_SMTP_PASS, MAIL_TIMEOUT_MS, MAIL_API_URL, MAIL_API_KEYSocraigh MAIL_SMTP_HOST le haghaidh SMTP, nó MAIL_API_URL le MAIL_FROM le haghaidh athsheoltóra HTTP, nó ná socraigh ceachtar acu.
SlándáilNODE_ENV, LLMEU_IP_SALT, LLMEU_DEMO_PASSWORD, LLMEU_KEY_ENVCuireann NODE_ENV=production marc Secure ar fhianáin seisiúin. Salannann LLMEU_IP_SALT an IP cliaint haisithe agus ba cheart é a athrú de réir gach imscartha. Cuireann LLMEU_KEY_ENV réimír le heochracha ginte: llmeu_live_ nó llmeu_test_.
IlghnéitheachLOG_LEVELSocraíonn LOG_LEVEL an t-íosleibhéal loga.

Docker

Tá Compose agus an íomhá roghnach: ní éilíonn sraith an stóir féin Docker, agus is próiseas áitiúil gan aon seirbhísí an príomhchosán.

  • Ritheann an phróifíl réamhshocraithe web: poirt 3000 agus 8088, SQLite ar an toirt llmeu-data ag /app/data, an API leabaithe, agus seiceáil shláinte ar /healthz.
  • Ritheann an íomhá chéanna an t-oibrí le node apps/worker/src/run.mjs, ag fanacht go n-éiríonn web sláintiúil agus ag roinnt an toirt llmeu-data.
  • Tá dhá phróifíl bhreise as de réir réamhshocraithe: postgres (postgres:16-alpine) agus redis (redis:7-alpine, forchoimeádta agus ní léann cosán cóid v1 iad).
  • Ritheann an próifíl gpu vllm/vllm-openai le forchoimeád feiste NVIDIA agus feistíonn sé meáchain inléite amháin ón óstach; níl sé cumasaithe de réir réamhshocraithe, mar bheadh sé bréagach tátal AE a éileamh gan GPU.
  • Is é an Dockerfile FROM node:24-alpine le tini, gan céim tógála agus gan suiteáil spleáchas, ritheann sé mar úsáideoir node, ní scríobhann sé ach faoi /app/data, nochtann sé 3000 agus 8088, agus tosaíonn sé apps/web/server/main.mjs.

Cúltacaí

Scríobhann node scripts/backup.mjs gan aon bhratacha ./backups/llmeu-<stamp>.db. Déantar SQLite a chóipeáil le VACUUM INTO, ní le cp, mar is féidir le bunachar WAL beo a chóipeáiltear le cp staid stróicthe nó mharbh a thabhairt.

node scripts/backup.mjs                                  # ./backups/llmeu-<stamp>.db
node scripts/backup.mjs --out /srv/backups/              # explicit destination
node scripts/backup.mjs --verify ./backups/llmeu-<stamp>.db
node scripts/backup.mjs --restore ./backups/llmeu-<stamp>.db --yes
node scripts/backup.mjs --list

Fíoraítear gach cúltaca SQLite sula dtuairiscíonn an script rath: athchóirítear é i gcóip shealadach, caithfidh PRAGMA integrity_check ok a thabhairt ar ais, cuirtear an scéimre i bhfeidhm arís, agus priontáiltear líon na rónna do mhúnlaí, eagraíochtaí agus úsáideoirí.

Le URL postgres:// úsáideann an script pg_dump --format=custom agus teastaíonn pg_dump ar PATH; ní féidir dump a oscailt mar bhunachar, mar sin teastaíonn athchóiriú sealadach dá líon na rónna.

Ríomhphost

Úsáideann ríomhphost idirbheartach — athshocrú pasfhocail, fíorú seoltaí, cuirí — MAIL_SMTP_* nó MAIL_API_URL le MAIL_FROM. Roghnaítear an t-iompróir uair amháin ag am tosaithe agus tuairiscítear é ar gach leathanach a dteastaíonn ríomhphost uaidh.

Is staid thacaithe é imscaradh gan ceachtar acu: oibríonn clárú, síniú isteach, athrú pasfhocail, foirne agus cuirí, ach ní féidir ríomhphost athshocraithe pasfhocail ná fíoraithe a phróiseáil ansin. Deir na leathanaigh é sin, agus is é node scripts/db.mjs passwd <email> an bealach téarnaimh.

Innill chúil tátail

Ainmníonn ró pointe deiridh am rite agus réigiún, agus roghnaíonn clárlann na n-inneall cúil an t-adapter de réir réigiúin, mar sin ní féidir ach le meaisín sa réigiún a ainmnítear freagra a thabhairt ar phointe deiridh.

  • Coimeádann INFERENCE_MOCK=true an t-inneall cúil forbartha cinntitheach, nach dteastaíonn GPU ná meáchain uaidh.
  • Coimeádann GPU_ENABLED=false inneall cúil bainistithe amach; le GPU_ENABLED=true, feidhmíonn VLLM_BASE_URL don réigiún amháin a ainmnítear le VLLM_REGION.
  • Socraíonn imscaradh le roinnt réigiún athróg amháin in aghaidh an réigiúin, ainmnithe i ndiaidh sluga an réigiúin (mar shampla VLLM_BASE_URL_DE_FRA). Diúltaítear do phointe deiridh i réigiún gan inneall cúil cumraithe, seachas é a sheirbheáil ó mheaisín i réigiún eile.
  • Tagann inneall cúil páirtí ó PARTNER_BASE_URL_<REGION> agus glacann siad PARTNER_SOVEREIGNTY agus PARTNER_API_KEY; ceadaíonn an freastalaí úsáid pháirtí nuair a bhíonn PARTNER_BASE_URL socraithe.

Gan GPU cumraithe, freagraíonn an t-inneall cúil forbartha cinntitheach agus deir a aschur nach rith meáchain fhíora ar bith agus go dteastaíonn VLLM_BASE_URL agus an bhratach gpu_enabled ó thátal céadpháirtí. Bheadh rath ionadaíoch a d'fhéachfadh fíor mar an t-aon rud nár cheart don táirge seo a sheoladh riamh.