NaplóindexDockup / terepjegyzet
Note / self-host-directus

A Directus saját üzemeltetése 2026-ban: adatbázis, feltöltések és nyilvános URL

Üzemeltesd saját környezetben a Directust megfelelő portokkal, tartós tárolással, HTTPS-sel, titkokkal, biztonsági mentésekkel és frissítési ellenőrzésekkel. Tudd meg, hogyan javítható ki, ha nem megfelelő az adatbázis-kliens.

A Directust ne egyszerű Docker image-ként kezeld, hanem kis rendszerként. A Directus felhasználói célja egyértelmű: REST- és GraphQL API, valamint adminisztrációs felület az adataidhoz; a deployment csak akkor tekinthető megfelelőnek, ha létre tudod hozni az adminisztrátort, egy collectiont és egy role-t, REST-en keresztül tudsz írni, GraphQL-en keresztül tudsz lekérdezni, és fájlt is fel tudsz tölteni.

Ez a megkülönböztetés segít felismerni azt a hibamódot, amellyel az üzemeltetők a helyi tesztelés után találkoznak: nem megfelelő az adatbázis-kliens, vagy a feltöltési tárhely nem írható. Emellett a backup- és frissítési tervet is elég konkréttá teszi ahhoz, hogy tesztelhető legyen.

Bizonyítsd, hogy a Directus túléli a cserét

Egy container image újra letölthető, az adatbázis, a feltöltések, az extensionök, a flow-k és a schema snapshotok viszont nem. A bootstrap előtt csatold a /directus/database könyvtárat, írj bele ártalmatlan mintaadatokat, majd cseréld le a containert annak bizonyítására, hogy az útvonal valóban tartós. Ne egy Compose-fájlnév alapján bízz a konfigurációban: ellenőrizd a tényleges mountot, és győződj meg arról, hogy a futtatási user írhat oda, ahol a Directus ezt elvárja.

Válassz megőrzési időt és off-host célhelyet, majd gyakorold a helyreállítást az éles környezet érintése nélkül. A gyakorlat csak akkor sikeres, ha a schema, a role-ok, a flow-k, az itemek, az extensionök és a feltöltések is visszaállnak, továbbá a REST- és GraphQL-probe-ok is sikeresek. Adatbázis-alapú állapot esetén a storage snapshotokat az alkalmazással konzisztens exportokkal együtt használd, a point-in-time recovery versus snapshots leírásában ismertetettek szerint.

A Directus production architektúrája

Húzz három határt a Directus köré: az ingress és a 8055-ös port közötti útvonalat, a tartós állapotot, valamint a támogató követelményeket. A container cserélhető, a másik két területhez viszont egyértelmű felelősökre van szükség. A Directus hálózati szerződése Postgres, valamint skálázott deploymentek esetén opcionálisan Redis és object storage. A privát endpointokat tartsd belső DNS-en, csak a szükséges kimenő kapcsolatokat engedélyezd, és adj a Directusnak korlátozott hatókörű service credentialt.

A diagram akkor teljes, ha egy tiszta klienssel létre tudod hozni az adminisztrátort, egy collectiont és egy role-t, REST-en keresztül tudsz írni, GraphQL-en keresztül tudsz lekérdezni, valamint fájlt is fel tudsz tölteni. Rögzítsd az adatbázis connection pool, az API-kérések konkurenciája, a Flow workerek, a thumbnail-generálás és a feltöltési tárhely időzítési és erőforrásadatait. Ha a tranzakció meghiúsul, az első dokumentált módon nem működő határ jelzi, hogy routing, helyi kapacitás vagy valamelyik támogató service vizsgálata szükséges.

Bizonyítsd a Directus deployment teljes működését

Hozz létre egy kisméretű, eldobható Directus fixture-t, és tartsd meg minden release-hez. A fixture a valódi munkafolyamatot gyakorolja: az adminisztrátor létrehozását, egy collection és egy role létrehozását, a REST-en keresztüli írást, a GraphQL-en keresztüli lekérdezést és egy fájl feltöltését. Rögzítsd az image digestjét, a külső hostnevet, a dependency címét és az elvárt eredményt, hogy egy későbbi üzemeltető az útmutató értelmezése nélkül is megismételhesse a tesztet.

