架設自己的聊天伺服器 – Matrix

前言

現代人各個社交軟體不離身,譬如說 Discord 這樣的軟體,讓大家可以在同一個文字或語音頻道裡同樂。但你可能想過,我們有沒有辦法自己打造一個社交軟體?今天要介紹的這款就是 Matrix

他是一款開源即時通訊的後端,搭配上例如 Element 這樣的前端框架,來做到有如聊天室的效果。

安裝步驟

首先,你需要一台 Linux,雖然 Windows 上也可以裝。但你知道的,沒人會想拿 Windows 架設這種東西的伺服器。我這裡的操作環境會使用 Debian 12。

使用以下命令來安裝 matrix-synapse

sudo apt install -y lsb-release wget apt-transport-https
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |
    sudo tee /etc/apt/sources.list.d/matrix-org.list
sudo apt update
sudo apt install matrix-synapse-py3

接著,你會需要輸入一個網域名稱,依照官方說明文件的說法是:一旦設定及不可變更。所以一定要好好思考過!

001.jpg

下一步會詢問你願不願意分享基礎的資訊給 Matrix 的開發人員作為統計,你可以依照自己的喜好選擇。

002.jpg

安裝完之後,我們使用以下命令來產生一組密鑰,請先自己記住,稍後會用到。

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

編輯 /etc/matrix-synapse/homeserver.yaml 檔案。

sudo vim /etc/matrix-synapse/homeserver.yaml

在該文件的最底下加入一行文字,並貼上我們剛剛取得的密鑰。

registration_shared_secret: YOUR_KEY_HERE

003.jpg

之後,我們就可以啟動 matrix-synapse 啦。

sudo systemctl enable matrix-synapse && sudo systemctl restart matrix-synapse

建立反向代理

這邊,我們使用 Nginx 來反向代理我們的 Matrix。我們先安裝 Nginx。

sudo apt-get install -y nginx nginx-extras

由於我會使用 CDN,因此原點將只使用 HTTP,不配置 SSL。你可以依照自己的喜好自己為 Nginx 添加。

前往目錄 /etc/nginx/sites-enabled,並建立一個名為 chat 的檔案。

cd /etc/nginx/sites-enabled && sudo vim chat

貼上以下內容,並自行改變 server_name 成你的網域名稱。

server {
    listen 80;
    listen [::]:80;
    server_name your.domain.com;
    server_tokens off;
    more_set_headers Server;

    location /_matrix {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
        client_max_body_size 10M;
    }
}

確認配置並重新啟動 Nginx。

sudo nginx -t && sudo systemctl restart nginx

Matrix 基礎設定

這裡有一個 Matrix 的 基礎設定文件,你可以依據自己的喜好調整。我這裡提幾個會常用到的,且完成所有基礎設定後,請都使用 sudo systemctl restart matrix-synapse 來生效他。

開放註冊

我們可以控制這台 Matrix 開不開放註冊,可以在 /etc/matrix-synapse/homeserver.yaml 最下方加入一行。

enable_registration_without_verification: true
enable_registration: true

預設沒寫都是不開放。若你想開放,則設定為 true;若不想開放,則設定為 false

建立帳號

我們可以使用以下命令來建立帳號。如果你需要建立管理員帳號,或是你沒有開放註冊,一樣都使用這個命令哦!

sudo register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

他將會提示幾個我們需要填寫的地方:

New user localpart [root]: // 你的帳號
Password: // 你的密碼
Confirm password: // 在確認一次密碼
Make admin [no]: // 是否為管理員,yes 或是 no

連上伺服器

為 Matrix 設計的前端介面很多,今天介紹 Element,他的網址是:https://app.element.io

他介面的左下角可以選擇語言,但寫這篇文章的時候忘了,所以下面會是英文的。

一進入網頁後,我們選擇 Sign In

004.jpg

點選 Edit 來變更為我們自己的伺服器。

005.jpg

Other homeserver 的地方輸入我們自己的網域,並點選 Continue

006.jpg

輸入完帳號密碼,即可登入!

007.jpg

現在可以開始使用你自建的聊天軟體啦!

008.jpg

結語

這就是一款自建聊天室的過程啦,如果你想要有一款有更高控制的聊天室,不想被各個平台所約束,那這個工具就可以達成我們所需要的!