دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
دانشنامه مارال هاست دانشنامه مارال هاست
دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
  • banner shape
  • banner shape
  • plus icon
  • plus icon
دسته‌بندی نشده

ساخت سرور چت المنت بروی لینوکس

Shayan Kianpoor
31 Views
Share

Copy link

Docy theme

در این آموزش، نحوه راه‌اندازی یک سرور چت مبتنی بر Matrix (Synapse) به همراه Element Web و پنل مدیریت (Synapse Admin) روی لینوکس با استفاده از Docker را یاد می‌گیرید(داک همچنین نسخه element-web را ارائه میدهد و اگر مشتری درخواست کردند میتوانید آنرا نیز در مرحله 2 این آموزش در فایل compose درج کنید ، یعنی ساب دامنه ای که در browser چت را لود میکند)

ساخت سرور چت المنت بروی لینوکس

پیش‌نیازها

  • سرور لینوکسی (Ubuntu پیشنهاد می‌شود)
  • دسترسی root یا sudo
  • دامنه (مثلاً: c1.maral.chat)
  • باز بودن پورت‌های:
    • 80 (HTTP)
    • 443 (HTTPS)
    • 8008 (Matrix)
    • (Admin Panel) 8080

مرحله 1: نصب Docker

apt update -y
sudo apt install docker.io docker-compose -y
sudo systemctl enable docker
sudo systemctl start docker

توجه کنید که در این بخش بدلیل وضعیت اینترنت ایران احتمالا آپدیت درست انجام نشود بهمین دلیل پیشنهاد میشود که رپازتوری اوبونتو را به archive.ubuntu تغییر دهید ، برای سرور های ایران بصورت پیش فرض بروی ir.archive.ubuntu است .

مرحله 2: ایجاد ساختار پروژه

mkdir -p /opt/matrix
cd /opt/matrix/
nano docker-compose.yml

نمونه docker-compose.yml

version: "3.8"

services:

  synapse:
    image: matrixdotorg/synapse:latest
    container_name: synapse
    restart: unless-stopped
    volumes:
      - ./synapse:/data
    environment:
      - SYNAPSE_SERVER_NAME=c1.maral.chat
      - SYNAPSE_REPORT_STATS=no
    ports:
      - "8008:8008"
  synapse-admin:
    image: awesometechnologies/synapse-admin
    container_name: synapse-admin
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      - REACT_APP_SERVER=https://c1.maral.chat
  postgres:
    image: postgres:15
    container_name: matrix-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: strongpassword
      POSTGRES_DB: synapse
    volumes:
      - ./db:/var/lib/postgresql/data

  coturn:
    image: instrumentisto/coturn
    container_name: coturn
    restart: unless-stopped
    network_mode: host
    command: >
      -n
      --log-file=stdout
      --lt-cred-mech
      --fingerprint
      --realm=c1.maral.chat
      --user=turnuser:turnpass

توجه کنید در این بخش بدلیل وضعیت اینترنت ممکن است awesometechnologies/synapse-admin بدرستی دانلود نشود و یا هنگام لاگین به پنل سریع لاگ اوت شوید ، پیشنهاد میشود اگر دسترسی به مخزن داکر پایدار است نسخه پایدارتری از این image را دانلود کنید بصورت پیش فرض آخرین نسخه را نصب میکند که باگ دارد .

ساخت سرور چت المنت بروی لینوکس

مرحله 3: تولید فایل تنظیمات Synapse

docker run -it --rm \
-v /opt/matrix/synapse:/data \
-e SYNAPSE_SERVER_NAME=c1.maral.chat \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate

مرحله 4: اجرای سرویس‌ها

docker-compose up -d
docker ps

با دستور اول هر کدی که در فایل کامپوز زده شده اجرا میشود و سرویس ها بروی پورت هایی که تعیین شده ران میشود ، دستور دوم نشان میدهد که آیا سرویس های ما بروی پورت نظر اجرا شده اند یا خیر .

مرحله 5: نصب و تنظیم Nginx

sudo apt install nginx certbot python3-certbot-nginx -y
nano /etc/nginx/sites-available/matrix

کانفیگ Nginx

# =========================
# c1.maral.chat (Synapse)
# =========================

server {
    listen 80;
    server_name c1.maral.chat;
    client_max_body_size 50M;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name c1.maral.chat;
    client_max_body_size 50M;
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/c1.maral.chat.key;

    location / {
        proxy_pass http://127.0.0.1:8008;

        proxy_set_header Host $host;
        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 https;
        proxy_set_header X-Forwarded-Host $host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# =========================
# c1admin.maral.chat (Admin UI)
# =========================

server {
    listen 80;
    server_name c1admin.maral.chat;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name c1admin.maral.chat;
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/c1.maral.chat.key;

    location / {
        proxy_pass http://127.0.0.1:8080;

        proxy_set_header Host $host;
        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 https;
        proxy_set_header X-Forwarded-Host $host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# =========================
# maral.chat (.well-known)
# =========================

server {
    listen 80;
    server_name maral.chat;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name maral.chat;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/c1.maral.chat.key;

    location /.well-known/matrix/client {
        default_type application/json;
        return 200 '{"m.homeserver":{"base_url":"https://c1.maral.chat"}}';
    }

    location /.well-known/matrix/server {
        default_type application/json;
        return 200 '{"m.server":"c1.maral.chat:443"}';
    }
}

چند مورد را در فایل کانفیگ nginx رعایت کنید :

1- مسیر فایل های ssl (این بخش را در مرحله 6 بصورت عملی توضیح داده ام)

قبل از انجام فایل های ssl خود شامل fullchain.pem (فایل اصلی و باندل ها) و pkey را بسازید و پرمیژن های لازم را بدهید .(در این مثال ما فایل ssl آماده wildcard داشتیم ، شما میتوانید از طریق certbot سه ماهه نصب کنید و تنظیم کنید در فایل )

2- بخش well-known را داخل فایل تعیین کنید زیرا نسخه اپلیکشن موبایل این برنامه هنگام لاگین خطا میدهید به نبود آن .

فعال‌سازی:

ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

مرحله 6: تنظیم SSL

mkdir -p /etc/nginx/ssl
nano /etc/nginx/ssl/fullchain.pem
nano /etc/nginx/ssl/c1.maral.chat.key

یا ساده‌تر با Certbot:

certbot --nginx -d c1.maral.chat

تست نهایی

curl c1.maral.chat
docker ps

ساخت کاربر در Matrix

docker exec -it synapse register_new_matrix_user \
-c /data/homeserver.yaml \
http://localhost:8008

توجه کنید که ممکن است این دستور نیاز به صدا زدن key مخصوص در دستور میباشد ، اگر چنین شد با دستور grep متن خطا و key را پیدا کنید و در دستور با “” صدا بزنید .

ساخت سرور چت المنت بروی لینوکس

دستورات کاربردی مدیریت کاربران

ساخت یوزر ادمین

docker exec -it synapse bash -c "register_new_matrix_user http://localhost:8008 -u USERNAME -p PASSWORD --admin"

تغییر پسورد

docker exec -it synapse bash -c "register_new_matrix_user http://localhost:8008 -u USERNAME -p NEWPASSWORD --admin"

حذف (غیرفعال کردن) کاربر

docker exec -it synapse deactivate_account -u USERNAME

ریستارت سرویس‌ها

docker restart synapse
docker restart synapse-admin

کار با پنل مدیریت (Synapse Admin)

بعد از بالا آمدن سرویس:

http://YOUR-IP:8080

یا از طریق دامنه.

ساخت سرور چت المنت بروی لینوکس

ورود به پنل

  • با یوزری که ساختی (ترجیحاً ادمین)
  • اگر ادمین نباشد، دسترسی محدود دارد

امکانات پنل ادمین

مدیریت کاربران

  • مشاهده لیست کاربران
  • ساخت کاربر جدید
  • تغییر پسورد
  • ادمین کردن کاربران
  • مسدود کردن (Deactivate)

مدیریت روم‌ها (Rooms)

  • مشاهده تمام روم‌ها
  • حذف یا بستن روم‌ها
  • دیدن اعضا

مانیتورینگ سرور

  • تعداد کاربران آنلاین
  • وضعیت سرور
  • لاگ‌ها

مدیریت Abuse

  • بررسی گزارش‌ها
  • مدیریت کاربران متخلف

نکات مهم و حرفه‌ای

1. تنظیم homeserver.yaml

cd /opt/matrix/synapse
nano homeserver.yaml

نمونه فایل homeserver :

# Configuration file for Synapse.
#
# This is a YAML file: see [1] for a quick introduction. Note in particular
# that *indentation is important*: all the elements of a list or dictionary
# should have the same indentation.
#
# [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
#
# For more information on how to configure Synapse, including a complete accounting of
# each option, go to docs/usage/configuration/config_documentation.md or
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
server_name: "c1.maral.chat"
public_baseurl: "https://c1.maral.chat/"
max_upload_size: "50M"
cors_origins:
  - https://c1admin.maral.chat
  - https://c1.maral.chat
pid_file: /data/homeserver.pid
listeners:
  - port: 8008
    tls: false
    type: http
    x_forwarded: true
    resources:
      - names: [client, federation]
        compress: false
database:
  name: sqlite3
  args:
    database: /data/homeserver.db
log_config: "/data/c1.maral.chat.log.config"
media_store_path: /data/media_store
registration_shared_secret: "OhdwCo1j9W=biDt=oLNHkyts65S&rygJr:zMLnTC8n*4kel;u2"
report_stats: false
macaroon_secret_key: "xld5^BM2Di4@7;JCkGwS4wi+exzO3eHjNNYDm^BXYGJ#D93Dlm"
form_secret: "c8+V,SAvNeH86rvv;k3X*fvI#+M6~uYWEz^QE8,TeC8Lxgam&3"
signing_key_path: "/data/c1.maral.chat.signing.key"
trusted_key_servers:
  - server_name: "matrix.org"
enable_voip: true

turn_uris:
  - "turn:c1rtc.maral.chat:3478?transport=udp"

turn_shared_secret: "supersecret"
turn_user_lifetime: 86400000
turn_allow_guests: true

trusted_reverse_proxies:
  - 127.0.0.1
  - ::1

# vim:ft=yaml

موارد مهم:

  • فعال کردن registration (در صورت نیاز):
enable_registration: true
  • تنظیم trusted proxies (برای nginx)

2. پورت‌های مهم

پورتکاربرد
8008Synapse
8080Admin Panel
80/443Nginx

ساخت سرور چت المنت بروی لینوکس

3. بررسی وضعیت

docker ps
curl http://127.0.0.1:8008

4. رفع مشکل

اگر سرویس بالا نیامد:

docker logs synapse

کیان پور

پست‌های مرتبط

1 minute دسته‌بندی نشده

CXS چیست و چگونه کار می‌کن...

CXS یک ابزار امنیتی پیشرفته است ...

2 minutes دسته‌بندی نشده

Geo Routing و Geo DNS

1. مقدمهبا رشد سرویس‌های این...

نظرات خود را بنویسید... لغو پاسخ

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

خرید هاست

  • هاست لینوکس
  • هاست ویندوز
  • هاست وردپرس
  • هاست ووکامرس
  • هاست دانلود
  • هاست نمایندگی
  • سرویس ایمیل OpenSRS

خرید سرور

  • سرور مجازی ایران
  • سرور مجازی اروپا
  • سرور مجازی فرانسه
  • سرور مجازی آلمان
  • سرور مجازی فنلاند
  • ثبت دامنه
  • گواهینامه SSL

دسترسی سریع

  • بلاگ
  • تماس با ما
  • ورود به ناحیه کاربری
  • ارسال تیکت پشتیبانی
  • قوانین استفاده از خدمات

تمام حقوق این وب سایت متعلق به میزبانی وب مارال هاست می باشد © 2025

ساخت سرور چت المنت بروی لینوکس

Or copy link

Clipboard Icon