สร้างเซิร์ฟเวอร์การสนทนาโดยใช้ Matrix Synapse และ Riot บน CentOS 7

เมทริกซ์เป็นโปรโตคอลการสื่อสารมาตรฐานแบบเปิดสำหรับการสื่อสารแบบกระจายอำนาจตามเวลาจริง เมทริกซ์ถูกนำมาใช้เป็นเซิร์ฟเวอร์ภายในบ้านซึ่งกระจายผ่านอินเทอร์เน็ต ดังนั้นจึงไม่มีจุดควบคุมหรือล้มเหลวเพียงจุดเดียว เมทริกซ์จัดหา RESTful HTTP API สำหรับการสร้างและจัดการเซิร์ฟเวอร์แชทแบบกระจายซึ่งรวมถึงการส่งและรับข้อความการเชิญและการจัดการสมาชิกห้องสนทนาการดูแลบัญชีผู้ใช้และการให้บริการคุณสมบัติการแชทขั้นสูงเช่น VoIP และวิดีโอเป็นต้น การซิงโครไนซ์ที่ปลอดภัยระหว่างโฮมเซิร์ฟเวอร์ซึ่งกระจายอยู่ทั่วโลก

ไซแนปส์เป็นการใช้งานเซิร์ฟเวอร์ภายในบ้านของ Matrix ซึ่งเขียนโดยทีมเมทริกซ์ ระบบนิเวศของเมทริกซ์ประกอบด้วยเครือข่ายของโฮมเซิร์ฟเวอร์รวมจำนวนมากกระจายอยู่ทั่วโลก ผู้ใช้เมทริกซ์ใช้โปรแกรมแชทเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ภายในบ้านซึ่งจะเชื่อมต่อกับเครือข่ายเมทริกซ์ Homeserver เก็บประวัติการแชทและข้อมูลการเข้าสู่ระบบของผู้ใช้นั้น

ข้อกำหนดเบื้องต้น

  • อินสแตนซ์ของเซิร์ฟเวอร์ Vultr CentOS 7
  • sudo ผู้ใช้

ในบทช่วยสอนนี้เราจะใช้matrix.example.comเป็นชื่อโดเมนที่ใช้สำหรับ Matrix Synapse แทนที่การเกิดขึ้นทั้งหมดmatrix.example.comด้วยชื่อโดเมนจริงของคุณที่คุณต้องการใช้สำหรับเซิร์ฟเวอร์โฮมของคุณไซแนปส์

ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง CentOS 7 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง Python

ติดตั้งเครื่องมือพัฒนา

Matrix Synapse ต้องการ Python 2.7 เพื่อให้ทำงานได้ Python 2.7 ติดตั้งล่วงหน้าในอินสแตนซ์ของเซิร์ฟเวอร์ CentOS ทั้งหมด คุณสามารถตรวจสอบเวอร์ชันของ Python ที่ติดตั้งไว้ได้

python -V

คุณควรได้ผลลัพธ์ที่คล้ายกัน

[user@vultr ~]$ python -V
Python 2.7.5

การเปลี่ยนเวอร์ชั่นเริ่มต้นของ Python อาจทำให้ตัวจัดการพื้นที่เก็บข้อมูล YUM แตก อย่างไรก็ตามหากคุณต้องการ Python เวอร์ชันล่าสุดคุณสามารถทำการติดตั้งสำรองโดยไม่ต้องแทนที่ Python เริ่มต้น

ติดตั้งแพ็กเกจในDevelopment toolsกลุ่มที่จำเป็นสำหรับการรวบรวมไฟล์ตัวติดตั้ง

sudo yum groupinstall -y "Development tools"

ติดตั้งการอ้างอิงที่จำเป็นอีกสองสามข้อ

sudo yum -y install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel redhat-rpm-config python-virtualenv libffi-devel openssl-devel 

ติดตั้ง Python pip Pip เป็นตัวจัดการการพึ่งพาสำหรับแพ็คเกจ Python

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

ติดตั้งไซแนปส์

สร้างสภาพแวดล้อมเสมือนจริงสำหรับแอปพลิเคชันไซแนปส์ของคุณ สภาพแวดล้อมเสมือน Python ใช้เพื่อสร้างสภาพแวดล้อมเสมือนจริงที่แยกได้สำหรับโครงการ Python สภาพแวดล้อมเสมือนประกอบด้วยไดเรกทอรีการติดตั้งของตัวเองและไม่แชร์ไลบรารีกับสภาพแวดล้อมแบบโกลบอลและอื่น ๆ

sudo virtualenv -p python2.7 /opt/synapse

ระบุความเป็นเจ้าของไดเรกทอรีให้กับผู้ใช้ปัจจุบัน

sudo chown -R $USER:$USER /opt/synapse/

