SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

headless VPS లో Gemini CLI ఎలా నడపాలి

headless VPS లో Google Gemini CLI నడపడానికి sudo లేని npm సంస్థాపన, API key తో బ్రౌజర్ లేని ప్రామాణీకరణ, tmux తో SSH ఆగితే కూడా పనులు కొనసాగే విధానం ఇక్కడ ఉంది.

మీరు నిర్మించేది ఏమిటి

మీకు సొంతమైన సర్వర్‌లో ఎప్పటికీ ఆన్‌లో ఉండే Gemini CLI. ఇది SSH ద్వారా చేరుకోగలిగేది. మీరు ల్యాప్‌టాప్‌ను మూసిన తర్వాత కూడా సుదీర్ఘ ఏజెంట్ పనులు కొనసాగుతాయి. సంస్థాపన మూడు ఆదేశాలతో పూర్తవుతుంది. పని అవసరం అన్నీ డెస్క్‌టాప్‌ను ఊహించే వాటికే: Google యొక్క CLI మిమ్మల్ని లాగిన్ చేయడానికి బ్రౌజర్‌ను తెరవాలనుకుంటుంది, మీ సర్వర్‌లో బ్రౌజర్ లేదు. కాబట్టి ఈ గైడ్‌లో ఎక్కువ భాగం హెడ్‌లెస్ మార్గం గురించి — డిస్ట్రో ఇవ్వని ప్రస్తుత Node, root అవసరం లేని గ్లోబల్ npm సంస్థాపన, మీ షెల్ హిస్టరీ నుండి దాచిపెట్టే API కీతో బ్రౌజర్ లేని ప్రామాణీకరణ, మరియు ఆగిపోయిన SSH సెషన్ నడుస్తున్న పనిని ఆపకుండా ఉండటానికి tmux.

Gemini CLI అనేది ఒక ఓపెన్-సోర్స్ (Apache-2.0) Node ప్రోగ్రామ్ (@google/gemini-cli). ఇది Google యొక్క Gemini మోడల్‌లతో మాట్లాడుతుంది. ఫైళ్లను చదవగలదు, రాయగలదు, షెల్ ఆదేశాలను అమలు చేయగలదు, పని డైరెక్టరీలో టూల్‌లను నడపగలదు. VPSలో ఇది ఒక చిన్న, ఎల్లప్పుడూ అందుబాటులో ఉండే ఏజెంట్. దీన్ని మీరు పని చేస్తూనే ఉంచవచ్చు. అందుకే ఇది ఏ ఖాతాతో నడుస్తుందో, సర్వర్‌లో ఉండే ఆధారాలు ఏమిటో — అవి ఇక్కడ ఉన్న ఏ ఒక్క సెట్టింగ్ కంటే ఎక్కువ ముఖ్యం.

ముందస్తు అవసరాలు మరియు వాస్తవ సమస్యలు

  • root లేదా sudo తో కూడిన కొత్త Ubuntu 24.04 KVM VPS. ఏ KVM ప్లానైనా పనిచేస్తుంది; CLI మాత్రమే తేలికగా ఉంటుంది, విశ్రాంత స్థితిలో కొన్ని వందల MB RAM ఉపయోగిస్తుంది.
  • Node.js 20 లేదా అంతకంటే కొత్తది. ఇది కఠినమైన వెర్షన్ హద్దు, మరియు డిస్ట్రో ప్యాకేజ్ దీనికంటే తక్కువగా ఉంటుంది — తదుపరి విభాగాన్ని చూడండి.
  • Google APIలకు అవుట్‌బౌండ్ HTTPS (పోర్ట్ 443). ఇన్‌బౌండ్ పోర్ట్‌లు అవసరం లేదు; ఇది క్లయింట్, సర్వర్ కాదు, కాబట్టి దీని కోసం మీరు ఫైర్‌వాల్ రంధ్రాన్ని తెరవరు.
  • సర్వర్‌లో బ్రౌజర్ అవసరం లేని ధృవీకరణ పద్ధతి: Google AI Studio నుండి Gemini API కీ, లేదా మీ సొంత మెషీన్‌లో బ్రౌజర్‌కు SSH టనెల్. API-కీ మార్గం స్క్రిప్ట్‌లు మరియు పర్యవేక్షణ లేని రన్‌లకు విస్తరిస్తుంది.
  • Docker లేదా Podman, మీరు --sandbox ఐసోలేషన్ కావాలనుకుంటే మాత్రమే. ఐచ్ఛికం, చివరి దగ్గర వివరించబడింది.

అందరినీ ఇబ్బందికి గురిచేసే సమస్య: సులభమైన gemini మొదటి-రన్ లాగిన్ ప్రవాహం డెస్క్‌టాప్ కోసం రూపొందించబడింది. అది బ్రౌజర్‌ను తెరవడానికి ప్రయత్నిస్తుంది మరియు, హెడ్‌లెస్ బాక్స్‌లో, విఫలమవుతుంది లేదా పనిచేయని లింక్‌ను ఇస్తుంది. మీరు ప్రారంభించే ముందు ధృవీకరణ మార్గాన్ని నిర్ణయించుకోండి.

