SSD Nodes Learn 🎉 VPS $4.99/মাস থেকে
নির্দেশিকা Matt Connorদ্বারা Matt Connor

কিভাবে নিজের VPS-এ Iva Telegram AI সেটআপ করবেন

কোনো ওপেন পোর্ট বা ডোমেইন ছাড়াই নিজের VPS-এ Iva Telegram AI অ্যাসিস্ট্যান্ট রান করার নিয়ম জানুন। এই গাইডে systemd সার্ভিস ও Obsidian ভল্ট ব্যাকআপের বিস্তারিত পদ্ধতি দেওয়া হয়েছে।

আপনি যা তৈরি করছেন

Iva হলো একটি self-hosted Telegram AI assistant। এটি এমন হাতেগোনা কিছু অ্যাপের একটি যা কোনো inbound port খোলা বা কোনো domain point করা ছাড়াই deploy করা যায়। এতে কোনো certificate-এরও প্রয়োজন নেই, কারণ সার্ভারের কোনো কিছুই public-এর জন্য listen করে না। এই service-টি Telegram-এর সাথে outbound connection তৈরি করে, সংযোগটি সচল রাখে এবং আপনার পাঠানো বার্তার উত্তর পড়ে। বাকি সবকিছুই এই একটি outbound connection-এর মাধ্যমে সম্পন্ন হয়।

Iva-এর লাইসেন্স MIT এবং এটি Node-এ লেখা। এর মেমোরি হলো plain markdown ফাইলগুলোর একটি ফোল্ডার, যা Obsidian সরাসরি খুলতে পারে। ফলে অ্যাপটি আপনার সম্পর্কে যে নোটগুলো রাখে, সেগুলো অ্যাপ ছাড়াও পড়া যায়। এই নির্দেশিকাটি 6 আগস্ট 2026-এ প্রকাশিত release v0.3.13-কে অনুসরণ করে।

অধিকাংশ self-hosted সফটওয়্যার একটি DNS (domain name system) রেকর্ড এবং Certbot দিয়ে ইস্যু করা একটি Let's Encrypt certificate দিয়ে শুরু হয়। Iva এই স্তরটিকে সম্পূর্ণ এড়িয়ে চলে। এই কারণেই একটি firewall-এর পেছনে থাকা ছোট একটি VPS, যেখানে শুধুমাত্র SSH-এর অনুমতি আছে, তা-ই একটি পূর্ণাঙ্গ deployment হিসেবে যথেষ্ট।

কেন Iva-এর কোনো open port-এর প্রয়োজন নেই

iva-telegram-poll.service হলো একটি long polling bridge। এটি Telegram-এর getUpdates API-কে কল করে উত্তরের জন্য অপেক্ষা করে, তাই প্রতিটি সংযোগ আপনার সার্ভার থেকেই শুরু হয়। Telegram কখনোই উল্টো সংযোগ করে না, যার মানে হলো এখানে কনফিগার করার মতো কোনো reverse proxy নেই এবং certificate renewal ভুলে যাওয়ার কোনো ভয়ও নেই।

এজেন্টটি নিজে শুধুমাত্র 127.0.0.1 port 8723-এ লিসেন করে। প্রজেক্টের ডকুমেন্টেশনে এ বিষয়ে স্পষ্ট নির্দেশনা রয়েছে: port 8723-কে ইন্টারনেটে উন্মুক্ত করবেন না এবং এর সামনে কোনো reverse proxy বসালে সেটিকে অবশ্যই bearer token-এর প্রয়োজনীয়তা বজায় রাখতে হবে। ইনস্টলেশনের পর bind address পরীক্ষা করুন।

sudo ss -tlnp | grep 8723

ঠিকানাটি অবশ্যই 127.0.0.1:8723 হতে হবে। 0.0.0.0:8723-এর মতো কোনো wildcard address-এর অর্থ হলো এজেন্টের HTTP রুটগুলো ইন্টারনেট থেকে অ্যাক্সেস করা সম্ভব, এবং কোনো ব্যক্তিগত তথ্য বটের কাছে পাঠানোর আগে আপনার এটি ঠিক করা উচিত।

তাই firewall বন্ধ রাখুন। firewall সক্রিয় করার আগে SSH-এর অনুমতি দিন, কারণ SSH রুল ছাড়া ufw enable সক্রিয় করলে আপনার বর্তমান সেশনটি বন্ধ হয়ে যাবে।

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

ওয়ান-লাইন ইনস্টলার আসলে যা করে

প্রজেক্টের মূল পাতায় একটি কমান্ড দেওয়া থাকে যা GitHub থেকে একটি স্ক্রিপ্ট পাইপ করে সরাসরি bash-এ রান করে। স্ক্রিপ্টটি রান করার আগে অবশ্যই পড়ে দেখুন, কারণ এটি কেবল একটি প্রোগ্রাম ইনস্টল করার চেয়ে অনেক বেশি কাজ করে।