ตอนนี้เปิดใช้งานสภาพแวดล้อมเสมือนจริง

source /opt/synapse/bin/activate

ตรวจสอบให้แน่ใจว่าคุณมีเวอร์ชันล่าสุดและpipsetuptools

pip install --upgrade pip 
pip install --upgrade setuptools

ติดตั้งไซแนปส์รุ่นล่าสุดโดยใช้ pip

pip install https://github.com/matrix-org/synapse/tarball/master

คำสั่งดังกล่าวจะใช้เวลาในการดำเนินการตามที่ดึงและติดตั้งรุ่นล่าสุดของไซแนปส์และการอ้างอิงทั้งหมดจากพื้นที่เก็บข้อมูล Github

การติดตั้งและกำหนดค่า PostgreSQL

ไซแนปส์ใช้ SQLite เป็นฐานข้อมูลเริ่มต้น SQLite เก็บข้อมูลในฐานข้อมูลซึ่งถูกเก็บเป็นไฟล์แฟล็ตบนดิสก์ การใช้ SQLite นั้นง่ายมาก แต่ไม่แนะนำสำหรับการผลิตเนื่องจากช้ามากเมื่อเทียบกับ PostgreSQL

PostgreSQL เป็นระบบฐานข้อมูลเชิงวัตถุ คุณจะต้องเพิ่มที่เก็บ PostgreSQL ในระบบของคุณเนื่องจากแอปพลิเคชันไม่สามารถใช้ได้ในที่เก็บ YUM เริ่มต้น

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

ติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL

sudo yum -y install postgresql96-server postgresql96-contrib

เริ่มต้นฐานข้อมูล

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

แก้ไขการ/var/lib/pgsql/9.6/data/pg_hba.confเปิดใช้งานการรับรองความถูกต้องโดยใช้ MD5

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

ค้นหาบรรทัดต่อไปนี้และการเปลี่ยนแปลงpeerไปtrustและการidnetmd5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            idnet
# IPv6 local connections:
host    all             all             ::1/128                 idnet

เมื่ออัปเดตแล้วการกำหนดค่าควรมีลักษณะเช่นนี้

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

เริ่มเซิร์ฟเวอร์ PostgreSQL และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูต

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

เปลี่ยนรหัสผ่านสำหรับผู้ใช้ PostgreSQL เริ่มต้น

sudo passwd postgres

เข้าสู่ระบบ.

sudo su - postgres

สร้างผู้ใช้ PostgreSQL ใหม่สำหรับไซแนปส์

createuser synapse

PostgreSQL จัดเตรียมpsqlเชลล์เพื่อรันเคียวรีบนฐานข้อมูล สลับไปยังเชลล์ PostgreSQL โดยเรียกใช้

psql

ตั้งรหัสผ่านสำหรับผู้ใช้ที่สร้างขึ้นใหม่สำหรับฐานข้อมูลไซแนปส์

ALTER USER synapse WITH ENCRYPTED password 'DBPassword';

แทนที่DBPasswordด้วยรหัสผ่านที่คาดเดายากและจดบันทึกไว้เพราะเราจะใช้รหัสผ่านในภายหลัง สร้างฐานข้อมูลใหม่สำหรับฐานข้อมูล PostgreSQL

CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;

ออกจากpsqlเปลือก

\q

เปลี่ยนเป็นsudoผู้ใช้จากpostgresผู้ใช้ปัจจุบัน

exit

คุณจะต้องติดตั้งแพ็กเกจที่จำเป็นสำหรับ Synapse เพื่อสื่อสารกับเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL

sudo yum -y install postgresql-devel libpqxx-devel.x86_64
source /opt/synapse/bin/activate
pip install psycopg2

การกำหนดค่าไซแนปส์

ไซแนปส์ต้องการไฟล์การกำหนดค่าก่อนจึงจะสามารถเริ่มต้นได้ ไฟล์คอนฟิกูเรชันเก็บการตั้งค่าเซิร์ฟเวอร์ สลับไปที่สภาพแวดล้อมเสมือนจริงและสร้างการกำหนดค่าสำหรับไซแนปส์

source /opt/synapse/bin/activate
cd /opt/synapse
python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes

แทนที่matrix.example.comด้วยชื่อโดเมนจริงของคุณและตรวจสอบให้แน่ใจว่าชื่อเซิร์ฟเวอร์สามารถแก้ไขได้กับที่อยู่ IP ของอินสแตนซ์ Vultr ของคุณ จัดเตรียม--report-stats=yesหากคุณต้องการให้เซิร์ฟเวอร์สร้างรายงานจัดทำขึ้น--report-stats=noเพื่อปิดใช้งานการสร้างรายงานและสถิติ

คุณควรเห็นผลลัพธ์ที่คล้ายกัน

