# 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) · 🇳🇱 [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`