# OmniRoute Fly.io Deployment Guide (සිංහල) 🌐 **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) · 🇸🇰 [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) · 🇳🇬 [yo](../../../yo/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) --- මෙම ලේඛනය Fly.io මත OmniRoute යෙදවීමේ සත්ය ක්රියාවලිය පහත අවස්ථා ආවරණය කරමින් විස්තර කරයි: - වත්මන් ව්යාපෘතිය පළමු වරට Fly.io වෙත යෙදවීම - පසුව සිදු කරන කේත යාවත්කාලීන කිරීම් ප්රකාශයට පත් කිරීම - එම යෙදවීමේ කාර්ය ප්රවාහයම අනුගමනය කරන නව ව්යාපෘති මෙම මාර්ගෝපදේශය වත්මන් ව්යාපෘතිය සඳහා සත්යාපනය කළ, ක්රියාකාරී වින්යාසයක් මත පදනම් වේ. යෙදුමේ නම `omniroute` වේ. --- ## 1. යෙදවීමේ ඉලක්ක - වේදිකාව: Fly.io - යෙදවීමේ ක්රමය: දේශීය `flyctl` ඍජු ප්රකාශනය - ධාවන පරිසරය: ගබඩාවේ පවතින `Dockerfile` සහ `fly.toml` භාවිත කිරීම - දත්ත ස්ථායීතාව: `/data` වෙත සවිකළ Fly Volume එකක් - ප්රවේශ URL: `https://omniroute.fly.dev/` --- ## 2. වත්මන් ව්යාපෘතියේ ප්රධාන වින්යාසය වත්මන් ගබඩාවේ ඇති `fly.toml` ගොනුවේ පහත ප්රධාන අයිතම අඩංගු බව තහවුරු කර ඇත: ```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" ``` සටහන්: - `app = 'omniroute'` මඟින් යෙදවීම ඉලක්ක කරන Fly යෙදුම තීරණය කරයි - `destination = '/data'` මඟින් ස්ථායී වෙළුම සවිකරන නාමාවලිය තීරණය කරයි - මෙම ව්යාපෘතියේ `DATA_DIR=/data` සැකසිය යුතුය; එසේ නොමැති නම් දත්ත සමුදාය සහ යතුරු බහාලුමේ තාවකාලික නාමාවලියට ලියනු ලැබේ --- ## 3. පූර්ව අවශ්යතා ### 3.1 Fly CLI ස්ථාපනය කිරීම Windows PowerShell: ```powershell pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex" ``` ඔබගේ පරිසරය තුළ ස්ථාපන ස්ක්රිප්ටය අසාර්ථක වුවහොත්, ඔබට `flyctl` ද්විමය ගොනුව අතින් බාගත කර එය ඔබගේ `PATH` වෙත එක් කළ හැකිය. ### 3.2 ඔබගේ Fly ගිණුමට පිවිසීම ```powershell flyctl auth login ``` ### 3.3 පිවිසුම් තත්ත්වය සත්යාපනය කිරීම ```powershell flyctl auth whoami flyctl version ``` --- ## 4. වත්මන් ව්යාපෘතිය පළමු වරට යෙදවීම ### 4.1 කේතය ක්ලෝන කර නාමාවලියට ඇතුළු වීම ```powershell git clone https://github.com/diegosouzapw/OmniRoute.git cd OmniRoute ``` ### 4.2 යෙදුමේ නම තහවුරු කිරීම `fly.toml` විවෘත කර පහත පේළිය සත්යාපනය කරන්න: ```toml app = 'omniroute' ``` ඔබ ඔබගේම නව යෙදුමකට යොදවන්නේ නම්, එය ගෝලීය වශයෙන් අනන්ය නමකට වෙනස් කළ හැකිය, උදාහරණයක් ලෙස: ```toml app = 'omniroute-yourname' ``` සටහන: - කොන්සෝලය තුළ ඔබ දකින යෙදුම `fly.toml` හි `app` අගයට ගැළපෙන බවට වග බලා ගන්න - ඔබ මීට පෙර `oroute` වැනි වෙනත් නමක් භාවිත කළේ නම්, එය `omniroute` සමඟ පටලවා නොගන්න ### 4.3 යෙදුම නිර්මාණය කිරීම යෙදුම තවමත් නොපවතී නම්: ```powershell flyctl apps create omniroute ``` ඔබ යෙදුමේ නම වෙනස් කළේ නම්, `omniroute` වෙනුවට ඔබ තෝරාගත් නම යොදන්න. ### 4.4 පළමු යෙදවීම ```powershell flyctl deploy ``` --- ## 5. අවශ්ය පරාමිති මෙම ව්යාපෘතිය සඳහා අවම වශයෙන් පහත පරාමිති Fly.io මත වින්යාස කිරීම නිර්දේශ කෙරේ. ### 5.1 සත්යාපිත පරාමිති වත්මන් `omniroute` යෙදුමේ සැබෑ යෙදවීම් සඳහා මෙම පරාමිති භාවිත කර ඇත: - `API_KEY_SECRET` - `DATA_DIR` - `JWT_SECRET` - `MACHINE_ID_SALT` - `NEXT_PUBLIC_BASE_URL` - `OMNIROUTE_WS_BRIDGE_SECRET` (නිෂ්පාදන පරිසරයේ අවශ්ය වේ — WebSocket පාලම් සත්යාපනය සඳහා භාවිත වේ) - `STORAGE_ENCRYPTION_KEY` ### 5.2 `INITIAL_PASSWORD` පිළිබඳව මෙම යෙදවීම සඳහා එය අවශ්ය නොවන බැවින් වත්මන් ව්යාපෘතියේ `INITIAL_PASSWORD` සකසා නැත. එය සකසා නොමැති නම්: - ආරම්භක ලොගය පෙරනිමි මුරපදය `CHANGEME` බව දක්වනු ඇත - යෙදවීමෙන් පසු හැකි ඉක්මනින් පද්ධති සැකසුම් තුළ පිවිසුම් මුරපදය වෙනස් කළ යුතුය ඔබට අධීක්ෂණයකින් තොරව පසුබිම් පද්ධතියේ මුරපදය ආරම්භ කිරීමට අවශ්ය නම්, එය පසුව එක් කළ හැකිය: - `INITIAL_PASSWORD` --- ## 6. නිර්දේශිත පරාමිති ### 6.1 රහස් වින්යාසය Fly Secrets සඳහා පහත විචල්ය නිර්දේශ කෙරේ: | විචල්යය | නිර්දේශය | විස්තරය | | ---------------------------- | -------------------------- | ------------------------------------------------- | | `API_KEY_SECRET` | අවශ්යයි | API Key ජනනය සහ වලංගුකරණය සඳහා භාවිත කෙරේ | | `JWT_SECRET` | අවශ්යයි | පිවිසුම් සැසි සහ JWT අත්සන් කිරීම සඳහා භාවිත කෙරේ | | `OMNIROUTE_WS_BRIDGE_SECRET` | නිෂ්පාදන පරිසරයේදී අවශ්යයි | WebSocket bridge සත්යාපනය සඳහා වන රහස | | `STORAGE_ENCRYPTION_KEY` | දැඩිව නිර්දේශ කෙරේ | ගබඩා කර ඇති සංවේදී සම්බන්ධතා තොරතුරු සංකේතනය කරයි | | `MACHINE_ID_SALT` | නිර්දේශ කෙරේ | ස්ථාවර යන්ත්ර හඳුනාගැනීමේ අගයක් ජනනය කරයි | | `INITIAL_PASSWORD` | විකල්පයි | පළමු යෙදවීමේදී ආරම්භක backend මුරපදය සකසයි | | OAuth/API පෞද්ගලික අක්තපත්ර | අවශ්ය පරිදි | බාහිර වේදිකා සත්යාපන වින්යාසය | ### 6.2 වත්මන් ව්යාපෘතිය සඳහා නිර්දේශිත අගයන් | විචල්යය | නිර්දේශිත අගය | | ---------------------- | --------------------------- | | `DATA_DIR` | `/data` | | `NEXT_PUBLIC_BASE_URL` | `https://omniroute.fly.dev` | සටහන්: - `DATA_DIR=/data` අතිශයින් වැදගත් වන අතර එය Fly Volume mount point එකට ගැළපිය යුතුය - `NEXT_PUBLIC_BASE_URL` scheduler, frontend callbacks සහ සමාන අවස්ථා සඳහා භාවිත කෙරේ ### 6.3 OAuth Callback URL වින්යාසය Fly.io යෙදවීමේදී OAuth-පාදක providers (උදා. Antigravity, Gemini, Cursor) සක්රීය කිරීමට අවශ්ය නම්, පහත කරුණු දෙක සහතික කරගන්න: 1. **`NEXT_PUBLIC_BASE_URL` ඔබේ පොදු HTTPS domain එකට සකසන්න** ```powershell flyctl secrets set NEXT_PUBLIC_BASE_URL=https://omniroute.fly.dev -a omniroute ``` ඔබ custom domain එකක් භාවිත කරන්නේ නම්, එය අදාළ domain එකෙන් ප්රතිස්ථාපනය කරන්න (උදා. `https://omniroute.yourdomain.com`). 2. **Provider console එකේ callback URL එක වින්යාස කරන්න** සියලු OAuth providers එකම callback path එක වන `/callback` හවුලේ භාවිත කරයි — එක් එක් provider සඳහා වෙනම callback route එකක් නොමැත: ```text /callback ``` උදාහරණයක් ලෙස, Gemini, Antigravity, Cursor හෝ GitLab Duo කුමක් වුවත්: - `https://omniroute.fly.dev/callback` `NEXT_PUBLIC_BASE_URL` provider සමඟ ලියාපදිංචි කළ callback URL එකට නොගැළපේ නම්, browser redirect පියවරේදී OAuth ප්රවාහය අසාර්ථක වනු ඇත. --- ## 7. එක් විධානයකින් රහස් සැකසීම පහත විධාන ආරක්ෂිත අහඹු අගයන් ජනනය කර, වත්මන් ව්යාපෘතිය සඳහා අවශ්ය සියලු පරාමිති එක් පියවරකින් Fly Secrets වෙත ලියයි. සටහන්: - `INITIAL_PASSWORD` ඇතුළත් නොවේ - වත්මන් `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 ``` Linux / macOS මත, ඔබට `openssl rand -hex 32` ද භාවිත කළ හැකිය: ```bash flyctl secrets set OMNIROUTE_WS_BRIDGE_SECRET=$(openssl rand -hex 32) -a omniroute ``` සටහන්: - නිෂ්පාදන පරිසරයේදී `OMNIROUTE_WS_BRIDGE_SECRET` අවශ්ය වේ; එය නොමැති නම් WebSocket bridge handshake අසාර්ථක වේ ඔබට ආරම්භක මුරපදයක් ද සැකසීමට අවශ්ය නම්: ```powershell flyctl secrets set INITIAL_PASSWORD=your-strong-password -a omniroute ``` --- ## 8. වත්මන් පරාමිති බැලීම ```powershell flyctl secrets list -a omniroute ``` කොන්සෝලයේ `Secrets` පිටුව අපේක්ෂිත විචල්ය නොපෙන්වන්නේ නම්, පහත දෑ පරීක්ෂා කරන්න: - ඔබ `omniroute` යෙදුම බලමින් සිටින බව - `fly.toml` තුළ ඇති `app` අගය කොන්සෝලයේ ඇති යෙදුමට ගැළපෙන බව --- ## 9. පසුකාලීන යාවත්කාලීන කිරීම් සහ නිකුතු කේතය යාවත්කාලීන කිරීමෙන් පසු, නිකුතු ක්රියාවලිය සරලය: ```powershell git pull flyctl deploy ``` කේතය වෙනස් නොකර පරාමිති පමණක් යාවත්කාලීන කිරීමට අවශ්ය නම්: ```powershell flyctl secrets set KEY=value -a omniroute ``` Fly විසින් යන්ත්රවල ක්රමානුකූල යාවත්කාලීන කිරීමක් ස්වයංක්රීයව සිදු කරනු ඇත. ### 9.1 ඔබගේ ෆෝක් එකේ `fly.toml` සුරකිමින් මූලික රෙපොසිටරියේ යාවත්කාලීන කිරීම් හඹා යාම වත්මන් රෙපොසිටරිය ෆෝක් එකක් නම් සහ ඔබට මූලික `https://github.com/diegosouzapw/OmniRoute` වෙතින් යාවත්කාලීන කිරීම් සමමුහුර්ත කිරීමට අවශ්ය නම්, පහත කාර්ය ප්රවාහය අනුගමනය කරන්න. පළමුව, ඔබගේ දුරස්ථ රෙපොසිටරි සම්බන්ධතා තහවුරු කරන්න: ```powershell git remote -v ``` ඔබට අවම වශයෙන් පහත දෑ දැකිය හැකි විය යුතුය: - ඔබගේම ෆෝක් එක වෙත යොමු වන `origin` - මුල් රෙපොසිටරිය වෙත යොමු වන `upstream` `upstream` වින්යාස කර නොමැති නම්, එය එක් කරන්න: ```powershell git remote add upstream https://github.com/diegosouzapw/OmniRoute.git ``` upstream සමඟ සමමුහුර්ත කිරීමට පෙර, නවතම commits සහ tags ලබාගන්න: ```powershell git fetch upstream --tags ``` වත්මන් අනුවාදය සහ upstream tags පරීක්ෂා කරන්න: ```powershell git describe --tags --always git show --no-patch --oneline v3.4.7 ``` > සටහන: වත්මන් ව්යාපෘති අනුවාදය `v3.8.0` වේ. පහත සඳහන් `v3.4.7` යොමු ඓතිහාසික උදාහරණ ලෙස පමණක් තබා ඇත. සැබෑ නිකුතු සඳහා, `:latest` හෝ වත්මන් අනුවාද tag එක (උදා. `:v3.8.0`) භාවිත කරන්න. ඔබගේ ෆෝක් එකේ `fly.toml` බලහත්කාරයෙන් සුරකිමින් නවතම upstream `main` ඒකාබද්ධ කිරීමට අවශ්ය නම්, මෙම කාර්ය ප්රවාහය අනුගමනය කරන්න: ```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 ``` සටහන්: - `git merge upstream/main` මඟින් මුල් රෙපොසිටරියේ නවතම කේතය සමමුහුර්ත කරයි - `git checkout HEAD~1 -- fly.toml` මඟින් ඒකාබද්ධ කිරීමට පෙර තිබූ ඔබගේ ෆෝක් එකේම `fly.toml` ප්රතිසාධනය කරයි - upstream විසින් `fly.toml` වෙනස් කර නොමැති නම්, මෙම පියවරෙන් කිසිදු වෙනසක් ඇති නොවේ - upstream විසින් `fly.toml` වෙනස් කර ඇත්නම්, මෙම පියවර මඟින් ඔබගේ Fly යෙදුමේ නම, volume mount, කලාපය සහ ෆෝක් එකට විශේෂිත වෙනත් deployment වින්යාසයන් උඩින් ලියැවීම වළක්වයි නිශ්චිත නිකුතු tag එකක් සමඟ (උදා. `v3.4.7`) පෙළගැසීමට අවශ්ය නම්, එම tag එක දැනටමත් `upstream/main` තුළ ඇතුළත් බව පළමුව තහවුරු කරන්න: ```powershell git merge-base --is-ancestor v3.4.7 upstream/main ``` සාර්ථක ප්රතිදානයක් ලැබීමෙන් `upstream/main` තුළ එම අනුවාදය දැනටමත් අඩංගු බව අදහස් වේ; ඔබට `upstream/main` සරලව ඒකාබද්ධ කළ හැක. ### 9.2 Upstream සමමුහුර්ත කිරීමෙන් පසු සම්මත නිකුතු අනුපිළිවෙළ මුල් රෙපොසිටරිය සමඟ සමමුහුර්ත කිරීමෙන් පසු, නිර්දේශිත මෙම නිකුතු අනුපිළිවෙළ අනුගමනය කරන්න: 1. `git fetch upstream --tags` 2. `git merge upstream/main` 3. ෆෝක් එකේ `fly.toml` ප්රතිසාධනය කරන්න 4. `git push origin main` 5. `flyctl deploy` 6. `flyctl status -a omniroute` 7. `flyctl logs --no-tail -a omniroute` වත්මන් ව්යාපෘතිය `v3.4.7` වෙත උත්ශ්රේණි කිරීමේදී භාවිත කළ සැබෑ කාර්ය ප්රවාහය මෙයයි (මෙම උදාහරණය ඓතිහාසික අනුවාදයකට යොමු වේ; වත්මන් සැබෑ අනුවාදය `v3.8.0` වේ). --- ## 10. යෙදවීමෙන් පසු පරීක්ෂා ### 10.1 යෙදුමේ තත්ත්වය පරීක්ෂා කිරීම ```powershell flyctl status -a omniroute ``` ### 10.2 ආරම්භක ලොග් බැලීම ```powershell flyctl logs --no-tail -a omniroute ``` ### 10.3 අඩවියට ප්රවේශ විය හැකි බව තහවුරු කිරීම ```powershell try { (Invoke-WebRequest -Uri "https://omniroute.fly.dev" -MaximumRedirection 5 -UseBasicParsing).StatusCode } catch { if ($_.Exception.Response) { $_.Exception.Response.StatusCode.value__ } else { throw } } ``` `200` ආපසු ලැබෙන්නේ නම්, අඩවිය සාමාන්ය පරිදි ප්රතිචාර දක්වන බව එයින් පෙන්නුම් කරයි. --- ## 11. සාර්ථකත්වය පෙන්නුම් කරන දර්ශක සාර්ථක යෙදවීමකින් පසු, ලොග්වල පහත දැක්වෙන ආකාරයේ අන්තර්ගතයක් පෙන්විය යුතුය: ```text [bootstrap] රහස් සුරැකුණේ: /data/server.env [DB] SQLite දත්ත සමුදාය සූදානම්: /data/storage.sqlite ``` මෙම කරුණු දෙක ඉතා වැදගත් වේ: - `/data/server.env` මඟින් ධාවන කාල රහස් ස්ථිර වෙළුමට ලියා ඇති බව තහවුරු කරයි - `/data/storage.sqlite` මඟින් දත්ත සමුදාය ස්ථිර වෙළුමට ලියා ඇති බව තහවුරු කරයි ඒ වෙනුවට `/app/data/...` දිස්වන්නේ නම්, `DATA_DIR` වැරදි ලෙස වින්යාස කර ඇති අතර එය වහාම නිවැරදි කළ යුතුය. --- ## 12. පොදු ගැටලු ### 12.1 `Secrets` පිටුව හිස්ව තිබීම සාමාන්යයෙන් මෙයට හේතු දෙකක් ඇත: - ඔබ තවමත් `flyctl secrets set` ධාවනය කර නොමැත - ඔබ වෙනත් යෙදුමක් නරඹමින් සිටී (උදා: `omniroute` වෙනුවට `oroute`) ### 12.2 `flyctl deploy` මඟින් `app not found` වාර්තා කිරීම පළමුව යෙදුම සාදන්න: ```powershell flyctl apps create omniroute ``` ### 12.3 `fly.toml` විග්රහ කිරීම අසාර්ථක වීම පහත දෑ පරීක්ෂා කරන්න: - අදහස් තුළ විකෘති වූ අක්ෂර තිබේද යන්න - TOML උද්ධෘත සහ ඉන්ඩෙන්ටේෂන් නිවැරදිද යන්න ### 12.4 දත්ත ස්ථිරව නොපැවතීම පහත කරුණු දෙකම තහවුරු කරන්න: - `fly.toml` තුළ `destination = '/data'` අඩංගු වේ - `DATA_DIR` `/data` ලෙස සකසා ඇත ### 12.5 `INITIAL_PASSWORD` නොමැතිව එය ධාවනය කළ හැකිද? ඔව්, එය ධාවනය කළ හැකිය. එවිට පෙරනිමි `CHANGEME` මුරපදය භාවිත කෙරේ. නිෂ්පාදන පරිසරයේදී පසුඅන්ත මුරපදය හැකි ඉක්මනින් වෙනස් කිරීම නිර්දේශ කෙරේ. --- ## 13. නව ව්යාපෘති සඳහා නැවත භාවිත කිරීම ඔබ මෙම ලේඛනය අනුගමනය කරමින් නව ව්යාපෘතියක් යොදවන්නේ නම්, ඔබට වෙනස් කිරීමට අවශ්ය වන්නේ පහත අයිතම පමණි: 1. `fly.toml` තුළ `app` අගය වෙනස් කරන්න 2. `NEXT_PUBLIC_BASE_URL` වෙනස් කරන්න 3. `DATA_DIR=/data` එලෙසම තබා ගන්න 4. `API_KEY_SECRET`, `JWT_SECRET`, `MACHINE_ID_SALT`, සහ `STORAGE_ENCRYPTION_KEY` නැවත උත්පාදනය කරන්න 5. පළමු යෙදවීමෙන් පසු, ලොග් `/data` වෙත ලියැවෙන බව තහවුරු කරන්න පෙර ව්යාපෘතියක යතුරු නැවත භාවිත නොකරන්න. --- ## 14. වත්මන් ව්යාපෘතිය සඳහා අවම නිකුතු පිරික්සුම් ලැයිස්තුව ඉදිරි නිකුතු සඳහා බහුලවම භාවිත වන විධාන වන්නේ: ```powershell flyctl auth whoami flyctl status -a omniroute flyctl secrets list -a omniroute flyctl deploy flyctl logs --no-tail -a omniroute ``` සාමාන්ය නිකුතුවක් සඳහා, ප්රධාන විධානය සරලවම: ```powershell flyctl deploy ``` නව පරිසරයක පළමු වරට යෙදවීමක් සඳහා, ප්රධාන පියවර වන්නේ: 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`