curl -fsSL https://raw.githubusercontent.com/smixs/iva/main/install.sh -o iva-install.sh
less iva-install.sh
  • এটি শনাক্তকৃত প্যাকেজ ম্যানেজারের মাধ্যমে সিস্টেম প্যাকেজ ইনস্টল করে: git, gh, python3, ffmpeg, pandoc এবং poppler-utils
  • সার্ভারে 1.5 GB-এর কম RAM থাকলে এবং কোনো swap না থাকলে এটি /swapfile-এ 2 GB-এর একটি swapfile তৈরি করে, কারণ এটি ছাড়া বিল্ড প্রক্রিয়াটি বন্ধ হয়ে যায়।
  • এটি nvm ইনস্টল করে এবং এরপর Node 24 ইনস্টল করে, যা Iva চালানোর জন্য সর্বনিম্ন প্রয়োজনীয় সংস্করণ।
  • এটি uv (Python প্যাকেজ ম্যানেজার) ~/.local/bin-এ ইনস্টল করে।
  • এটি রিপোজিটরিটিকে ~/iva-এ ক্লোন করে এবং npm ci রান করে।
  • এটি দুটি গ্লোবাল npm প্যাকেজ ইনস্টল করে: agent-browser (যা পরবর্তীতে Chromium ডাউনলোড করে) এবং @googleworkspace/cli
  • এটি সেটআপ উইজার্ড রান করে, প্রজেক্টটি বিল্ড করে এবং ভল্ট (vault) তৈরি করে।
  • এটি iva কমান্ডটিকে ~/.local/bin-এ লেখে এবং systemd ইউজার ইউনিটগুলো ইনস্টল করে।

একটি মাত্র কমান্ডের জন্য এটি অনেক বেশি সফটওয়্যার। এটি README-এর সেই নির্দেশনার কারণও ব্যাখ্যা করে যেখানে সাধারণ ইউজার হিসেবে ইনস্টল করতে বলা হয়েছে, root হিসেবে নয়: এজেন্টের শেল টুলটি পরবর্তীতে সেই প্রিভিলেজ বা অধিকার নিয়েই চলে যা ইনস্টলারের ছিল। স্ক্রিপ্টটি শুধুমাত্র প্যাকেজ ইনস্টল এবং swapfile তৈরির সময় sudo কল করে, একটি হেল্পারের মাধ্যমে যা আপনি ইতিমধ্যে root হিসেবে থাকলে সরাসরি কমান্ডগুলো রান করে।

ইনস্টল করার আগে একটি ডেডিকেটেড ইউজার তৈরি করুন

Iva-এর জন্য আলাদা একটি অ্যাকাউন্ট তৈরি করুন। এজেন্টটি Node-এর child_process ব্যবহার করে হোস্ট মেশিনে শেল কমান্ড চালায়, যার কোনো কন্টেইনার বা স্যান্ডবক্স নেই। তাই যে অ্যাকাউন্টের অধীনে এটি চলে, সেটিই আপনার নিরাপত্তার সীমানা।

sudo adduser --disabled-password --gecos "" iva
sudo usermod -aG sudo iva
sudo install -d -m 700 -o iva -g iva /home/iva/.ssh
sudo cp ~/.ssh/authorized_keys /home/iva/.ssh/authorized_keys
sudo chown iva:iva /home/iva/.ssh/authorized_keys
sudo chmod 600 /home/iva/.ssh/authorized_keys
sudo loginctl enable-linger iva

enable-linger গুরুত্বপূর্ণ, কারণ Iva সিস্টেমের user ইউনিট হিসেবে চলে। linger সক্রিয় না থাকলে, ব্যবহারকারীর শেষ সেশন শেষ হওয়ার সাথে সাথেই systemd সেই ইউজারের সব সার্ভিস বন্ধ করে দেয়। ফলে SSH সেশন বন্ধ করলে অ্যাসিস্ট্যান্টটিও বন্ধ হয়ে যাবে। আপনি নিজে systemd-এর অধীনে যে সার্ভিস এবং টাইমার তৈরি করবেন, সেগুলোর ক্ষেত্রেও একই নিয়ম প্রযোজ্য।

ইনস্টলার যখন প্যাকেজ যোগ করে, কেবল তখনই এই অ্যাকাউন্টের sudo প্রয়োজন হয়। ইনস্টলেশন শেষ হলে এই সুবিধাটি সরিয়ে ফেলুন।

sudo deluser iva sudo

সরাসরি SSH-এর মাধ্যমে সেই ইউজার হিসেবে লগইন করুন। sudo -iu iva ব্যবহার করে যে শেল আপনি পাবেন, তাতে DBUS_SESSION_BUS_ADDRESS বা XDG_RUNTIME_DIR কোনোটিই সেট করা থাকে না। ফলে প্রতিটি systemctl --user কমান্ড Failed to connect to bus এর কারণে ব্যর্থ হবে। এই সীমানা নির্ধারণ করা ঠিক least privilege ইউজারদের অধীনে সার্ভিস চালানোর মতোই একটি কাজ।

