分類
Linux 软件

在centos6上裝Synapse

裝了Matrix家的Synapse就可以使用Riot.im聊天了,好處是服務器是自己的,客戶端是開源的。

首先跟着官方文檔,安裝依賴。此時需要注意centos6自帶的sqlite版本太低,而且插件FTS4也未啟用。參考Install Python and Sqlite from Source安裝sqlite和python2.7即可。

#安裝sqlite3.12並開啟FTS4
mkdir -p ~/tmp/compile&&mkdir ~/tmp/opt&&cd ~/tmp/compile
wget https://www.sqlite.org/2016/sqlite-autoconf-3120200.tar.gz
tar xf ./sqlite-autoconf-3120200.tar.gz
cd sqlite-autoconf-3120200
./configure --prefix=~/opt/sqlite/sqlite3 --disable-static --enable-fts5 --enable-json1 CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_RTREE=1"
make
make install
mkdir ~/bin
ln -s ~/opt/sqlite/sqlite3/bin/sqlite3 ~/bin/sqlite
#到這裡就安裝好了,執行sqlite即可看到版本為3.12
#執行pragma compile_options;可見FTS4已開啟
#.quit退出sqlite
#安裝使用sqlite3.12的python2.7
wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
xz -d Python-2.7.14.tar.xz&&tar -xvf Python-2.7.14.tar
cd Python-2.7.14
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib ./configure LDFLAGS="-L$HOME/opt/sqlite/sqlite3/lib" CPPFLAGS="-I $HOME/opt/sqlite/sqlite3/include"
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make install

使用virtualenv生成一個Synapse專用的虛擬環境。安裝Synapse時還會遇到Twisted版本過低,在虛擬環境下這樣操作一下:

wget https://twistedmatrix.com/Releases/Twisted/17.1/Twisted-17.1.0.tar.bz2
tar -jxvf Twisted-17.1.0.tar.bz2
cd Twisted-17.1.0
python setup.py install 
cd ..

配置nginx前置代理的時候,用letsencrypt的centbot各種失敗,最後還是用回ssl for free的笨方法。推薦使用letsencrypt的centbot,配好後非常省時省力。順便貼一下nginx配置:

