[{"data":1,"prerenderedAt":158},["ShallowReactive",2],{"page:\u002Farticles\u002Ftermux-remote-dashboard":3},{"id":4,"title":5,"author":6,"body":10,"cover":144,"date":145,"description":146,"extension":147,"head":148,"layout":151,"meta":152,"navigation":153,"path":154,"seo":155,"stem":156,"__hash__":157},"pages\u002Farticles\u002F39.termux-remote-dashboard.md","A Remote Dashboard for Termux API",{"name":7,"avatarUrl":8,"link":9},"Likun Cai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103620968?v=4","https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha",{"type":11,"value":12,"toc":141},"minimark",[13,17,33,38,41,70,81,99,122,125,128,137],[14,15,5],"h1",{"id":16},"a-remote-dashboard-for-termux-api",[18,19,20,24,25,32],"p",{},[21,22,23],"code",{},"termux-api-http-frontend"," turns the companion ",[26,27,31],"a",{"href":28,"rel":29},"https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha\u002Ftermux-api-http",[30],"nofollow","termux-api-http"," service into a browser dashboard. It displays battery, network, device, and location information and exposes controls for the torch, brightness, vibration, volume, notifications, text-to-speech, clipboard, contacts, SMS, and call logs.",[34,35,37],"h2",{"id":36},"run-the-container","Run the container",[18,39,40],{},"Point the frontend at the backend URL and start its Docker Compose service:",[42,43,48],"pre",{"className":44,"code":45,"language":46,"meta":47,"style":47},"language-bash shiki shiki-themes github-light github-dark","docker compose up -d\n","bash","",[21,49,50],{"__ignoreMap":47},[51,52,55,59,63,66],"span",{"class":53,"line":54},"line",1,[51,56,58],{"class":57},"sScJk","docker",[51,60,62],{"class":61},"sZZnC"," compose",[51,64,65],{"class":61}," up",[51,67,69],{"class":68},"sj4cs"," -d\n",[18,71,72,73,76,77,80],{},"The dashboard is then available at ",[21,74,75],{},"http:\u002F\u002Flocalhost:33334",". For local development, create ",[21,78,79],{},".env"," and start Vite:",[42,82,86],{"className":83,"code":84,"language":85,"meta":47,"style":47},"language-env shiki shiki-themes github-light github-dark","VITE_API_URL=http:\u002F\u002FYOUR_DEVICE_IP:3000\u002Fapi\nVITE_API_KEY=your_key\n","env",[21,87,88,93],{"__ignoreMap":47},[51,89,90],{"class":53,"line":54},[51,91,92],{},"VITE_API_URL=http:\u002F\u002FYOUR_DEVICE_IP:3000\u002Fapi\n",[51,94,96],{"class":53,"line":95},2,[51,97,98],{},"VITE_API_KEY=your_key\n",[42,100,102],{"className":44,"code":101,"language":46,"meta":47,"style":47},"npm install\nnpm run dev\n",[21,103,104,112],{"__ignoreMap":47},[51,105,106,109],{"class":53,"line":54},[51,107,108],{"class":57},"npm",[51,110,111],{"class":61}," install\n",[51,113,114,116,119],{"class":53,"line":95},[51,115,108],{"class":57},[51,117,118],{"class":61}," run",[51,120,121],{"class":61}," dev\n",[18,123,124],{},"The app is built with React 19, Vite, Axios, and Lucide icons, and the production container serves it through Nginx.",[18,126,127],{},"The frontend cannot make an insecure backend safe. A Vite variable is compiled into browser-delivered JavaScript, so any configured key is available to users of that build. Keep the dashboard and backend on a trusted network or add a proper authenticated TLS gateway in front of both. Grant Termux only the Android permissions the intended dashboard functions require.",[18,129,130,131,136],{},"Visit the ",[26,132,135],{"href":133,"rel":134},"https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha\u002Ftermux-api-http-frontend",[30],"Termux Remote Dashboard repository"," for the current Docker and environment configuration.",[138,139,140],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":47,"searchDepth":95,"depth":95,"links":142},[143],{"id":36,"depth":95,"text":37},"\u002Farticles\u002Ftermux-remote-cover.webp","2026-08-12T00:39:00.000Z","Monitor and control an Android device from a responsive React dashboard connected to the authenticated termux-api-http backend.","md",{"title":149},{"termux-api-http-frontend":150},"An Android Remote-Control Dashboard","page",{},true,"\u002Farticles\u002Ftermux-remote-dashboard",{"title":5,"description":146},"articles\u002F39.termux-remote-dashboard","_DWz7tAePhhG_sQZ2ZnKBDkWZv3ZSIvNoJj6sJJeSSM",1786980373677]