bash-এ পাইপ না করে একটি নির্দিষ্ট রিলিজ ইনস্টল করা

ইনস্টলারটির একটি কার্যকর বৈশিষ্ট্য রয়েছে। কোনো কিছু ক্লোন করার আগে এটি পরীক্ষা করে যে, স্ক্রিপ্টটি যে ডিরেক্টরিতে আছে সেখানে package.json নামে কোনো ডিরেক্টরি আছে কি না, যার ভেতর "eve" ফাইলটি রয়েছে। যদি থাকে, তবে এটি সেই চেকআউটটি বিল্ড করে এবং ক্লোন করার ধাপটি এড়িয়ে যায়। ফলে আপনি নিজেই সংস্করণটি বেছে নিতে পারেন।

git clone --branch v0.3.13 https://github.com/smixs/iva.git ~/iva
cd ~/iva
git log -1 --oneline
bash install.sh

এখন আপনি জানেন কোন কোডটি চলছে। স্ক্রিপ্টটি যখন main ক্লোন করে, তখন সেটি ঠিক কোন অবস্থায় আছে তা আপনি জানেন না। Iva 4 থেকে 6 আগস্ট 2026-এর মধ্যে পাঁচটি রিলিজ প্রকাশ করেছে, তাই আজ সকালে main এবং বিকেলে main একই প্রোগ্রাম নয়।

একটি ট্যাগ চেকআউট git-কে detached HEAD অবস্থায় রাখে। এটি সঠিকভাবে কাজ করে, তবে এর সীমাবদ্ধতা বুঝুন: iva version কমান্ডটি প্যাকেজ সংস্করণ এবং git commit প্রদর্শন করে, যাতে আপনি সবসময় বুঝতে পারেন আপনি কোথায় আছেন। iva update চেকআউটটিকে আপডেট ব্রাঞ্চের দিকে এগিয়ে নিয়ে যায়, তাই এই পিনটি একটি পরিচিত শুরুর বিন্দু, স্থায়ী কোনো ফ্রিজ নয়।

পরবর্তী কোনো রিলিজে যাওয়ার জন্য, ট্যাগগুলোর তালিকা দেখুন, IVA_TAG-কে আপনার বেছে নেওয়া ট্যাগ অনুযায়ী সেট করুন এবং তারপর চেকআউটের ভেতর থেকে পুনরায় ইনস্টলারটি চালান।

cd ~/iva
git fetch --tags
git tag --list 'v*' | sort -V | tail -5
IVA_TAG=v0.3.13
git checkout "$IVA_TAG"
bash install.sh --skip-setup
iva restart

--skip-setup উইজার্ডটিকে এমন একটি .env-এর ওপর পুনরায় চলতে বাধা দেয় যা ইতিমধ্যে কাজ করছে।

পাঁচটি উইজার্ড ধাপ এবং প্রয়োজনীয় কি (keys)

  1. মডেল প্রোভাইডার এবং মডেল। MODEL_PROVIDER-এ opencode, ollama, openrouter অথবা codex ব্যবহার করা যায়। উইজার্ডটি লাইভ কি যাচাই করে এবং আপনার প্ল্যানে থাকা মডেলগুলোর তালিকা দেখায়।
  2. ভয়েস এবং সার্চ। ভয়েস নোট ট্রান্সক্রাইব করার জন্য একটি Deepgram কি প্রয়োজন। ওয়েব সার্চ কি (Tavily, Exa, Parallel অথবা Brave) ঐচ্ছিক।
  3. @BotFather থেকে পাওয়া Telegram বট টোকেন, যা getMe এন্ডপয়েন্টের মাধ্যমে যাচাই করা হয়।
  4. অ্যাক্সেস কন্ট্রোল। আপনি বটকে একটি মেসেজ পাঠাবেন এবং উইজার্ড getUpdates থেকে আপনার নিউমেরিক ইউজার আইডি পড়ে নেবে।
  5. সিস্টেম সেটিংস। IANA টাইমজোন, ভল্ট ডিরেক্টরি এবং লোকাল পোর্ট, যা ডিফল্টভাবে 8723।