(synapse)[user@vultr synapse]$ python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
A config file has been generated in 'homeserver.yaml' for server name 'matrix.example.com' with corresponding SSL keys and self-signed certificates. Please review this file and customise it to your needs.
If this server name is incorrect, you will need to regenerate the SSL certificates

โดยค่าเริ่มต้���การhomeserver.yamlกำหนดค่าให้ใช้ฐานข้อมูล SQLite เราจำเป็นต้องแก้ไขเพื่อใช้ฐานข้อมูล PostgreSQL ที่เราสร้างขึ้นก่อนหน้านี้

homeserver.yamlแก้ไขที่สร้างขึ้นใหม่

nano homeserver.yaml

ค้นหาการกำหนดค่าฐานข้อมูลที่มีอยู่ซึ่งใช้ SQLite3 แสดงความคิดเห็นออกบรรทัดที่แสดงด้านล่าง นอกจากนี้ให้เพิ่มการกำหนดค่าฐานข้อมูลใหม่สำหรับ PostgreSQL ตรวจสอบให้แน่ใจว่าคุณใช้ข้อมูลรับรองฐานข้อมูลที่ถูกต้อง

# Database configuration
#database:
  # The database engine name
  #name: "sqlite3"
  # Arguments to pass to the engine
  #args:
    # Path to the database
    #database: "/opt/synapse/homeserver.db"


database:
    name: psycopg2
    args:
        user: synapse
        password: DBPassword
        database: synapse
        host: localhost
        cp_min: 5
        cp_max: 10

การลงทะเบียนผู้ใช้ใหม่จากเว็บอินเตอร์เฟสจะถูกปิดใช้งานตามค่าเริ่มต้น ต้องการเปิดใช้งานการลงทะเบียนคุณสามารถตั้งค่าการenable_registration Trueนอกจากนี้คุณยังสามารถตั้งค่ารหัสลงทะเบียนลับซึ่งอนุญาตให้ทุกคนลงทะเบียนที่มีรหัสลับแม้ว่าจะปิดใช้งานการลงทะเบียนก็ตาม

enable_registration: False

registration_shared_secret: "YPPqCPYqCQ-Rj,ws~FfeLS@maRV9vz5MnnV^r8~pP.Q6yNBDG;"

บันทึกไฟล์และออกจากตัวแก้ไข ตอนนี้คุณจะต้องลงทะเบียนผู้ใช้รายแรกของคุณ อย่างไรก็ตามก่อนที่คุณจะสามารถลงทะเบียนผู้ใช้ใหม่ได้คุณจะต้องเริ่มต้นแอปพลิเคชันก่อน

source /opt/synapse/bin/activate && cd /opt/synapse
synctl start

คุณควรเห็นบรรทัดต่อไปนี้

2017-09-05 11:10:41,921 - twisted - 131 - INFO - - SynapseSite starting on 8008
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - Starting factory <synapse.http.site.SynapseSite instance at 0x44bbc68>
2017-09-05 11:10:41,921 - synapse.app.homeserver - 201 - INFO - - Synapse now listening on port 8008
2017-09-05 11:10:41,922 - synapse.app.homeserver - 442 - INFO - - Scheduling stats reporting for 3 hour intervals
started synapse.app.homeserver('homeserver.yaml')

ลงทะเบียนผู้ใช้ Matrix ใหม่

register_new_matrix_user -c homeserver.yaml https://localhost:8448

คุณควรเห็นสิ่งต่อไปนี้

(synapse)[user@vultr synapse]$ register_new_matrix_user -c homeserver.yaml https://localhost:8448
New user localpart [user]: admin
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success.

สุดท้ายก่อนที่คุณจะสามารถใช้ Homeserver คุณจะต้องอนุญาตให้พอร์ต 8448 ผ่านไฟร์วอลล์ พอร์ต8448ถูกใช้เป็นพอร์ตรวมที่ปลอดภัย Homeservers ใช้พอร์ตนี้ในการสื่อสารซึ่งกันและกันอย่างปลอดภัย คุณยังสามารถใช้ไคลเอนต์เว็บแชท Matrix ในตัวผ่านพอร์ตนี้

sudo firewall-cmd --permanent --zone=public --add-port=8448/tcp
sudo firewall-cmd --reload

ตอนนี้คุณสามารถเข้าสู่ระบบแชทไคลเอนต์เว็บเมทริกซ์โดยhttps://matrix.example.com:8448ผ่านเบราว์เซอร์โปรด คุณจะเห็นคำเตือนเกี่ยวกับใบรับรอง SSL เนื่องจากใบรับรองที่ใช้นั้นเป็นลายเซ็นต์เอง เราจะไม่ใช้โปรแกรมแชทบนเว็บนี้เนื่องจากล้าสมัยและไม่ได้รับการดูแลรักษาอีกต่อไป เพียงลองตรวจสอบว่าคุณสามารถเข้าสู่ระบบโดยใช้บัญชีผู้ใช้ที่คุณเพิ่งสร้างขึ้น