server {
    listen 443 ssl;
    server_name YOURDOMIN;

    ssl_certificate     /etc/letsencrypt/live/YOURDOMIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/YOURDOMIN/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

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

由於使用了nginx做代理,所以8008端口的監聽範圍可以在homeserver.yaml中改成127.0.0.1。

最後跟着官方教程增加用戶,然後在Riot.im里勾上自定義服務器就可以聊天了。也可以參考下Run your end-to-end encrypted chat server using Matrix and Riot

如果傳送文件時提示文件大小超過限制,多半是nginx給擋下了,可以在nginx配置文件的http段里添加下面兩行來解決:

    sendfile        on;
    client_max_body_size 40M;

Android我從F-droid下載的客戶端,沒有gcm,所以在後台時檢查消息的頻率可以自行設置,我設置的5分鐘,默認10分鐘。網頁端打開的時候有一點點慢,打開後就沒問題了。Fedora可以安裝taw/Riot的源,即

sudo dnf copr enable taw/Riot 
sudo dnf install -y riot --refresh

Fedora29的包taw還沒打,我們可以自己打:

sudo dnf install npm
git clone https://github.com/vector-im/riot-web.git
cd riot-web
npm install
cp config.sample.json config.json
#修改下面4處
    "default_hs_url": "https://YOURDOMIN",
    "default_is_url": "https://YOURDOMIN",
    "disable_guests": true,
    "features": {
        "feature_groups": "labs",
        "feature_pinning": "labs",
        "feature_rich_quoting": "labs",
        "feature_presence_management": "labs",
        "feature_sticker_messages": "labs",
        "feature_jitsi": "labs",
        "feature_tag_panel": "enable",
        "feature_lazyloading": "enable"
    }
#編譯
npm run build
#編譯獨立APP
npm install electron
#運行APP
npm run electron
#生成可執行文件
node_modules/.bin/build -l --x64
#可執行文件在electron_app/dist/linux-unpacked/

##升級##
cd riot-web
git fetch origin
git reset --hard origin/master
npm install
npm run build
npm install electron
node_modules/.bin/build -l --x64

Synapse搬家

官方文檔並未給出具體備份與還原方法,經過摸索發現非常簡單。如果是按照我上面步驟安裝的,只需再新服務器上搭建好環境,然後複製如下文件到虛擬環境中就可以啟動了。如果文件路徑有變化,則需要修改homeserver.yaml和YOURDOMIN.log.config這兩個配置文件。

homeserver.yaml
YOURDOMIN.log.config   
YOURDOMIN.signing.key  
YOURDOMIN.tls.crt
YOURDOMIN.tls.dh
YOURDOMIN.tls.key
media_store
homeserver.db

Synapse重置用戶密碼

參考:reset password for matrix/synapse accounts

Centos7上裝Synapse

大致一樣啦。sqlite3還是要自己安裝,系統帶的不行。python可以用3了。Twisted要裝17.9.0。

本文更新於 2018/12/26。

分類
說說

17123005

去花蓮。

分類
讀書

17121213

……有時候會聽到中國的音樂,間或有歌聲,始終重複有著細微變化的同一個旋律,節奏極其複雜穩定。在一個中國人家裡參加了小型私人聚會:狹小的前廳蹲著五名樂師,室內一直是燈火通明。每一幢中國人的房子裡,包括在妓院裡,正對大門的地方都有一座神龕,火燭閃爍,金光燦燦。麵包師和鞋匠在門洞大開的鋪子裡忙碌著,大多赤裸著上身。看到的中國人幾乎毫無例外服裝顏色單一、格調高雅,苦力身著短褲和敞著前襟的無袖短上衣,通常是用藍色麻布縫製,其他中國人大多穿著肥大、有光澤的黑褲子,怎麼看都好看。我把中國人分成兩類:一類微胖,臉龐像滑稽演員,透露著機敏和愜意;另一類則瘦削。他們全都很聰明,通常會讓人心生好感。人力車夫單純親切,愛笑,很有眼色。我們看見一……

1911年生活在斯里兰卡的岭南人,黑塞
分類
讀書

17120820

至於熱帶自然風光,我看到的主要是原始森林,其次就是蘇門答臘島的河流,馬來海域的群島和錫蘭肥沃得流油的土地。就城市而言,新加坡和巨港尤為有趣。我接觸到的民族有馬來人、爪哇人、泰米爾人、僧伽羅人、日本人和中國人。對於中國人只能用“很了不起”來形容:一個令人欽佩的民族!其他大部分人都是某個古老的一度生活在伊甸園裡的民族遭受西方腐化和蠶食後餘留下來的可憐的後裔,他們是可愛的、馴良的、靈巧並且有天賦的原始族類,我們的文化卻把他們扼殺了。倘若西方人能夠更好地適應這裡的氣候並且能讓他們的孩子在這裡長大,或許就不會再有印度人了。

如今的國人,已經配不上黑塞的盛讚了

分類
讀書

17120813

……可救藥地盲目輕信每一樣舶來品,一個個穿得像星期天的女僕。隨處可見長相漂亮、皮膚黝黑的人身穿這樣的顏色艷麗、刺眼的服裝,神情高貴地走在街頭巷尾,就像家鄉化妝舞會上一些富有想像力的年輕店員的衣著打扮,這可是真實版的服飾漫畫!聰明的歐洲商人把印度絲綢和麻布變成了非必需品,他們給棉花染色,給棉布印花,色彩比他們曾經在亞洲見到的要鮮豔的多,而且更富有印度特色、更熱烈、更張揚、更刺目,善良的印度人以及馬來人成了捧場的買主,他們把價格便宜、色彩鮮豔的歐洲布料圍在了古銅色的髖部。十個這樣的印度人的形象就足以讓一條熱鬧的街道在顏色上躁動起來,變成不真實的“東方”的一隅。但是在這裡他們卻無法引起矚目,就算他們喜歡像國王一樣踱步而行,喜歡穿得像鸚鵡一樣光彩奪目,還是會被從中國過來的那個不起眼的黃皮膚民族,被整齊劃一、蟻群似的大量中國人包圍、遮蔽並且悄無聲息地湮沒。那些中國人不辭辛苦,密密匝匝地在上百條街道安下了家,聚集在一起,他們中間沒有人痴迷於色彩,想把自己盛裝打扮成國王或者小丑,他們總是身穿藍色、黑色或者白色衣服,無數這樣的人群遍布並且統治了新加坡這座城市。

一百年前的印度人和中國人,黑塞

分類
讀書

17120620

在這裡,不管地方多小,一旦繁榮發展起來,中國人便會很快到來,在當地安居樂業,開拓事業。他們開商舖,跑船運,夠買橡膠,出售大米、魚和德國啤酒。工作的還有一些歐洲人。這裡有一家硬木加工廠,負責人是一個對當地非常熟悉的瑞士人,其他的白人毫無例外全都是荷蘭官員。

應該是在說上世紀的印度尼西亞。

分類
讀書

17120421

我在後甲板上遇到一個身材不高、舉止優雅的中國上海人。他筆直地倚著欄杆,一雙聰慧的黑眼睛追隨著探照燈,面露微笑,一如既往地迷人。他熟諳整部《詩經》,已經通過了各種中國的考試,現在還通過了好幾門英文考試。他用流利的英語溫柔而親切地談論著水上的月光,向我恭維德國和瑞士風光旖旎。他毫無讚美中國之意,可是當他對歐洲不吝溢美之詞時,彬彬有禮的語氣聽起來充滿了優越感,就像是大哥哥善意地祝賀小弟弟擁有強健的臂膀。我們所有人都知道,這些日子裡一場新的大革命正在中國興起,這革命或許會推翻皇帝的統治。矮小精緻的上海人對此知道……