এর মধ্যে দুটি বিষয় হলো ডিপেন্ডেন্সি, যা "one command" ফ্রেমওয়ার্কের আড়ালে থাকে। Iva নিজে কোনো মডেল সরবরাহ করে না, তাই কোনো উত্তর দেওয়ার আগে একটি পেইড মডেল প্ল্যান বা API কি প্রয়োজন। এটি নিজে অডিও ট্রান্সক্রাইবও করে না, তাই ভয়েস নোটের জন্য আলাদা সার্ভিস প্রয়োজন। Deepgram-এর nova-3 মডেল এবং DEEPGRAM_LANGUAGE=multi ভাষা শনাক্ত করতে পারে এবং নতুন Deepgram অ্যাকাউন্টে যে স্টার্টার ক্রেডিট পাওয়া যায় তা ব্যক্তিগত ব্যবহারের জন্য কয়েক মাস যথেষ্ট। শুধুমাত্র টেক্সট ব্যবহারের জন্য মডেল কি-ই যথেষ্ট। শুধুমাত্র ভয়েসের ক্ষেত্রেই Deepgram প্রয়োজন।

উইজার্ড কী লিখেছে তা পরীক্ষা করুন।

grep -E '^(MODEL_PROVIDER|TELEGRAM_ALLOWED_USER_IDS|ASSISTANT_VAULT_DIR|IVA_PORT)=' ~/iva/.env
ls -l ~/iva/.env

ls কমান্ডটি চালালে -rw------- এবং 0600 মোড দেখানো উচিত, কারণ এই ফাইলে আপনার দেওয়া সমস্ত কি সংরক্ষিত থাকে। TELEGRAM_ALLOWED_USER_IDS-এ অবশ্যই আপনার নিউমেরিক আইডি থাকতে হবে। অ্যালাউ-লিস্টটি ডিফল্টভাবে বন্ধ থাকে, তাই খালি ভ্যালু থাকলে Iva কারো প্রশ্নের উত্তর দেবে না।

প্রসেস শুরুর সময় মডেলটি একবার পড়া হয়। MODEL_PROVIDER এডিট করলে বা .env-এ মডেলের নাম পরিবর্তন করলে তা কার্যকর হবে না যতক্ষণ না আপনি iva restart চালান। openrouter-এর ক্ষেত্রে মডেলের নাম অবশ্যই ভেন্ডর স্লাগ হতে হবে, যেমন anthropic/claude-sonnet-4.5, শুধুমাত্র নাম দিলে হবে না। codex-এ কোনো API কি লাগে না: iva login সরাসরি আপনার বিদ্যমান ChatGPT সাবস্ক্রিপশনে সাইন-ইন করে।

প্রতি মাসে Iva চালানোর খরচ কত

ChartMonthly cost of a self-hosted Iva, published list prices, August 2026
The data behind this chart
[
  {
    "plan": "Small VPS, always on",
    "usd_per_month": 5
  },
  {
    "plan": "OpenCode Go model plan",
    "usd_per_month": 5
  },
  {
    "plan": "Ollama Cloud model plan",
    "usd_per_month": 20
  },
  {
    "plan": "Deepgram voice, starter credits",
    "usd_per_month": 0
  },
  {
    "plan": "Tavily web search, free tier",
    "usd_per_month": 0
  },
  {
    "plan": "Cheapest complete setup",
    "usd_per_month": 10
  }
]

এগুলো 2026 সালের আগস্ট মাসের প্রকাশিত তালিকাভুক্ত মূল্য, কোনো পরিমাপ নয়। একটি ছোট VPS-এর খরচ 5 মার্কিন ডলার এবং এর সাথে OpenCode Go প্ল্যানের খরচ 5 ডলার, যা সবচেয়ে সাশ্রয়ী সম্পূর্ণ সেটআপ; এর মাসিক খরচ প্রায় 10 ডলার। Ollama Cloud হলো অন্য একটি ফ্ল্যাট রেট অপশন, যার খরচ 20 ডলার; এর ফ্রন্টিয়ার মডেলগুলোর বিল প্ল্যানের অতিরিক্ত ব্যবহার হিসেবে যোগ হয়। Deepgram-এর স্টার্টার ক্রেডিট থাকা পর্যন্ত ভয়েস ব্যবহারের খরচ 0 ডলার।

OpenRouter-এর ক্ষেত্রে এখানে কোনো নির্দিষ্ট খরচ উল্লেখ করা হয়নি কারণ এটি 'পে অ্যাজ ইউ গো' (pay as you go) মডেলে চলে, তাই আপনার বিল আপনার ব্যবহারের ওপর নির্ভর করবে। এই অপশনটির ক্ষেত্রে সতর্ক থাকা প্রয়োজন: যে অ্যাসিস্ট্যান্ট প্রতিটি টার্নে 131072 টোকেন কনটেক্সট উইন্ডো ব্যবহার করে, তার খরচ খুব দ্রুত ফ্ল্যাট প্ল্যানের চেয়ে বেড়ে যেতে পারে। কনটেক্সট উইন্ডো ভেরিয়েবলটিকে মডেলের প্রকৃত সাইজ অনুযায়ী সেট করুন, কারণ অতিরঞ্জিত মান শুধুমাত্র টোকেন অপচয় করে।