Node: డిస్ట్రో ప్యాకేజీ చాలా పాతది

Ubuntu 24.04 దాని స్వంత రిపోజిటరీలలో Node 18.19.1 ను అందిస్తుంది, దీనితో npm 9.2.0 కూడా ఉంటుంది. Gemini CLI యొక్క package.json అనేది engines: { node: ">=20" } ను ప్రకటిస్తుంది, మరియు npm అసలు అనుకూలత లేకపోవడాన్ని డిఫాల్ట్‌గా పూర్తిగా ఆపదు — అది ఏమైనా ఇన్‌స్టాల్ చేస్తుంది మరియు ఆ తేడాను పేర్కొంటూ ఒక హెచ్చరికను ముద్రిస్తుంది:

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@google/gemini-cli@0.50.0',
npm WARN EBADENGINE   required: { node: '>=20' },
npm WARN EBADENGINE   current: { node: 'v18.19.1', npm: '9.2.0' }
npm WARN EBADENGINE }

ఆ హెచ్చరికను పట్టించుకోకుండా ముందుకు వెళ్ళితే, CLI మద్దతు లేని రన్‌టైమ్‌పై నడుస్తుంది. అక్కడ అది Node 20+ API ని చేరుకున్న వెంటనే తప్పుగా ప్రవర్తిస్తుంది లేదా క్రాష్ అవుతుంది, ఎందుకంటే ఆ API ఉనికిలో ఉంటుందని అది ఆశిస్తుంది. Node 18 ఏప్రిల్ 2025లో జీవితచక్రాంతాన్ని కూడా చేరుకుంది, కాబట్టి అది ఏ విధంగానూ ఒక మృత మార్గమే. CLI ని ఇన్‌స్టాల్ చేయడానికి ముందు ప్రస్తుత LTS ని ఇన్‌స్టాల్ చేయండి. రెండు స్పష్టమైన మార్గాలు NodeSource (సిస్టమ్-వైడ్ సైన్డ్ apt రిపో) లేదా nvm (పర్-యూజర్ వెర్షన్ మేనేజర్). ఒకటి ఎంచుకోండి.

NodeSource, మీరు ఆ సిస్టమ్‌లోని ప్రతి యూజర్‌కు Node అందుబాటులో ఉండాలనుకుంటే:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version

node --version అనేది v20.x లేదా అంతకంటే ఎక్కువ ముద్రించాలి — v24.x అనేది ప్రస్తుత క్రియాశీల LTS. ప్రస్తుత సెటప్ స్క్రిప్ట్ కోసం NodeSource పేజీని తనిఖీ చేయండి; కొత్త LTS విడుదలైనప్పుడు URL లోని setup_24.x అనేది మీరు అప్‌డేట్ చేయాల్సిన వివరం.

nvm, మీరు Node ని ఒక యూజర్ హోమ్ లోపలే ఉంచుకుని sudo తో దాన్ని ఎప్పుడూ తాకకూడదనుకుంటే:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts
node --version

ఆ URL లోని v0.40.1 అనేది ఇది రాసినప్పుడు ప్రస్తుతం ఉన్నది; తాజా విడుదల కోసం nvm యొక్క README ని తనిఖీ చేసి, దాన్ని రన్ చేయడానికి ముందు వెర్షన్‌ను మార్చండి. nvm కు ఈ పనికి నిజమైన ప్రయోజనం ఉంది: అది Node ని మరియు దాని గ్లోబల్ ప్యాకేజీలను ~/.nvm కింద ఇన్‌స్టాల్ చేస్తుంది, కాబట్టి తదుపరి విభాగంలోని గ్లోబల్-ఇన్‌స్టాల్ అనుమతి సమస్య అసలు తలెత్తదు. మీరు nvm మార్గాన్ని ఎంచుకుంటే, మీరు npm-prefix స్టెప్‌ను దాటవేయవచ్చు.

sudo npm -g లేకుండా CLI ని ఇన్‌స్టాల్ చేయండి

మనసుకు నచ్చే ఆదేశం sudo npm install -g @google/gemini-cli. దీన్ని వాడవద్దు. root యాజమాన్యంలోని గ్లోబల్ ప్రిఫిక్స్ తరువాత ప్రతి ఇన్‌స్టాలేషన్‌లో అనుమతి లోపాలను సృష్టిస్తుంది. మీ npm క్యాష్‌లో root యాజమాన్యంలోని ఫైళ్లను వదిలిపెడుతుంది. అవి కొన్ని నెలల తర్వాత సమస్యలు తెస్తాయి. సిస్టమ్ Node పై సాధారణ (sudo లేని) npm install -g నడిపితే మరో వైఫల్యం వస్తుంది:

npm error code EACCES
npm error syscall mkdir
npm error path /usr/lib/node_modules/@google
npm error errno -13
npm error Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/@google'

