Wiki-Quellcode von Kopano Optimierungen

Version 9.1 von Christian Germann am 2022/05/03 08:39

Verstecke letzte Bearbeiter
Jens Gruber 3.1 1 (% style="color:#000000" %)Es gibt mehrere Anpassungen die sich anbieten um den laufenden Betrieb von Kopano zu verbessern. Folgende Maßnahmen können optional genutzt werden:
Jens Gruber 1.1 2
Jens Gruber 2.2 3 {{toc start="5"/}}
Jens Gruber 1.1 4
Jens Gruber 2.2 5
Jonas Mayer 6.1 6 ===== (% style="color:#000000" %)**__Zustellbarkeit der Unzustellbarkeits-Nachrichten verbessern durch Versenden per Relayhost__**(%%) =====
Jens Gruber 1.1 7
Jens Gruber 3.1 8 (% style="color:#000000" %)Es ist möglich die Zustellbarkeit der Unzustellbarkeits-Nachrichten für den Absender zu verbessern. Dafür ist es notwendig den SMTP-Server des gewählten Mailproviders als Smarthost einzutragen.
Jens Gruber 1.1 9
10
Jens Gruber 3.1 11 (% style="color:#000000" %)Bearbeiten Sie in die Datei kopano-g1.yaml im puppeteer Container:
Jens Gruber 1.1 12
13 {{code language="bash"}}
14 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/kopano-g1.yaml
15 {{/code}}
16
Jens Gruber 3.1 17 (% style="color:#000000" %)Die Zeile "ld_kopano::postfix::hashes:" beschreibt das Handling für den Null-Sender. Fügen Sie nun die Zeile "<> smtp.meineschule.de" ein (Ergänzen Sie die smtp Adresse durch die von ihnen genutzte).
Jens Gruber 1.1 18
19 {{code language="bash"}}
20 ld_kopano::postfix::hashes:
21   '%{dir_etc}/sender_dependent_relayhost_maps_external.hash':
22     content: |
23       %{header}
24       <> smtp.meineschule.de
25       @meineschule.de smtp.meineschule.de
26 {{/code}}
27
Jens Gruber 1.3 28
Jens Gruber 3.1 29 ===== (% style="color:#000000" %)**__Kopano Leistung verbessern__**(%%) =====
Jens Gruber 1.5 30
Jens Gruber 3.1 31 (% style="color:#000000" %)Kopano ist in der Standardinstallation lediglich für den Betrieb von 10 Benutzern ausgelegt. Das heißt, die Kopano-Serverdienste reservieren mit den Standardeinstellungen sehr wenig Systemressourcen (RAM) und die Plattform arbeitet als Konsequenz sehr langsam, wenn deutlich mehr Benutzer ein Postfach erhalten. Man sollte daher in den meisten Fällen die zugeteilten Systemressourcen (deutlich) erhöhen, um ein vernünftiges Nutzererlebnis zu erzielen.
Jens Gruber 1.5 32
Jens Gruber 3.1 33 (% style="color:#000000" %)Um die Einstellungen Puppet-gerecht zu definieren, hilft nachfolgende Auflistung von YAML-Einstellungen. Bei der Auswahl der Werte muss man die **Hardware-Ressourcen** des Servers berücksichtigen, im Beispiel wird von einem leistungsstarken Server mit **32GB** **RAM** und **2 CPU-Sockets** und insgesamt **32 Kernen** ausgegangen.
Jens Gruber 1.5 34
35
Jens Gruber 3.1 36 (% style="color:#000000" %)Bearbeiten Sie in die Datei kopano-g1.yaml im puppeteer Container:
Jens Gruber 1.5 37
38 {{code language="bash"}}
39 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/kopano-g1.yaml
40 {{/code}}
41
Christian Germann 7.1 42 Passen Sie die kopano-g1.yaml je nach Größe der Schule an.
Jens Gruber 1.5 43
Christian Germann 7.1 44 **kopano-g1.yaml für Kopano <50 Users:**
Jens Gruber 1.5 45
Christian Germann 4.1 46 {{code language="yaml"}}
Christian Germann 7.1 47 nginx::keepalive_timeout: 3600
48 nginx::keepalive_requests: 500
49
Jens Gruber 1.5 50 apache::keepalive: 'On'
51 apache::keepalive_timeout: '45'
52 apache::max_keepalive_requests: '500'
Christian Germann 7.1 53 apache::mod::prefork::maxclients: '384'
54 apache::mod::prefork::serverlimit: '384'
Jens Gruber 1.5 55
56 ld_kopano::server:
Christian Germann 4.1 57 settings:
58 cache_cell_size: '512M'
59 cache_object_size: '16M'
60 cache_indexedobject_size: '32M'
61 enable_sql_procedures: 'yes'
62 # The following 2 settings require a cronjob to run periodically instead (in case the value is disabled)
63 sync_gab_realtime: 'no'
64 softdelete_lifetime: '0'
Christian Germann 7.1 65 {{/code}}
Christian Germann 4.1 66
Christian Germann 7.1 67 **kopano-g1.yaml für Kopano >=50 Users**
68
69 {{code language="yaml"}}
70 nginx::keepalive_timeout: 3600
71 nginx::keepalive_requests: 500
72
73 apache::keepalive: 'On'
74 apache::keepalive_timeout: '45'
75 apache::max_keepalive_requests: '500'
76 apache::mod::prefork::maxclients: '500'
77 apache::mod::prefork::serverlimit: '500'
78
Christian Germann 4.1 79 ld_kopano::server:
80 settings:
81 cache_cell_size: '6144M'
82 cache_object_size: '32M'
83 cache_indexedobject_size: '64M'
84 enable_sql_procedures: 'yes'
85 # The following 2 settings require a cronjob to run periodically instead (in case the value is disabled)
86 sync_gab_realtime: 'no'
87 softdelete_lifetime: '0'
Christian Germann 7.1 88 {{/code}}
Christian Germann 4.1 89
Christian Germann 7.1 90 **kopano-g1.yaml für Kopano >=200 Users**
91
92 {{code language="yaml"}}
93 nginx::keepalive_timeout: 3600
94 nginx::keepalive_requests: 500
95
96 apache::keepalive: 'On'
97 apache::keepalive_timeout: '45'
98 apache::max_keepalive_requests: '500'
99 apache::mod::prefork::maxclients: '500'
100 apache::mod::prefork::serverlimit: '500'
101
Christian Germann 4.1 102 ld_kopano::server:
103 settings:
104 cache_cell_size: '12288M'
105 cache_object_size: '256M'
106 cache_indexedobject_size: '512M'
107 enable_sql_procedures: 'yes'
108 # The following 2 settings require a cronjob to run periodically instead (in case the value is disabled)
109 sync_gab_realtime: 'no'
110 softdelete_lifetime: '0'
Jens Gruber 1.5 111 {{/code}}
112
Christian Germann 8.1 113 (% id="cke_bm_884S" style="color:#000000; display:none" %) (% style="color:#000000" %)Zusätzlich muss im Kopano-Container ein Cron-Job eingerichtet werden, sofern man im Abschnitt **ld_kopano::server** die Parameter **sync_gab_realtime** / **softdelete_lifetime** im deaktivierten Zustand eingetragen hat:
Jens Gruber 1.6 114
115 {{code language="bash"}}
116 root@kopano-g1:~ # /etc/cron.d/kopano-optimization
117 {{/code}}
118
119 {{code language="bash"}}
120 # /etc/cron.d/kopano-optimization
121 */30 *  * * *     root   [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --sync 2>&1 >/dev/null
122 0 4  * * *     root   [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --purge-softdelete 30 2>&1 >/dev/null
123 {{/code}}
124
125
Christian Germann 8.1 126 ===== __**mariadb103/mysql56(% style="color:#000000" %) Leistung verbessern(%%)**__ =====
Christian Germann 7.1 127
Jens Gruber 3.1 128 (% style="color:#000000" %)Folgende Einstellung können für die mysql56.yaml gesetzt werden:
Jens Gruber 1.6 129
130 {{code language="bash"}}
131 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/mysql56.yaml
132 {{/code}}
133
Christian Germann 4.1 134 {{code language="yaml"}}
Jens Gruber 1.6 135 mysql::server::override_options:
136 mysqldump:
137 max_allowed_packet: '1G'
138 mysqld:
139 innodb_file_per_table: true
140 bind-address: '0.0.0.0'
141 skip-name-resolve: true
142 innodb_large_prefix: true
143 innodb_file_format: 'Barracuda'
144 max_allowed_packet: '256M'
145 max_connections: '150'
146 query_cache_limit: '2M'
147 query_cache_size: '64M'
148 thread_stack: '512K'
149 tmp_table_size: '64M'
150 max_heap_table_size: '64M'
151 sort_buffer_size: '2M'
152 join_buffer_size: '2M'
153 table_open_cache: '500'
154 innodb_autoextend_increment: '1000'
155 innodb_buffer_pool_size: '2G'
156 innodb_flush_log_at_trx_commit: '2'
157 innodb_flush_method: 'O_DSYNC'
158 innodb_lock_wait_timeout: '120'
159 innodb_log_buffer_size: '8M'
160 innodb_log_file_size: '1G'
161 innodb_log_files_in_group: '3'
162 innodb_read_io_threads: '4'
163 innodb_write_io_threads: '4'
164 {{/code}}
165
Jonas Mayer 5.1 166 (% id="cke_bm_172S" style="color:#000000; display:none" %) (% style="color:#000000" %)Folgende Einstellung können für die mariadb103.yaml gesetzt werden:
Jens Gruber 1.8 167
Christian Germann 4.1 168 {{code language="bash"}}
169 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/mariadb103.yaml
170 {{/code}}
Jens Gruber 1.8 171
Christian Germann 4.1 172 {{code language="yaml"}}
173 mysql::server::override_options:
174 mysqldump:
175 max_allowed_packet: '1G'
176 mysqld:
177 innodb_file_per_table: '1'
178 bind-address: '0.0.0.0'
179 skip-name-resolve: true
180 innodb_large_prefix: '1'
181 max_allowed_packet: '256M'
182 max_connections: '151'
183 query_cache_limit: '2M'
184 query_cache_size: '64M'
185 thread_stack: '512K'
186 tmp_table_size: '64M'
187 max_heap_table_size: '64M'
188 sort_buffer_size: '2M'
189 join_buffer_size: '2M'
190 table_open_cache: '500'
191 innodb_autoextend_increment: '1000'
192 innodb_buffer_pool_size: '1G'
193 # The following setting is based on the existing ibdata1 file, check current size and insert it here (rounded to MB)
194 innodb_data_file_path: 'ibdata1:12M:autoextend'
195 innodb_flush_log_at_trx_commit: '2'
196 innodb_flush_method: 'O_DSYNC'
197 innodb_lock_wait_timeout: '120'
198 innodb_log_buffer_size: '8M'
199 innodb_log_file_size: '1G'
200 innodb_log_files_in_group: '3'
201 innodb_read_io_threads: '4'
202 innodb_write_io_threads: '4'
203 {{/code}}
Jens Gruber 1.8 204
Christian Germann 7.1 205 Passen Sie die {{code}}mariadb103.yaml{{/code}} anhand der Größe der Schule an.
Jens Gruber 1.8 206
Christian Germann 4.1 207 **mariadb103.yaml für Kopano <50 Users:**
Jens Gruber 1.8 208
Christian Germann 4.1 209 {{code language="yaml"}}
210 max_allowed_packet: '256M'
211 sort_buffer_size: '2M'
212 innodb_buffer_pool_size: '1G'
Jens Gruber 1.8 213
214 {{/code}}
215
Christian Germann 4.1 216 **mariadb103.yaml für Kopano >= 50 Users:**
Jens Gruber 1.8 217
Christian Germann 4.1 218 {{code language="yaml"}}
219 max_allowed_packet: '1G'
220 sort_buffer_size: '4M'
221 innodb_buffer_pool_size: '2G'
Jens Gruber 1.8 222 {{/code}}
223
Christian Germann 9.1 224 (% class="wikigeneratedid" %)
225 ===== =====
226
Christian Germann 7.1 227 ===== (% style="color:#000000" %)**__Anbindung/Akkulaufzeit von Endgeräten verbessern__**(%%) =====
228
229 (% style="color:#000000" %)Bei Verwendung des ActiveSync-Protokolls bzw. Kopano Z-Push zur Anbindung von Endgeräten (Smartphones, Tablets, MS Outlook 2013/2016/2019 Clients) empfiehlt es sich, auf die HTTP-KeepAlive Einstellungen für die Webserver-Dienste in der Verbindungskette (Rev-Proxy → Kopano-Server) Einfluss zu nehmen.
230
231 (% style="color:#000000" %)Der KeepAlive-Wert wird bewusst hoch gewählt, damit Verbindungen zwischen Client und Kopano-Server länger offen gehalten werden können. Dadurch schont man die Batterie und Laufzeit von mobilen Geräten, da es sich u.a. auf den Standby-Betrieb von Smartphones auswirkt (der nicht permanent unterbrochen wird zum Starten einer neuen Verbindung).
232
233
234 (% style="color:#000000" %)Zusätzlich müssen Sie die Datei rev-proxy.yaml erstellen/bearbeiten:
235
236 {{code language="bash"}}
237 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/rev-proxy.yaml
238 {{/code}}
239
240 (% style="color:#000000" %)Ergänzen/Befüllen Sie die Datei mit folgendem Inhalt:
241
242 {{code language="bash"}}
243 nginx::keepalive_timeout: 3600
244 nginx::keepalive_requests: 500
245 {{/code}}
246
247
Jens Gruber 3.1 248 ===== (% style="color:#000000" %)__**Public Folder erstellen**__(%%) =====
Jens Gruber 2.2 249
Jens Gruber 3.1 250 (% style="color:#000000" %)Es kann sich anbieten einen Public Folder als gemeinsamen Ordner für alle Benutzer zu erstellen. Hierfür müssen Sie folgenden Befehl eingeben:
Jens Gruber 2.2 251
252 {{code language="bash"}}
253 root@kopano-g1:~ # kopano-admin -s
254 {{/code}}
255
256
Jens Gruber 3.1 257 ===== (% style="color:#000000" %)__**Cronjob für Wartungsaufgaben**__(%%) =====
Jens Gruber 2.2 258
Jens Gruber 3.1 259 (% style="color:#000000" %)Durch das Anlegen eines zusätzlichen Cronjobs, lassen sich Wartungsaufgaben automatisch zu bestimmten Zeiten durchführen. Folgenden Cronjob können Sie bei Bedarf erstellen:
Jens Gruber 2.2 260
261 {{code language="bash"}}
262 # /etc/cron.d/kopano-optimization
263 */30 * * * * root [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --sync 2>&1 >/dev/null
264 0 4 * * * root [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --purge-softdelete 30 2>&1 >/dev/null
265 {{/code}}
266
267
Jens Gruber 3.1 268 ===== (% style="color:#000000" %)**__Netzlaufwerke auf der Kopano-Weboberfläche anzeigen__**(%%) =====
Jens Gruber 2.3 269
Jens Gruber 3.1 270 (% style="color:#000000" %)Empfehlenswert ist das Einbinden der Netzlaufwerke (H: / P: / T:) des logoDIDACT-Servers auf der Kopano Weboberfläche. Gehen Sie wie folgt vor um den Nutzern dies zu ermöglichen:
Jens Gruber 2.3 271
272
Jens Gruber 3.1 273 (% style="color:#000000" %)Führen Sie den Sync über den kopano-admin durch:
Jens Gruber 2.3 274
275 {{code language="bash"}}
276 root@kopano-g1:~ # kopano-admin --sync
277 {{/code}}
278
Jens Gruber 3.1 279 (% style="color:#000000" %)Laden Sie folgendes Skript herunter:
Jens Gruber 2.3 280
281 {{code language="bash"}}
282 root@kopano-g1:~ # wget https://files.sbe.de/kopano/install-inject-shares.sh -O /tmp/install-inject-shares.sh
283 {{/code}}
284
Jens Gruber 3.1 285 (% style="color:#000000" %)Führen Sie das Skript aus:
Jens Gruber 2.3 286
287 {{code language="bash"}}
288 root@kopano-g1:~ # bash /tmp/install-inject-shares.sh
289 {{/code}}
290
Jens Gruber 3.1 291 (% style="color:#000000" %)Das Installationsskript legt einen CronJob an, der zyklisch einmal pro Tag die Netzlaufwerke für alle Kopano-Benutzer registriert. Dieser Vorgang kann unmittelbar nach der Installation durch die Eingabe von folgendem Befehl direkt angestoßen werden:
Jens Gruber 2.3 292
293 {{code language="bash"}}
294 root@kopano-g1:~ # inject-shares.sh
295 {{/code}}
296
Christian Germann 7.1 297 (% style="color:#000000" %)**__Hinweis:__** Falls beim Aufrufen des Skripts Mapi Fehler auftreten, bitte folgende Pakete installieren:(%%)
Jens Gruber 3.1 298
Jens Gruber 2.3 299
Jens Gruber 3.1 300 {{code language="bash"}}
301 python-mapi
302 python-kopano
303 python3-kopano-utils
304 kopano-python-utils
305 {{/code}}
306
307
308 ===== (% style="color:#000000" %)__**Synchronisation der Benutzer in das globale Adressbuch**__(%%) =====
309
310 (% style="color:#000000" %)Durch einen Cronjob ist es möglich Benutzer in das Globale Adressbuch einzupflegen. Hierbei handelt es sich um eine Erweiterung für die Kopano Outlook Extension, damit Benutzer mit Kopano-Postfach automatisch im Adressbuch anwählbar sind.
311
312 {{code language="bash"}}
313 root@kopano-g1:~ # chmod +x /etc/cron.daily/gabsync
314 {{/code}}
315
Christian Germann 4.1 316 (% style="color:#000000" %)__**Hinweis:**__ Dies stellt eine Erweiterung zum regulären ActiveSync-Protokoll durch Z-Push dar. Die Funktionsweise basiert auf einem synchronisierten Kontaktordner namens „Z-Push-KOE-GAB“ als Unterordner im Public Store / Öffentlichen Ordner.