দুটি সার্ভিস এবং দুটি টাইমার

  • iva.service এজেন্টটিকে সচল রাখে।
  • iva-telegram-poll.service লং পোলিং ব্রিজটি চালায় যা Telegram-এর সাথে যোগাযোগ করে।
  • iva-memory-doctor.timer প্রতিদিন 05:00 টায় চালু হয় এবং ভল্টের ওপর রাতের রক্ষণাবেক্ষণ কাজ সম্পন্ন করে।
  • iva-update-check.timer প্রতিদিন 10:00 টায় চালু হয় এবং নতুন কোনো রিলিজ আছে কি না তা পরীক্ষা করে।
  • iva-telegram-userbot.service শুধুমাত্র তখনই থাকে যদি আপনি ঐচ্ছিক Telethon প্রক্সি সেটআপ করে থাকেন।
iva status
systemctl --user status iva.service iva-telegram-poll.service
systemctl --user list-timers
iva logs poll

iva status কমান্ডটি উভয় সার্ভিস এবং উভয় ওয়াচডগ টাইমারের অবস্থা রিপোর্ট করে। systemctl --user list-timers কমান্ডটি প্রতিটি টাইমারের পরবর্তী রান টাইম প্রদর্শন করে, যার মাধ্যমে আপনি নিশ্চিত হতে পারেন যে মেমোরি ডক্টর আজ রাতে কার্যকর হবে। উভয় সার্ভিসের অবস্থাই active (running) থাকা উচিত। যদি কোনো সার্ভিস বারবার রিস্টার্ট হতে থাকে, তবে journalctl --user -u iva.service -n 100 কমান্ডটি এর কারণ জানিয়ে দেবে।

ডিবাগ করার সময় এই বিভাজনটি গুরুত্বপূর্ণ। ব্রিজটি সচল এবং পোলিং অবস্থায় থাকতে পারে যখন এজেন্টটি বন্ধ থাকে; সেক্ষেত্রে Telegram আপনার মেসেজ গ্রহণ করবে কিন্তু কোনো উত্তর পাওয়া যাবে না। iva logs poll কমান্ডটি ব্রিজের লগ অনুসরণ করে এবং iva logs কমান্ডটি এজেন্টের লগ অনুসরণ করে, তাই এই দুটি লগ দেখে আপনি বুঝতে পারবেন কোন অংশটি কাজ করছে না।

Obsidian vault যেখানে থাকে এবং সেটির ব্যাকআপ নেওয়ার নিয়ম

ASSISTANT_VAULT_DIR ডিফল্টভাবে ইনস্টল ডিরেক্টরির ভেতরে vault-এ থাকে, তাই মেমোরি ~/iva/vault-এ জমা হয়। এটি কোড থেকে আলাদা একটি নিজস্ব git repository, যার ফলে আপনার নোটগুলোতে কোনো প্রভাব না ফেলেই আপনি Iva আপডেট করতে পারেন।

  • vault/CORE.md-এ স্থায়ী তথ্য এবং নিয়মিত পছন্দগুলো জমা থাকে, যার সর্বোচ্চ সীমা 1200 ক্যারেক্টার এবং এটি প্রতিটি সিস্টেম প্রম্পটের সাথে যুক্ত থাকে।
  • vault/daily/YYYY-MM-DD.md হলো দিনের ট্রান্সক্রিপ্ট, যা শুধুমাত্র নতুন তথ্য যোগ করার (append only) জন্য ব্যবহৃত হয়।
  • vault/cards/-এ কন্টাক্ট, প্রজেক্ট, সিদ্ধান্ত, আইডিয়া এবং নোটের জন্য টাইপ করা কার্ডগুলো থাকে।
  • vault/summaries/daily/, weekly/, monthly/ এবং yearly/-এ রোলআপগুলো জমা থাকে।
  • vault/attachments/-এ তারিখ অনুযায়ী ফাইলগুলো থাকে এবং vault/.graph/-এ লিংক গ্রাফ থাকে।
  • vault/schema.json কার্ডের ধরন এবং সেগুলোর মেয়াদ শেষ হওয়ার নিয়মগুলো নির্ধারণ করে।

রোলআপগুলো প্রসেসের ভেতরে একটি নির্দিষ্ট সময়সূচী অনুযায়ী চলে। প্রতিদিন ভোর 04:00 টায় গতকালের ট্রান্সক্রিপ্টকে কার্ড এবং সামারিতে রূপান্তর করে CORE.md পুনরায় লেখা হয়, এরপর সাপ্তাহিক, মাসিক এবং বার্ষিক পাসগুলো সেগুলোকে ক্রমানুসারে সংকুচিত করে। ভোর 05:00 টায় মেমোরি ডক্টর কোনো মডেল ছাড়াই একটি ডিটারমিনিস্টিক পাস চালায়: এটি স্কিমা কার্যকর করে, লিংক গ্রাফ পুনর্নির্মাণ করে, ইনডেক্স পুনরায় তৈরি করে এবং সবশেষে কমিট ও পুশ করে।