అది npm, /usr/lib లోకి రాయడానికి ప్రయత్నిస్తోంది. దానికి మీ వినియోగదారుడికి అనుమతి లేదు. పరిష్కారం sudo కాదు — npm యొక్క గ్లోబల్ ప్రిఫిక్స్‌ను మీ హోమ్ డైరెక్టరీకి సూచించడం. దానివల్ల గ్లోబల్ ఇన్‌స్టాలేషన్లు మీకు యాజమాన్యం ఉన్న చోట లాగిన్ అవుతాయి:

mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
npm install -g @google/gemini-cli
gemini --version

~/.profile కాదు, ~/.bashrc ఉపయోగించడం ఉద్దేశపూర్వకం: tmux — దీనిలో మీరు రెండు విభాగాల తర్వాత CLI ని నడుపుతారు — ఒక నాన్-లాగిన్ షెల్‌ను ప్రారంభిస్తుంది. అది ~/.bashrc ని చదువుతుంది. ~/.profile ని దాటేస్తుంది. కాబట్టి తప్పు ఫైల్‌లో PATH లైన్ ఉంటే, మీకు అవసరమైన చోటే gemini కనిపించదు. gemini --version ఒక వెర్షన్ నంబర్‌ను ప్రింట్ చేయడమే పూర్తి పరీక్ష. దానికి బదులుగా మీకు gemini: command not found వస్తే, మీ PATH ఎక్స్‌పోర్ట్ అమలు కాలేదు — వైఫల్య రకాలను చూడండి. nvm పై, ప్రిఫిక్స్ లైన్‌లను పూర్తిగా దాటండి: అది ఇప్పటికే మీ హోమ్ కింద గ్లోబల్‌లను ఇన్‌స్టాల్ చేస్తుంది.

మీరు ఇంతకు ముందు ఏదో సమయంలో sudo npm నడిపారు. ఇప్పుడు Your cache folder contains root-owned files చూస్తే, దాన్ని sudo chown -R $(id -u):$(id -g) ~/.npm తో ఒక్కసారి సరిచేయండి.

హెడ్‌లెస్ ప్రామాణీకరణ సమస్య, దానిని ఎలా అధిగమించాలి

మొదటిసారి gemini ని ఇంటరాక్టివ్‌గా నడిపితే అది మీ Google ఖాతాతో లాగిన్ అవ్వడానికి అవకాశం ఇస్తుంది. డెస్క్‌టాప్‌లో అది ఒక బ్రౌజర్ ట్యాబ్‌ను తెరుస్తుంది. హెడ్‌లెస్ VPSలో బ్రౌజర్ ఉండదు, కాబట్టి ఆ ప్రక్రియ మీరు తెరవాలని భావించే localhost URLను ప్రింట్ చేస్తుంది లేదా ఈ క్రింది విధంగా నేరుగా విఫలమవుతుంది:

Failed to open browser. Please visit the following URL to authorize:
https://accounts.google.com/o/oauth2/v2/auth?...&redirect_uri=http://localhost:PORT

ఇక్కడ ఉన్న మాయ అంటే redirect_uri=http://localhost:PORT. మీరు మీ ల్యాప్‌టాప్‌లో ఆ URLను తెరిచి ఆమోదించినా, Google దానిని http://localhost:PORTకు రీడైరెక్ట్ చేస్తుంది — అది సర్వర్‌లోని localhost, మీ ల్యాప్‌టాప్‌లో ఏ పోర్ట్ కూడా దానిని చేరలేదు. లాగిన్ ఎప్పటికీ పూర్తవ్వదు.

దీనికి రెండు సరైన మార్గాలు ఉన్నాయి.

మొదటిది API కీ, ఇది సర్వర్‌కు సరైన డిఫాల్ట్. Google AI Studio (aistudio.google.com)లో ఒక కీని సృష్టించండి మరియు దానిని ఎన్విరాన్మెంట్ వేరియబుల్‌గా CLIకి అందించండి; అది GEMINI_API_KEYను చదువుతుంది మరియు బ్రౌజర్ ప్రక్రియను పూర్తిగా దాటుకుంటుంది. ఇప్పుడు "దానిని హిస్టరీ మరియు ప్రపంచంలో అందరికీ చదవగలిగే ఫైళ్ల బయట ఉంచండి" అనే భాగం. ప్రాంప్ట్ వద్ద export GEMINI_API_KEY=AIza... టైప్ చేయవద్దు — అది ~/.bash_historyలో క్లియర్‌టెక్స్ట్‌లో నిలుస్తుంది, మరియు ఇతరులు చదవగలిగే ఫైల్‌లో దానిని ఉంచవద్దు. దానిని మోడ్-600 ఫైల్‌లో రాయండి, షెల్ ప్రారంభంలో దానిని సోర్స్ చేస్తుంది:

umask 077
printf 'export GEMINI_API_KEY=%s\n' 'AIzaSyYOUR_KEY_HERE' > ~/.gemini_env
chmod 600 ~/.gemini_env
echo '[ -f ~/.gemini_env ] && . ~/.gemini_env' >> ~/.bashrc
source ~/.bashrc

