Féinóstáil
Is é Node agus eolaire inscríofa an t-aon riachtanas. Léadh na ráitis thíos ó na comhaid a ainmnítear ina dteannta; níl aon rud nach bhféadfaí 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 ann 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 an bunachar sonraí agus ritheann sé an imirce ag an tús.
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 aon fhreastalaí ó 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 eachtracha 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é idempotent, mar sin tá sé sábháilte é a rith arís; caithfidh colún a chuirtear le tábla atá ann cheana a bheith dearbhaithe freisin sa chéim bhreise in packages/shared/src/db/index.mjs.
Glacann URL postgres:// le brainse oiriúnóra ar leith. Teastaíonn an pacáiste pg ón mbrainse sin, nach bhfuil mar spleáchas dearbhaithe, agus deir ceanntásc schema.sql gur cheart cosán Postgres a láimhseáil mar rud 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 an 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 migrate | Cuireann sé schema.sql i bhfeidhm agus tuairiscíonn sé líon na ráiteas. |
| node scripts/db.mjs seed | Ionsáí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 reset | Do SQLite amháin: baintear an comhad bunachair agus a chomhpháirtithe -wal agus -shm, ansin déantar imirce agus síolú. Ar Postgres diúltaíonn sé. |
| node scripts/db.mjs status | Priontálann sé an t-inneall, líon na dtable agus líon sraitheanna gach tábla neamhfholamh. |
| node scripts/db.mjs demo-key | Eisí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é focal faire ú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 portanna | APP_URL, API_URL, WEB_PORT, API_PORT, API_EMBED, PUBLIC_API_URL | Is é 8088 an port API réamhshocraithe, ní 8080. Tá API_EMBED=false le haghaidh imscartha a ritheann an API mar a phróiseas féin; is é PUBLIC_API_URL an bonn a thaispeántar i blúiríní doiciméadachta. |
| Stór sonraí | DATABASE_URL, REDIS_URL | Roghnóidh DATABASE_URL an stór; tá REDIS_URL curtha in áirithe don scuaine jabanna agus ní léann cosán cóid v1 é. |
| Tátal | INFERENCE_MOCK, GPU_ENABLED, VLLM_BASE_URL, VLLM_REGION, VLLM_MODEL_VERSION, VLLM_BASE_URL_<REGION>, DEFAULT_REGION, PARTNER_* | Féach ar an roinn tátail thíos; clúdaíonn PARTNER_* bun-URL an pháirtnéara, an réigiún, an aicme ceannasachta agus an eochair API. |
| Billeáil | FX_EUR_USD, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET | Coinnítear an mórleabhar i micrea-USD agus díorthaítear EUR le haghaidh taispeána ag FX_EUR_USD. |
| Ríomhphost | MAIL_FROM, MAIL_SMTP_HOST, MAIL_SMTP_PORT, MAIL_SMTP_SECURE, MAIL_SMTP_USER, MAIL_SMTP_PASS, MAIL_TIMEOUT_MS, MAIL_API_URL, MAIL_API_KEY | Socraigh MAIL_SMTP_HOST le haghaidh SMTP, nó MAIL_API_URL le MAIL_FROM le haghaidh athsheoltóra HTTP, nó ná socraigh ceachtar. |
| Slándáil | NODE_ENV, LLMEU_IP_SALT, LLMEU_DEMO_PASSWORD, LLMEU_KEY_ENV | Cuireann 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 llmeu_live_ nó llmeu_test_ roimh eochracha ginte. |
| Ilghnéitheach | LOG_LEVEL | Socraíonn LOG_LEVEL an leibhéal íosta logála. |
Docker
Tá Compose agus an íomhá roghnach: ní theastaíonn Docker ó shraith féin an stóir, 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 sláinte ar /healthz.
- Ritheann an íomhá chéanna an t-oibrí le node apps/worker/src/run.mjs, ag fanacht go mbeidh 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ód v1 iad).
- Ritheann an phróifíl gpu vllm/vllm-openai le forchoimeád gléas NVIDIA agus sreangann sé ualaí inléite amháin ón óstach; níl sé cumasaithe de réir réamhshocraithe, toisc go mbeadh sé bréagach éileamh tátail EU a dhéanamh gan GPU.
- Is é FROM node:24-alpine le tini an Dockerfile, gan aon chéim tógála ná 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 bhratach ./backups/llmeu-<stamp>.db. Cóipeáiltear SQLite le VACUUM INTO, ní le cp riamh, toisc gur féidir le bunachar WAL beo a chóipeáiltear le cp staid stróicthe nó as dáta 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 é go cóip shealadach, caithfidh PRAGMA integrity_check ok a fhilleadh, cuirtear an scéimre i bhfeidhm arís, agus priontáiltear líon sraitheanna do shamhlacha, d’eagraíochtaí agus d’ú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 lena líon sraitheanna a fháil.
Ríomhphost
Úsáideann ríomhphost idirbheartach — athshocrú focal faire, fíorú seoltaí, cuirí — MAIL_SMTP_* nó MAIL_API_URL le MAIL_FROM. Roghnaítear an t-iompar uair amháin ag an tús agus tuairiscítear é ar gach leathanach a bhfuil ríomhphost de dhíth air.
Is staid thacaithe é imscaradh gan ceachtar acu: oibríonn clárú, síniú isteach, athrú focal faire, foirne agus cuirí, ach ní féidir ríomhphost athshocraithe focal faire ná fíoraithe a phróiseáil ann. Deir na leathanaigh é sin, agus is é node scripts/db.mjs passwd <email> an bealach téarnaimh.
Innill chúil tátail
Ainmníonn ró deireadhphointe am rite agus réigiún, agus roghnaíonn clárlann na n-inneall cúil an t-oiriúnóir de réir réigiúin, mar sin ní féidir ach meaisín sa réigiún a ainmnítear freagra a thabhairt ar dheireadhphointe.
- Coinníonn INFERENCE_MOCK=true an t-inneall cúil mock cinntitheach, nach bhfuil GPU ná meáchain de dhíth air.
- Coinníonn GPU_ENABLED=false innill chúil bhainistithe amach; le GPU_ENABLED=true, feidhmíonn VLLM_BASE_URL don réigiún aonair 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 slug an réigiúin (mar shampla VLLM_BASE_URL_DE_FRA). Diúltaítear do dheireadhphointe i réigiún gan inneall cúil cumraithe, seachas é a sheirbheáil ó mheaisín i réigiún eile.
- Tagann innill chúil pháirtnéara ó PARTNER_BASE_URL_<REGION> agus tógann siad PARTNER_SOVEREIGNTY agus PARTNER_API_KEY; ceadaíonn an freastalaí úsáid páirtnéara nuair a bhíonn PARTNER_BASE_URL socraithe.
Gan GPU, freagraíonn an t-inneall cúil mock. Is é dev-mock a réigiún, agus deir a aschur gur inneall cúil mock é, nár ritheadh aon mheáchain fhíora, agus go bhfuil VLLM_BASE_URL agus an bratach gpu_enabled de dhíth ar thátal céadpháirtí. Bheadh rath mock a d'fhéadfadh breathnú fíor ar an rud amháin nár cheart don táirge seo a sheoladh riamh.