এই পুশই হলো আপনার ব্যাকআপ, এবং এটিই সেই ধাপ যা মানুষ প্রায়ই ভুলে যায়। যদি ভল্টে কোনো git remote না থাকে, তবে ডক্টর gh-এর মাধ্যমে একটি প্রাইভেট GitHub repository তৈরির চেষ্টা করে, যার জন্য একটি অথেন্টিকেটেড GitHub CLI প্রয়োজন।

gh auth login
systemctl --user start iva-memory-doctor.service
cd ~/iva/vault && git log --oneline -3

আজকের তারিখের একটি কমিট মানে হলো পাসটি সফলভাবে চলেছে এবং ভল্টটি কমিট করা হয়েছে। লগে gh not available ওয়ার্নিং থাকার অর্থ হলো এর বিপরীত: ভল্টটি রক্ষণাবেক্ষণ করা হচ্ছে কিন্তু সার্ভারের বাইরে কোথাও যাচ্ছে না, তাই VPS নষ্ট হয়ে গেলে আপনার মেমোরিও হারিয়ে যাবে।

আপনার নিয়ন্ত্রণে একটি কপি সবসময় রাখুন।

tar czf ~/iva-vault-backup.tgz -C ~/iva vault

scp ব্যবহার করে ফাইলটি সার্ভার থেকে কপি করে নিন, তারপর সার্ভার থেকে সেটি মুছে ফেলুন। Obsidian-এ মেমোরি পড়ার জন্য, Obsidian-কে ভল্ট রিপোজিটরির একটি ক্লোনের দিকে নির্দেশ করুন। Wikilinks এবং backlinks যেভাবে আছে সেভাবেই কাজ করবে, গ্রাফ ভিউও একইভাবে কাজ করবে। হাতে কার্ড এবং CORE.md এডিট করা নিরাপদ। MOC.md এবং .graph/-কে পরিবর্তন করবেন না, কারণ রাতের পাসটি এই দুটি ফাইল পুনরায় তৈরি করে।

ভল্টটিকে আপনার জীবনের লগ হিসেবে বিবেচনা করুন

সেই ডিরেক্টরিটি হলো আপনার ভাড়ায় নেওয়া মেশিনে সংরক্ষিত একটি তারিখযুক্ত রেকর্ড, যেখানে আপনি কী বলেছেন, কার সাথে দেখা করেছেন এবং কী সিদ্ধান্ত নিয়েছেন তার তথ্য থাকে। এর থেকে দুটি বিষয় স্পষ্ট হয়।

সেলফ-হোস্টিং বা নিজে হোস্ট করার অর্থ হলো স্টোরেজ বা তথ্যভাণ্ডার স্থানান্তর করা, প্রসেসিং বা প্রক্রিয়াকরণ নয়। প্রতিটি টার্ন আপনার মডেল প্রোভাইডারের কাছে যায় এবং প্রতিটি ভয়েস নোট Deepgram-এ পাঠানো হয়। ভল্টটি আপনার, কিন্তু অনুরোধগুলো সেবাদানকারী কোম্পানিগুলোর কাছে গোপন থাকে না। আপনি যদি নিজে মেমোরি লেয়ার চালান, যেমন আপনার নিজস্ব VPS-এ একটি Mem0 মেমোরি সার্ভার, তবে পরিস্থিতি একই থাকে: স্টোরটি লোকাল হলেও মডেল কলটি সার্ভারের বাইরে চলে যায়। যদি কোনো বিষয় তৃতীয় পক্ষের জন্য খুব বেশি সংবেদনশীল হয়, তবে তা চ্যাটে উল্লেখ করবেন না।

সেই অ্যাকাউন্টের আওতা পুরো ভল্ট জুড়ে বিস্তৃত। Iva-এর টুলগুলো Node-এর fs এবং child_process-এর মাধ্যমে সরাসরি হোস্ট নেটিভ হিসেবে চলে, কোনো Docker বা স্যান্ডবক্স ছাড়াই। তাই কোনো টার্ন হাইজ্যাক হলে সার্ভিস ইউজার যে অ্যাক্সেস পায়, হ্যাকারও সেই একই অ্যাক্সেস পেয়ে যায়। এই কারণেই ইনস্টলেশনের পরে অ্যাকাউন্টে কোনো sudo রাখা হয় না এবং কেন অ্যালাউ-লিস্টটি যতটা মনে হয় তার চেয়েও বেশি গুরুত্বপূর্ণ: এটিই সেই গেট যা নির্ধারণ করে কার মেসেজ আপনার সার্ভারে কমান্ড হিসেবে কার্যকর হবে। আপনি যদি কোনো কিছু ওপেন না করেই পকেটে অ্যাসিস্ট্যান্ট রাখতে চান, তবে এটি সেই একই প্যাটার্ন যা আপনার ফোন থেকে একটি সেলফ-হোস্টেড Hermes এজেন্ট অ্যাক্সেস করতে ব্যবহৃত হয়, যেখানে চ্যাট ক্লায়েন্টটি সেই কাজটিই করে যা অন্যথায় একটি পাবলিক এন্ডপয়েন্ট করত।

