# OmniRoute Fly.io Deployment Guide (Yorùbá) 🌐 **Languages:** 🇺🇸 [English](../../../../ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇪🇹 [am](../../../am/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇦🇿 [az](../../../az/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇩🇰 [da](../../../da/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇩🇪 [de](../../../de/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇬🇷 [el](../../../el/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇪🇸 [es](../../../es/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇪🇪 [et](../../../et/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇱 [he](../../../he/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇩 [id](../../../id/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇹 [it](../../../it/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇰🇭 [km](../../../km/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇲🇲 [my](../../../my/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇳🇴 [no](../../../no/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [or](../../../or/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇱🇰 [si](../../../si/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇮🇳 [te](../../../te/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇹🇭 [th](../../../th/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md) --- Àkọsílẹ̀ yìí ṣàlàyé ìlànà ìmúṣiṣẹ́ gangan fún OmniRoute lórí Fly.io, ó sì bo àwọn ọ̀ràn mẹ́ta: - Mímú iṣẹ́ àkànṣe tó wà lọ́wọ́lọ́wọ́ ṣiṣẹ́ lórí Fly.io fún ìgbà àkọ́kọ́ - Títẹ̀jáde àwọn ìmúdójúìwọ̀n kóòdù tó tẹ̀lé e - Àwọn iṣẹ́ àkànṣe tuntun tó ń tẹ̀lé ìlànà ìmúṣiṣẹ́ kan náà Ìtọ́sọ́nà yìí dá lórí àtúnṣe tí a ti fìdí rẹ̀ múlẹ̀ pé ó ń ṣiṣẹ́ fún iṣẹ́ àkànṣe tó wà lọ́wọ́lọ́wọ́. Orúkọ ohun elo náà ni `omniroute`. --- ## 1. Àwọn Ète Ìfilọ́lẹ̀ - Pẹpẹ: Fly.io - Ọ̀nà ìfilọ́lẹ̀: Títẹ̀jáde tààrà láti `flyctl` abẹ́lẹ̀ - Àyíká ìṣiṣẹ́: Lílo `Dockerfile` àti `fly.toml` tó ti wà nínú ibi ìpamọ́ náà - Ìfipamọ́ dátà pípẹ́: Fly Volume tí a so mọ́ `/data` - URL ìwọlé: `https://omniroute.fly.dev/` --- ## 2. Àtòjọ-Ètò Pàtàkì ti Iṣẹ́ Àkànṣe Lọ́wọ́lọ́wọ́ A ti fìdí rẹ̀ múlẹ̀ pé `fly.toml` inú ibi ìpamọ́ lọ́wọ́lọ́wọ́ ní àwọn ohun pàtàkì wọ̀nyí: ```toml app = 'omniroute' primary_region = 'sin' [[mounts]] source = 'data' destination = '/data' [processes] app = 'node run-standalone.mjs' [http_service] internal_port = 20128 [env] TZ = "Asia/Shanghai" HOST = "0.0.0.0" HOSTNAME = "0.0.0.0" BIND = "0.0.0.0" ``` Àwọn àkíyèsí: - `app = 'omniroute'` ló ń pinnu ohun èlò Fly tí ìfilọ́lẹ̀ náà yóò lọ sí - `destination = '/data'` ló ń pinnu àpótí ìtọ́ka tí a ó so ìpamọ́ pípẹ́ mọ́ - Iṣẹ́ àkànṣe yìí gbọ́dọ̀ ṣètò `DATA_DIR=/data`, bí bẹ́ẹ̀ kọ́, a ó kọ ibi ìpamọ́ dátà àti àwọn kọ́kọ́rọ́ sínú àpótí ìtọ́ka onígbà díẹ̀ ti container náà --- ## 3. Àwọn Ohun Àkọ́kọ́ Tó Yẹ Kí Ó Wà ### 3.1 Fífi Fly CLI Sórí Ẹ̀rọ Windows PowerShell: ```powershell pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex" ``` Tí script ìfísórí ẹ̀rọ náà bá kùnà nínú àyíká rẹ, o tún lè ṣe àgbàsílẹ̀ binary `flyctl` fúnra rẹ, kí o sì fi kún `PATH` rẹ. ### 3.2 Wíwọlé Sínú Àkọọ́lẹ̀ Fly Rẹ ```powershell flyctl auth login ``` ### 3.3 Ṣíṣe Àyẹ̀wò Ipò Ìwọlé ```powershell flyctl auth whoami flyctl version ``` --- ## 4. Ìfilọ́lẹ̀ Iṣẹ́ Àkànṣe Lọ́wọ́lọ́wọ́ Fún Ìgbà Àkọ́kọ́ ### 4.1 Ṣe Ẹ̀dà Kóòdù Náà Kí O Sì Wọ Àpótí Ìtọ́ka Náà ```powershell git clone https://github.com/diegosouzapw/OmniRoute.git cd OmniRoute ``` ### 4.2 Fìdí Orúkọ Ohun Èlò Náà Múlẹ̀ Ṣí `fly.toml`, kí o sì ṣàyẹ̀wò ìlà tó tẹ̀ lé e: ```toml app = 'omniroute' ``` Tí o bá ń ṣe ìfilọ́lẹ̀ sí ohun èlò tuntun tirẹ, o lè yí i padà sí orúkọ tí kò ní àfiwé kárí ayé, fún àpẹẹrẹ: ```toml app = 'omniroute-yourname' ``` Àkíyèsí: - Rí i dájú pé ohun èlò tí o rí nínú console bá iye `app` inú `fly.toml` mu - Tí o bá ti lo orúkọ mìíràn tẹ́lẹ̀, bíi `oroute`, má ṣe dá a rú pọ̀ mọ́ `omniroute` ### 4.3 Ṣẹ̀dá Ohun Èlò Náà Tí ohun èlò náà kò bá tíì wà: ```powershell flyctl apps create omniroute ``` Tí o bá yí orúkọ ohun èlò náà padà, fi orúkọ tí o yàn dípò `omniroute`. ### 4.4 Ìfilọ́lẹ̀ Àkọ́kọ́ ```powershell flyctl deploy ``` --- ## 5. Àwọn Pàràmítà Tí A Nílò Iṣẹ́ àkànṣe yìí dábàá pé kí a ṣètò ó kéré tán àwọn pàràmítà wọ̀nyí lórí Fly.io. ### 5.1 Àwọn Pàràmítà Tí A Ti Fìdí Múlẹ̀ A ti lo àwọn pàràmítà wọ̀nyí nínú àwọn ìfilọ́lẹ̀ gangan lórí ohun èlò `omniroute` lọ́wọ́lọ́wọ́: - `API_KEY_SECRET` - `DATA_DIR` - `JWT_SECRET` - `MACHINE_ID_SALT` - `NEXT_PUBLIC_BASE_URL` - `OMNIROUTE_WS_BRIDGE_SECRET` (ó pọndandan ní production — a ń lò ó fún ìfàṣẹsí afárá WebSocket) - `STORAGE_ENCRYPTION_KEY` ### 5.2 Nípa `INITIAL_PASSWORD` Iṣẹ́ àkànṣe lọ́wọ́lọ́wọ́ kò ṣètò `INITIAL_PASSWORD` nítorí pé ìfilọ́lẹ̀ yìí kò nílò rẹ̀. Tí a kò bá ṣètò rẹ̀: - Àkọsílẹ̀ ìbẹ̀rẹ̀ yóò fi hàn pé ọ̀rọ̀ aṣínà àìyípadà ni `CHANGEME` - Ó yẹ kí o yí ọ̀rọ̀ aṣínà ìwọlé padà nínú àwọn ààtò ètò ní kíákíá lẹ́yìn ìfilọ́lẹ̀ Tí o bá fẹ́ ṣètò ọ̀rọ̀ aṣínà backend ní ìbẹ̀rẹ̀ láìsí àbójútó, o lè ṣàfikún rẹ̀ nígbà tó bá yá: - `INITIAL_PASSWORD` --- ## 6. Àwọn Párámítà Tí A Dámọ̀ràn ### 6.1 Ìṣètò Àwọn Àṣírí Àwọn àyípadà wọ̀nyí ni a dámọ̀ràn fún Fly Secrets: | Àyípadà | Ìmọ̀ràn | Àpèjúwe | | ---------------------------- | ------------------------- | --------------------------------------------------- | | `API_KEY_SECRET` | Ó ṣe pàtàkì | A ń lò ó fún ṣíṣẹ̀dá àti ìfọwọ́sí API Key | | `JWT_SECRET` | Ó ṣe pàtàkì | A ń lò ó fún àwọn sáà ìwọlé àti fífi ìbuwọ́lù sí JWT | | `OMNIROUTE_WS_BRIDGE_SECRET` | Ó ṣe pàtàkì ní production | Àṣírí ìfàṣẹsí afárá WebSocket | | `STORAGE_ENCRYPTION_KEY` | A dámọ̀ràn rẹ̀ gidigidi | Ó ń parọ́rọ́ àlàyé ìsopọ̀ tó ṣe pàtàkì níbi ìpamọ́ | | `MACHINE_ID_SALT` | A dámọ̀ràn rẹ̀ | Ó ń ṣẹ̀dá àmì ìdánimọ̀ ẹ̀rọ tó dúró ṣinṣin | | `INITIAL_PASSWORD` | Kò pọndandan | Ó ń ṣètò ọ̀rọ̀ aṣínà backend àkọ́kọ́ ní ìmúṣiṣẹ́ àkọ́kọ́ | | Àwọn ẹ̀rí ìkọ̀kọ̀ OAuth/API | Bí ó ṣe yẹ | Ìṣètò ìfàṣẹsí pèpéle ìta | ### 6.2 Àwọn Iye Tí A Dámọ̀ràn fún Iṣẹ́ Àkànṣe Lọ́wọ́lọ́wọ́ | Àyípadà | Iye Tí A Dámọ̀ràn | | ---------------------- | --------------------------- | | `DATA_DIR` | `/data` | | `NEXT_PUBLIC_BASE_URL` | `https://omniroute.fly.dev` | Àwọn àkíyèsí: - `DATA_DIR=/data` ṣe pàtàkì gidigidi, ó sì gbọ́dọ̀ bá ibi ìso Fly Volume mu - `NEXT_PUBLIC_BASE_URL` ni scheduler, àwọn callback frontend, àti àwọn ipò tó jọra ń lò ### 6.3 Ìṣètò URL Callback OAuth Tí o bá nílò láti mú àwọn olùpèsè tó dá lórí OAuth ṣiṣẹ́ (fún àpẹẹrẹ Antigravity, Gemini, Cursor) lórí ìmúṣiṣẹ́ Fly.io, rí i dájú pé àwọn kókó méjì wọ̀nyí pé: 1. **Ṣètò `NEXT_PUBLIC_BASE_URL` sí domain HTTPS gbogbogbò rẹ** ```powershell flyctl secrets set NEXT_PUBLIC_BASE_URL=https://omniroute.fly.dev -a omniroute ``` Tí o bá ń lo domain àdáni, fi domain tó bá a mu rópò rẹ̀ (fún àpẹẹrẹ `https://omniroute.yourdomain.com`). 2. **Ṣètò URL callback lórí console olùpèsè** Gbogbo àwọn olùpèsè OAuth ń lo ipa ọ̀nà callback kan ṣoṣo `/callback` — kò sí ipa ọ̀nà callback ọ̀tọ̀ fún olùpèsè kọ̀ọ̀kan: ```text /callback ``` Fún àpẹẹrẹ, láìka bóyá Gemini, Antigravity, Cursor, tàbí GitLab Duo: - `https://omniroute.fly.dev/callback` Tí `NEXT_PUBLIC_BASE_URL` kò bá URL callback tí a forúkọsílẹ̀ pẹ̀lú olùpèsè mu, ìṣàn OAuth yóò kùnà ní ìgbésẹ̀ àtúndarí browser. --- ## 7. Ìṣètò Àṣírí Pẹ̀lú Àṣẹ Kan Àwọn àṣẹ wọ̀nyí ń ṣẹ̀dá àwọn iye àìròtẹ́lẹ̀ tó ní ààbò, wọ́n sì ń kọ gbogbo àwọn párámítà tó ṣe pàtàkì fún iṣẹ́ àkànṣe lọ́wọ́lọ́wọ́ sí Fly Secrets ní ìgbésẹ̀ kan. Àwọn àkíyèsí: - Kò ní `INITIAL_PASSWORD` - A pète rẹ̀ fún iṣẹ́ àkànṣe lọ́wọ́lọ́wọ́ `omniroute` ```powershell $apiKeySecret = [Convert]::ToHexString((1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 })).ToLower() $jwtSecret = [Convert]::ToHexString((1..64 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 })).ToLower() $machineIdSalt = [Convert]::ToHexString((1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 })).ToLower() $storageKey = [Convert]::ToHexString((1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 })).ToLower() $wsBridgeSecret = [Convert]::ToHexString((1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 })).ToLower() flyctl secrets set ` API_KEY_SECRET=$apiKeySecret ` JWT_SECRET=$jwtSecret ` MACHINE_ID_SALT=$machineIdSalt ` STORAGE_ENCRYPTION_KEY=$storageKey ` OMNIROUTE_WS_BRIDGE_SECRET=$wsBridgeSecret ` DATA_DIR=/data ` NEXT_PUBLIC_BASE_URL=https://omniroute.fly.dev ` -a omniroute ``` Lórí Linux / macOS, o tún lè lo `openssl rand -hex 32`: ```bash flyctl secrets set OMNIROUTE_WS_BRIDGE_SECRET=$(openssl rand -hex 32) -a omniroute ``` Àwọn àkíyèsí: - `OMNIROUTE_WS_BRIDGE_SECRET` ṣe pàtàkì ní production; àìsí rẹ̀ yóò ba ìfọwọ́bọ̀ afárá WebSocket jẹ́ Tí o bá tún fẹ́ ṣètò ọ̀rọ̀ aṣínà àkọ́kọ́: ```powershell flyctl secrets set INITIAL_PASSWORD=your-strong-password -a omniroute ``` --- ## 8. Wíwo Àwọn Párámítà Lọ́wọ́lọ́wọ́ ```powershell flyctl secrets list -a omniroute ``` Tí ojúewé `Secrets` inú console kò bá fi àwọn variable tí a retí hàn, ṣàyẹ̀wò: - Pé application `omniroute` ni o ń wò - Pé value `app` inú `fly.toml` bá application inú console mu --- ## 9. Àwọn Ìmúdójúìwọ̀n àti Ìtújáde Tó Tẹ̀lé Lẹ́yìn àwọn ìmúdójúìwọ̀n code, ìlànà ìtújáde rọrùn: ```powershell git pull flyctl deploy ``` Tí o bá nílò láti ṣe ìmúdójúìwọ̀n àwọn párámítà nìkan láì yí code padà: ```powershell flyctl secrets set KEY=value -a omniroute ``` Fly yóò ṣe ìmúdójúìwọ̀n àwọn machine ní ọ̀kọ̀ọ̀kan láìfọwọ́yí. ### 9.1 Títọ́pa Àwọn Ìmúdójúìwọ̀n Upstream Repository Nígbà Tí O Ń Pa `fly.toml` Ti Fork Rẹ Mọ́ Tí repository lọ́wọ́lọ́wọ́ bá jẹ́ fork tí o sì fẹ́ mú àwọn ìmúdójúìwọ̀n pọ̀ pẹ̀lú upstream `https://github.com/diegosouzapw/OmniRoute`, tẹ̀lé ìṣàn iṣẹ́ tó wà ní ìsàlẹ̀. Lákọ̀ọ́kọ́, ṣàyẹ̀wò àwọn remote rẹ: ```powershell git remote -v ``` Ó yẹ kí o rí ó kéré tán: - `origin` tó ń tọ́ka sí fork tirẹ - `upstream` tó ń tọ́ka sí repository àkọ́kọ́ Tí a kò bá tíì ṣètò `upstream`, ṣàfikún un: ```powershell git remote add upstream https://github.com/diegosouzapw/OmniRoute.git ``` Ṣáájú mímú pọ̀ pẹ̀lú upstream, gba àwọn commit àti tag tuntun jù lọ: ```powershell git fetch upstream --tags ``` Ṣàyẹ̀wò version lọ́wọ́lọ́wọ́ àti àwọn tag upstream: ```powershell git describe --tags --always git show --no-patch --oneline v3.4.7 ``` > Àkíyèsí: Version project lọ́wọ́lọ́wọ́ ni `v3.8.0`. Àwọn ìtọ́kasí `v3.4.7` tó wà ní ìsàlẹ̀ jẹ́ àpẹẹrẹ ìtàn nìkan. Fún àwọn ìtújáde gangan, lo `:latest` tàbí tag version lọ́wọ́lọ́wọ́ (fún àpẹẹrẹ, `:v3.8.0`). Tí o bá fẹ́ merge `main` upstream tuntun jù lọ nígbà tí o ń fi agbára pa `fly.toml` ti fork rẹ mọ́, tẹ̀lé ìṣàn iṣẹ́ yìí: ```powershell git merge upstream/main git checkout HEAD~1 -- fly.toml git add -- fly.toml git commit -m "chore(deploy): keep fork fly.toml" git push origin main ``` Àwọn àkíyèsí: - `git merge upstream/main` ń mú code tuntun jù lọ láti repository àkọ́kọ́ wọ̀pọ̀ - `git checkout HEAD~1 -- fly.toml` ń mú `fly.toml` tirẹ padà láti ipò rẹ̀ ṣáájú merge - Tí upstream kò bá ṣàtúnṣe `fly.toml`, ìgbésẹ̀ yìí kò ní mú ìyàtọ̀ kankan wá - Tí upstream bá ṣàtúnṣe `fly.toml`, ìgbésẹ̀ yìí máa rí i dájú pé orúkọ application Fly rẹ, volume mount, region, àti àwọn deployment configuration mìíràn tó jẹ́ pàtó sí fork rẹ kò ní di títúnkọ Tí o bá fẹ́ mú un bá tag ìtújáde kan pàtó mu (fún àpẹẹrẹ, `v3.4.7`), kọ́kọ́ ṣàyẹ̀wò pé tag náà ti wà nínú `upstream/main`: ```powershell git merge-base --is-ancestor v3.4.7 upstream/main ``` Àbájáde àṣeyọrí túmọ̀ sí pé `upstream/main` ti ní version yẹn; o lè kàn merge `upstream/main`. ### 9.2 Ọ̀wọ̀ọ̀wọ́ Ìtújáde Bóṣewa Lẹ́yìn Mímú Pọ̀ Pẹ̀lú Upstream Lẹ́yìn mímú pọ̀ pẹ̀lú repository àkọ́kọ́, tẹ̀lé ìtòlẹ́sẹẹsẹ ìtújáde tí a dámọ̀ràn yìí: 1. `git fetch upstream --tags` 2. `git merge upstream/main` 3. Mú `fly.toml` ti fork náà padà 4. `git push origin main` 5. `flyctl deploy` 6. `flyctl status -a omniroute` 7. `flyctl logs --no-tail -a omniroute` Èyí ni ìṣàn iṣẹ́ gangan tí a lò nígbà tí a ń ṣe ìgbéga project lọ́wọ́lọ́wọ́ sí `v3.4.7` (àpẹẹrẹ náà ń tọ́ka sí version ìtàn; version gangan lọ́wọ́lọ́wọ́ ni `v3.8.0`). --- ## 10. Àwọn Àyẹ̀wò Lẹ́yìn Ìmúṣiṣẹ́ ### 10.1 Ṣàyẹ̀wò Ipò Ìṣàfilọ́lẹ̀ ```powershell flyctl status -a omniroute ``` ### 10.2 Wo Àwọn Àkọsílẹ̀ Ìbẹ̀rẹ̀ ```powershell flyctl logs --no-tail -a omniroute ``` ### 10.3 Ṣàrídájú Wíwọlé sí Ojú-òpó ```powershell try { (Invoke-WebRequest -Uri "https://omniroute.fly.dev" -MaximumRedirection 5 -UseBasicParsing).StatusCode } catch { if ($_.Exception.Response) { $_.Exception.Response.StatusCode.value__ } else { throw } } ``` Iye àbájáde `200` túmọ̀ sí pé ojú-òpó náà ń dáhùn lọ́nà tó yẹ. --- ## 11. Àwọn Àmì Àṣeyọrí Lẹ́yìn ìmúṣiṣẹ́ tó ṣàṣeyọrí, àwọn àkọsílẹ̀ yẹ kí ó ṣàfihàn àkóónú tó jọ èyí: ```text [bootstrap] Secrets persisted to: /data/server.env [DB] SQLite database ready: /data/storage.sqlite ``` Àwọn kókó méjèèjì yìí ṣe pàtàkì: - `/data/server.env` jẹ́rìí pé a kọ àwọn àṣírí àsìkò-ṣiṣe sí ìdìpọ̀ ìpamọ́ tó dúró pẹ́ - `/data/storage.sqlite` jẹ́rìí pé a kọ ibi ìpamọ́ dátà sí ìdìpọ̀ ìpamọ́ tó dúró pẹ́ Tí o bá rí `/app/data/...` dípò rẹ̀, a ti ṣètò `DATA_DIR` lọ́nà tí kò tọ́, ó sì gbọ́dọ̀ jẹ́ àtúnṣe lẹ́sẹ̀kẹsẹ̀. --- ## 12. Àwọn Ìṣòro Tó Wọ́pọ̀ ### 12.1 Ojú-ìwé `Secrets` Ṣófo Ìdí méjì ló sábà máa ń fà á: - O kò tíì ṣiṣẹ́ `flyctl secrets set` - O ń wo ìṣàfilọ́lẹ̀ mìíràn (fún àpẹẹrẹ, `oroute` dípò `omniroute`) ### 12.2 `flyctl deploy` Ṣe Ìròyìn `app not found` Kọ́kọ́ ṣẹ̀dá ìṣàfilọ́lẹ̀ náà: ```powershell flyctl apps create omniroute ``` ### 12.3 Ṣíṣàyẹ̀wò Gírámà `fly.toml` Kùnà Ṣàyẹ̀wò àwọn nǹkan wọ̀nyí: - Bóyá àwọn àmì tí ó dàrú wà nínú àwọn àlàyé - Bóyá lílo àmì ìsọ àti ìfàsẹ́yìn TOML tọ̀nà ### 12.4 Dátà Kò Dúró Títí Ṣàrídájú àwọn méjèèjì wọ̀nyí: - `fly.toml` ní `destination = '/data'` - A ṣètò `DATA_DIR` sí `/data` ### 12.5 Ṣé Ó Lè Ṣiṣẹ́ Láìsí `INITIAL_PASSWORD`? Bẹ́ẹ̀ ni, ó lè ṣiṣẹ́. Yóò padà lo ọ̀rọ̀ aṣínà àiyipada `CHANGEME`. A dábàá pé kí o yí ọ̀rọ̀ aṣínà backend padà ní kété tó bá ṣeé ṣe nínú àyíká production. --- ## 13. Àtúnlò Fún Àwọn Iṣẹ́-àkànṣe Tuntun Tí o bá ń mú iṣẹ́-àkànṣe tuntun ṣiṣẹ́ nípa títẹ̀lé ìwé yìí, àwọn nǹkan wọ̀nyí nìkan ni o nílò láti yí padà: 1. Yí iye `app` padà nínú `fly.toml` 2. Yí `NEXT_PUBLIC_BASE_URL` padà 3. Pa `DATA_DIR=/data` mọ́ 4. Ṣẹ̀dá `API_KEY_SECRET`, `JWT_SECRET`, `MACHINE_ID_SALT`, àti `STORAGE_ENCRYPTION_KEY` tuntun 5. Lẹ́yìn ìmúṣiṣẹ́ àkọ́kọ́, ṣàrídájú pé a kọ àwọn àkọsílẹ̀ sí `/data` Má ṣe tún lo àwọn kọ́kọ́rọ́ láti inú iṣẹ́-àkànṣe tẹ́lẹ̀. --- ## 14. Àtòjọ Àyẹ̀wò Ìtújáde Tó Kéré Jù Fún Iṣẹ́-àkànṣe Lọ́wọ́lọ́wọ́ Àwọn àṣẹ tí a sábà máa ń lò fún àwọn ìtújáde tó tẹ̀lé ni: ```powershell flyctl auth whoami flyctl status -a omniroute flyctl secrets list -a omniroute flyctl deploy flyctl logs --no-tail -a omniroute ``` Fún ìtújáde déédéé, àṣẹ pàtàkì náà ni: ```powershell flyctl deploy ``` Fún ìmúṣiṣẹ́ àkọ́kọ́ nínú àyíká tuntun, àwọn ìgbésẹ̀ pàtàkì ni: 1. `flyctl auth login` 2. `flyctl apps create omniroute` 3. `flyctl secrets set ... -a omniroute` 4. `flyctl deploy` 5. `flyctl logs --no-tail -a omniroute`