فهرست مطالب
.1مقدمه
.2معماری کلی سیستم
.3پیشنیازها
.4دریافت ایمیجها
Docker Compose . پیکربندی با5
.6اجرای سرویسها
.7نصب مدلLLM
.8مزایا و ویژگی ها
.9نکات امنیتی و بهینه سازی
.1مقدمه
چتباتها به یکی از اجزای کلیدی در دنیای نرمافزار تبدیل شدهاند؛ از پشتیبانی مشتریان گرفته تا
اتوماسیون DevOpsاما داشتن یک چتبات محلی ) (On-Premiseکه روی سرور لینوکسی شما
بدون وابستگی به سرویسهای ابری اجرا شود، هم امنیت دادهها را بالا میبرد و هم آزادی بیشتری برای
شخصیسازی فراهم میکند.
راه اندازی یک چت بات لینوکسی با Docker + Ollama + Open-WebUIبه شما این امکان را
میدهد که بدون وابستگی به سرویسهای خارجی، یک دستیار هوش مصنوعی محلی و امن داشته
باشید. این ساختار به راحتی قابل توسعه است و میتوانید آن را برای نیازهای سازمانی یا شخصی
خود سفارشی کنید.
.2معماری کلی سیستم
این معماری شامل سه لایه اصلی است:
Open-WebUI .1
Ollama .2
Docker & Docker Compose .3
• یک رابط وب سبک و قدرتمند برای تعامل با مدلهای هوش مصنوعی
• درگاه ارتباطی کاربر با LLM
• موتور مدیریت و اجرای مدلهای زبانی بزرگ ()LLM
• امکان اجرای مدلهایی مثل Mistral ،LLaMAو Gemmaروی سرور محلی
• ابزار کانتینرسازی برای جداسازی سرویسها
• مدیریت ساده و مقیاسپذیر اجزا
• Portainerنرمافزار گرافیکی مانیتورینگ و مدیریت کانتینرها برای تسهیل کنترل سرویسها
.3پیشنیازها
(Ubuntu/Debian/CentOS)✓ یک سرور لینوکسی
Docker Compose وDocker ✓ نصب بودن
✓ منابع سختافزاری مناسب ( GPUاختیاری، اما توصیه میشود برای سرعت بالاتر)
.4دریافت ایمیج ها
ابتدا ایمیجهای لازم را از Docker Hubدریافت میکنیم:
docker pull dyrnq/open-webui
این سرویس روی پورت 3000میزبان اجرا شده و با متغیر محیطی زیر به سرویس Ollamaمتصل
میشود. این بخش امکان ارسال سوالات به مدل و دریافت پاسخها را از طریق رابط کاربری وب فراهم
میکند.
docker pull ollama/ollama
سپس کانتینری به نام ollamaایجاد و پورت 11434را به سیستم میزبان متصل نمایید. داده های مدل
روی مسیر محلی ./chat-bot/ollama_data/modelsذخیره میشوند. این کانتینر مسئول پاسخ به
درخواستهای پردازش زبان طبیعی است.
docker pull portainer
مدیریت کانتینرها با : Portainerپورتینر داشبورد گرافیکی برای مدیریت داکر است که بدون
نیاز به خط فرمان پیچیده، تمامی کانتینرها، لاگها و منابع را قابل مشاهده و کنترل میکند. این
سرویس روی پورت 9000فعال میشود و با سیاست امنیتی no-new-privileges:true
اجرا میگردد تا از افزایش مجوزهای ناخواسته جلوگیری کند.
در صورت داشتن فایل ایمیجها به صورت لوکال:
docker load -i open-webui
docker load -i ollama
Docker Compose. پیکربندی با5
یک فایل docker-compose.ymlمشابه زیر ایجاد کنید:
version: '3.9'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ./chat-bot/ollama_data/models:/data
environment:
- MODEL=meta-llama/Llama-3-70b-chat-hf
- MAX_NUM_SEQS=128
- TRUST_REMOTE_CODE=true
- VLLM_USE_MULTIGPU=true
restart: always
networks:
- app-tire
open-webui:
image: dyrnq/open-webui:latest
container_name: open-webui
depends_on:
- ollama
ports:
- "3000:3000"
volumes:
- ./chat-bot/openwebui_data:/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
extra_hosts:
- "host.docker.internal:host-gateway"
restart: always
networks:
- app-tire
portainer:
image: portainer/portainer-ce:2.14.1-alpine
container_name: portainer
restart: unless-stopped
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./chat-bot/portainer:/data
ports:
- 9000:9000
networks:
- app-tire
networks:
app-tire:
driver: bridge
.6اجرای سرویسها
:Docker composeاین ابزار این امکان را میدهد که می توانید کانفیگ containerهایی که
به هم مرتبط هستند را در یک فایل ymlمشخص کنید که به صورت docker-compose.yml
میباشد.
docker compose up –d

بعد از بالا آمدن کانتینرها، رابط کاربری در مرورگر در دسترس خواهد بود:
و همچنین میتوانید با استفاده از پورتینر ( )portainerکه یک رابط گرافیکی تحت وب برای
dockerاست، کانتینرها را مدیریت و مانتیورینگ یا نگهداری کنید، در مرورگر با پورت 9000
میتوانید به پورتینر دسترسی پیدا کنید؛
.7نصب مدلLLM
برای بارگذاری مدل (مثلا :)LLaMA 3.2
ollama pull llama3.2
حالا میتوانید مدل را داخل Open-WebUIاستفاده کنید.
.8مزایا و ویژگیها
✓ → Privacyدادههای شما داخل سرور باقی میماند.
.)LLaMA, Mistral, Gemma( → انتخاب آزادانه مدلهای مختلفFlexibility ✓
✓ → Scalabilityامکان افزودن سرویسهای جانبی مثل دیتابیس، حافظه بلندمدت ( Vector
،)DBیا اتصال به APIهای خارجی.
.CI/CD ، امکانDocker Compose → مدیریت ساده باDevOps Friendly ✓
.9نکات امنیتی و بهینه سازی
✓ استفاده از شبکه داخلی Dockerبرای کاهش دسترسی غیرمجاز
✓ محدود کردن دسترسی Portainerفقط به IPهای مجاز
✓ مانیتور مصرف حافظه و CPUمدل برای جلوگیری از اختلل سرویس
✓ پشتیبانگیری منظم از دادهها و مدلها
✓ بهروزرسانی منظم ایمیجها و رفع آسیبپذیریهای امنیتی