การตั้งค่า Let's Encrypt Certificates

แทนที่จะใช้ใบรับรองแบบลงนามด้วยตนเองเพื่อรักษาความปลอดภัยพอร์ตสหพันธรัฐเราสามารถใช้ Let's Encrypt SSL ฟรี Let's Encrypt SSL ฟรีสามารถรับได้ผ่านไคลเอนต์ Let's Encrypt ที่ชื่อว่า Certbot

ติดตั้ง Certbot

sudo yum -y install certbot

ปรับการตั้งค่าไฟร์วอลล์ของคุณเพื่ออนุญาตมาตรฐานHTTPและHTTPSพอร์ตผ่านไฟร์วอลล์ Certbot ต้องทำการHTTPเชื่อมต่อเพื่อตรวจสอบสิทธิ์โดเมน

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

ในการรับใบรับรองจาก Let's Encrypt CA คุณต้องตรวจสอบให้แน่ใจว่าโดเมนที่คุณต้องการสร้างใบรับรองนั้นชี้ไปที่เซิร์ฟเวอร์ หากไม่ใช่ให้ทำการเปลี่ยนแปลงที่จำเป็นกับระเบียน DNS ของโดเมนของคุณและรอให้ DNS เผยแพร่ก่อนทำการขอใบรับรองอีกครั้ง Certbot ตรวจสอบอำนาจโดเมนก่อนที่จะให้ใบรับรอง

ตอนนี้ใช้เว็บเซิร์ฟเวอร์ในตัวใน Certbot เพื่อสร้างใบรับรองสำหรับโดเมนของคุณ

sudo certbot certonly --standalone -d matrix.example.com

/etc/letsencrypt/live/matrix.example.com/ใบรับรองที่สร้างขึ้นมีแนวโน้มที่จะถูกเก็บไว้ใน ใบรับรอง SSL จะถูกเก็บไว้เป็นและคีย์ส่วนตัวจะถูกเก็บไว้เป็นfullchain.pemprivkey.pem

คัดลอกใบรับรอง

sudo cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem

sudo cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

คุณจะต้องเปลี่ยนเส้นทางไปยังใบรับรองและกุญแจจากhomeserver.yamlไฟล์ แก้ไขการกำหนดค่า

nano /opt/synapse/homeserver.yaml

ค้นหาบรรทัดต่อไปนี้และปรับเปลี่ยนพา ธ

tls_certificate_path: "/opt/synapse/letsencrypt-fullchain.pem"

# PEM encoded private key for TLS
tls_private_key_path: "/opt/synapse/letsencrypt-privkey.pem"

บันทึกไฟล์และออกจากตัวแก้ไข รีสตาร์ทเซิร์ฟเวอร์ Synapse เพื่อให้การเปลี่ยนแปลงมีผล

source /opt/synapse/bin/activate && cd /opt/synapse
synctl restart

เรามาเข้ารหัสใบรับรองหมดอายุใน 90 วันดังนั้นขอแนะนำให้คุณตั้งค่าการต่ออายุอัตโนมัติสำหรับใบรับรองโดยใช้งาน cron Cron เป็นบริการระบบที่ใช้ในการทำงานเป็นระยะ

สร้างสคริปต์ใหม่เพื่อต่ออายุใบรับรองและคัดลอกใบรับรองที่ต่ออายุไปยังไดเรกทอรีไซแนปส์

sudo nano /opt/renew-letsencypt.sh  

เติมไฟล์

#!/bin/sh

/usr/bin/certbot renew --quiet --nginx
cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

ให้สิทธิ์ดำเนินการ

sudo chmod +x /opt/renew-letsencypt.sh

เปิดไฟล์งาน cron

sudo crontab -e

เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์

30 5 * * 1 /opt/renew-letsencypt.sh

งาน cron ข้างต้นจะทำงานทุกวันจันทร์เวลา 5.30 น. หากใบรับรองหมดอายุแล้วจะต่ออายุโดยอัตโนมัติ

https://matrix.example.com:8448ตอนนี้คุณสามารถเยี่ยมชม คุณจะเห็นว่าไม่มีคำเตือน SSL ก่อนการเชื่อมต่อ

ตั้งค่า Nginx ด้วย Let's Encrypt

นอกเหนือจากพอร์ตรวมที่ปลอดภัย8448แล้วไซแนปส์ยังฟังพอร์ตของไคลเอ็นต์ที่ไม่ปลอดภัย8008ด้วย ตอนนี้เราจะกำหนดค่า Nginx เป็นพร็อกซีย้อนกลับไปยังแอปพลิเคชันไซแนปส์