chmod 600 అంటే మీ యూజర్ మాత్రమే ఆ ఫైల్‌ను చదవగలడు. ఆ కీ ఎన్విరాన్మెంట్‌కు చేరిందని printenv GEMINI_API_KEYతో నిర్ధారించుకోండి; అది ఏమీ ప్రింట్ చేయకపోతే, CLI మళ్లీ బ్రౌజర్ ప్రక్రియకు తిరిగి వెళ్లి విఫలమవుతుంది. మీకు ఆ లేఅవుట్ నచ్చితే అది ~/.gemini/లో ఒక .env ఫైల్‌ను కూడా చదువుతుంది — అదే నియమం, కాబట్టి chmod 600 ~/.gemini/.env.

రెండవ మార్గం వ్యక్తిగత Google-ఖాతా లాగిన్‌ను (మరియు దాని ఉచిత టైర్‌ను) OAuth కాల్‌బ్యాక్‌ను మీ ల్యాప్‌టాప్‌కు టన్నెలింగ్ చేయడం ద్వారా నిలుపుకుంటుంది. ఇక్కడ ఉన్న సమస్య ఏమిటంటే, CLI యొక్క లూప్‌బ్యాక్ సర్వర్ ప్రతిసారి ఒక రాండమ్ పోర్ట్‌ను బైండ్ చేస్తుంది, కాబట్టి మీరు ముందుగా OAUTH_CALLBACK_PORT ఎన్విరాన్మెంట్ వేరియబుల్‌తో దానిని పిన్ చేయకపోతే, ఫార్వర్డ్ చేయడానికి స్థిరమైనది ఏమీ ఉండదు, ఆ తర్వాత ఖచ్చితంగా ఆ పోర్ట్‌ను ఫార్వర్డ్ చేయండి:

# from your laptop, forward the callback port into the SSH session:
ssh -L 8085:localhost:8085 user@your-server
# then, on the server, pin the callback to the same port and start the CLI:
export OAUTH_CALLBACK_PORT=8085
gemini

CLI బ్రౌజర్‌ను తెరవలేదు, కాబట్టి అది ఆథ్ URLను ప్రింట్ చేస్తుంది; దానిని మీ ల్యాప్‌టాప్ బ్రౌజర్‌లో తెరిచి, ఆమోదించండి, మరియు Google http://localhost:8085/...కు రీడైరెక్ట్ చేసినప్పుడు SSH ఫార్వర్డ్ దానిని VPSలోని లూప్‌బ్యాక్ సర్వర్‌కు చేరవేస్తుంది మరియు లాగిన్ పూర్తవుతుంది. పోర్ట్‌ను అన్‌పిన్ చేసి వదిలేస్తే అది ప్రతిసారి కొత్త రాండమ్ పోర్ట్‌పై చేరుతుంది, దానిని ముందుగా సెటప్ చేసిన ఏ ssh -L కూడా పట్టుకోలేదు. ఇది పనిచేస్తుంది, కానీ దీనికి మీరు బ్రౌజర్ వద్ద కూర్చోవలసి వస్తుంది, కాబట్టి ఇది స్క్రిప్ట్‌లకు పనికిరాదు. మీరు నడుపుతూ ఉంచే దేనికైనా, API కీని ఉపయోగించండి.

AI Studio బదులుగా Vertex AI లేదా Google Cloud ప్రాజెక్ట్ కోసం, GOOGLE_API_KEYను GOOGLE_GENAI_USE_VERTEXAI=trueతో పాటు సెట్ చేయండి, లేదా Code Assist లైసెన్స్ కోసం GOOGLE_CLOUD_PROJECT — అదే ఎన్విరాన్మెంట్-వేరియబుల్ నియమం, అదే మోడ్-600 ఫైల్.

ముడిపడిన SSH సెషన్ దాన్ని ఆపకుండా ఉండేందుకు దాన్ని tmux లోపల అమలు చేయండి

మీ SSH షెల్ నుండి నేరుగా ప్రారంభించే gemini ప్రక్రియ ఆ షెల్ యొక్క చైల్డ్. కనెక్షన్ కోల్పోయినట్లయితే — ల్యాప్‌టాప్ మూసివేత, Wi-Fi తుంటిపోవడం, ఐడిల్ టైమ్‌అవుట్ — sshd సూడో-టెర్మినల్‌ను తొలగిస్తుంది, షెల్‌కు SIGHUP వస్తుంది, దాని వలన మళ్లీ CLI కూడా ఆగిపోతుంది. పది నిమిషాల నుండి ఫైళ్లను సవరిస్తున్న పని దానితో పాటు ఆగిపోతుంది, మళ్లీ కనెక్ట్ అయ్యాక రికవర్ చేయడానికి ఏ ప్రక్రియ ఉండదు.

tmux షెల్‌ను తాను సొంతం చేసుకోవడం ద్వారా దీన్ని పరిష్కరిస్తుంది, sshd సొంతం చేసుకోదు. ఇది రిమోట్ VPS పై tmux లోపల AI కోడింగ్ ఏజెంట్‌ను అమలు చేయడం మాదిరిగానే ఉంటుంది, ఇక్కడ కూడా అదే విధంగా పనిచేస్తుంది:

