# Termux Headless Setup (ํ•œ๊ตญ์–ด) ๐ŸŒ **Languages:** ๐Ÿ‡บ๐Ÿ‡ธ [English](../../../../guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ช๐Ÿ‡น [am](../../../am/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฆ [ar](../../../ar/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฆ๐Ÿ‡ฟ [az](../../../az/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ฌ [bg](../../../bg/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ฉ [bn](../../../bn/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ฆ [bs](../../../bs/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡จ๐Ÿ‡ฟ [cs](../../../cs/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฉ๐Ÿ‡ฐ [da](../../../da/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฉ๐Ÿ‡ช [de](../../../de/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฌ๐Ÿ‡ท [el](../../../el/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ช๐Ÿ‡ธ [es](../../../es/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ช๐Ÿ‡ช [et](../../../et/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ท [fa](../../../fa/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ซ๐Ÿ‡ฎ [fi](../../../fi/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ซ๐Ÿ‡ท [fr](../../../fr/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ช [ga](../../../ga/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [gu](../../../gu/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [ha](../../../ha/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ฑ [he](../../../he/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [hi](../../../hi/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ญ๐Ÿ‡ท [hr](../../../hr/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ญ๐Ÿ‡บ [hu](../../../hu/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฆ๐Ÿ‡ฒ [hy](../../../hy/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ฉ [id](../../../id/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [ig](../../../ig/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡น [it](../../../it/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฏ๐Ÿ‡ต [ja](../../../ja/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฌ๐Ÿ‡ช [ka](../../../ka/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ญ [km](../../../km/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [kn](../../../kn/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฑ๐Ÿ‡น [lt](../../../lt/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฑ๐Ÿ‡ป [lv](../../../lv/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [ml](../../../ml/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [mr](../../../mr/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฒ๐Ÿ‡พ [ms](../../../ms/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฒ๐Ÿ‡น [mt](../../../mt/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฒ๐Ÿ‡ฒ [my](../../../my/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ต [ne](../../../ne/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฑ [nl](../../../nl/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ด [no](../../../no/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [or](../../../or/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [pa](../../../pa/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡ญ [phi](../../../phi/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡ฑ [pl](../../../pl/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡น [pt](../../../pt/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ง๐Ÿ‡ท [pt-BR](../../../pt-BR/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ท๐Ÿ‡ด [ro](../../../ro/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ท๐Ÿ‡บ [ru](../../../ru/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฑ๐Ÿ‡ฐ [si](../../../si/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฐ [sk](../../../sk/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ฎ [sl](../../../sl/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ท๐Ÿ‡ธ [sr](../../../sr/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ธ๐Ÿ‡ช [sv](../../../sv/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฐ๐Ÿ‡ช [sw](../../../sw/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [ta](../../../ta/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [te](../../../te/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡น๐Ÿ‡ญ [th](../../../th/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡น๐Ÿ‡ท [tr](../../../tr/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡บ๐Ÿ‡ฆ [uk-UA](../../../uk-UA/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ต๐Ÿ‡ฐ [ur](../../../ur/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡บ๐Ÿ‡ฟ [uz](../../../uz/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ป๐Ÿ‡ณ [vi](../../../vi/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡ณ๐Ÿ‡ฌ [yo](../../../yo/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡จ๐Ÿ‡ณ [zh-CN](../../../zh-CN/docs/guides/TERMUX_GUIDE.md) ยท ๐Ÿ‡น๐Ÿ‡ผ [zh-TW](../../../zh-TW/docs/guides/TERMUX_GUIDE.md) --- OmniRoute๋Š” Termux๋ฅผ ํ†ตํ•ด Android์—์„œ ํ—ค๋“œ๋ฆฌ์Šค ์„œ๋ฒ„๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Electron ๋ฐ์Šคํฌํ†ฑ ์•ฑ์€ Termux์—์„œ ์ง€์›๋˜์ง€ ์•Š์ง€๋งŒ, ์›น ๋Œ€์‹œ๋ณด๋“œ์™€ OpenAI ํ˜ธํ™˜ API๋Š” ๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ์‚ฌ์ „ ์š”๊ตฌ ์‚ฌํ•ญ F-Droid ๋˜๋Š” GitHub ๋ฆด๋ฆฌ์Šค์—์„œ Termux๋ฅผ ์„ค์น˜ํ•œ ํ›„, ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  `better-sqlite3` ๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ ์ข…์†์„ฑ์— ํ•„์š”ํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”. ```bash pkg update pkg upgrade pkg install nodejs python build-essential git ``` > **Node.js ๋ฒ„์ „:** OmniRoute์—๋Š” Node `>=22.22.2 <23 || >=24.0.0 <27`์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(`package.json`์˜ `engines` / `SUPPORTED_NODE_RANGE`์™€ ์ผ์น˜). Termux์˜ `nodejs-lts`๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Node 20 LTS๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด ๋ฒ„์ „์€ **๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**. ๋Œ€์‹  `pkg install nodejs`๋กœ ์ตœ์‹  ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ณ  `node --version`์ด 22.x/24.x ์ด์ƒ์˜ ๋ฒ„์ „์„ ํ‘œ์‹œํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋„ค์ดํ‹ฐ๋ธŒ ํŒจํ‚ค์ง€ ์ปดํŒŒ์ผ์ด ์‹คํŒจํ•˜๋ฉด ์œ„์˜ `pkg install` ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•œ ๋‹ค์Œ OmniRoute ์„ค์น˜๋ฅผ ์žฌ์‹œ๋„ํ•˜์„ธ์š”. ## ์„ค์น˜ ์ตœ์‹  ๊ฒŒ์‹œ ํŒจํ‚ค์ง€๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜์„ธ์š”. ```bash npx -y omniroute@latest ``` ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ```bash npm install -g omniroute omniroute ``` ## ์‹คํ–‰ OmniRoute๋ฅผ ํ—ค๋“œ๋ฆฌ์Šค ์„œ๋ฒ„ ๋ชจ๋“œ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”. ```bash omniroute ``` ๋˜๋Š”: ```bash npx omniroute ``` ๋Œ€์‹œ๋ณด๋“œ๋Š” ๋‹ค์Œ ์ฃผ์†Œ์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. ```text http://localhost:20128 ``` Android ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น URL์„ ์—ฌ์„ธ์š”. Termux ๋‚ด๋ถ€์—์„œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ OpenAI ํ˜ธํ™˜ ๊ธฐ๋ณธ URL๋กœ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ์™€ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ## ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ ๊ฐ„๋‹จํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ```bash nohup omniroute > omniroute.log 2>&1 & ``` ์ค‘์ง€ํ•˜๋ ค๋ฉด: ```bash pkill -f omniroute ``` ๊ธฐ๊ธฐ๊ฐ€ ๋ถ€ํŒ…๋œ ํ›„ ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•˜๋ ค๋ฉด Termux:Boot ์• ๋“œ์˜จ์„ ์„ค์น˜ํ•˜๊ณ  ๋ถ€ํŒ… ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“œ์„ธ์š”. ```bash mkdir -p ~/.termux/boot cat > ~/.termux/boot/omniroute.sh <<'EOF' #!/data/data/com.termux/files/usr/bin/sh cd "$HOME" nohup omniroute > "$HOME/omniroute.log" 2>&1 & EOF chmod +x ~/.termux/boot/omniroute.sh ``` Android์˜ ๋ฐฐํ„ฐ๋ฆฌ ์ตœ์ ํ™”๋กœ ์ธํ•ด ์žฅ์‹œ๊ฐ„ ์‹คํ–‰๋˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ๊ณ„์† ์˜จ๋ผ์ธ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋ฉด Termux์˜ ๋ฐฐํ„ฐ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์„ธ์š”. ## ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ์ ‘์† WiFi ๋„คํŠธ์›Œํฌ์—์„œ ํœด๋Œ€์ „ํ™”์˜ IP ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ```bash ip addr show wlan0 ``` ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์—ฌ์„ธ์š”. ```text http://PHONE_IP:20128 ``` ์˜ˆ: ```text http://192.168.1.50:20128 ``` ํœด๋Œ€์ „ํ™”์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜์„ธ์š”. OmniRoute๋ฅผ ํœด๋Œ€์ „ํ™” ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ API ํ‚ค์™€ ๋Œ€์‹œ๋ณด๋“œ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”. ## ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ธฐ๋ณธ์ ์œผ๋กœ OmniRoute๋Š” Linux์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์„œ๋ฒ„ ์ธก ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ ๋™์ž‘์— ๋”ฐ๋ผ Termux ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋ž˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ช…์‹œ์ ์ธ ์œ„์น˜์— ์ €์žฅํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•˜์„ธ์š”. ```bash export DATA_DIR="$HOME/.omniroute" omniroute ``` ## ์ œํ•œ ์‚ฌํ•ญ - Electron์€ Termux์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - ์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด ๋˜๋Š” ๋ฐ์Šคํฌํ†ฑ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. - ์ด ๊ตฌ์„ฑ์€ ์„œ๋ฒ„ ์ „์šฉ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. - ๋„ค์ดํ‹ฐ๋ธŒ ์ข…์†์„ฑ์€ ๋กœ์ปฌ ์ปดํŒŒ์ผ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ์€ Android ๊ธฐ๊ธฐ์—์„œ๋Š” ๋™์‹œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ค„์—ฌ์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - MITM/์‹œ์Šคํ…œ ์ธ์ฆ์„œ ๊ธฐ๋Šฅ์—๋Š” Termux ์™ธ๋ถ€์—์„œ Android ์ˆ˜์ค€์˜ ์‹ ๋ขฐ ์ €์žฅ์†Œ ์„ค์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ๋ฌธ์ œ ํ•ด๊ฒฐ ### ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”Œ๋žซํผ: android(๋ชจ๋“  ์š”์ฒญ์—์„œ HTTP 500 ๋ฐ˜ํ™˜) **์ฆ์ƒ:** `omniroute` / `omniroute serve`๊ฐ€ `โœ” OmniRoute is running!`์„ ์ถœ๋ ฅํ•˜์ง€๋งŒ, ๋ชจ๋“  ๋Œ€์‹œ๋ณด๋“œ ๋˜๋Š” API ์š”์ฒญ์—์„œ ๋‚ด์šฉ ์—†์ด `500 Internal Server Error`๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. `~/.omniroute/logs/application/app.log`๋Š” ๋น„์–ด ์žˆ๊ณ , `APP_LOG_LEVEL=debug`๋ฅผ ์„ค์ •ํ•ด๋„ ์œ ์šฉํ•œ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์‘๋‹ต ๋ณธ๋ฌธ์€ JSON ์„ธ๋ถ€ ์ •๋ณด ์—†์ด ์ผ๋ฐ˜ ํ…์ŠคํŠธ(`Internal Server Error`)๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. **์›์ธ:** ์ผ๋ถ€ Termux/Node ๋นŒ๋“œ๋Š” `process.platform === "android"`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Next.js์˜ `getCacheDirectory()`๋Š” ํ•ด๋‹น ํ”Œ๋žซํผ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. `~/.cache`(๋˜๋Š” ์ผ๋ฐ˜ ์ž„์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ)๊ฐ€ _์ด๋ฏธ_ ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด instrumentation hook์„ ๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ```text Error: An error occurred while loading instrumentation hook: Unsupported platform: android ``` hook์ด ๋กœ๋“œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋กœ๊น…๋„ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 500 ์˜ค๋ฅ˜๋Š” ์›์ธ์„ ์ „ํ˜€ ์ง„๋‹จํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. OmniRoute๋Š” Android/Termux์—์„œ ์ด ๊ฒ€์‚ฌ๊ฐ€ ์„ฑ๊ณตํ•˜๋„๋ก Next.js๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— CLI ์ง„์ž…์ ์—์„œ `~/.cache`๋ฅผ ์ƒ์„ฑํ•˜๊ณ , `XDG_CACHE_HOME`์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. **์ง€์›๋˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•(ํŒจํ‚ค์ง€ ํŒจ์น˜ ๋ถˆํ•„์š”):** ```bash mkdir -p ~/.cache omniroute serve ``` ํ˜„์žฌ OmniRoute ๋นŒ๋“œ์—์„œ๋Š” Android/Termux์—์„œ CLI๊ฐ€ ์ด ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ `npx -y omniroute@latest`๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ „์—ญ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ˆ˜๋™ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„์—๋„ ์ด ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด `~/.cache`๋ฅผ ํ•œ ๋ฒˆ ์ƒ์„ฑํ•œ ๋‹ค์Œ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”. `process.platform = "linux"`๋ฅผ ๊ฐ•์ œ๋กœ ์„ค์ •ํ•˜๋„๋ก `dist/server.js`๋ฅผ ํŒจ์น˜ํ•˜์ง€ **๋งˆ์„ธ์š”**. ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€ ํŒจ์น˜๋Š” ์žฌ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๋งˆ๋‹ค ๋ฎ์–ด์“ฐ๊ธฐ๋˜๋ฉฐ, ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋ฉด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ### better-sqlite3 ๋นŒ๋“œ ์˜ค๋ฅ˜ Termux ๋นŒ๋“œ ๋„๊ตฌ ์ฒด์ธ์„ ์„ค์น˜ํ•˜์„ธ์š”. ```bash pkg install nodejs python build-essential ``` ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์„ธ์š”. ```bash npx -y omniroute@latest ``` ### ํฌํŠธ๊ฐ€ ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž„ ๊ธฐ๋ณธ ํฌํŠธ์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ธ ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜์„ธ์š”. ```bash ss -ltnp | grep 20128 ``` ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜์„ธ์š”. ```bash pkill -f omniroute ``` ### ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ๋Œ€์‹œ๋ณด๋“œ์— ์ ‘์†ํ•  ์ˆ˜ ์—†์Œ ๋‘ ๊ธฐ๊ธฐ๊ฐ€ ๋™์ผํ•œ WiFi ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค์Œ Termux์—์„œ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”. ```bash curl http://localhost:20128 ``` ๋กœ์ปฌ ์ ‘์†์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ LAN์„ ํ†ตํ•œ ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ Android ํ•ซ์ŠคํŒŸ/WiFi ๊ฒฉ๋ฆฌ ์„ค์ •๊ณผ ํœด๋Œ€์ „ํ™”์˜ ๋ฐฉํ™”๋ฒฝ ๋˜๋Š” VPN ํ”„๋กœํ•„์„ ํ™•์ธํ•˜์„ธ์š”.