نصب و راهاندازی VaniaPBX
سه راه برای راهاندازی: داکر روی سرور موجود، نصب مستقیم با ISO، یا ماشین مجازی آمادهٔ OVA/OVF. روش داکر پیشنهاد ماست. فایل موردنظر را دانلود و مرحلهبهمرحله پیش بروید.
نصب مستقیم روی سرور فیزیکی یا ماشین مجازی. کل دیسک پاک و سیستمعامل بههمراه VaniaPBX نصب میشود.
vaniapbx-1.0.0-amd64-iso.zipیک فایل واحد و آمادهٔ Import برای VMware، VirtualBox و Proxmox. سادهترین راه راهاندازی.
vaniapbx-1.0.0-amd64-ova.zipسه فایل .ovf و .vmdk و .mf برای مجازیسازهایی که OVF جدا میخواهند (مثل ESXi قدیمی).
vaniapbx-1.0.0-amd64-ovf.zipاگر روی سرور خودتان از قبل لینوکس و Docker دارید، این سادهترین و سریعترین راه است. کل VaniaPBX در یک ایمیج آماده بستهبندی شده: هستهٔ برنامه، Asterisk، پایگاهداده، Redis، RabbitMQ و Nginx همه داخل همان یک کانتینر بالا میآیند. نیازی به نصب جداگانهٔ هیچکدام ندارید.
پیش از شروع
مطمئن شوید سرور شما اینها را دارد:
- یک توزیع لینوکس بهروز با Docker Engine و افزونهٔ Docker Compose
- معماری amd64، حداقل ۴ گیگابایت رم (برای ترافیک سنگین ۸ گیگ یا بیشتر)
- یک IP عمومی ثابت یا NAT درست تنظیمشده
- دسترسی root یا عضویت در گروه docker
- زمان درست سیستم و همگامسازی NTP
برای اطمینان از نصب بودن داکر، این دو دستور را بگیرید:
docker version
docker compose versionپورتهایی که باید باز باشند
این پورتها باید هم در فایروال سرور و هم در فایروال ابری (Security Group) باز باشند. توجه کنید که بدون بازهٔ RTP، تماسها برقرار میشوند ولی صدا رد و بدل نمیشود.
| پورت | پروتکل | کاربرد |
|---|---|---|
| 80 | TCP | پنل وب و API |
| 5060 | UDP و TCP | سیگنالینگ PJSIP |
| 5061 | TCP | SIP روی TLS |
| 5160 | UDP | سرویس SIP قدیمی (Legacy) |
| 4569 | UDP | IAX2 |
| 8089 | TCP | WebSocket امن برای WebRTC |
| 10000-10100 | UDP | بازهٔ پیشفرض صدای RTP |
| 3478 / 5349 | UDP / TCP | سرور TURN داخلی (اگر در پنل فعال شود) |
نمونهٔ قواعد فایروال با UFW:
sudo ufw allow 80/tcp
sudo ufw allow 5060/tcp
sudo ufw allow 5060/udp
sudo ufw allow 5061/tcp
sudo ufw allow 5160/udp
sudo ufw allow 4569/udp
sudo ufw allow 8089/tcp
sudo ufw allow 10000:10100/udp
sudo ufw allow 3478/udp
sudo ufw allow 3478/tcp
sudo ufw allow 5349/tcp
sudo ufw allow 49160:49200/udp
sudo ufw status verboseآماده کردن فضای ذخیرهسازی دائمی
همهٔ اطلاعات شما — پایگاهداده، ضبط تماسها، پیغامگیر، تنظیمات و کلیدهای محرمانه — زیر مسیر /var/lib/vaniapbx داخل یک والیوم داکر ذخیره میشود. پیش از اجرا آن را بسازید:
docker volume create vaniapbx-data
sudo install -d -m 0755 /opt/vaniapbx/logs
docker volume inspect vaniapbx-dataنصب کامل با Docker Compose (پیشنهادی)
روش Compose تمیزتر است چون تنظیمات را در دو فایل نگه میدارد. اول پوشهٔ نصب را بسازید:
sudo install -d -m 0750 /opt/vaniapbx
cd /opt/vaniapbx
sudo install -d -m 0755 logs
docker volume create vaniapbx-dataحالا فایل /opt/vaniapbx/.env را بسازید. رمز مدیر را یک رشتهٔ تصادفی و دستکم ۱۲ کاراکتری بگذارید و بهجای 203.0.113.10 آدرس عمومی سرور خودتان را بنویسید:
VANIAPBX_IMAGE=vaniapbx/vpbx:astrekis-22
VANIAPBX_PUBLIC_ADDRESS=203.0.113.10
VANIAPBX_ADMIN_USERNAME=Admin
VANIAPBX_ADMIN_PASSWORD=replace-with-a-long-random-password
VANIAPBX_ADMIN_EMAIL=admin@example.com
VANIAPBX_ADMIN_FIRST_NAME=Vania
VANIAPBX_ADMIN_LAST_NAME=Administrator
VANIAPBX_TIMEZONE=Asia/Tehran
VANIAPBX_RTP_START=10000
VANIAPBX_RTP_END=10100فایل محیط را قفل کنید تا فقط root بخواندش:
sudo chown root:root /opt/vaniapbx/.env
sudo chmod 0600 /opt/vaniapbx/.envسپس فایل /opt/vaniapbx/compose.yml را با این محتوا بسازید:
name: vaniapbx
services:
vaniapbx:
image: ${VANIAPBX_IMAGE}
container_name: vaniapbx
restart: unless-stopped
cap_add:
- NET_ADMIN
- NET_RAW
environment:
PBX_ADMIN_USERNAME: ${VANIAPBX_ADMIN_USERNAME}
PBX_ADMIN_PASSWORD: ${VANIAPBX_ADMIN_PASSWORD}
PBX_ADMIN_EMAIL: ${VANIAPBX_ADMIN_EMAIL}
PBX_ADMIN_FIRST_NAME: ${VANIAPBX_ADMIN_FIRST_NAME}
PBX_ADMIN_LAST_NAME: ${VANIAPBX_ADMIN_LAST_NAME}
PBX_PRINT_INITIAL_CREDENTIALS: "false"
PBX_TIMEZONE: ${VANIAPBX_TIMEZONE}
ASTERISK_EXTERNAL_ADDRESS: ${VANIAPBX_PUBLIC_ADDRESS}
ASTERISK_RTP_START: ${VANIAPBX_RTP_START}
ASTERISK_RTP_END: ${VANIAPBX_RTP_END}
ports:
- "80:80/tcp"
- "5060:5060/udp"
- "5060:5060/tcp"
- "5061:5061/tcp"
- "5160:5160/udp"
- "4569:4569/udp"
- "8089:8089/tcp"
- "10000-10100:10000-10100/udp"
- "3478:3478/udp"
- "3478:3478/tcp"
- "5349:5349/tcp"
- "49160-49200:49160-49200/udp"
volumes:
- vaniapbx-data:/var/lib/vaniapbx
- /opt/vaniapbx/logs:/var/log/vaniapbx
- /etc/machine-id:/host/etc/machine-id:ro
- /sys/class/dmi/id:/host/sys/class/dmi/id:ro
security_opt:
- no-new-privileges:true
stop_grace_period: 90s
volumes:
vaniapbx-data:
external: true
name: vaniapbx-dataدر پایان، پیکربندی را بررسی و سرویس را بالا بیاورید:
cd /opt/vaniapbx
docker compose config
docker compose pull
docker compose up -d
docker compose psراهاندازی سریع بدون Compose (اختیاری)
اگر ترجیح میدهید بدون فایل Compose و با یک دستور کار کنید:
docker pull vaniapbx/vpbx:astrekis-22
docker run --detach \
--name vaniapbx \
--restart unless-stopped \
--cap-add NET_ADMIN \
--cap-add NET_RAW \
--env PBX_ADMIN_USERNAME=Admin \
--env PBX_ADMIN_PASSWORD='replace-with-a-long-random-password' \
--env PBX_ADMIN_EMAIL=admin@example.com \
--env ASTERISK_EXTERNAL_ADDRESS=203.0.113.10 \
--env ASTERISK_RTP_START=10000 \
--env ASTERISK_RTP_END=10100 \
--publish 80:80/tcp \
--publish 5060:5060/udp \
--publish 5060:5060/tcp \
--publish 5061:5061/tcp \
--publish 5160:5160/udp \
--publish 4569:4569/udp \
--publish 8089:8089/tcp \
--publish 10000-10100:10000-10100/udp \
--volume vaniapbx-data:/var/lib/vaniapbx \
--volume /opt/vaniapbx/logs:/var/log/vaniapbx \
--volume /etc/machine-id:/host/etc/machine-id:ro \
--volume /sys/class/dmi/id:/host/sys/class/dmi/id:ro \
vaniapbx/vpbx:astrekis-22بررسی اولین اجرا
اولین بالا آمدن ممکن است چند دقیقه طول بکشد. تا سالم شدن (healthy) صبر کنید:
docker inspect --format '{{.State.Health.Status}}' vaniapbx
docker logs --follow --tail 200 vaniapbxوضعیت سرویسهای داخلی و Asterisk را هم میتوانید ببینید:
docker exec vaniapbx supervisorctl status
docker exec vaniapbx asterisk -rx 'core show version'
docker exec vaniapbx asterisk -rx 'pjsip show endpoints'
curl --fail --silent --show-error http://127.0.0.1/ >/dev/nullحالا در مرورگر http://SERVER_IP/ را باز کنید و با نام کاربری و رمزی که در .env گذاشتید وارد شوید.
پشتیبانگیری و بازیابی
یک بکاپ منطقی و فشرده از پایگاهداده بگیرید:
sudo install -d -m 0700 /opt/vaniapbx/backups
sudo docker exec vaniapbx sh -lc '
export PGPASSWORD="$(cat /var/lib/vaniapbx/secrets/POSTGRES_PASSWORD)"
exec pg_dump -h 127.0.0.1 \
-U "$(cat /var/lib/vaniapbx/secrets/POSTGRES_USER)" \
-d vaniapbx --format=custom --no-owner --no-acl
' > /opt/vaniapbx/backups/vaniapbx-$(date +%F-%H%M%S).dumpارتقا بدون از دست دادن داده
اول بکاپ بگیرید، بعد مقدار VANIAPBX_IMAGE را در .envبه تگ نسخهٔ جدید تغییر دهید و اجرا کنید. والیوم vaniapbx-data دستنخورده میماند و مهاجرتهای دیتابیس هنگام بالا آمدن خودکار اجرا میشوند:
cd /opt/vaniapbx
docker compose pull
docker compose up -d
docker compose ps