Futtasd le a fixture-t háromszor. Elsőként friss deploymenttel. Másodszor úgy, hogy lecseréled a containert, de nem módosítod a tartós állapotot. Harmadszor állítsd vissza a backupot egy üres környezetbe. A harmadik futás csak akkor sikeres, ha a schema, a role-ok, a flow-k, az itemek, az extensionök és a feltöltések is visszaállnak, továbbá a REST- és GraphQL-probe-ok is sikeresek. Minden futás során rögzítsd az adatbázis connection pool, az API-kérések konkurenciája, a Flow workerek, a thumbnail-generálás és a feltöltési tárhely körüli latency- és erőforrás-használatot; ez lesz a riasztások alapja egy önkényes CPU-százalék helyett.

Végül szándékosan teszteld a negatív útvonalat is: ideiglenesen vond meg a tesztidentitás hozzáférését a Postgrestől, valamint skálázott deploymentek esetén az opcionális Redistől és object storage-tól. Ellenőrizd, hogy a Directus látható hibával áll le, miközben nem sérül az állapot, majd állítsd vissza a helyes feltételt, és ismételd meg a sikeres tranzakciót. Az ezt a négy eredményt tartalmazó release-rekord erősebb bizonyíték, mint egy dashboardról készült képernyőkép vagy egy egyszeri curl válasz.

Indítsd el a Directust megfigyelhető alapértelmezésekkel

Úgy indítsd el a Directust, hogy az útvonal privát maradjon a bootstrap befejezéséig.

docker run -d \
  --name directus \
  --restart unless-stopped \
  -p 127.0.0.1:8055:8055 \
  -v directus-data:/directus/database \
  -v directus-uploads:/directus/uploads \
  -v directus-extensions:/directus/extensions \
  -e SECRET=replace-with-a-long-random-value \
  -e KEY=replace-with-a-second-long-random-value \
  -e ADMIN_EMAIL=admin@example.com \
  -e ADMIN_PASSWORD=replace-with-a-strong-bootstrap-password \
  -e DB_CLIENT=sqlite3 \
  -e DB_FILENAME=/directus/database/data.db \
  -e PUBLIC_URL=https://app.example.com \
  directus/directus:latest

Ha a process újra és újra elindul, hasonlítsd össze az image által elvárt usert az egyes mountolt útvonalak tulajdonosával. Ha stabilan fut, teszteld helyben a 8055-ös portot, majd azonnal haladj tovább a munkafolyamaton: hozd létre az adminisztrátort, egy collectiont és egy role-t, írj REST-en keresztül, kérdezz le GraphQL-en keresztül, és tölts fel egy fájlt. Az image verzióját csak akkor rögzítsd, ha ez az end-to-end ellenőrzés sikeres, és a pontos konfigurációt rögzítsd a service mellett.

Credentialök, role-ok és kitett felületek

Amint létrejött az első megbízható adminisztrátor, zárd le a bootstrap időszakát. A Directus egyik konkrét csapdája, ha az első bejelentkezés után is a bootstrap admin jelszavát használod, vagy vakon rotálod a SECRET értékét; a biztonságosabb határ a bootstrap credentialök cseréje, a legkisebb jogosultságú role-ok használata, valamint a SECRET változatlanul hagyása, mivel ez védi az alkalmazás sessionjeit és tokenjeit.

A SECRET értékét egyszer generáld le, tartsd távol a Git-től, és őrizd meg a recovery manifestben, mert a módosítása érvénytelenítheti a titkosított vagy aláírt alkalmazásállapotot. A dependency credentialök továbbítására használj privát hálózatot, a Directuson belüli role-ok pedig csak a legkisebb szükséges műveleti jogosultságot adják. Az érzékeny request body-kat és provider-válaszokat ne írd a szokásos logokba.

Tedd egyértelművé a nyilvános origint

Kerüld a Directus ideiglenes és végleges nyilvános originjeinek párhuzamos használatát. Ehelyett állítsd a PUBLIC_URL értékét a kanonikus HTTPS-címre, irányítsd a kiválasztott DNS-nevet a platform route-jára, és csak a 8055-ös portra proxyzz.

A műveletet a hoston kívülről hajtsd végre: hozd létre az adminisztrátort, egy collectiont és egy role-t, írj REST-en keresztül, kérdezz le GraphQL-en keresztül, és tölts fel egy fájlt. Ha az ingress hibázik, a 502-es hibakeresési útmutató a port- és listenerhibákat tárgyalja. Ha a Directus megkapja a kérést, de nem megfelelő az adatbázis-kliens, vagy a feltöltési tárhely nem írható, akkor a bizonyíték már a proxyn túli problémára mutat.