sudo yum -y install nginx

สร้างไฟล์การกำหนดค่าใหม่

sudo nano /etc/nginx/conf.d/synapse.conf

เติมไฟล์ด้วยเนื้อหาต่อไปนี้

server {
    listen 80;
    server_name matrix.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name matrix.example.com;

    ssl_certificate           /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/matrix.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /var/log/nginx/synapse.access.log;

    location /_matrix {

      proxy_pass          http://localhost:8008;
      proxy_set_header X-Forwarded-For $remote_addr;

    }
  }

รีสตาร์ทและเปิดใช้งาน Nginx เพื่อเริ่มต้นโดยอัตโนมัติในเวลาบูต

sudo systemctl restart nginx
sudo systemctl enable nginx

สุดท้ายคุณสามารถตรวจสอบได้ว่าสามารถเข้าใช้งานไซแนปส์ผ่านพร็อกซีย้อนกลับได้หรือไม่

curl https://matrix.example.com/_matrix/key/v2/server/auto

คุณควรได้ผลลัพธ์ที่คล้ายกัน

[user@vultr ~]$ curl https://matrix.example.com/_matrix/key/v2/server/auto
{"old_verify_keys":{},"server_name":"matrix.example.com","signatures":{"matrix.example.com":{"ed25519:a_ffMf":"T/Uq/UN5vyc4w7v0azALjPIJeZx1vQ+HC6ohUGkTSqiFI4WI/ojGpb2763arwSSQLr/tP/2diCi1KLU2DEnOCQ"}},"tls_fingerprints":[{"sha256":"eorhQj/kubI2PEQZyBZvGV7K1x3EcQ7j/AO2MtZMplw"}],"valid_until_ts":1504876080512,"verify_keys":{"ed25519:a_ffMf":{"key":"Gc1hxkpPmQv71Cvjyk+uzR5UtrpmgV/UwlsLtosawEs"}}}

การตั้งค่าบริการ Systemd

ขอแนะนำให้ใช้บริการ Systemd เพื่อจัดการกระบวนการเซิร์ฟเวอร์ Synapse การใช้ Systemd จะทำให้มั่นใจได้ว่าเซิร์ฟเวอร์จะเริ่มต้นโดยอัตโนมัติเมื่อระบบเริ่มต้นและล้มเหลว

สร้างไฟล์บริการ Systemd ใหม่

sudo nano /etc/systemd/system/matrix-synapse.service

เติมไฟล์

[Unit]
Description=Matrix Synapse service
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/synapse/
ExecStart=/opt/synapse/bin/synctl start
ExecStop=/opt/synapse/bin/synctl stop
ExecReload=/opt/synapse/bin/synctl restart
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=synapse

[Install]
WantedBy=multi-user.target

ตอนนี้คุณสามารถเริ่มเซิร์ฟเวอร์ Synapse ได้อย่างรวดเร็ว

sudo systemctl start matrix-synapse

เพื่อหยุดหรือรีสตาร์ทเซิร์ฟเวอร์โดยใช้คำสั่งต่อไปนี้

sudo systemctl stop matrix-synapse
sudo systemctl restart matrix-synapse

คุณสามารถตรวจสอบสถานะการให้บริการ

sudo systemctl status matrix-synapse

การใช้ Riot

ติดตั้งและกำหนดค่าเซิร์ฟเวอร์ Matrix Synapse แล้วบนเซิร์ฟเวอร์ของคุณ เนื่องจากเว็บไคลเอ็นต์ในตัวสำหรับ Matrix ล้าสมัยคุณสามารถเลือกแอปพลิเคชันไคลเอนต์ที่หลากหลายสำหรับการแชท Riotเป็นโปรแกรมแชทที่ได้รับความนิยมมากที่สุดซึ่งมีอยู่ในเกือบทุกแพลตฟอร์ม คุณสามารถใช้เว็บแชทไคลเอ็นต์ของ Riot ในเวอร์ชันโฮสต์หรือคุณสามารถโฮสต์สำเนาไว้บนเซิร์ฟเวอร์ของคุณเอง นอกจากนี้คุณยังสามารถใช้เดสก์ท็อปและไคลเอนต์แชทบนมือถือของ Riot ซึ่งมีให้สำหรับ Windows, Mac, Linux, IOS และ Android