sudo apt install -y tmux
tmux new -A -s gemini
# inside the session:
gemini
# detach with Ctrl-b then d — the task keeps running
# reconnect later from any machine:
tmux attach -t gemini

tmux new -A -s gemini అనేది gemini పేరుగల సెషన్ ఉంటే దానికి అటాచ్ అవుతుంది, లేకపోతే దాన్ని సృష్టిస్తుంది, కాబట్టి ప్రతి లాగిన్ తర్వాత వెంటనే అమలు చేయాల్సింది అదే ఒక్క కమాండ్. లోపల ఉన్న షెల్ మీ SSH సెషన్‌కు కాకుండా డిటాచ్ అయిన tmux సర్వర్‌కు చెందుతుంది, కాబట్టి కనెక్షన్ కోల్పోయినా CLI పనిచేస్తూనే ఉంటుంది. మళ్లీ కనెక్ట్ చేసి, అటాచ్ అవ్వండి, మీరు అదే స్క్రోల్‌బ్యాక్‌లోకి తిరిగి వస్తారు.

నాన్-ఇంటరాక్టివ్, స్క్రిప్టెడ్ అమలు కోసం, Gemini CLI కి హెడ్‌లెస్ మోడ్ ఉంది: gemini -p "summarise the failing tests in this repo" ఒక సమాధానాన్ని ప్రింట్ చేసి నిష్క్రమిస్తుంది, --output-format json మెషిన్-రీడబుల్ అవుట్‌పుట్‌ను ఇస్తుంది, దాన్ని మరెక్కడో పైప్ చేయవచ్చు. API కీతో హెడ్‌లెస్ మోడ్ అనేది సుదీర్ఘ బ్యాచ్ పనిని అమలు చేస్తున్న tmux సెషన్ లోపల లేదా cron ఎంట్రీ నుండి ట్రిగ్గర్ అయినప్పుడు సరిగ్గా మీకు కావలసింది — ఒక హెచ్చరికతో: cron పని మీ లాగిన్ ఫైళ్లలో ఏదీ లోడ్ చేయదు, కాబట్టి crontab లైన్‌కు దాని స్వంత GEMINI_API_KEY ఇవ్వండి (లేదా ఆ కమాండ్ ~/.gemini_env ను లోడ్ చేసుకునేలా చేయండి), లేదంటే CLI బ్రౌజర్ ఫ్లోకు తిరిగి వెళ్లి విఫలమవుతుంది.

ఉత్పత్తి వ్యవస్థను కూడా నడిపే సర్వర్‌లో శాండ్‌బాక్సింగ్ మరియు అనుమతులు

షెల్ యాక్సెస్ ఉన్న ఏజెంట్ అనేది ఒక షెల్‌కి సమానం. Gemini CLI ఆదేశాలను అమలు చేయగలదు. ప్రమాదకరమైన ప్రతి ఆదేశానికి ముందు ఇది డిఫాల్ట్‌గా అనుమతి అడుగుతుంది. కానీ వినియోగదారులు --yolo (ప్రతి టూల్ కాల్‌ను స్వయంచాలకంగా ఆమోదించు) ఉపయోగిస్తారు. అప్పుడు అది ఫైళ్లను తొలగించగలదు, gitకి పుష్ చేయగలదు, లేదా అది నడుస్తున్న యూజర్ యొక్క పూర్తి అధికారంతో అంతర్గత సేవలను సంప్రదించగలదు. ఉత్పత్తి వ్యవస్థను కూడా నడిపే సర్వర్‌లో, ఇది నిజమైన ప్రభావ పరిధి, ఊహాత్మకం కాదు.

మూడు నియంత్రణలు, అవి ఎంత ప్రయోజనం ఇస్తాయో ఆ క్రమంలో:

  • అంకితమైన, అధికారం లేని యూజర్‌గా దాన్ని అమలు చేయండి. root కాదు, sudo సభ్యుడు కాదు. దాని స్వంత హోమ్‌తో ఒక agent యూజర్‌ను సృష్టించండి, అక్కడ Node మరియు CLIని ఇన్‌స్టాల్ చేయండి. అప్పుడు తప్పుగా చదివిన ఆదేశం ఆ ఖాతాకే పరిమితమవుతుంది. ఇది అత్యధిక విలువైన నిర్ణయం.
  • ఉత్పత్తి ఆధారాలను సర్వర్‌లో ఉంచవద్దు. prod ~/.aws/credentials ఉండదు, ఉత్పత్తి నుండి కాపీ చేసిన .env ఉండదు, ముఖ్యమైన దేనికైనా రాయడానికి యాక్సెస్ ఉన్న డేటాబేస్ పాస్‌వర్డ్ ఉండదు. దానికి స్టేజింగ్ లేదా చదవడానికి మాత్రమే అనుమతి ఉన్న ఆధారాన్ని ఇవ్వండి.
  • అంతర్నిర్మిత శాండ్‌బాక్స్‌ను ఉపయోగించండి. Docker లేదా Podman ఇన్‌స్టాల్ అయి ఉంటే, gemini --sandbox (లేదా GEMINI_SANDBOX=docker) ఏజెంట్ యొక్క టూల్ కాల్‌లను హోస్ట్ ఫైల్‌సిస్టమ్ మరియు నెట్‌వర్క్ నుండి వేరు చేయబడిన కంటైనర్ లోపల అమలు చేస్తుంది. ఇది అధికారం లేని యూజర్‌కు ప్రత్యామ్నాయం కాదు, కానీ అదే VPS నిజమైన పనులు చేస్తున్నప్పుడు ఇది బలమైన రెండవ పొర.