কী কী সমস্যা হতে পারে এবং আপনি যে বার্তাগুলো দেখবেন

Build killed, exit 137. কার্নেলের out of memory killer বিল্ড প্রক্রিয়াটি বন্ধ করে দিয়েছে। ইনস্টলার শুধুমাত্র তখনই swap যোগ করে যখন RAM 1.5 GB-এর কম থাকে এবং কোনো swap বিদ্যমান থাকে না। তাই নিজে swap যোগ করুন এবং ইনস্টলারটি আবার চালান।

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h

Failed to connect to bus. যখন শেলের কোনো user session bus থাকে না, তখন প্রতিটি systemctl --user কমান্ড এই বার্তাটি দেখায়, যা sudo -iu iva আপনাকে প্রদান করে। সেই ব্যবহারকারী হিসেবে একটি সাধারণ SSH সেশন খুলুন, অথবা কমান্ডটি চালানোর আগে XDG_RUNTIME_DIR=/run/user/$(id -u iva) এক্সপোর্ট (export) করুন।

বট আপনাকে উপেক্ষা করছে। TELEGRAM_ALLOWED_USER_IDS খালি আছে এবং allowlist ডিফল্টভাবে বন্ধ (fail closed) থাকে। বটকে একটি বার্তা পাঠান: এটি আপনার সংখ্যাসূচক ID (numeric ID) ছাড়া আর কিছুই উত্তর দেবে না। সেই ID-টি .env-এ বসান এবং iva restart চালান।

iva config-এর পরপরই বট নীরব হয়ে যায়। উইজার্ড IVA_PORT সরিয়ে ফেলতে পারে কিন্তু ASSISTANT_HOST আপডেট করে না, ফলে ব্রিজটি এমন একটি পোর্টে সংযোগ করার চেষ্টা করে যেখানে কোনো উত্তর নেই। দুটি লাইন তুলনা করুন, তারপর রিস্টার্ট করুন।

grep -E '^(IVA_PORT|ASSISTANT_HOST)=' ~/iva/.env
iva restart

ভয়েস নোটের কোনো উত্তর আসে না। Telegram-এর Bot API 20 MB-এর বেশি ফাইলের ডাউনলোড গ্রহণ করে না, তাই ব্রিজটি দীর্ঘ অডিও ফাইল পায় না এবং Deepgram-এ পাঠানোর মতো কিছু থাকে না। ফাইলটি পাঠানোর আগে ছোট ছোট অংশে ভাগ করে নিন।

ffmpeg -i long.ogg -f segment -segment_time 600 -c copy part-%02d.ogg

একটি টার্ন (turn) আটকে যায় এবং কোনো উত্তর দেয় না। আটকে থাকা workflow state রিস্টার্টের পরেও টিকে থাকে এবং নিজেকে পুনরায় কিউ (re-queue) করে, তাই শুধু রিস্টার্ট করলে এটি পরিষ্কার হয় না। iva reset সেই স্টেটটিকে কোয়ারেন্টাইন করে এবং উভয় সার্ভিস রিস্টার্ট করে। চ্যাটে /new লিখলে একটি নতুন কথোপকথন শুরু হয়।

Ubuntu 24.04-এ Chromium কাজ করে না। Ubuntu 24.04 AppArmor-এর মাধ্যমে unprivileged user namespace ব্লক করে রাখে, তাই Chromium-এর নিজস্ব স্যান্ডবক্স শুরু হতে পারে না এবং agent-browser ব্যর্থ হয়। ইনস্টলারটি "--no-sandbox"-কে ~/.agent-browser/config.json-এর মধ্যে লিখে এই সমস্যার সমাধান করে। জেনে রাখুন যে এটি সেখানে আছে। এটি ব্রাউজারের আইসোলেশন কমিয়ে দেয়, যা আরও একটি কারণ যে কেন এই অ্যাকাউন্টের Iva ছাড়া অন্য কোনো কিছুর মালিকানা থাকা উচিত নয়।

FAQ

Iva self-host করার জন্য আমার কি কোনো ডোমেইন বা ওপেন পোর্টের প্রয়োজন আছে?

না। Iva লং পোলিংয়ের মাধ্যমে Telegram-এর সাথে যোগাযোগ করে: iva-telegram-poll.service কল করে getUpdates-এর জন্য অপেক্ষা করে, তাই প্রতিটি সংযোগ আপনার সার্ভার থেকে আউটবাউন্ড হিসেবে যায়। বাইরে থেকে সার্ভারে কিছু পৌঁছানোর প্রয়োজন নেই, তাই আপনার কোনো DNS রেকর্ড বা সার্টিফিকেটের প্রয়োজন নেই। এজেন্টের নিজস্ব HTTP পোর্ট, 8723, 127.0.0.1-এ বাইন্ড হয় এবং প্রজেক্টের ডকুমেন্টেশনে এটি এক্সপোজ না করার পরামর্শ দেওয়া হয়েছে। SSH ছাড়া অন্য সব পোর্ট বন্ধ রাখা একটি ফায়ারওয়াল কনফিগারেশনই সঠিক পদ্ধতি।

