# 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) · 🇵🇭 [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`