మీరు Gemini CLIని ఇతర స్వయం-హోస్ట్ చేసిన సాధనాల పక్కన అమలు చేస్తుంటే — ఉదాహరణకు, ఏజెంట్‌కు సాధనాలను అందించే MCP సర్వర్ అదే VPSలో ఉంటే — ప్రతి చేర్చబడిన సామర్థ్యాన్ని ఏజెంట్ చేరుకోగలిగే మరింత ఉపరితలంగా పరిగణించండి, మరియు దానికి అందించే టోకెన్‌లను సరిగ్గా ఒకే పనికి పరిమితం చేయండి.

కోటా, ఖర్చు, మరియు మీరు ఎంచుకున్న ప్రామాణీకరణ మార్గం

ప్రామాణీకరణ మార్గం మీ బిల్లింగ్‌ను నిర్ణయిస్తుంది. వ్యక్తిగత Google ఖాతా (OAuth మార్గం) ఉచిత Gemini Code Assist స్థాయిని ఉపయోగిస్తుంది. ఇది నిమిషానికి మరియు రోజుకు వాస్తవ పరిమితులను కలిగి ఉంటుంది. మీరు ఆ పరిమితులను దాటితే, విండో రీసెట్ అయ్యే వరకు అభ్యర్థనలు రేట్-లిమిట్ ఎర్రర్‌ను అందిస్తాయి. AI Studio నుండి వచ్చిన API key ప్రాజెక్ట్‌ను బట్టి ఉచిత-స్థాయి లేదా బిల్లింగ్‌తో కూడుకున్నది అవుతుంది. బిల్డ్ చేయబడిన key పరిమితులను పెంచుతుంది మరియు టోకెన్‌కు ఛార్జ్ చేస్తుంది. Vertex మరియు Cloud-project ప్రామాణీకరణ Google Cloud ద్వారా బిల్ చేస్తాయి.

రెండు ఆచరణాత్మక గమనికలు. లూప్‌లో అటెండెడ్ కాని ఏజెంట్ కోటాను వేగంగా ఖర్చు చేస్తుంది. కాబట్టి మీరు దాన్ని cron job‌కు అప్పగించడానికి ముందు మొదటి కొన్ని సార్లు జాగ్రత్తగా పరిశీలించండి. మరియు సర్వర్-సైడ్ మోడల్‌ను ఎంచుకునే మీ కారణం గోప్యత లేదా అన్‌మీటర్డ్ ఇన్‌ఫరెన్స్ అయితే, అది Google యొక్క హోస్ట్ చేసిన మోడల్స్ కాదు. అది భిన్నమైన సాధనం — VPSలో Ollamaతో ఓపెన్ LLMను స్వయం-హోస్టింగ్ చేయడం వెయిట్స్ మరియు ప్రాంప్ట్‌లను మీ స్వంత సర్వర్‌లోనే ఉంచుతుంది, అయితే Gemini కంటే చాలా చిన్న మోడల్‌ను నడపడం దీని ఖర్చు.

నవీకరణను కొనసాగించడం

Gemini CLI తరచుగా విడుదల అవుతుంది. మీరు దాన్ని user-owned prefix లో ఇన్‌స్టాల్ చేశారు కాబట్టి, నవీకరణలకు sudo అవసరం లేదు:

npm install -g @google/gemini-cli@latest
gemini --version

విడుదల ఛానెళ్లు ఉన్నాయి: @latest స్థిరమైనది, @preview వార్షిక ప్రివ్యూ, @nightly అత్యాధునిక వెర్షన్ — మీరు ఆధారపడే ఏ వెర్షన్‌లోనైనా @latest ని అంటించండి. nvm లో, గ్లోబల్ ప్యాకేజీలు ప్రస్తుత Node వెర్షన్ కింద ఉంటాయి. కాబట్టి Node మార్చడానికి nvm use తర్వాత మీకు CLI ని తిరిగి ఇన్‌స్టాల్ చేయాల్సి రావచ్చు. ప్రతి ప్యాచ్ వెంట పరుగెత్తకుండా విడుదల గమనికలను చదవండి.

వైఫల్య రకాలు, సరైన స్ట్రింగ్‌లతో