প্রতি মাসে Iva চালানোর খরচ কত?

আগস্ট 2026-এর প্রকাশিত তালিকা মূল্য অনুযায়ী, একটি ছোট VPS-এর খরচ 5 ডলার এবং সবচেয়ে সস্তা ফ্ল্যাট রেট মডেল প্ল্যানের খরচ 5 ডলার, সব মিলিয়ে মাসে প্রায় 10 মার্কিন ডলার খরচ হয়। Ollama Cloud-এর খরচ 20 ডলার এবং এর সাথে ফ্রন্টিয়ার মডেলের বিল আলাদাভাবে যুক্ত হয়। Deepgram-এর স্টার্টার ক্রেডিট দিয়ে শুরুতে ভয়েস সার্ভিস ব্যবহার করা যায় এবং ওয়েব সার্চ টায়ারে ফ্রি ব্যবহারের সুযোগ রয়েছে। OpenRouter পে-অ্যাজ-ইউ-গো ভিত্তিতে কাজ করে, তাই এর কোনো নির্দিষ্ট মাসিক খরচ নেই।

Iva আমার ডেটা কোথায় রাখে এবং আমি কীভাবে এর ব্যাকআপ নেব?

ডিফল্টভাবে এটি ~/iva/vault-এ থাকে, যা ASSISTANT_VAULT_DIR দ্বারা নির্ধারিত হয়। এটি প্লেইন মার্কডাউনের একটি আলাদা প্রাইভেট গিট রিপোজিটরি: CORE.md, daily/YYYY-MM-DD.md, cards/ এবং summaries/। প্রতিদিন 05:00 টায় মেমোরি ডক্টর এটি কমিট ও পুশ করে, যা কেবল তখনই কার্যকর হয় যদি রিপোজিটরিতে কোনো রিমোট সেট করা থাকে। তাই gh auth login চালান অথবা সেটআপের সময় নিজের একটি রিমোট যোগ করুন। এছাড়া tar czf ~/iva-vault-backup.tgz -C ~/iva vault ব্যবহার করে একটি অফলাইন কপি রাখুন এবং সেই ফাইলটি সার্ভারের বাইরে সরিয়ে নিন।

আমি যদি Iva self-host করি, তবে কি আমার ডেটা প্রাইভেট থাকবে?

স্টোরেজ আপনার নিয়ন্ত্রণে থাকে, কিন্তু প্রসেসিং নয়। ভল্টটি আপনার ডিস্কেই থাকে যতক্ষণ না আপনি সেটি পুশ করেন এবং .env ফাইলটি 0600 মোডে সার্ভিস ইউজারের মালিকানাধীন থাকে। মডেল কল এবং ভয়েস ট্রান্সক্রিপশন ক্লাউড API-এর মাধ্যমে হয়, তাই এই মেসেজগুলো আপনার মডেল প্রোভাইডার এবং Deepgram-এর মধ্য দিয়ে যায়। Iva MIT লাইসেন্সপ্রাপ্ত, তাই আপনি ঠিক কী পাঠানো হচ্ছে তা যাচাই করতে পারেন এবং প্রয়োজনে পরিবর্তন করতে পারেন। Telegram অ্যালাউ-লিস্ট 'ফেইল ক্লোজড' মোডে থাকে, যার অর্থ একটি খালি TELEGRAM_ALLOWED_USER_IDS ফাইল সবাইকে ব্লক করে রাখে, এমনকি আপনাকেও।

Iva কোন কোন মডেল প্রোভাইডার সাপোর্ট করে?

MODEL_PROVIDER-এ opencode (OpenCode Go), ollama (Ollama Cloud), openrouter এবং codex সাপোর্ট করে। OpenRouter-এ anthropic/claude-sonnet-4.5-এর মতো ভেন্ডর স্লাগ ব্যবহার করা যায় এবং এটি সবচেয়ে বেশি মডেলের সুবিধা দেয়। codex একটি বিদ্যমান ChatGPT সাবস্ক্রিপশনে iva login-এর মাধ্যমে সাইন-ইন করে এবং এতে কোনো API কী-এর প্রয়োজন হয় না। প্রোভাইডার সেট করুন, মডেলের প্রকৃত সাইজ অনুযায়ী কনটেক্সট উইন্ডো সেট করুন এবং তারপর iva restart চালান, কারণ প্রসেস শুরুর সময় মডেলটি একবার রিড করা হয়।