ورود به پنل ثبت‌ نام

آموزش نصب Ollama روی سرور ابری و اجرای مدل‌های هوش مصنوعی

نصب Ollama روی سرور ابری برای اجرای مدل‌های زبانی متن‌باز؛ سرویس systemd، انتخاب مدل مناسب CPU، دسترسی امن با Nginx و Basic Auth و گواهی SSL.

تیم ابر سپهر 11 دقیقه مطالعه
آموزش نصب Ollama روی سرور ابری و اجرای مدل‌های هوش مصنوعی
در این مقاله

اگر می‌خواهید مدل‌های زبانی متن‌باز مثل Llama، Qwen و DeepSeek را بدون وابستگی به سرویس‌های ابری خارجی اجرا کنید، نصب Ollama روی سرور ابری ساده‌ترین راه است. Ollama یک زمان‌اجرا (runtime) سبک است که دانلود، مدیریت و اجرای مدل‌ها را پشت یک API یکپارچه قرار می‌دهد؛ کافی است یک دستور بزنید تا مدل روی سرور خودتان بالا بیاید و از طریق HTTP در دسترس برنامه‌هایتان قرار بگیرد.

مزیت اجرای Ollama روی سرور خودتان روشن است: پرامپت‌ها، داده‌ها و خروجی مدل روی زیرساخت شما می‌مانند و به هیچ سرویس بیرونی ارسال نمی‌شوند، هزینه‌ی به‌ازای هر توکن وجود ندارد و محدودیت نرخ درخواست هم در کار نیست. برای پروژه‌هایی مثل چت‌بات داخلی، خلاصه‌سازی اسناد محرمانه یا اتصال به گردش‌کارهای اتوماسیون، این استقلال ارزش زیادی دارد.

در این راهنما Ollama را روی Ubuntu 24.04 / 26.04 نصب می‌کنیم، آن را به‌عنوان یک سرویس systemd پیکربندی می‌کنیم، مدل مناسب منابع سرور را انتخاب می‌کنیم و در پایان API را با Nginx، احراز هویت و گواهی SSL برای دسترسی امن از راه دور آماده می‌کنیم.

پیش‌نیازها

  • یک سرور ابری با Ubuntu 24.04 یا 26.04 و دسترسی root.
  • برای شروع و اجرای مدل‌های کوچک (۳ تا ۸ میلیارد پارامتر) روی CPU، دست‌کم ۴ هسته پردازنده و ۸ گیگابایت حافظه پیشنهاد می‌شود. حافظه‌ی بیشتر یعنی امکان اجرای مدل‌های بزرگ‌تر؛ هر مدل باید کامل در RAM جا شود.
  • Ollama روی CPU هم کار می‌کند و برای اجرای مدل به GPU نیاز ندارد؛ اگر کارت گرافیک NVIDIA در دسترس باشد، Ollama خودکار از آن استفاده می‌کند، در غیر این صورت روی پردازنده اجرا می‌شود (کندتر اما کاملاً قابل‌استفاده برای مدل‌های کوچک).
  • برای دسترسی امن از راه دور، یک سابدامین (مثلاً ai.domain.com) با یک رکورد A به آی‌پی سرور.

تمام دستورهای این راهنما با کاربر root اجرا می‌شوند. اگر با کاربر عادی کار می‌کنید، پیش از هر دستور sudo بگذارید.

گام ۱: به‌روزرسانی سیستم

ابتدا سیستم و بسته‌های پایه را به‌روز می‌کنیم:

apt update && apt upgrade -y
apt install -y curl ca-certificates

curl برای دریافت اسکریپت نصب Ollama لازم است. اگر سرور تازه ساخته شده، همین به‌روزرسانی اولیه از بروز بسیاری از خطاهای وابستگی جلوگیری می‌کند.

گام ۲: نصب Ollama

Ollama یک اسکریپت نصب رسمی دارد که باینری را نصب و یک سرویس systemd می‌سازد:

curl -fsSL https://ollama.com/install.sh | sh

این اسکریپت کارهای زیر را انجام می‌دهد: باینری ollama را در مسیر سیستم قرار می‌دهد، یک کاربر سیستمی به نام ollama می‌سازد، سرویس ollama.service را ثبت و فعال می‌کند و در صورت وجود GPU درایورهای لازم را تشخیص می‌دهد. پس از پایان نصب، سرویس بلافاصله بالا می‌آید و روی 127.0.0.1:11434 گوش می‌دهد.

اجرای اسکریپت با curl | sh یعنی شما به منبع آن اعتماد می‌کنید. ما اینجا از دامنه رسمی ollama.com استفاده می‌کنیم. اگر می‌خواهید پیش از اجرا محتوای اسکریپت را ببینید، ابتدا curl -fsSL https://ollama.com/install.sh -o install.sh بگیرید، فایل را مرور کنید و سپس با sh install.sh اجرا کنید.

برای اطمینان از نصب درست:

ollama --version
systemctl status ollama --no-pager

گام ۳: اجرای نخستین مدل

حالا اولین مدل را اجرا می‌کنیم. ollama run اگر مدل روی سرور نباشد ابتدا آن را دانلود می‌کند و سپس یک محیط گفتگوی تعاملی باز می‌کند:

ollama run llama3.2

نخستین اجرا چند گیگابایت دانلود دارد (اندازه به مدل بستگی دارد)، پس کمی صبر کنید. پس از دانلود، یک خط فرمان >>> می‌بینید که می‌توانید مستقیم با مدل صحبت کنید. برای خروج /bye را بزنید.

اگر فقط می‌خواهید مدل را دانلود کنید بدون اینکه وارد گفتگو شوید، از pull استفاده کنید:

ollama pull qwen2.5
ollama list

ollama list فهرست مدل‌های نصب‌شده و حجم هرکدام را نشان می‌دهد؛ این فهرست بعداً برای مدیریت فضای دیسک به کار می‌آید.

گام ۴: انتخاب مدل مناسب منابع سرور

مهم‌ترین تصمیم در اجرای محلی مدل‌ها، تناسب اندازه‌ی مدل با حافظه‌ی سرور است. یک مدل باید کامل در RAM (یا حافظه‌ی GPU) جا شود؛ اگر بزرگ‌تر از حافظه‌ی موجود باشد، یا اجرا نمی‌شود یا سیستم شروع به swap کردن می‌کند و سرعت به‌شدت افت می‌کند.

قاعده‌ی سرانگشتی برای مدل‌های کوانتیزه‌شده‌ی رایج (Q4):

  • مدل ۳ میلیاردی (مثل llama3.2:3b) حدود ۲ تا ۳ گیگابایت حافظه می‌خواهد و روی یک سرور کوچک هم روان اجرا می‌شود.
  • مدل ۷ تا ۸ میلیاردی (مثل qwen2.5:7b یا llama3.1:8b) حدود ۵ تا ۶ گیگابایت حافظه لازم دارد؛ برای این‌ها دست‌کم ۸ گیگابایت RAM بردارید.
  • مدل‌های بزرگ‌تر از ۱۳ میلیارد روی CPU کند خواهند بود؛ برای آن‌ها یا حافظه‌ی زیاد لازم است یا GPU.

برای انتخاب نسخه‌ی دقیق (تگ) هر مدل، می‌توانید صریحاً اندازه را مشخص کنید:

ollama pull llama3.2:3b
ollama pull deepseek-r1:7b

اگر روی CPU کار می‌کنید، از مدل‌های کوچک‌تر شروع کنید و تنها در صورت نیاز به کیفیت بالاتر، منابع سرور را ارتقا دهید. در کنترل پنل ابر سپهر می‌توانید حافظه و پردازنده را بدون ساختن سرور جدید بالا ببرید.

گام ۵: پیکربندی سرویس با systemd