npm WARN EBADENGINE Unsupported engine ... required: { node: '>=20' }, తర్వాత రన్‌టైమ్ వద్ద CLI క్రాష్ అవుతోంది. Node చాలా పాతది — డిస్ట్రో వెర్షన్ 18.19.1, అది కూడా జీవితచక్రం ముగిసింది. NodeSource లేదా nvm నుండి Node 20+ ని ఇన్‌స్టాల్ చేయండి, node --version తో నిర్ధారించుకోండి, మరియు మీకు అనేక Node లు ఇన్‌స్టాల్ ఉంటే, which node కొత్తదానిని సూచిస్తుంది కానీ /usr/bin/node ను కాదని తనిఖీ చేయండి.

npm error code EACCES / permission denied, mkdir '/usr/lib/node_modules/...'. root యాజమాన్యం ఉన్న ప్రిఫిక్స్‌లోకి గ్లోబల్ ఇన్‌స్టాల్. దీనికి sudo వాడవద్దు — npm config set prefix ~/.npm-global ను సెట్ చేయండి, ~/.npm-global/bin ను PATH పై ఉంచండి, మరియు మీ సాధారణ యూజర్‌గా మళ్లీ ఇన్‌స్టాల్ చేయండి. ఒకవేళ ముంపు sudo npm root యాజమాన్యంలోని క్యాష్ ఫైళ్లను (Your cache folder contains root-owned files) వదిలిపెట్టి ఉంటే, sudo chown -R $(id -u):$(id -g) ~/.npm నడపండి.

Failed to open browser, హాంగ్ అయిన లాగిన్, లేదా మీరు చేరుకోలేని redirect_uri=http://localhost:PORT. OAuth ఫ్లోకు సర్వర్‌లో లేని బ్రౌజర్ కావాలి, మరియు దాని localhost కాల్‌బ్యాక్ సర్వర్‌ను సూచిస్తుంది, మీ ల్యాప్‌టాప్‌ను కాదు. API-key మార్గాన్ని (GEMINI_API_KEY) వాడండి, లేదా OAUTH_CALLBACK_PORT ను పిన్ చేయండి, దాన్ని SSH పై ssh -L తో ఫార్వర్డ్ చేయండి, మరియు URL ను లోకల్‌గా తెరవండి.

SSH డ్రాప్ అయినప్పుడు ప్రాసెస్ మాయమైంది. మీరు gemini ను SSH షెల్ నుండి నేరుగా నడిపారు, కాబట్టి అది ఆ షెల్ యొక్క చైల్డ్ అయింది మరియు డిస్‌కనెక్ట్ పై pty తో పాటు చనిపోయింది. రికవర్ చేయడానికి ఏమీ లేదు. ప్రతి సెషన్‌ను tmux new -A -s gemini తో ప్రారంభించండి మరియు CLI ను దాని లోపల నడపండి.

కీ సెట్ చేసినా ఆథ్ ఇంకా విఫలమవుతోంది — CLI దాని ఆథ్ పిక్కర్‌కు తిరిగి వెళ్తుంది, లేదా ఒక అభ్యర్థన HTTP 400 తో API key not valid అందిస్తుంది. కీ CLI చూసే ఎన్విరాన్‌మెంట్‌లో లేదు. printenv GEMINI_API_KEY తో నిర్ధారించుకోండి; అది ఖాళీగా ఉంటే, మీ ~/.gemini_env ఎప్పుడూ సోర్స్ కాలేదు — ఆ లైన్ ~/.bashrc లో ఉందో లేదో తనిఖీ చేయండి, దాన్ని ఇంటరాక్టివ్ షెల్‌లు (tmux సహా) చదువుతాయి కానీ cron మరియు ఇతర నాన్-ఇంటరాక్టివ్ షెల్‌లు చదవవు. కీ విలువ లోపల ఒక అనవసర స్పేస్ లేదా కోట్ కూడా API key not valid ను ఉత్పత్తి చేస్తుంది.

429 / RESOURCE_EXHAUSTED / రేట్-లిమిట్ సందేశం. మీ ఆథ్ వాడే ఏ టైర్‌కైనా కోటాను మీరు తాకారు. విండో రీసెట్ అయ్యే వరకు ఆగండి, ఏజెంట్‌ను మందగించండి, లేదా బిల్డ్ చేసిన API కీకి మారండి. రీట్రై లూప్‌లో చిక్కుకున్న ఏజెంట్ దీన్ని కొనసాగిస్తూనే ఉంటుంది — దాన్ని ఆపండి మరియు అది ఏమి చేస్తోందో తనిఖీ చేయండి.

FAQ

హెడ్‌లెస్ సర్వర్‌లో Gemini CLI ని నేను ఎలా ప్రామాణీకరిస్తాను?

