浏览代码

matrix installation

Bob Mottram 8 年前
父节点
当前提交
5491dbbe9a
共有 3 个文件被更改,包括 172 次插入0 次删除
  1. 5
    0
      src/freedombone-app-irc
  2. 154
    0
      src/freedombone-app-synapse
  3. 13
    0
      src/freedombone-utils-web

+ 5
- 0
src/freedombone-app-irc 查看文件

@@ -347,6 +347,11 @@ function irc_set_global_password {
347 347
             # Update the password in the readme
348 348
             sed -i "s|IRC login password.*|IRC login password: $NEW_IRC_PASSWORD|g" /home/$MY_USERNAME/README
349 349
 
350
+            if [ -f $INSTALL_DIR/matrix_irc_bridge/config.yaml ]; then
351
+                sed -i "s|password: .*|password: \"$NEW_IRC_PASSWORD\"|g" $INSTALL_DIR/matrix_irc_bridge/config.yaml
352
+                systemctl restart matrix_irc_bridge
353
+            fi
354
+
350 355
             write_config_param "IRC_PASSWORD" "$NEW_IRC_PASSWORD"
351 356
 
352 357
             # restart the daemon for the new password to take effect

+ 154
- 0
src/freedombone-app-synapse 查看文件

@@ -10,6 +10,8 @@
10 10
 #
11 11
 # synapse matrix server
12 12
 #
13
+# https://matrix.org/blog/2016/02/10/advanced-synapse-setup-with-lets-encrypt/
14
+#
13 15
 # License
14 16
 # =======
15 17
 #
@@ -36,12 +38,141 @@ SHOW_ON_ABOUT=1
36 38
 SYNAPSE_PORT=8448
37 39
 SYNAPSE_PASSWORD=
38 40
 SYNAPSE_DIR=/etc/matrix-synapse
41
+MATRIX_IRC_REPO="https://github.com/matrix-org/matrix-appservice-irc"
39 42
 
40 43
 synapse_variables=(ONION_ONLY
41 44
                    MY_USERNAME
42 45
                    SYNAPSE_PASSWORD
43 46
                    DEFAULT_DOMAIN_NAME)
44 47
 
48
+function install_matrix_irc_bridge {
49
+    if [ ! -d /etc/matrix-synapse ]; then
50
+        return
51
+    fi
52
+    if [ ! -d /etc/ngircd ]; then
53
+        return
54
+    fi
55
+
56
+    function_check install_nodejs
57
+    install_nodejs synapse
58
+
59
+    if [ ! -d $INSTALL_DIR ]; then
60
+        mkdir -p $INSTALL_DIR
61
+    fi
62
+
63
+    cd $INSTALL_DIR
64
+    git_clone $MATRIX_IRC_REPO $INSTALL_DIR/matrix_irc_bridge
65
+    cd $INSTALL_DIR/matrix_irc_bridge
66
+    npm install
67
+    if [ ! -f config.sample.yaml ]; then
68
+        exit 623835
69
+    fi
70
+
71
+    IRC_PASSWORD=$(cat /etc/ngircd/ngircd.conf | grep "Password =" | head -n 1 | awk -F '=' '{print $2}')
72
+
73
+    echo 'homeserver:' > $INSTALL_DIR/matrix_irc_bridge/config.yaml
74
+    echo '  url: "http://localhost:8008"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
75
+    echo '  domain: "localhost"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
76
+    echo 'ircService:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
77
+    echo '  servers:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
78
+    echo "    localhost:" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
79
+    echo "      name: \"${PROJECT_NAME} IRC\"" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
80
+    echo "      port: ${IRC_PORT}" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
81
+    echo '      ssl: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
82
+    echo '      sslselfsign: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
83
+    echo '      password: "${IRC_PASSWORD}"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
84
+    echo '      sendConnectionMessages: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
85
+    echo '      quitDebounce:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
86
+    echo '        enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
87
+    echo '        quitsPerSecond: 5' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
88
+    echo '        delayMs: 3600000 # 1h' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
89
+    echo '      botConfig:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
90
+    echo '        enabled: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
91
+    echo '        nick: "MatrixBot"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
92
+    echo '        joinChannelsIfNoUsers: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
93
+    echo '      privateMessages:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
94
+    echo '        enabled: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
95
+    echo '        federate: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
96
+    echo '      dynamicChannels:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
97
+    echo '        enabled: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
98
+    echo '        createAlias: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
99
+    echo '        published: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
100
+    echo '        joinRule: public' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
101
+    echo '        federate: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
102
+    echo '        aliasTemplate: "#irc_$CHANNEL"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
103
+    echo '      membershipLists:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
104
+    echo '        enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
105
+    echo '        floodDelayMs: 10000' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
106
+    echo '        global:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
107
+    echo '          ircToMatrix:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
108
+    echo '            initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
109
+    echo '            incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
110
+    echo '          matrixToIrc:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
111
+    echo '            initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
112
+    echo '            incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
113
+    echo '        rooms:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
114
+    echo '          - room: "!fuasirouddJoxtwfge:localhost"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
115
+    echo '            matrixToIrc:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
116
+    echo '              initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
117
+    echo '              incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
118
+    echo '        channels:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
119
+    echo "          - channel: \"#${PROJECT_NAME}\"" >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
120
+    echo '            ircToMatrix:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
121
+    echo '              initial: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
122
+    echo '              incremental: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
123
+    echo '      mappings:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
124
+    echo '        "#thepub": ["!kieouiJuedJoxtVdaG:localhost"]' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
125
+    echo '      matrixClients:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
126
+    echo '        userTemplate: "@irc_$NICK"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
127
+    echo '        displayName: "$NICK (IRC)"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
128
+    echo '      ircClients:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
129
+    echo '        nickTemplate: "$DISPLAY[m]"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
130
+    echo '        allowNickChanges: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
131
+    echo '        maxClients: 30' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
132
+    echo '        idleTimeout: 10800' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
133
+    echo '        reconnectIntervalMs: 5000' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
134
+    echo '        lineLimit: 3' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
135
+    echo '  ident:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
136
+    echo '    enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
137
+    echo '    port: 1113' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
138
+    echo '  logging:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
139
+    echo '    level: "debug"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
140
+    echo '    logfile: "debug.log"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
141
+    echo '    errfile: "errors.log"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
142
+    echo '    toConsole: true' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
143
+    echo '    maxFileSizeBytes: 134217728 # 128 MB' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
144
+    echo '    maxFiles: 5' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
145
+    echo '  databaseUri: "nedb://data"' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
146
+    echo '  debugApi:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
147
+    echo '    enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
148
+    echo '    port: 11100' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
149
+    echo '  provisioning:' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
150
+    echo '    enabled: false' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
151
+    echo '    requestTimeoutSeconds: 300' >> $INSTALL_DIR/matrix_irc_bridge/config.yaml
152
+
153
+    /usr/bin/node $INSTALL_DIR/matrix_irc_bridge/app.js -r -f /etc/matrix-synapse/my_registration_file.yaml -u "http://${DEFAULT_DOMAIN_NAME}:9999" -c $INSTALL_DIR/matrix_irc_bridge/config.yaml -l my_bot
154
+
155
+    if ! grep "my_registration_file.yaml" homeserver.yaml; then
156
+        echo 'app_service_config_files: ["my_registration_file.yaml"]' >> homeserver.yaml
157
+    fi
158
+
159
+    echo '[Unit]' > /etc/systemd/system/matrix_irc_bridge.service
160
+    echo 'Description=Matrix IRC Bridge' >> /etc/systemd/system/matrix_irc_bridge.service
161
+    echo '' >> /etc/systemd/system/matrix_irc_bridge.service
162
+    echo '[Service]' >> /etc/systemd/system/matrix_irc_bridge.service
163
+    echo 'Type=simple' >> /etc/systemd/system/matrix_irc_bridge.service
164
+    echo 'User=matrix-synapse' >> /etc/systemd/system/matrix_irc_bridge.service
165
+    echo "WorkingDirectory=$INSTALL_DIR/matrix_irc_bridge" >> /etc/systemd/system/matrix_irc_bridge.service
166
+    echo "ExecStart=/usr/bin/node $INSTALL_DIR/matrix_irc_bridge/app.js -c $INSTALL_DIR/matrix_irc_bridge/config.yaml -f /etc/matrix-synapse/my_registration_file.yaml -p 9999" >> /etc/systemd/system/matrix_irc_bridge.service
167
+    echo 'Restart=always' >> /etc/systemd/system/matrix_irc_bridge.service
168
+    echo 'RestartSec=3' >> /etc/systemd/system/matrix_irc_bridge.service
169
+    echo '' >> /etc/systemd/system/matrix_irc_bridge.service
170
+    echo '[Install]' >> /etc/systemd/system/matrix_irc_bridge.service
171
+    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/matrix_irc_bridge.service
172
+    systemctl enable matrix_irc_bridge
173
+    systemctl start matrix_irc_bridge
174
+}
175
+
45 176
 function can_install_synapse {
46 177
     check_architecture=$(uname -a)
47 178
     if [[ "$check_architecture" == *"amd64"* || "$check_architecture" == *"i386"* ]]; then
@@ -178,6 +309,14 @@ function remove_synapse {
178 309
     rm /etc/apt/sources.list.d/synapse.list
179 310
     apt-get update
180 311
 
312
+    if [ -f /etc/systemd/system/matrix_irc_bridge.service ]; then
313
+        systemctl stop matrix_irc_bridge
314
+        systemctl disable matrix_irc_bridge
315
+        rm /etc/systemd/system/matrix_irc_bridge.service
316
+        remove_nodejs synapse
317
+        rm -rf $INSTALL_DIR/matrix_irc_bridge
318
+    fi
319
+
181 320
     remove_completion_param install_synapse
182 321
     sed -i '/synapse/d' $COMPLETION_FILE
183 322
     sed -i '/Synapse/d' /home/$MY_USERNAME/README
@@ -220,6 +359,19 @@ function install_synapse {
220 359
     if [ ! -d /etc/matrix-synapse ]; then
221 360
         exit 653835
222 361
     fi
362
+
363
+    apt-get -yq install matrix-synapse-angular-client
364
+    cp -av /etc/matrix-synapse/conf.d/webclient.yaml \
365
+       /etc/matrix-synapse/conf.d/webclient.yaml.orig
366
+    sed -e 's|,$||g' -i /etc/matrix-synapse/conf.d/webclient.yaml
367
+    cp -av  /etc/init.d/matrix-synapse /etc/init.d/matrix-synapse.orig
368
+    sed -e 's|chown $USER:nogroup $PIDFILE.*|chown $USER:nogroup $PIDFILE /var/lib/$NAME/media|g' -i /etc/init.d/matrix-synapse
369
+    diff -u /etc/init.d/matrix-synapse.orig /etc/init.d/matrix-synapse
370
+    cp -av /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.orig
371
+    sed -i 's|enable_registration: False|enable_registration: True|g' -i /etc/matrix-synapse/homeserver.yaml
372
+    rm -f /etc/matrix-synapse/conf.d/*.orig /etc/matrix-synapse/conf.d/*~
373
+
374
+    update_default_domain
223 375
     systemctl stop matrix-synapse
224 376
     systemctl start matrix-synapse
225 377
 
@@ -260,6 +412,8 @@ function install_synapse {
260 412
         fi
261 413
     fi
262 414
 
415
+    #install_matrix_irc_bridge
416
+
263 417
     APP_INSTALLED=1
264 418
 }
265 419
 

+ 13
- 0
src/freedombone-utils-web 查看文件

@@ -739,6 +739,19 @@ function update_default_domain {
739 739
                 systemctl restart dovecot
740 740
             fi
741 741
         fi
742
+
743
+        if [ -d /etc/matrix-synapse ]; then
744
+            cp /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem /etc/matrix-synapse/homeserver.tls.crt
745
+            cp /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam /etc/matrix-synapse/homeserver.tls.dh
746
+            cp /etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key /etc/matrix-synapse/homeserver.tls.key
747
+            chown matrix-synapse: /etc/matrix-synapse/homeserver.tls.key
748
+            chown matrix-synapse: /etc/matrix-synapse/homeserver.tls.dh
749
+            chown matrix-synapse: /etc/matrix-synapse/homeserver.tls.crt
750
+            chmod -R 700 /etc/matrix-synapse/homeserver.tls.key
751
+            chmod -R 700 /etc/matrix-synapse/homeserver.tls.dh
752
+            chmod -R 700 /etc/matrix-synapse/homeserver.tls.crt
753
+            systemctl restart matrix-synapse
754
+        fi
742 755
     fi
743 756
 }
744 757