Ollama از متغیرهای محیطی برای تنظیم رفتارش استفاده می‌کند، اما چون به‌صورت سرویس اجرا می‌شود، تعریف این متغیرها در شل شما هیچ اثری روی سرویس ندارد؛ باید آن‌ها را در override سرویس تعریف کنید. برای این کار:

systemctl edit ollama.service

در ویرایشگری که باز می‌شود، این بخش را اضافه کنید:

[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_MODELS=/var/lib/ollama/models"
Environment="OLLAMA_KEEP_ALIVE=5m"

معنای هر خط:

  • OLLAMA_HOST=127.0.0.1:11434 سرویس را فقط روی خود سرور نگه می‌دارد، نه روی اینترنت. این پیش‌فرض امن است و ما در گام بعد دسترسی از بیرون را از مسیر Nginx و با احراز هویت باز می‌کنیم. اگر این مقدار را به 0.0.0.0:11434 تغییر دهید، API شما بدون هیچ احراز هویتی روی اینترنت باز می‌شود و هر کسی که آی‌پی سرور را بداند می‌تواند از مدل شما استفاده کند.
  • OLLAMA_MODELS محل ذخیره‌ی مدل‌هاست. اگر دیسک اصلی کوچک است و یک دیسک جداگانه برای داده دارید، مدل‌ها را آنجا نگه دارید.
  • OLLAMA_KEEP_ALIVE تعیین می‌کند مدل پس از آخرین درخواست چه مدت در حافظه بماند. مقدار کوتاه‌تر حافظه را زودتر آزاد می‌کند؛ مقدار بلندتر پاسخ درخواست بعدی را سریع‌تر می‌کند.

سپس سرویس را بازخوانی و راه‌اندازی مجدد می‌کنیم:

systemctl daemon-reload
systemctl restart ollama

گام ۶: دسترسی امن از راه دور با Nginx

API خود Ollama هیچ احراز هویتی ندارد؛ به همین دلیل آن را روی 127.0.0.1 بستیم. برای دسترسی از بیرون، یک پراکسی معکوس Nginx با احراز هویت پایه (Basic Auth) و گواهی SSL جلوی آن قرار می‌دهیم. این همان الگویی است که در آموزش نصب n8n هم برای امن‌کردن پنل به کار بردیم.

Nginx و ابزار ساخت رمز را نصب می‌کنیم:

apt install -y nginx apache2-utils

یک فایل کاربر و رمز برای Basic Auth می‌سازیم (به جای apiuser نام دلخواه خودتان):

htpasswd -c /etc/nginx/.htpasswd apiuser

حالا فایل پیکربندی سایت را می‌سازیم:

nano /etc/nginx/sites-available/ai.domain.com

و این محتوا را در آن قرار می‌دهیم:

server {
    listen 80;
    server_name ai.domain.com;

    location / {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;

        proxy_pass http://127.0.0.1:11434;
        proxy_set_header Host localhost;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # پاسخ‌های استریمیِ مدل نباید بافر یا با تایم‌اوت قطع شوند
        proxy_buffering off;
        proxy_read_timeout 600s;
    }
}

دو نکته مهم در این پیکربندی:

  • proxy_set_header Host localhost; لازم است؛ Ollama برای جلوگیری از حملات DNS rebinding فقط درخواست‌هایی را می‌پذیرد که مقدار Host آن‌ها localhost باشد. اگر این خط را نگذارید، پاسخ 403 Forbidden می‌گیرید.
  • proxy_buffering off; باعث می‌شود پاسخ مدل به‌صورت زنده (توکن‌به‌توکن) به کلاینت برسد، نه یک‌جا در پایان. بدون آن، خروجی استریمی درست کار نمی‌کند.

سایت را فعال و پیکربندی را بررسی می‌کنیم:

ln -s /etc/nginx/sites-available/ai.domain.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

گام ۷: فایروال و گواهی SSL

فایروال UFW را تنظیم می‌کنیم تا فقط پورت‌های لازم باز باشند:

apt install -y ufw
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable

پورت 11434 را باز نمی‌کنیم، چون Ollama فقط روی 127.0.0.1 گوش می‌دهد و تنها راه رسیدن به آن، عبور از Nginx است.

پیش از اجرای ufw enable مطمئن شوید قاعده‌ی OpenSSH را اضافه کرده‌اید، وگرنه ارتباط SSH فعلی شما قطع می‌شود. اگر این اتفاق افتاد، از کنسول تحت وب کنترل پنل ابر سپهر وارد سرور شوید و قاعده را اضافه کنید.

سپس گواهی رایگان Let's Encrypt را صادر می‌کنیم:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d ai.domain.com

Certbot گواهی را صادر می‌کند، فایل Nginx را برای HTTPS ویرایش می‌کند و تمدید خودکار را با یک تایمر systemd فعال می‌کند. حالا API شما روی https://ai.domain.com در دسترس است و هر درخواست باید نام کاربری و رمز Basic Auth را همراه داشته باشد. برای آزمودن:

curl https://ai.domain.com/api/generate \
  -u apiuser:yourpassword \
  -d '{"model": "llama3.2:3b", "prompt": "سلام", "stream": false}'

نگهداری: به‌روزرسانی و بک‌آپ

به‌روزرسانی Ollama به‌سادگی اجرای دوباره‌ی همان اسکریپت نصب است؛ نسخه‌ی جدید باینری را جایگزین می‌کند و مدل‌های دانلودشده دست‌نخورده می‌مانند:

curl -fsSL https://ollama.com/install.sh | sh
systemctl restart ollama

مدیریت فضای دیسک: هر مدل چند گیگابایت جا می‌گیرد. مدل‌هایی را که دیگر استفاده نمی‌کنید حذف کنید:

ollama list
ollama rm llama3.1:8b

بک‌آپ یعنی نگه‌داشتن پوشه‌ی مدل‌ها و پیکربندی. چون مدل‌ها همیشه قابل دانلود دوباره‌اند، معمولاً نیازی به بک‌آپ آن‌ها نیست؛ اما ساده‌ترین راه برای بازگشت سریع، گرفتن یک اسنپ‌شات از کل سرور از کنترل پنل ابر سپهر پیش از هر تغییر پرخطر است.

کار دستور چه زمانی
مشاهده لاگ سرویس journalctl -u ollama -f هنگام عیب‌یابی
راه‌اندازی مجدد systemctl restart ollama پس از تغییر تنظیمات
فهرست مدل‌ها ollama list مدیریت فضای دیسک
حذف مدل ollama rm <model> آزادسازی فضا
به‌روزرسانی اجرای دوباره اسکریپت نصب ماهانه
بک‌آپ کامل اسنپ‌شات کنترل پنل پیش از هر تغییر پرخطر

جمع‌بندی

با نصب Ollama روی سرور ابری، یک زیرساخت مستقل برای اجرای مدل‌های زبانی متن‌باز دارید که داده‌هایتان از آن خارج نمی‌شود و محدودیت مصرف ندارد. سه تصمیمی که بیشترین تفاوت را می‌سازند: انتخاب مدلی که در حافظه‌ی سرور جا شود، نگه‌داشتن سرویس روی 127.0.0.1 و باز کردن دسترسی از راه دور فقط از مسیر Nginx با Basic Auth و SSL.

قدم بعدی طبیعی، اتصال این API به یک گردش‌کار اتوماسیون است؛ می‌توانید Ollama را به n8n وصل کنید و پاسخ مدل را در فرآیندهای خودکار به کار بگیرید. اگر هنوز سروری برای این کار ندارید، از صفحه خرید سرور ابری با منابع مناسب شروع کنید و هر زمان مدل بزرگ‌تری خواستید، حافظه را ارتقا دهید.

مقالات مرتبط