หากคุณต้องการโฮสต์สำเนาของไคลเอนต์เว็บ Riot ของคุณเองคุณสามารถอ่านเพิ่มเติมสำหรับคำแนะนำในการติดตั้ง Riot บนเซิร์ฟเวอร์ของคุณ สำหรับโฮสต์เดสก์ท็อปและไคลเอนต์มือถือคุณสามารถใช้ชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่เซิร์ฟเวอร์ของคุณโดยตรง เพียงเลือกmy Matrix IDจากเมนูแบบเลื่อนลงของSign Inตัวเลือกและระบุชื่อผู้ใช้และรหัสผ่านที่คุณสร้างระหว่างการลงทะเบียนผู้ใช้ใหม่ คลิกที่Custom serverและใช้ชื่อโดเมนของอินสแตนซ์ของคุณไซแนปส์ เนื่องจากเราได้กำหนดค่า Nginx แล้วเราก็สามารถใช้https://matrix.example.comเป็นเซิร์ฟเวอร์หลักและhttps://matrix.orgเป็นเซิร์ฟเวอร์ของรหัสประจำตัว

ตัวอย่างล็อกอินของ Riot

ตั้งค่า Riot บนเซิร์ฟเวอร์ของคุณเอง

Riot เป็นโอเพ่นซอร์สและไม่เสียค่าใช้จ่ายในการโฮสต์บนเซิร์ฟเวอร์ของคุณเอง มันไม่จำเป็นต้องมีฐานข้อมูลหรือการอ้างอิงใด ๆ เนื่องจากเรามีเซิร์ฟเวอร์ Nginx ที่ทำงานอยู่เราจึงสามารถโฮสต์บนเซิร์ฟเวอร์เดียวกันได้

โดเมนหรือโดเมนย่อยที่คุณใช้สำหรับไซแนปส์และการจลาจลจะต้องแตกต่างกันเพื่อหลีกเลี่ยงการเขียนสคริปต์ข้ามไซต์ อย่างไรก็ตามคุณสามารถใช้สองโดเมนย่อยของโดเมนเดียวกัน ในบทช่วยสอนนี้เราจะใช้riot.example.comเป็นโดเมนสำหรับแอปพลิเคชัน Riot แทนที่การเกิดขึ้นทั้งหมดriot.example.comด้วยโดเมนจริงหรือโดเมนย่อยของคุณสำหรับแอปพลิเคชัน Riot

ดาวน์โหลด Riot บนเซิร์ฟเวอร์ของคุณ

cd /opt/
sudo wget https://github.com/vector-im/riot-web/releases/download/v0.12.3/riot-v0.12.3.tar.gz

คุณสามารถพบการเชื่อมโยงให้เป็นรุ่นล่าสุดในศึก Github

แตกไฟล์เก็บถาวร

sudo tar -xzf riot-v*.tar.gz

เปลี่ยนชื่อไดเรกทอรีสำหรับการจัดการความสะดวกสบาย

sudo mv riot-v*/ riot/

เนื่องจากเราได้ติดตั้ง Certbot แล้วเราจึงสามารถสร้างใบรับรองได้โดยตรง ตรวจสอบให้แน่ใจว่าโดเมนหรือโดเมนย่อยที่คุณใช้นั้นชี้ไปที่เซิร์ฟเวอร์

sudo systemctl stop nginx
sudo certbot certonly --standalone -d riot.example.com

ใบรับรองที่สร้างขึ้นมีแนวโน้มที่จะถูกเก็บไว้ใน/etc/letsencrypt/live/riot.example.com/ไดเรกทอรี

สร้างโฮสต์เสมือนสำหรับแอปพลิเคชั่น Riot

sudo nano /etc/nginx/conf.d/riot.conf

เติมไฟล์

server {
    listen 80;
    server_name riot.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name riot.example.com;

    ssl_certificate           /etc/letsencrypt/live/riot.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/riot.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    root /opt/riot;
    index index.html index.htm;

    location / {
            try_files $uri $uri/ =404;
    }

    access_log    /var/log/nginx/riot.access.log;

  }

คัดลอกไฟล์การกำหนดค่าตัวอย่าง

sudo cp /opt/riot/config.sample.json /opt/riot/config.json

ตอนนี้แก้ไขไฟล์กำหนดค่าเพื่อทำการเปลี่ยนแปลงเล็กน้อย

sudo nano /opt/riot/config.json

ค้นหาบรรทัดต่อไปนี้

"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",

แทนที่ค่าของ URL โฮมเซิร์ฟเวอร์เริ่มต้นด้วย URL ของเซิร์ฟเวอร์เมทริกซ์ของคุณ สำหรับ URL https://matrix.orgของเซิร์ฟเวอร์ตัวตนคุณสามารถใช้ตัวเลือกเริ่มต้นหรือคุณยังสามารถให้ความคุ้มค่ากับเซิร์ฟเวอร์ตัวตนของเมทริกซ์ซึ่งเป็น

"default_hs_url": "https://matrix.example.com",
"default_is_url": "https://matrix.org",

บันทึกไฟล์และออก จัดเตรียมความเป็นเจ้าของไฟล์ให้กับผู้ใช้ Nginx

sudo chown -R nginx:nginx /opt/riot/

