Copy link
اگر قصد دارید یک پیامرسان کاملاً خصوصی، متنباز و مستقل مشابه Slack یا Microsoft Teams راهاندازی کنید، Matrix یکی از بهترین گزینههاست. در این آموزش، یک سرور کامل Matrix را با استفاده از Docker روی Ubuntu 24.04 نصب میکنیم.
در پایان این آموزش سرویسهای زیر در اختیار شما خواهند بود:
این راهنما شامل نصب و پیکربندی موارد زیر است:
قبل از شروع، موارد زیر را آماده کنید:
Internet │ ▼ Nginx (SSL) │ ┌────┴───────────────┐ │ │ ▼ ▼ Synapse Element Web │ ▼ Coturn (TURN)
ابتدا رکوردهای DNS دامنه را ایجاد کنید.
هر سه رکورد باید به IP اصلی سرور اشاره کنند.
پس از اعمال DNS بهتر است چند دقیقه تا چند ساعت منتظر انتشار رکوردها بمانید.
ابتدا سیستم را بروزرسانی کنید.
sudo apt update sudo apt upgrade -y
سپس Docker و Nginx را نصب نمایید.
sudo apt install -y docker.io docker-compose-v2 nginx
فعالسازی سرویس Docker
sudo systemctl enable docker sudo systemctl start docker
بررسی نصب
docker --version docker compose version
در برخی نسخههای Ubuntu ممکن است نسخه موجود در Repository قدیمی باشد. در این حالت Docker را از مخزن رسمی نصب کنید.
ابتدا نسخههای قبلی را حذف نمایید.
sudo apt remove docker docker-engine docker.io containerd runc
نصب پیشنیازها
sudo apt update sudo apt install -y ca-certificates curl gnupg nginx
ایجاد Keyring
sudo install -m 0755 -d /etc/apt/keyrings
دانلود GPG Key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
تنظیم Permission
sudo chmod a+r /etc/apt/keyrings/docker.gpg
افزودن Repository رسمی Docker
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
نصب Docker
sudo apt update sudo apt install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin
بررسی نسخه
در صورت استفاده از UFW، پورتهای زیر را باز کنید.
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 3478/tcp sudo ufw allow 5349/tcp sudo ufw allow 49152:49200/udp
این پورتها برای HTTPS و عملکرد صحیح TURN Server موردنیاز هستند.
mkdir -p ~/matrix-stack cd ~/matrix-stack
فایل زیر را ایجاد کنید.
nano docker-compose.yml
محتوا:
services: synapse: image: matrixdotorg/synapse:latest container_name: synapse restart: unless-stopped volumes: - ./synapse/data:/data environment: - SYNAPSE_SERVER_NAME=dataton.ir - SYNAPSE_REPORT_STATS=no ports: - "127.0.0.1:8008:8008" element: image: vectorim/element-web:latest container_name: element restart: unless-stopped volumes: - ./element/config.json:/app/config.json:ro ports: - "127.0.0.1:8080:80" coturn: image: coturn/coturn container_name: coturn restart: unless-stopped network_mode: host volumes: - ./coturn/turnserver.conf:/etc/coturn/turnserver.conf
ذخیره فایل:
CTRL + O ENTER CTRL + X
ابتدا مسیر داده را ایجاد کنید.
mkdir -p synapse/data
سپس فایلهای اولیه را تولید کنید.
docker run -it --rm \ -v ~/matrix-stack/synapse/data:/data \ -e SYNAPSE_SERVER_NAME=dataton.ir \ -e SYNAPSE_REPORT_STATS=no \ matrixdotorg/synapse:latest generate
با پایان این مرحله فایل اصلی homeserver.yaml ایجاد خواهد شد.
homeserver.yaml
فایل زیر را باز کنید.
nano ~/matrix-stack/synapse/data/homeserver.yaml
در انتهای فایل، قبل از بخش:
# vim:ft=yaml
کد زیر را اضافه کنید.
turn_uris: - "turn:turn.dataton.ir:3478?transport=udp" - "turn:turn.dataton.ir:3478?transport=tcp" turn_shared_secret: "DatatonTurnSecretStrong" turn_user_lifetime: 1h turn_allow_guests: true enable_registration: false
ابتدا پوشه مربوطه را ایجاد کنید.
mkdir -p ~/matrix-stack/coturn
فایل تنظیمات را بسازید.
nano ~/matrix-stack/coturn/turnserver.conf
use-auth-secret static-auth-secret=DatatonTurnSecretStrong realm=turn.dataton.ir fingerprint listening-port=3478 min-port=49152 max-port=49200 total-quota=100 bps-capacity=0 stale-nonce no-loopback-peers no-multicast-peers
نکته مهم: مقدار turn_shared_secret در فایل Synapse و مقدار static-auth-secret در فایل Coturn باید دقیقاً یکسان باشند.
turn_shared_secret
static-auth-secret
پوشه مربوط به Element را ایجاد کنید.
mkdir -p ~/matrix-stack/element
فایل تنظیمات را ایجاد نمایید.
nano ~/matrix-stack/element/config.json
{ "default_server_config": { "m.homeserver": { "base_url": "https://dataton.ir", "server_name": "dataton.ir" } }, "disable_custom_urls": true, "disable_guests": false, "brand": "Dataton Chat" }
پوشه گواهی را ایجاد کنید.
sudo mkdir -p /etc/ssl/dataton
تنظیم سطح دسترسی
sudo chmod 700 /etc/ssl/dataton
فایل Certificate
sudo nano /etc/ssl/dataton/fullchain.pem
محتوای Certificate خود را در این فایل قرار دهید.
فایل Private Key
sudo nano /etc/ssl/dataton/privkey.pem
کلید خصوصی SSL را در این فایل قرار دهید.
در پایان سطح دسترسی را محدود کنید.
sudo chmod 600 /etc/ssl/dataton/*
فایل Virtual Host را ایجاد کنید.
sudo nano /etc/nginx/sites-available/dataton.ir
server { listen 443 ssl http2; server_name dataton.ir; ssl_certificate /etc/ssl/dataton/fullchain.pem; ssl_certificate_key /etc/ssl/dataton/privkey.pem; client_max_body_size 100M; location / { proxy_pass http://127.0.0.1:8008; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; } }
sudo nano /etc/nginx/sites-available/web.dataton.ir
server { listen 443 ssl http2; server_name web.dataton.ir; ssl_certificate /etc/ssl/dataton/fullchain.pem; ssl_certificate_key /etc/ssl/dataton/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; } }
sudo ln -s /etc/nginx/sites-available/dataton.ir \ /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/web.dataton.ir \ /etc/nginx/sites-enabled/
sudo nginx -t
در صورت مشاهده پیام موفقیت:
sudo systemctl reload nginx
cd ~/matrix-stack docker compose up -d
docker ps
باید سه کانتینر زیر در وضعیت Running باشند.
docker exec -it synapse register_new_matrix_user \ -c /data/homeserver.yaml \ http://localhost:8008
نمونه اطلاعات:
Username : admin Password : StrongPassword Make Admin : yes
مرورگر را باز کنید.
https://web.dataton.ir
ورود با یکی از فرمتهای زیر انجام میشود.
@admin:dataton.ir
یا
admin
در قسمت Server نیز مقدار زیر را وارد کنید.
dataton.ir
برای بررسی عملکرد TURN Server، حداقل دو حساب کاربری ایجاد کنید.
سپس با استفاده از:
یک تماس صوتی و سپس تماس تصویری برقرار کنید.
در صورتی که تماس در شبکههای مختلف (اینترنت همراه، وایفای و…) بدون مشکل برقرار شود، راهاندازی TURN Server نیز با موفقیت انجام شده است.
در این آموزش یک زیرساخت کامل Matrix بر پایه Docker راهاندازی شد که شامل موارد زیر است:
این ساختار برای استفادههای شخصی، سازمانی و تیمی مناسب بوده و به دلیل استفاده از Docker، نگهداری، بروزرسانی و توسعه آن در آینده نیز سادهتر خواهد بود.
کیان پور
مقدمهRustDesk یکی از محبوبتری...
CXS یک ابزار امنیتی پیشرفته است ...
در این آموزش، نحوه راهاندازی...
1. مقدمهبا رشد سرویسهای این...
ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
Or copy link