第四十條 中華人民共和國公民的通信自由和通信秘密受法律的保護。
——《中華人民共和國憲法》
最近微信QQ封的越來越多了……真要說喜歡在網(wǎng)上胡說八道的封了就封了吧咖为,我室友討論了一晚上高數(shù)問題第二天QQ就被封了,這個老好人說他亂發(fā)表言論我都不信端衰,更別說他自己都不知道為啥……所以一個真正自有可控的聊天軟件已經(jīng)成為了一個需求坎炼。無意中了解到了Matrix系統(tǒng),可以利用自有VPS安裝服務(wù)端軟件Synapse實現(xiàn)個人聊天服務(wù)器并通過多端的客戶端軟件連接禁舷,并且設(shè)置后可以以服務(wù)器作為代理連接所有Matrix服務(wù)器彪杉,反正已經(jīng)有了一個網(wǎng)站服務(wù)器,就順道玩玩吧牵咙。
可是這個安裝真的是……一言難盡派近。在我的研究之下也沒完全弄明白基于系統(tǒng)的安裝方法,而基于pip的安裝又各種問題……這里記錄一下我基于系統(tǒng)軟件安裝的實現(xiàn)方法洁桌。
本人才疏學(xué)淺渴丸,歡迎各位用過的大佬提出更好的方案,指正本人的錯誤另凌。
環(huán)境
Debian 9 谱轨;已安裝寶塔和Oneindex;在Root用戶下進行操作吠谢。
安裝Synapse
Synapse是Matrix官方做的示例服務(wù)端土童,也是現(xiàn)在最推薦的客戶端,這是官方的安裝文檔工坊,兩種方法寫的很凌亂……這里我以Debian為例寫一下大概的步驟献汗。
1.安裝Python環(huán)境
apt-get install build-essential python3-dev libffi-dev \
python3-pip python3-setuptools sqlite3 \
libssl-dev python3-virtualenv libjpeg-dev libxslt1-dev
2.安裝Synapse軟件
根據(jù)官方推薦敢订,這里添加了Matrix的安裝源來安裝最新版的Matrix。以下指令建議一個個錄入來確保都能正確執(zhí)行罢吃。
apt install -y lsb-release wget apt-transport-https
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" |
tee /etc/apt/sources.list.d/matrix-org.list
apt update
apt install matrix-synapse-py3
中間會提示以下兩個界面楚午,第一個問你服務(wù)器名稱瞎寫把,反正你不用這個服務(wù)器(下面會說)刃麸,另一個問你是否愿意幫助他們醒叁,我們這么熱心善良當(dāng)然選否啊(滑稽)
安裝好之后會自動運行服務(wù)器泊业,如果是本機就可以訪問http://localhost:8008
來檢查軟件是否安裝好了把沼,vps嗎……待會兒再說。
配置Synapse
我雖然知道這樣安裝之后會在/etc/matrix-synapse/homeserver.yaml
生成配置文件吁伺,但我根本無法用官方文檔里面的方法關(guān)閉這個服務(wù)器饮睬,更別提更新配置文件了。而且不更新配置文件的這玩意不是不好用篮奄,是沒法用捆愁!所以我用了個技巧繞過了官方的服務(wù)器。如果誰知道這種方法安裝的服務(wù)器怎么操作請務(wù)必告訴我窟却。
1.為新的服務(wù)器文件創(chuàng)建文件夾
這里可以按照自己喜好來操作
mkdir synapse
cd synapse
# /root/synapse/
2.創(chuàng)建一套配置文件
/opt/venvs/matrix-synapse/bin/python -B -m synapse.app.homeserver -c homeserver.yaml --generate-config --server-name=takuron.top --report-stats=no
其中server-name按照官方要求是需要填寫自己的域名的昼丑,這樣才能正確的接入Matrix網(wǎng)絡(luò)。不過如果是個人服務(wù)器的話其實可以隨意寫夸赫,第四個不知道是什么貌似也和接入Matrix網(wǎng)絡(luò)有關(guān)菩帝,選no就好。
這會兒就可以啟動服務(wù)器了茬腿,但在此之前需要一些配置呼奢。
3.必須的配置
打開主配置文件homeserver.yaml
,首先在207行:
#line 207-215
- port: 8009
tls: false
type: http
x_forwarded: true
bind_addresses: ['::1', '127.0.0.1']
resources:
- names: [client, federation]
compress: false
將端口改成8008以外的數(shù)切平,因為我們還沒能成功關(guān)掉自帶的服務(wù)器握础,這里曲線救國再建一個不同端口的服務(wù)器(反正默認(rèn)都只能本地訪問)
然后在862行:
enable_registration: true
開啟注冊(如果私有服務(wù)器,回頭記著關(guān)悴品,我是懶得一個個添加賬號的禀综,不如組織注冊完后關(guān)掉注冊)
然后在對應(yīng)目錄執(zhí)行指令,啟動服務(wù)器苔严,我們的服務(wù)器就建立起來了菇存。
synctl start
4.可選的配置
配置反向代理
你會發(fā)現(xiàn),上一步建立的服務(wù)器是沒辦法直接用ip+端口打開的邦蜜,因為官方默認(rèn)建立的就是本地服務(wù)器,雖然有直接把服務(wù)器暴露給網(wǎng)絡(luò)的設(shè)置亥至,但我們可以使用反向代理的方法悼沈,像網(wǎng)站一樣管理服務(wù)器贱迟。這不是我的小聰明,這是官方推薦的做法絮供,如果你沒有寶塔衣吠,你可以按照官方文檔來用普通的網(wǎng)站軟件來解決問題,記得把默認(rèn)的8008端口改成你的端口壤靶。這里我簡單寫寫寶塔的配置方法缚俏。
新建一個網(wǎng)站,純靜態(tài)就可以贮乳,綁定好域名然后找網(wǎng)頁設(shè)置-反向代理忧换,按照底下圖片的設(shè)置就好了,記得修改端口為你自己的端口向拆。
提交亚茬,看看外網(wǎng)訪問是不是這個界面:
是的話大功告成。
客戶端連接
客戶端足夠多是我選擇Matrix的重要原因浓恳,這里有可供連接的客戶端的列表刹缝,個人覺得其中Riot.im的客戶端都已足夠優(yōu)秀并且支持足夠多的平臺,隨便下載一個颈将,將服務(wù)器設(shè)置為你的域名對應(yīng)的網(wǎng)址(開TSL記得用https)梢夯,然后就可以開始私有聊天了。
總結(jié)
軟件寫得好晴圾,不如軟件文檔寫得好颂砸。
——魯迅
軟件文檔引發(fā)的慘案……軟件是好東西但文檔真的人類迷惑搞得我轉(zhuǎn)了半天在研究出這個不是方法的方法。不過有一說一疑务,一整天解決了我和小伙伴的通信隱私問題沾凄,也算是目前情況下的一種收獲吧。愿自由技術(shù)永遠引導(dǎo)人類發(fā)展知允。