బ్రౌజర్ లాగిన్ కాదు, API కీ ఉపయోగించండి. Google AI Studio లో కీ సృష్టించండి. దాన్ని మీ షెల్ సోర్స్ చేసే mode-600 ఫైల్ (export GEMINI_API_KEY=...) లో ఉంచండి. అప్పుడు CLI OAuth బ్రౌజర్ ప్రవాహాన్ని పూర్తిగా దాటుతుంది. మీకు ప్రత్యేకంగా వ్యక్తిగత-ఖాతా ఉచిత టైర్ కావాలి అంటే, OAUTH_CALLBACK_PORT=8085 తో లూప్‌బ్యాక్ పోర్ట్ ని పిన్ చేయండి. ssh -L 8085:localhost:8085 user@server తో దాన్ని మీ ల్యాప్‌టాప్‌కు ఫార్వర్డ్ చేయండి. ముద్రిత URL ని లోకల్‌గా తెరవండి. కానీ దానికి బ్రౌజర్ వద్ద మీరు ఉండాలి, కాబట్టి అది స్క్రిప్ట్‌లకు పనికిరాదు.

npm గ్లోబల్ ఇన్‌స్టాలేషన్‌కు sudo ఎందుకు అవసరం, మరియు దాన్ని నేను ఎలా నివారిస్తాను?

ఎందుకంటే npm యొక్క డిఫాల్ట్ గ్లోబల్ ప్రిఫిక్స్ /usr/lib/node_modules, దానికి మీ యూజర్ రాయలేరు. కాబట్టి సాధారణ npm install -g విఫలమై EACCES ఇస్తుంది. సరైన పరిష్కారం కానిది sudo npm -g, ఇది root-యాజమాన్యంలోని ఫైళ్లను వదిలిపెడుతుంది, అవి తర్వాతి ఇన్‌స్టాలేషన్‌లను చెడగొడతాయి. సరైన పరిష్కారం ప్రిఫిక్స్ ని మీ హోమ్ (npm config set prefix ~/.npm-global) వైపు చూపించడం, మరియు దాని bin ని PATH కు జోడించడం. లేదా nvm ఉపయోగించండి, అది గ్లోబల్ ప్యాకేజీలను మీ హోమ్ కింద స్వయంచాలకంగా ఇన్‌స్టాల్ చేస్తుంది.

నేను డిస్‌కనెక్ట్ చేసిన తర్వాత Gemini CLI నడుస్తూనే ఉండేలా ఎలా చేసుకోవాలి?

దాన్ని tmux లోపల నడపండి. మీ SSH షెల్ నుండి ప్రారంభించిన ప్రాసెస్, కనెక్షన్ పడిపోయినప్పుడు మరణిస్తుంది, ఎందుకంటే అది ఆ షెల్ యొక్క చైల్డ్. tmux అనేది డిటాచ్‌డ్ సర్వర్ కింద షెల్ నడుపుతుంది, అది డిస్‌కనెక్ట్‌ను తట్టుకుంటుంది. tmux new -A -s gemini ఉపయోగించండి, లోపల gemini నడపండి, Ctrl-b d తో డిటాచ్ చేయండి, మరియు తర్వాత tmux attach -t gemini తో రీఅటాచ్ చేయండి.

ప్రొడక్షన్ బాక్స్‌లో Gemini CLI నడపడం సురక్షితమేనా?

జాగ్రత్తతో మాత్రమే, ఎందుకంటే షెల్ యాక్సెస్ ఉన్న ఏజెంట్, దాని యూజర్‌గా నడుస్తున్నప్పుడు ఆ యూజర్ చేయగలిగే ప్రతిదీ చేయగలదు. దాన్ని sudo లేని ప్రత్యేక అన్‌ప్రివిలేజ్డ్ యూజర్‌గా నడపండి. ప్రొడక్షన్ క్రెడెన్షియల్స్ ఆ మెషీన్‌లో ఉంచకండి. --yolo ఆటో-అప్రూవల్ ని నివారించండి. టూల్ కాల్‌లను హోస్ట్ నుండి వేరు చేయడానికి --sandbox (Docker లేదా Podman) ఉపయోగించండి. అది నడుస్తున్న ఖాతా, మీరు సెట్ చేసే ఏ ఒక్క ఫ్లాగ్ కంటే ఎక్కువ ముఖ్యం.

Gemini CLI కోసం నేను ఏదైనా ఫైర్‌వాల్ పోర్ట్‌లను తెరవాలా?

లేదు. అది Google API లకు అవుట్‌బౌండ్ HTTPS కాల్‌లు చేసే క్లయింట్, కాబట్టి దానికి అవుట్‌బౌండ్ పోర్ట్ 443 కావాలి కానీ ఇన్‌బౌండ్ పోర్ట్‌లు అవసరం లేదు. మీరు OAuth టన్నెల్ ఉపయోగిస్తే, పిన్ చేసిన కాల్‌బ్యాక్ పోర్ట్ (ఉదాహరణకు 8085) localhost లో ఉంటుంది, తెరిచిన ఇన్‌బౌండ్ పోర్ట్ ద్వారా కాకుండా మీ SSH ఫార్వర్డ్ ద్వారా చేరుకుంటుంది. ఇన్‌బౌండ్ ని లాక్‌డౌన్‌గా ఉంచండి.

#gemini-cli#node#tmux#headless#ai#vps