# 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) · 🇳🇬 [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) · 🇳🇬 [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 બ્રિજ પ્રમાણીકરણ સિક્રેટ | | `STORAGE_ENCRYPTION_KEY` | ખૂબ જ ભલામણ કરેલ | સંગ્રહિત સંવેદનશીલ કનેક્શન માહિતીને એન્ક્રિપ્ટ કરે છે | | `MACHINE_ID_SALT` | ભલામણ કરેલ | સ્થિર મશીન ઓળખકર્તા જનરેટ કરે છે | | `INITIAL_PASSWORD` | વૈકલ્પિક | પ્રથમ ડિપ્લોયમેન્ટ વખતે પ્રારંભિક બેકએન્ડ પાસવર્ડ સેટ કરે છે | | OAuth/API ખાનગી ક્રેડેન્શિયલ્સ | જરૂરિયાત મુજબ | બાહ્ય પ્લેટફોર્મ પ્રમાણીકરણ રૂપરેખાંકન | ### 6.2 વર્તમાન પ્રોજેક્ટ માટે ભલામણ કરેલા મૂલ્યો | વેરિયેબલ | ભલામણ કરેલું મૂલ્ય | | ---------------------- | --------------------------- | | `DATA_DIR` | `/data` | | `NEXT_PUBLIC_BASE_URL` | `https://omniroute.fly.dev` | નોંધો: - `DATA_DIR=/data` અત્યંત મહત્ત્વપૂર્ણ છે અને તે Fly Volume માઉન્ટ પોઇન્ટ સાથે મેળ ખાતું હોવું આવશ્યક છે - `NEXT_PUBLIC_BASE_URL` નો ઉપયોગ શેડ્યૂલર, ફ્રન્ટએન્ડ કૉલબૅક્સ અને સમાન પરિસ્થિતિઓમાં થાય છે ### 6.3 OAuth કૉલબૅક URL રૂપરેખાંકન જો તમારે Fly.io ડિપ્લોયમેન્ટ પર OAuth-આધારિત પ્રદાતાઓ (દા.ત. Antigravity, Gemini, Cursor) સક્ષમ કરવા હોય, તો નીચેના બે મુદ્દાઓની ખાતરી કરો: 1. **`NEXT_PUBLIC_BASE_URL` ને તમારા સાર્વજનિક HTTPS ડોમેન પર સેટ કરો** ```powershell flyctl secrets set NEXT_PUBLIC_BASE_URL=https://omniroute.fly.dev -a omniroute ``` જો તમે કસ્ટમ ડોમેનનો ઉપયોગ કરી રહ્યા હો, તો તેને સંબંધિત ડોમેનથી બદલો (દા.ત. `https://omniroute.yourdomain.com`). 2. **પ્રદાતાના કન્સોલ પર કૉલબૅક URL રૂપરેખાંકિત કરો** બધા OAuth પ્રદાતાઓ એક જ કૉલબૅક પાથ `/callback` નો ઉપયોગ કરે છે — દરેક પ્રદાતા માટે અલગ કૉલબૅક રૂટ નથી: ```text /callback ``` ઉદાહરણ તરીકે, Gemini, Antigravity, Cursor અથવા GitLab Duo કોઈપણ હોય: - `https://omniroute.fly.dev/callback` જો `NEXT_PUBLIC_BASE_URL` પ્રદાતા સાથે નોંધાયેલા કૉલબૅક URL સાથે મેળ નહીં ખાય, તો બ્રાઉઝર રીડાયરેક્ટ તબક્કે 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 બ્રિજ હેન્ડશેક નિષ્ફળ જશે જો તમે પ્રારંભિક પાસવર્ડ પણ સેટ કરવા માંગતા હો: ```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 ``` અપસ્ટ્રીમ સાથે સિંક કરતાં પહેલાં, નવીનતમ કમિટ્સ અને ટૅગ્સ મેળવો: ```powershell git fetch upstream --tags ``` વર્તમાન વર્ઝન અને અપસ્ટ્રીમ ટૅગ્સ તપાસો: ```powershell git describe --tags --always git show --no-patch --oneline v3.4.7 ``` > નોંધ: પ્રોજેક્ટનું વર્તમાન વર્ઝન `v3.8.0` છે. નીચેના `v3.4.7` સંદર્ભો ફક્ત ઐતિહાસિક ઉદાહરણો તરીકે રાખવામાં આવ્યા છે. વાસ્તવિક રિલીઝ માટે, `:latest` અથવા વર્તમાન વર્ઝન ટૅગ (દા.ત. `:v3.8.0`) નો ઉપયોગ કરો. જો તમે તમારા ફોર્કની `fly.toml` ને ફરજિયાત રીતે જાળવી રાખીને નવીનતમ અપસ્ટ્રીમ `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` પુનઃસ્થાપિત કરે છે - જો અપસ્ટ્રીમે `fly.toml` માં ફેરફાર ન કર્યો હોય, તો આ પગલું કોઈ તફાવત રજૂ કરશે નહીં - જો અપસ્ટ્રીમે `fly.toml` માં ફેરફાર કર્યો હોય, તો આ પગલું સુનિશ્ચિત કરે છે કે તમારી Fly એપ્લિકેશનનું નામ, વોલ્યુમ માઉન્ટ, રીજન અને ફોર્ક-વિશિષ્ટ અન્ય ડિપ્લોયમેન્ટ કૉન્ફિગરેશન ઓવરરાઇટ ન થાય જો તમે કોઈ ચોક્કસ રિલીઝ ટૅગ (દા.ત. `v3.4.7`) સાથે સુસંગત થવા માંગતા હો, તો પહેલાં ચકાસો કે તે ટૅગ પહેલેથી જ `upstream/main` માં સામેલ છે: ```powershell git merge-base --is-ancestor v3.4.7 upstream/main ``` સફળ રિટર્નનો અર્થ એ છે કે `upstream/main` માં તે વર્ઝન પહેલેથી જ સામેલ છે; તમે ફક્ત `upstream/main` મર્જ કરી શકો છો. ### 9.2 અપસ્ટ્રીમ સિંક કર્યા પછીની પ્રમાણભૂત રિલીઝ શ્રેણી મૂળ રિપોઝિટરી સાથે સિંક કર્યા પછી, આ ભલામણ કરેલા રિલીઝ ક્રમને અનુસરો: 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] Secrets persisted to: /data/server.env [DB] SQLite database ready: /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`