รีสตาร์ท Nginx

sudo systemctl restart nginx

https://riot.example.comคุณสามารถเข้าถึงศึกใน ตอนนี้คุณสามารถเข้าสู่ระบบโดยใช้ชื่อผู้ใช้และรหัสผ่านที่คุณสร้างไว้ก่อนหน้านี้ คุณสามารถเชื่อมต่อโดยใช้เซิร์ฟเวอร์เริ่มต้นเนื่องจากเราได้เปลี่ยนเซิร์ฟเวอร์เมทริกซ์เริ่มต้นสำหรับแอปพลิเคชันของเราแล้ว

ตอนนี้คุณมีเซิร์ฟเวอร์ภายในบ้าน Matrix Synapse แล้วเริ่มทำงาน คุณยังมีสำเนา Riot ซึ่งโฮสต์ซึ่งคุณสามารถใช้เพื่อส่งข้อความถึงบุคคลอื่นโดยใช้ Matrix ID อีเมลหรือหมายเลขโทรศัพท์มือถือ เริ่มต้นด้วยการสร้างห้องสนทนาบนเซิร์ฟเวอร์ของคุณและเชิญเพื่อนของคุณบน Matrix ให้เข้าร่วมห้องสนทนาที่คุณสร้างขึ้น



Leave a Comment

การติดตั้ง Pagekit CMS บน CentOS 7

การติดตั้ง Pagekit CMS บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า

วิธีการติดตั้ง TestLink บน CentOS 7

วิธีการติดตั้ง TestLink บน CentOS 7

TestLink เป็นระบบดำเนินการจัดการทดสอบบนเว็บโอเพ่นซอร์ส ช่วยให้ทีมงานประกันคุณภาพสามารถสร้างและจัดการกรณีทดสอบได้เช่นกัน

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

FTP ที่ปลอดภัยมากหรือเพียงแค่ vsFTPd เป็นซอฟต์แวร์น้ำหนักเบาที่มีความสามารถในการปรับแต่ง ในบทช่วยสอนนี้เราจะรักษาความปลอดภัยของข้อความ

วิธีการติดตั้ง GCC บน CentOS 6

วิธีการติดตั้ง GCC บน CentOS 6

CentOS ติดตามการพัฒนา Red Hat Enterprise Linux (RHEL) RHEL พยายามที่จะเป็นแพลตฟอร์มเซิร์ฟเวอร์ที่มั่นคงซึ่งหมายความว่าจะไม่รีบเร่งในการรวม

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ในบางโอกาสผู้ดูแลระบบอาจต้องสร้างบัญชีผู้ใช้และ จำกัด การเข้าถึงเพื่อจัดการไฟล์ของตัวเองผ่าน sFTP เท่านั้น

วิธีการติดตั้ง Moodle บน CentOS 7

วิธีการติดตั้ง Moodle บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Moodle เป็นแพลตฟอร์มการเรียนรู้โอเพนซอร์ซหรือระบบจัดการหลักสูตร (CMS) - ชุดซอฟต์แวร์โอเพ่นซอร์สฟรีที่ออกแบบมาเพื่อช่วย

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ในบทความนี้ฉันจะอธิบายวิธีสร้าง LEMP สแต็คที่ได้รับการป้องกันโดย ModSecurity ModSecurity เป็นไฟร์วอลล์เว็บแอพพลิเคชันแบบโอเพนซอร์สที่มีประโยชน์

วิธีการติดตั้ง Apache, MySQL และ PHP บน CentOS 6

วิธีการติดตั้ง Apache, MySQL และ PHP บน CentOS 6

Introduction LAMP เป็นคำย่อที่ย่อมาจาก Linux, Apache, MySQL และ PHP ซอฟต์แวร์นี้เป็นโซลูชันโอเพ่นซอร์สที่ได้รับความนิยมสูงสุดสำหรับการติดตั้ง o

การปรับเปลี่ยน Icinga2 ให้ใช้โมเดลต้นแบบ / ไคลเอ็นต์บน CentOS 6 หรือ CentOS 7

การปรับเปลี่ยน Icinga2 ให้ใช้โมเดลต้นแบบ / ไคลเอ็นต์บน CentOS 6 หรือ CentOS 7

Icinga2 เป็นระบบการตรวจสอบที่มีประสิทธิภาพและเมื่อใช้ในโมเดลลูกค้าหลักจะสามารถแทนที่ความต้องการการตรวจสอบที่อิง NRPE ปรมาจารย์

การติดตั้ง Netdata บน CentOS 7

การติดตั้ง Netdata บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Netdata เป็นดาวรุ่งพุ่งแรงในด้านการติดตามการวัดในระบบแบบเรียลไทม์ เมื่อเปรียบเทียบกับเครื่องมือชนิดเดียวกัน Netdata:

