สร้างเซิร์ฟเวอร์การสนทนาโดยใช้ 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

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

การติดตั้ง 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 โดยเฉพาะอย่างยิ่ง

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

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