SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor

آموزش نصب و میزبانی شخصی دستیار هوش مصنوعی Iva در تلگرام

دستیار هوش مصنوعی Iva را بدون نیاز به دامنه یا باز کردن پورت روی VPS اجرا کنید. این راهنما برای نسخه v0.3.13 نحوه مدیریت یادداشت‌ها در Obsidian و تنظیم systemd را شرح می‌دهد.

آنچه می‌سازید

Iva یک دستیار هوش مصنوعی تلگرام است که به صورت self-hosted اجرا می‌شود. این یکی از معدود سرویس‌هایی است که می‌توانید بدون باز کردن پورت ورودی و بدون نیاز به اشاره کردن دامنه به آن، مستقر کنید. هیچ گواهی‌نامه‌ای نیز وجود ندارد، زیرا هیچ بخشی از این سیستم برای عموم گوش نمی‌دهد (listen نمی‌کند). این سرویس با تلگرام تماس برقرار می‌کند، اتصال را باز نگه می‌دارد و پیام‌های شما را از طریق پاسخ‌ها می‌خواند. همه چیزهای دیگر از همان یک اتصال خروجی نشأت می‌گیرد.

Iva دارای مجوز MIT است و با Node نوشته شده است. حافظه آن پوشه‌ای از فایل‌های متنی ساده markdown است که Obsidian مستقیماً آن‌ها را باز می‌کند؛ بنابراین یادداشت‌هایی که درباره شما نگه می‌دارد، بدون نیاز به برنامه نیز قابل خواندن هستند. این راهنما نسخه v0.3.13 را که در تاریخ 6 August 2026 منتشر شده است، مبنا قرار می‌دهد. مخزن پروژه از smixs/iva به smixs/iva-agent تغییر نام یافته است و دستورات زیر از نام جدید استفاده می‌کنند.

بیشتر نرم‌افزارهای self-hosted با یک رکورد DNS (سیستم نام دامنه) و یک گواهی Let's Encrypt صادر شده با Certbot شروع می‌شوند. Iva این لایه را کاملاً حذف می‌کند؛ به همین دلیل است که یک VPS کوچک پشت فایروالی که فقط اجازه دسترسی SSH می‌دهد، یک استقرار کامل محسوب می‌شود.

چرا Iva به پورت‌های باز نیاز ندارد

iva-telegram-poll.service یک پل مبتنی بر long polling است. این سرویس API مربوط به getUpdates تلگرام را فراخوانی کرده و منتظر پاسخ می‌ماند، بنابراین هر اتصال از سمت سرور شما آغاز می‌شود. تلگرام هرگز به سرور شما متصل نمی‌شود، به این معنی که نیازی به پیکربندی reverse proxy یا نگرانی بابت تمدید گواهی‌ها وجود ندارد.

خودِ agent تنها روی پورت 8723 در 127.0.0.1 گوش می‌دهد. مستندات پروژه در این باره صریح است: پورت 8723 را در معرض اینترنت قرار ندهید و هر reverse proxy که جلوی آن قرار می‌دهید باید الزامات مربوط به bearer token را رعایت کند. پس از نصب، آدرس bind را بررسی کنید.

sudo ss -tlnp | grep 8723

آدرس باید به صورت 127.0.0.1:8723 باشد. یک آدرس wildcard مانند 0.0.0.0:8723 به این معنی است که مسیرهای HTTP مربوط به agent از طریق اینترنت قابل دسترسی هستند و شما باید پیش از ارسال هرگونه اطلاعات خصوصی به ربات، این مورد را اصلاح کنید.

بنابراین فایروال را بسته نگه دارید. پیش از فعال‌سازی ufw enable، دسترسی SSH را مجاز کنید، زیرا اجرای آن بدون قانون SSH باعث قطع شدن نشست (session) فعلی شما می‌شود.

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

آنچه نصب‌کننده تک‌خطی واقعاً انجام می‌دهد

صفحه اصلی پروژه یک دستور واحد ارائه می‌دهد که اسکریپتی را از GitHub به bash پایپ می‌کند. ابتدا اسکریپت را بخوانید، زیرا کاری بیش از نصب یک برنامه انجام می‌دهد.

curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/install.sh -o iva-install.sh
less iva-install.sh
  • بسته‌های سیستمی را با استفاده از مدیر بسته شناسایی‌شده نصب می‌کند: git، gh، python3، ffmpeg، pandoc و poppler-utils.
  • یک swapfile با حجم 2 GB در مسیر /swapfile ایجاد می‌کند، در صورتی که سرور کمتر از 1.5 GB رم داشته باشد و swap نداشته باشد؛ زیرا فرآیند build بدون آن متوقف (kill) می‌شود.
  • ابزار nvm و سپس Node 24 را نصب می‌کند که حداقل نسخه مورد نیاز برای اجرای Iva است.
  • ابزار uv، یعنی مدیر بسته پایتون، را در ~/.local/bin نصب می‌کند.
  • مخزن را در ~/iva کلون کرده و npm ci را اجرا می‌کند.
  • ابزار agent-browser را به عنوان یک بسته npm سراسری نصب می‌کند که سپس Chromium را دانلود کرده و CLI مربوط به Google Workspace یعنی gws را بدون نیاز به sudo در ~/.local قرار می‌دهد.
  • ویزارد راه‌اندازی را اجرا کرده، پروژه را build می‌کند و vault را می‌سازد.
  • یک دستور iva را در ~/.local/bin می‌نویسد و unitهای کاربری systemd را نصب می‌کند.

این حجم زیادی از نرم‌افزار برای یک خط دستور است. این موضوع همچنین دستورالعمل README مبنی بر نصب به عنوان یک کاربر عادی و نه root را توضیح می‌دهد: ابزار shell مربوط به agent بعداً با همان دسترسی‌هایی اجرا می‌شود که نصب‌کننده داشته است. این اسکریپت تنها برای نصب بسته‌ها و ایجاد swapfile از sudo استفاده می‌کند، و احتمالاً یک بار دیگر برای مرحله Chromium، از طریق یک helper که وقتی از قبل root هستید، دستورات را مستقیماً اجرا می‌کند.

ایجاد یک کاربر اختصاصی پیش از نصب

برای Iva یک حساب کاربری مجزا ایجاد کنید. این عامل، دستورات shell را روی میزبان از طریق child_process در Node اجرا می‌کند، بدون آنکه از container یا sandbox استفاده کند؛ بنابراین حسابی که تحت آن اجرا می‌شود، مرز امنیتی شماست.

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 به عنوان unitهای کاربر در systemd اجرا می‌شود. بدون فعال بودن linger، سیستم‌عامل به محض پایان آخرین نشست (session)، سرویس‌های آن کاربر را متوقف می‌کند؛ در نتیجه با بستن SSH، دستیار شما نیز از کار می‌افتد. همین قاعده برای هر سرویس و تایمری که خودتان تحت systemd می‌نویسید نیز صادق است.

این حساب کاربری فقط در زمان افزودن بسته‌ها توسط نصب‌کننده به sudo نیاز دارد. پس از پایان نصب، این دسترسی را از آن بگیرید.

sudo deluser iva sudo

مستقیماً با همان کاربر از طریق SSH وارد شوید. shellای که با sudo -iu iva به آن وارد می‌شوید، نه DBUS_SESSION_BUS_ADDRESS و نه XDG_RUNTIME_DIR را تنظیم کرده است؛ بنابراین هر دستور systemctl --user با خطای Failed to connect to bus مواجه می‌شود. ترسیم این مرز، همان تمرینی است که در اجرای سرویس‌ها با کاربران دارای حداقل دسترسی انجام می‌دهید.

نصب یک نسخه مشخص (Pinned) به‌جای استفاده از pipe به bash

نصب‌کننده یک ویژگی کاربردی دارد. پیش از آنکه هر چیزی را clone کند، بررسی می‌کند که آیا دایرکتوری حاوی اسکریپت، در حال حاضر شامل یک package.json هست که "eve" در آن قرار دارد یا خیر. اگر چنین باشد، همان نسخه را build کرده و مرحله clone را نادیده می‌گیرد. بنابراین شما می‌توانید نسخه مورد نظر خود را انتخاب کنید.

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

اکنون می‌دانید چه کدی در حال اجراست. وقتی اسکریپت main را در هر وضعیتی که در آن ساعت قرار دارد clone می‌کند، شما از نسخه دقیق آن بی‌اطلاع هستید. Iva بین 4 تا 6 اوت 2026 پنج نسخه منتشر کرد، بنابراین main در صبح امروز و main در بعدازظهر امروز، یک برنامه واحد نیستند.

checkout کردن یک tag، وضعیت git را در حالت detached HEAD قرار می‌دهد. این حالت به‌خوبی کار می‌کند، اما محدودیت آن را در نظر داشته باشید: iva update نسخه checkout شده را به سمت شاخه update پیش می‌برد، بنابراین این pin یک نقطه شروع مشخص است و نه یک توقف دائمی. iva version نسخه بسته و commit مربوط به git را چاپ می‌کند تا همیشه بدانید در چه وضعیتی هستید.

برای انتقال به یک نسخه جدیدتر به‌صورت دستی، لیست tagها را مشاهده کنید، نسخه انتخابی خود را به‌جای v0.3.13 در دستور زیر checkout کنید و سپس نصب‌کننده را دوباره از داخل همان دایرکتوری اجرا نمایید. خودِ نصب‌کننده تنظیمی برای انتخاب tag نسخه ندارد. متغیرهای محیطی مستند شده برای آن REPO_URL، BRANCH و INSTALL_DIR هستند، بنابراین git checkout تنها راه برای ثابت نگه‌داشتن (pin) نسخه است.

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

--skip-setup از اجرای مجدد ویزارد روی .env که از قبل کار می‌کند، جلوگیری می‌کند. پس از آن iva version را اجرا کنید تا commit نهایی که روی آن قرار گرفته‌اید را تأیید کنید.

پنج مرحله جادوگر (wizard) و کلیدهای درخواستی

  1. ارائه‌دهنده مدل و خود مدل. MODEL_PROVIDER از opencode، ollama، openrouter یا codex پشتیبانی می‌کند. جادوگر کلید را به‌صورت زنده اعتبارسنجی کرده و مدل‌هایی که طرح شما ارائه می‌دهد را فهرست می‌کند.
  2. صدا و جستجو. یک کلید Deepgram یادداشت‌های صوتی را تبدیل به متن می‌کند. یک کلید جستجوی وب (Tavily، Exa، Parallel یا Brave) اختیاری است.
  3. توکن ربات تلگرام از @BotFather که در برابر endpoint getMe بررسی می‌شود.
  4. کنترل دسترسی. شما پیامی به ربات خود می‌فرستید و جادوگر شناسه کاربری عددی شما را از getUpdates می‌خواند.
  5. تنظیمات سیستم. منطقه زمانی IANA، دایرکتوری vault و پورت محلی که به‌صورت پیش‌فرض 8723 است.

دو مورد از این موارد، وابستگی‌هایی هستند که عبارت «یک دستور» آن‌ها را پنهان می‌کند. Iva هیچ مدلی را به همراه خود عرضه نمی‌کند، بنابراین پیش از پاسخ‌دهی به هر چیزی، به یک طرح مدل پولی یا یک API key نیاز دارد. همچنین این برنامه خود قادر به تبدیل صوت به متن نیست، بنابراین یادداشت‌های صوتی به یک سرویس جداگانه نیاز دارند. مدل nova-3 از Deepgram با 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 باید شناسه عددی شما را در خود داشته باشد. لیست مجاز (allowlist) به‌صورت پیش‌فرض مسدود است، بنابراین مقدار خالی به این معنی است که Iva به هیچ‌کس پاسخ نمی‌دهد.

مدل یک‌بار در زمان شروع پردازش خوانده می‌شود. ویرایش MODEL_PROVIDER یا نام مدل در .env تا زمانی که iva restart را اجرا نکنید، تغییری ایجاد نمی‌کند. در openrouter نام مدل یک slug فروشنده مانند anthropic/claude-sonnet-4.5 است، نه یک نام ساده. در codex هیچ API key وجود ندارد: iva login به یک اشتراک موجود ChatGPT وارد می‌شود.

هزینه ماهانه اجرای Iva چقدر است

نمودارMonthly cost of a self-hosted Iva, published list prices, October 2026
داده‌های پشت این نمودار
[
  {
    "plan": "Small VPS, always on",
    "usd_per_month": 5
  },
  {
    "plan": "OpenCode Go model plan",
    "usd_per_month": 10
  },
  {
    "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": 15
  }
]

این ارقام، قیمت‌های رسمی منتشرشده تا اکتبر 2026 هستند و نه اندازه‌گیری‌های عملیاتی. یک VPS کوچک با قیمت 5 دلار آمریکا به همراه طرح OpenCode Go با قیمت 10 دلار، ارزان‌ترین پیکربندی کامل است که حدود 15 دلار در ماه هزینه دارد. صفحه رسمی OpenCode Go همین قیمت ماهانه را بدون تخفیف ماه اول درج کرده است و فایل README پروژه Iva نیز هزینه کل این پشته (stack) را حدود 14 تا 15 دلار برآورد می‌کند. Ollama Cloud گزینه دیگر با نرخ ثابت است که طرح Pro آن 20 دلار هزینه دارد و استفاده فراتر از اعتبار موجود در طرح، به‌صورت جداگانه محاسبه می‌شود. هزینه سرویس Voice نیز تا زمانی که اعتبار اولیه Deepgram باقی باشد، 0 است.

OpenRouter در این لیست جایگاهی ندارد زیرا مدل پرداخت آن به‌صورت pay-as-you-go است و صورت‌حساب شما مستقیماً با میزان مصرف تغییر می‌کند. این گزینه‌ای است که باید مراقب آن باشید: دستیاری که در هر نوبت گفتگو، یک context window با ظرفیت 131072 توکن را حمل می‌کند، می‌تواند به‌سرعت هزینه‌ای فراتر از یک طرح با نرخ ثابت ایجاد کند. متغیر context window را روی اندازه واقعی مدل تنظیم کنید، زیرا مقدار بیش از حد، تنها باعث هدر رفتن توکن‌ها می‌شود.

دو سرویس و دو تایمر

  • iva.service خودِ agent را اجرا می‌کند.
  • iva-telegram-poll.service پل long polling را که با Telegram در ارتباط است، اجرا می‌کند.
  • iva-memory-doctor.timer در ساعت 05:00 فعال شده و عملیات نگهداری شبانه را روی vault انجام می‌دهد.
  • iva-update-check.timer در ساعت 10:00 فعال شده و بررسی می‌کند که آیا نسخه جدیدتری منتشر شده است یا خیر.
  • iva-telegram-userbot.service تنها در صورتی وجود دارد که proxy اختیاری Telethon را راه‌اندازی کرده باشید.
iva status
systemctl --user status iva.service iva-telegram-poll.service
systemctl --user list-timers
iva logs poll

iva status وضعیت هر دو سرویس و هر دو تایمر watchdog را گزارش می‌دهد. systemctl --user list-timers زمان اجرای بعدی هر تایمر را چاپ می‌کند؛ این همان روشی است که تأیید می‌کنید آیا memory doctor واقعاً امشب اجرا خواهد شد یا خیر. هر دو سرویس باید در وضعیت active (running) باشند. اگر یکی از آن‌ها در یک حلقه (loop) مدام restart شود، journalctl --user -u iva.service -n 100 دلیل آن را مشخص می‌کند.

هنگام عیب‌یابی، این تفکیک اهمیت دارد. ممکن است پل (bridge) فعال باشد و در حال polling باشد، در حالی که agent از کار افتاده است؛ در این حالت Telegram پیام شما را می‌پذیرد اما هیچ پاسخی دریافت نمی‌شود. iva logs poll لاگ‌های پل را دنبال می‌کند و iva logs لاگ‌های agent را؛ بنابراین این دو لاگ به شما می‌گویند که کدام بخش دچار مشکل شده است.

محل قرارگیری Obsidian vault و نحوه پشتیبان‌گیری از آن

ASSISTANT_VAULT_DIR به‌صورت پیش‌فرض در vault داخل دایرکتوری نصب قرار می‌گیرد، بنابراین حافظه در ~/iva/vault مستقر است. این بخش یک مخزن git مستقل از کد برنامه است که به شما اجازه می‌دهد Iva را بدون تغییر در یادداشت‌های خود به‌روزرسانی کنید.

  • vault/CORE.md حقایق پایدار و ترجیحات ثابت را نگه می‌دارد، محدود به 1200 کاراکتر است و در هر system prompt همراه می‌شود.
  • vault/daily/YYYY-MM-DD.md رونوشت روزانه است که فقط به صورت append-only با آن رفتار می‌شود.
  • vault/cards/ کارت‌های تایپ‌شده برای مخاطبین، پروژه‌ها، تصمیمات، ایده‌ها و یادداشت‌ها را در خود جای می‌دهد.
  • vault/summaries/daily/، weekly/، monthly/ و yearly/ شامل rollupها هستند.
  • vault/attachments/ فایل‌ها را بر اساس تاریخ دسته‌بندی می‌کند و vault/.graph/ گراف لینک‌ها را نگه می‌دارد.
  • vault/schema.json انواع کارت‌ها و قوانین decay را تعریف می‌کند.

عملیات rollup طبق زمان‌بندی در داخل پردازش اجرا می‌شود. پردازش روزانه در ساعت 04:00 رونوشت دیروز را به کارت‌ها و یک خلاصه تبدیل کرده و CORE.md را بازنویسی می‌کند؛ سپس پردازش‌های هفتگی، ماهانه و سالانه به نوبه خود آن‌ها را فشرده می‌کنند. در ساعت 05:00، memory doctor یک پردازش قطعی (deterministic) بدون دخالت مدل اجرا می‌کند: این پردازش schema را اعمال، گراف لینک‌ها را بازسازی، ایندکس را تولید مجدد و سپس commit و push می‌کند.

آن push همان پشتیبان شماست و مرحله‌ای است که افراد معمولاً فراموش می‌کنند. اگر vault هیچ git remote نداشته باشد، doctor تلاش می‌کند یک مخزن خصوصی GitHub از طریق gh ایجاد کند که نیازمند احراز هویت GitHub CLI است.

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

یک commit با تاریخ امروز به این معنی است که پردازش اجرا شده و vault ثبت شده است. هشدارهای gh not available در لاگ به معنای عکس آن است: vault نگهداری می‌شود اما هرگز از سرور خارج نمی‌شود، بنابراین در صورت خرابی VPS، حافظه شما نیز از بین می‌رود.

یک نسخه تحت کنترل خودتان نیز نگه دارید.

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

آن فایل را با scp از سرور خارج کنید و سپس آن را از روی سرور حذف نمایید. برای خواندن حافظه در Obsidian، آن را به یک clone از مخزن vault ارجاع دهید. Wikilinkها و backlinkها همان‌طور که هستند کار می‌کنند و نمای گراف نیز به درستی عمل می‌کند. ویرایش دستی کارت‌ها و CORE.md ایمن است. MOC.md و .graph/ را تغییر ندهید، زیرا پردازش شبانه هر دو را بازسازی می‌کند.

با vault مانند دفتر وقایع زندگی خود رفتار کنید

آن دایرکتوری، سوابق تاریخ‌گذاری‌شده‌ای از گفته‌ها، ملاقات‌ها و تصمیمات شما بر روی ماشینی است که اجاره کرده‌اید. دو نکته از این موضوع استنتاج می‌شود.

میزبانی شخصی (Self-hosting) محل ذخیره‌سازی را تغییر می‌دهد، نه پردازش را. هر نوبت گفتگو به ارائه‌دهنده مدل شما ارسال می‌شود و هر یادداشت صوتی به Deepgram می‌رود. vault متعلق به شماست، اما درخواست‌ها از دید شرکت‌هایی که آن‌ها را پردازش می‌کنند، خصوصی نیستند. اجرای لایه حافظه توسط خودتان، همانند یک سرور حافظه Mem0 روی VPS شخصی، ساختار مشابهی دارد: داده‌ها محلی هستند اما فراخوانی مدل همچنان از سرور شما خارج می‌شود. اگر موضوعی برای یک شخص ثالث بیش از حد حساس است، آن را در چت مطرح نکنید.