Hibagyakorlatok a Directushoz

A Directus esetén ne processzt, hanem tranzakciót monitorozz: hozd létre az adminisztrátort, egy collectiont és egy role-t, írj REST-en keresztül, kérdezz le GraphQL-en keresztül, és tölts fel egy fájlt. A latencyt és a hibaarányt egészítsd ki az adatbázis connection pool, az API-kérések konkurenciája, a Flow workerek, a thumbnail-generálás és a feltöltési tárhely adataival, hogy a riasztás azonosítsa a korlátozó komponenst.

A frissítés próbájának ki kell terjednie arra, hogy a Directus schema migrationjeit, extensionjeit és az adatbázis-vendor támogatását egy egységként kell ellenőrizni. A productionben történő csere előtt állítsd vissza az adatokat, futtasd le a migrationöket, majd hajtsd végre a tranzakciót. Ha nem megfelelő az adatbázis-kliens, vagy a feltöltési tárhely nem írható, ne töröld az adatokat azért, hogy a startup zöld legyen; ebben a sorrendben hasonlítsd össze a verziót, a változókat, a mountokat és a dependencyk elérhetőségét.

Mit érdemes a Dockupnak automatizálnia a Directushoz?

A Directus platformrétege a 8055-ös portból, az ingressből, a TLS-ből, a runtime-konfigurációból, a storage-ból és a dependencyk elérhetőségéből áll. A Dockup ezeket a részeket a saját infrastruktúrájához, illetve az ügyfél által csatlakoztatott serverhez is reprodukálhatja.

Ezután az üzemeltető fejezi be a product layer konfigurációját: állítsa a PUBLIC_URL értékét a kanonikus HTTPS-címre; érvényesítse ezt a hozzáférési szabályt — cserélje le a bootstrap credentialöket, használjon legkisebb jogosultságú role-okat, és tartsa stabilan a SECRET értékét, mert ez védi az alkalmazás sessionjeit és tokenjeit —; majd futtassa le ezt: „hozza létre az adminisztrátort, egy collectiont és egy role-t, írjon REST-en keresztül, kérdezzen le GraphQL-en keresztül, és töltsön fel egy fájlt”. Ha ezt a tesztet a deploymenttel együtt rögzítitek, nem keveritek össze az automatizált provisioninget az alkalmazás készültségével.

Gyakran ismételt kérdések

Mire van szüksége a Directusnak egy production deploymenthez?

Irányítsd a Directus containert a 8055-ös porton egyetlen HTTPS-originen keresztül. A támogató hálózati követelmény Postgres, valamint skálázott deploymentek esetén opcionálisan Redis és object storage. Ne tekintsd késznek a Directust addig, amíg létre nem tudod hozni az adminisztrátort, egy collectiont és egy role-t, REST-en keresztül nem tudsz írni, GraphQL-en keresztül nem tudsz lekérdezni, és fájlt sem tudsz feltölteni.

Mely Directus-adatoknak kell szerepelniük a backupban?

Tartsd meg a /directus/database könyvtárat, és ugyanabba a recovery manifestbe vedd fel az adatbázist, a feltöltéseket, az extensionöket, a flow-kat és a schema snapshotokat. A tiszta Directus-restore csak akkor sikeres, ha a schema, a role-ok, a flow-k, az itemek, az extensionök és a feltöltések is visszaállnak, továbbá a REST- és GraphQL-probe-ok is sikeresek.

Szüksége van a Directusnak HTTPS-re reverse proxy mögött?

Használj HTTPS-t a nyilvános Directus-originhez, a 8055-ös portot pedig tartsd a belső útvonalon. Helyesen alkalmazd a Directus beállítását: állítsd a PUBLIC_URL értékét a kanonikus HTTPS-címre. A Directus esetén a HTTPS védi a credentialöket és a felhasználói tartalmakat az átvitel során, valamint konzisztenssé teszi az originérzékeny kliensviselkedést.

Hogyan kell tesztelni egy Directus-frissítést?

Állítsd vissza az aktuális Directus-állapotot egy izolált deploymentbe, alkalmazd a jelölt verziót, majd ismételd meg az elfogadási tranzakciót. Különösen figyelj arra, hogy a Directus schema migrationjeit, extensionjeit és az adatbázis-vendor támogatását egy egységként kell ellenőrizni. Tartsd meg az előző Directus-image-et addig, amíg nem érted pontosan az adatmigration és a rollback határát.