วิธีการติดตั้งและกำหนดค่า Buildbot บน CentOS 7

วิธีการติดตั้งและกำหนดค่า Buildbot บน CentOS 7

Buildbot เป็นโอเพ่นซอร์สเครื่องมือที่ใช้การรวมอย่างต่อเนื่องของ Python สำหรับการสร้างซอฟต์แวร์การทดสอบและการปรับใช้โดยอัตโนมัติ Buildbot ประกอบด้วยหนึ่งหรือหมอ

ติดตั้งเซิร์ฟเวอร์มัลติเพลเยอร์ SA-MP San Andreas บน CentOS 6

ติดตั้งเซิร์ฟเวอร์มัลติเพลเยอร์ SA-MP San Andreas บน CentOS 6

ยินดีต้อนรับสู่การกวดวิชา Vultr อื่น ที่นี่คุณจะได้เรียนรู้วิธีการติดตั้งและเรียกใช้เซิร์ฟเวอร์ SAMP คู่มือนี้เขียนขึ้นสำหรับ CentOS 6 ข้อกำหนดเบื้องต้นคุณจะต้อง

ติดตั้ง dotProject บน CentOS 7

ติดตั้ง dotProject บน CentOS 7

แอปพลิเคชั่น dotProject เป็นเครื่องมือการจัดการโครงการแบบโอเพ่นซอร์สบนเว็บ สำหรับตอนนี้มันวางจำหน่ายภายใต้ GPL ดังนั้นคุณสามารถปรับใช้และใช้งานได้บนบริการของคุณ

ติดตั้ง TaskServer (taskd) บน CentOS 7

ติดตั้ง TaskServer (taskd) บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร TaskWarrior เป็นเครื่องมือจัดการเวลาแบบโอเพ่นซอร์สที่เป็นการปรับปรุงแอพพลิเคชั่น Todo.txt และโคลนของมัน เนื่องมาจาก

วิธีการติดตั้ง Selfoss RSS Reader บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Selfoss RSS Reader บน CentOS 7 LAMP VPS

ใช้ระบบที่แตกต่างกันอย่างไร Selfoss RSS Reader เป็นฟรีและเปิดตัวเองบนเว็บโฮสต์อเนกประสงค์, สตรีมสด, ตอบโต้กับผู้ใช้ได้, ฟีดข่าว (RSS / Atom) reade

วิธีการติดตั้ง Kanboard บน CentOS 7

วิธีการติดตั้ง Kanboard บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Kanboard เป็นซอฟต์แวร์ซอฟต์แวร์การจัดการโครงการโอเพ่นซอร์สฟรีที่ออกแบบมาเพื่ออำนวยความสะดวกและมองเห็นภาพการทำงานเป็นทีม

การตั้งค่าเซิร์ฟเวอร์ Half Life 2 บน CentOS 6

การตั้งค่าเซิร์ฟเวอร์ Half Life 2 บน CentOS 6

บทช่วยสอนนี้จะกล่าวถึงกระบวนการติดตั้งเซิร์ฟเวอร์เกม Half Life 2 บนระบบ CentOS 6 ขั้นตอนที่ 1: การติดตั้งข้อกำหนดเบื้องต้นเพื่อตั้งค่า ou

ไดรฟ์ที่แชร์ความพร้อมใช้งานสูงใช้ Vultr Block Storage และ GlusterFS

ไดรฟ์ที่แชร์ความพร้อมใช้งานสูงใช้ Vultr Block Storage และ GlusterFS

GlusterFS เป็นระบบไฟล์ที่เชื่อมต่อกับเครือข่ายซึ่งช่วยให้คุณแบ่งปันไดรฟ์สองตัวในอุปกรณ์หลายตัวบนเครือข่ายได้อย่างมีประสิทธิภาพ ระบบไฟล์นี้คือ

วิธีโยกย้ายกล่องจดหมายอย่างง่ายดายด้วย Imapsync บน CentOS 7

วิธีโยกย้ายกล่องจดหมายอย่างง่ายดายด้วย Imapsync บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร ในขณะที่การโยกย้ายเว็บไซต์มักจะไม่มีปัญหาบางครั้งก็ยากที่จะโยกย้ายกล่องอีเมล นี่คือ CAS โดยเฉพาะอย่างยิ่ง

วิธีการติดตั้ง PrestaShop บน CentOS 7

วิธีการติดตั้ง PrestaShop บน CentOS 7

PrestaShop เป็นโซลูชันอีคอมเมิร์ซแบบโอเพ่นซอร์สที่ได้รับความนิยม คุณสามารถใช้มันเพื่อสร้างร้านค้าออนไลน์ของคุณเองได้ฟรี ในบทช่วยสอนนี้ฉันจะแสดงให้คุณเห็นว่า

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน