瀏覽代碼

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
             # Update the password in the readme
347
             # Update the password in the readme
348
             sed -i "s|IRC login password.*|IRC login password: $NEW_IRC_PASSWORD|g" /home/$MY_USERNAME/README
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
             write_config_param "IRC_PASSWORD" "$NEW_IRC_PASSWORD"
355
             write_config_param "IRC_PASSWORD" "$NEW_IRC_PASSWORD"
351
 
356
 
352
             # restart the daemon for the new password to take effect
357
             # restart the daemon for the new password to take effect

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

10
 #
10
 #
11
 # synapse matrix server
11
 # synapse matrix server
12
 #
12
 #
13
+# https://matrix.org/blog/2016/02/10/advanced-synapse-setup-with-lets-encrypt/
14
+#
13
 # License
15
 # License
14
 # =======
16
 # =======
15
 #
17
 #
36
 SYNAPSE_PORT=8448
38
 SYNAPSE_PORT=8448
37
 SYNAPSE_PASSWORD=
39
 SYNAPSE_PASSWORD=
38
 SYNAPSE_DIR=/etc/matrix-synapse
40
 SYNAPSE_DIR=/etc/matrix-synapse
41
+MATRIX_IRC_REPO="https://github.com/matrix-org/matrix-appservice-irc"
39
 
42
 
40
 synapse_variables=(ONION_ONLY
43
 synapse_variables=(ONION_ONLY
41
                    MY_USERNAME
44
                    MY_USERNAME
42
                    SYNAPSE_PASSWORD
45
                    SYNAPSE_PASSWORD
43
                    DEFAULT_DOMAIN_NAME)
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
 function can_install_synapse {
176
 function can_install_synapse {
46
     check_architecture=$(uname -a)
177
     check_architecture=$(uname -a)
47
     if [[ "$check_architecture" == *"amd64"* || "$check_architecture" == *"i386"* ]]; then
178
     if [[ "$check_architecture" == *"amd64"* || "$check_architecture" == *"i386"* ]]; then
178
     rm /etc/apt/sources.list.d/synapse.list
309
     rm /etc/apt/sources.list.d/synapse.list
179
     apt-get update
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
     remove_completion_param install_synapse
320
     remove_completion_param install_synapse
182
     sed -i '/synapse/d' $COMPLETION_FILE
321
     sed -i '/synapse/d' $COMPLETION_FILE
183
     sed -i '/Synapse/d' /home/$MY_USERNAME/README
322
     sed -i '/Synapse/d' /home/$MY_USERNAME/README
220
     if [ ! -d /etc/matrix-synapse ]; then
359
     if [ ! -d /etc/matrix-synapse ]; then
221
         exit 653835
360
         exit 653835
222
     fi
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
     systemctl stop matrix-synapse
375
     systemctl stop matrix-synapse
224
     systemctl start matrix-synapse
376
     systemctl start matrix-synapse
225
 
377
 
260
         fi
412
         fi
261
     fi
413
     fi
262
 
414
 
415
+    #install_matrix_irc_bridge
416
+
263
     APP_INSTALLED=1
417
     APP_INSTALLED=1
264
 }
418
 }
265
 
419
 

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

739
                 systemctl restart dovecot
739
                 systemctl restart dovecot
740
             fi
740
             fi
741
         fi
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
     fi
755
     fi
743
 }
756
 }
744
 
757