دسترسی آن حساب کاربری، کل vault است. ابزارهای Iva به‌صورت بومی روی میزبان و از طریق fs و child_process در Node اجرا می‌شوند؛ بدون Docker و بدون sandbox. بنابراین، یک نوبت گفتگو که مورد نفوذ قرار گیرد، هر دسترسی که کاربر سرویس داشته باشد را در اختیار خواهد داشت. به همین دلیل است که حساب کاربری پس از نصب، هیچ sudo را نگه نمی‌دارد و چرا لیست مجاز (allowlist) بیش از آنچه به نظر می‌رسد اهمیت دارد: این لیست دروازه‌ای است که تعیین می‌کند پیام‌های چه کسی به دستوراتی در سرور شما تبدیل شوند. اگر می‌خواهید دستیار خود را بدون باز کردن هیچ پورتی در جیب خود داشته باشید، این همان الگویی است که برای دسترسی به یک عامل Hermes میزبانی‌شده از طریق تلفن همراه استفاده می‌شود، که در آن کلاینت چت وظیفه‌ای را انجام می‌دهد که در غیر این صورت بر عهده یک endpoint عمومی بود.

چه چیزی از کار می‌افتد و چه پیامی مشاهده خواهید کرد

Build killed, exit 137. قاتل حافظه (OOM Killer) هسته سیستم‌عامل، فرآیند ساخت را متوقف کرده است. نصب‌کننده فقط زمانی swap اضافه می‌کند که رم کمتر از 1.5 GB باشد و هیچ swap موجود نباشد؛ بنابراین خودتان آن را اضافه کنید و نصب‌کننده را دوباره اجرا کنید.

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

Failed to connect to bus. هر دستور systemctl --user زمانی که shell فاقد user session bus باشد (که sudo -iu iva آن را فراهم می‌کند) این پیام را چاپ می‌کند. یک نشست SSH عادی با آن کاربر باز کنید یا پیش از اجرای دستور، XDG_RUNTIME_DIR=/run/user/$(id -u iva) را export کنید.

بات به شما پاسخ نمی‌دهد. TELEGRAM_ALLOWED_USER_IDS خالی است و لیست مجاز (allowlist) به‌صورت پیش‌فرض مسدود است. به بات پیامی بفرستید؛ بات با شناسه عددی شما پاسخ می‌دهد و هیچ چیز دیگری نمی‌گوید. آن شناسه را در .env قرار دهید و iva restart را اجرا کنید.

بات بلافاصله پس از iva config ساکت می‌شود. ویزارد ممکن است IVA_PORT را بدون به‌روزرسانی ASSISTANT_HOST جابه‌جا کند، بنابراین bridge به پورتی متصل می‌شود که پاسخی دریافت نمی‌کند. دو خط را با هم مقایسه کنید و سپس سرویس را restart کنید.

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

یادداشت صوتی پاسخی دریافت نمی‌کند. API بات تلگرام دانلود فایل‌های بیش از 20 MB را رد می‌کند، بنابراین bridge هرگز فایل صوتی طولانی را دریافت نمی‌کند و چیزی برای ارسال به Deepgram ندارد. فایل را پیش از ارسال تقسیم کنید.

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

یک نوبت (turn) متوقف می‌شود و هرگز پاسخ نمی‌دهد. وضعیت گیرکردهٔ workflow پس از restart باقی می‌ماند و دوباره در صف قرار می‌گیرد، بنابراین restart کردن به‌تنهایی آن را پاک نمی‌کند. iva reset آن وضعیت را قرنطینه کرده و هر دو سرویس را restart می‌کند. /new در چت، یک گفتگوی جدید آغاز می‌کند.

Chromium در Ubuntu 24.04 با خطا مواجه می‌شود. Ubuntu 24.04 فضای نام کاربری بدون امتیاز (unprivileged user namespaces) را از طریق AppArmor مسدود می‌کند، بنابراین sandbox خودِ Chromium نمی‌تواند شروع به کار کند و agent-browser با خطا مواجه می‌شود. نصب‌کننده با نوشتن "--no-sandbox" در ~/.agent-browser/config.json این مشکل را دور می‌زند. آگاه باشید که این تنظیم وجود دارد. این کار سطح ایزولاسیون مرورگر را کاهش می‌دهد، که دلیل دیگری است بر اینکه این حساب کاربری نباید هیچ چیزی جز Iva را در اختیار داشته باشد.

FAQ

آیا برای میزبانی شخصی Iva به دامنه یا پورت باز نیاز دارم؟

خیر. Iva از طریق long polling با Telegram ارتباط برقرار می‌کند: iva-telegram-poll.service فراخوانی getUpdates را انجام داده و منتظر می‌ماند، بنابراین تمام اتصالات از سمت سرور شما به بیرون برقرار می‌شوند. هیچ چیزی نباید از خارج به سرور شما متصل شود، بنابراین نیازی به رکورد DNS یا گواهی ندارید. پورت HTTP خودِ عامل، یعنی 8723، روی 127.0.0.1 متصل می‌شود و مستندات پروژه تأکید می‌کنند که آن را در معرض اینترنت قرار ندهید. فایروالی که فقط اجازه دسترسی SSH را می‌دهد، پیکربندی صحیح است.

هزینه اجرای Iva در هر ماه چقدر است؟

بر اساس لیست قیمت‌های منتشرشده در اکتبر 2026، یک VPS کوچک با هزینه 5 دلار به اضافه ارزان‌ترین طرح مدل flat rate با هزینه 10 دلار، در مجموع حدود 15 دلار آمریکا در ماه هزینه دارد. هزینه Ollama Cloud برابر با 20 دلار است و استفاده فراتر از اعتبار موجود را جداگانه محاسبه می‌کند. اعتبارات اولیه Deepgram در ابتدا هزینه صوت را پوشش می‌دهند و سطوح جستجوی وب نیز دارای سهمیه رایگان هستند. OpenRouter به صورت pay as you go است، بنابراین رقم ماهانه ثابتی ندارد.

Iva داده‌های مرا کجا نگه می‌دارد و چگونه از آن‌ها نسخه پشتیبان بگیرم؟

به‌طور پیش‌فرض در ~/iva/vault، که توسط ASSISTANT_VAULT_DIR تعیین می‌شود. این یک مخزن git خصوصی و جداگانه از فایل‌های متنی ساده (markdown) است: CORE.md، daily/YYYY-MM-DD.md، cards/ و summaries/. ابزار memory doctor در ساعت 05:00 تغییرات را commit و push می‌کند، که این کار تنها در صورتی مفید است که مخزن دارای یک remote باشد؛ بنابراین gh auth login را اجرا کنید یا در حین راه‌اندازی، یک remote اختصاصی خود را اضافه کنید. همچنین با استفاده از tar czf ~/iva-vault-backup.tgz -C ~/iva vault یک نسخه آفلاین نگه دارید و آن فایل را از سرور خارج کنید.

آیا در صورت میزبانی شخصی Iva، داده‌های من خصوصی می‌مانند؟

ذخیره‌سازی متعلق به شماست، اما پردازش خیر. vault تا زمانی که آن را push نکنید روی دیسک شما باقی می‌ماند و .env با مجوز 0600 و مالکیت کاربر سرویس نگهداری می‌شود. فراخوانی‌های مدل و تبدیل صوت به متن از طریق APIهای ابری انجام می‌شوند، بنابراین آن پیام‌ها از طریق ارائه‌دهنده مدل و Deepgram عبور می‌کنند. Iva دارای مجوز MIT است، بنابراین می‌توانید دقیقاً محتوای ارسالی را بخوانید و آن را تغییر دهید. لیست مجاز Telegram به صورت fail closed عمل می‌کند، به این معنی که یک TELEGRAM_ALLOWED_USER_IDS خالی، دسترسی همه، از جمله شما را مسدود می‌کند.

Iva از کدام ارائه‌دهندگان مدل پشتیبانی می‌کند؟

در نسخه v0.3.13، MODEL_PROVIDER از opencode (OpenCode Go)، ollama (Ollama Cloud)، openrouter و codex پشتیبانی می‌کند. OpenRouter از یک vendor slug مانند anthropic/claude-sonnet-4.5 استفاده می‌کند و گسترده‌ترین انتخاب مدل‌ها را ارائه می‌دهد. codex با استفاده از iva login به اشتراک فعلی ChatGPT وارد می‌شود و نیازی به API key ندارد. نسخه‌های بعدی مسیرهای بیشتری از جمله اشتراک Claude و یک endpoint سفارشی سازگار با OpenAI را اضافه می‌کنند. ارائه‌دهنده را تنظیم کنید، context window منطبق را روی اندازه واقعی مدل قرار دهید و سپس iva restart را اجرا کنید، زیرا مدل فقط یک‌بار در زمان شروع پردازش خوانده می‌شود.