Wiki-Quellcode von Kopano Optimierungen

Version 4.1 von Christian Germann am 2022/05/02 11:36

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
Jens Gruber 3.1 6 ===== (% style="color:#000000" %)**__Zustellbarkeit der Unzustellbarkeits-Nachrichten verbessern__**(%%) =====
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
17
Jens Gruber 3.1 18 (% 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 19
20 {{code language="bash"}}
21 ld_kopano::postfix::hashes:
22   '%{dir_etc}/sender_dependent_relayhost_maps_external.hash':
23     content: |
24       %{header}
25       <> smtp.meineschule.de
26       @meineschule.de smtp.meineschule.de
27 {{/code}}
28
Jens Gruber 1.3 29
Jens Gruber 3.1 30 ===== (% style="color:#000000" %)**__Anbindung/Akkulaufzeit von Endgeräten verbessern__**(%%) =====
Jens Gruber 1.4 31
Jens Gruber 3.1 32 (% 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.
Jens Gruber 1.4 33
Jens Gruber 3.1 34 (% 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).
Jens Gruber 1.4 35
36
Jens Gruber 3.1 37 (% style="color:#000000" %)Zum erhöhen der TimeOuts öffnen Sie die kopano-g1.yaml:
Jens Gruber 1.4 38
39 {{code language="bash"}}
40 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/kopano-g1.yaml
41 {{/code}}
42
43
Jens Gruber 3.1 44 (% style="color:#000000" %)Fügen Sie folgende Zeilen am Ende der Datei ein:
Jens Gruber 1.4 45
46 {{code language="bash"}}
47 apache::keepalive: 'On'
48 apache::keepalive_timeout: '45'
49 apache::max_keepalive_requests: '500'
50 apache::mod::prefork::maxclients: '384'
51 apache::mod::prefork::serverlimit: '384'
52
53 nginx::keepalive_timeout: 3600
54 nginx::keepalive_requests: 500
55 {{/code}}
56
57
Jens Gruber 3.1 58 (% style="color:#000000" %)Zusätzlich müssen Sie die Datei rev-proxy.yaml erstellen/bearbeiten:
Jens Gruber 1.4 59
60 {{code language="bash"}}
61 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/rev-proxy.yaml
62 {{/code}}
63
64
Jens Gruber 3.1 65 (% style="color:#000000" %)Ergänzen/Befüllen Sie die Datei mit folgendem Inhalt:
Jens Gruber 1.4 66
67 {{code language="bash"}}
68 nginx::keepalive_timeout: 3600
69 nginx::keepalive_requests: 500
70 {{/code}}
71
Jens Gruber 1.5 72
Jens Gruber 3.1 73 ===== (% style="color:#000000" %)**__Kopano Leistung verbessern__**(%%) =====
Jens Gruber 1.5 74
Jens Gruber 3.1 75 (% 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 76
Jens Gruber 3.1 77 (% 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 78
79
Jens Gruber 3.1 80 (% style="color:#000000" %)Bearbeiten Sie in die Datei kopano-g1.yaml im puppeteer Container:
Jens Gruber 1.5 81
82 {{code language="bash"}}
83 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/kopano-g1.yaml
84 {{/code}}
85
86
Jens Gruber 3.1 87 (% style="color:#000000" %)Folgende Parameter können ggf. helfen die Leistung zu verbessern:
Jens Gruber 1.5 88
Christian Germann 4.1 89 {{code language="yaml"}}
Jens Gruber 1.5 90 apache::keepalive: 'On'
91 apache::keepalive_timeout: '45'
92 apache::max_keepalive_requests: '500'
93 apache::mod::prefork::maxclients: '500'
94 apache::mod::prefork::serverlimit: '500'
95
Christian Germann 4.1 96 # kopano-g1.yaml für Kopano <50 Users
Jens Gruber 1.5 97 ld_kopano::server:
Christian Germann 4.1 98 settings:
99 cache_cell_size: '512M'
100 cache_object_size: '16M'
101 cache_indexedobject_size: '32M'
102 enable_sql_procedures: 'yes'
103 # The following 2 settings require a cronjob to run periodically instead (in case the value is disabled)
104 sync_gab_realtime: 'no'
105 softdelete_lifetime: '0'
106
107 # kopano-g1.yaml für Kopano >=50 Users
108 ld_kopano::server:
109 settings:
110 cache_cell_size: '6144M'
111 cache_object_size: '32M'
112 cache_indexedobject_size: '64M'
113 enable_sql_procedures: 'yes'
114 # The following 2 settings require a cronjob to run periodically instead (in case the value is disabled)
115 sync_gab_realtime: 'no'
116 softdelete_lifetime: '0'
117
118 # kopano-g1.yaml für Kopano >=200 Users
119 ld_kopano::server:
120 settings:
121 cache_cell_size: '12288M'
122 cache_object_size: '256M'
123 cache_indexedobject_size: '512M'
124 enable_sql_procedures: 'yes'
125 # The following 2 settings require a cronjob to run periodically instead (in case the value is disabled)
126 sync_gab_realtime: 'no'
127 softdelete_lifetime: '0'
Jens Gruber 1.5 128 {{/code}}
129
Jens Gruber 1.6 130
Jens Gruber 3.1 131 (% 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 132
133 {{code language="bash"}}
134 root@kopano-g1:~ # /etc/cron.d/kopano-optimization
135 {{/code}}
136
137 {{code language="bash"}}
138 # /etc/cron.d/kopano-optimization
139 */30 *  * * *     root   [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --sync 2>&1 >/dev/null
140 0 4  * * *     root   [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --purge-softdelete 30 2>&1 >/dev/null
141 {{/code}}
142
143
Jens Gruber 3.1 144 (% style="color:#000000" %)Folgende Einstellung können für die mysql56.yaml gesetzt werden:
Jens Gruber 1.6 145
146 {{code language="bash"}}
147 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/mysql56.yaml
148 {{/code}}
149
Christian Germann 4.1 150 {{code language="yaml"}}
Jens Gruber 1.6 151 mysql::server::override_options:
152 mysqldump:
153 max_allowed_packet: '1G'
154 mysqld:
155 innodb_file_per_table: true
156 bind-address: '0.0.0.0'
157 skip-name-resolve: true
158 innodb_large_prefix: true
159 innodb_file_format: 'Barracuda'
160 max_allowed_packet: '256M'
161 max_connections: '150'
162 query_cache_limit: '2M'
163 query_cache_size: '64M'
164 thread_stack: '512K'
165 tmp_table_size: '64M'
166 max_heap_table_size: '64M'
167 sort_buffer_size: '2M'
168 join_buffer_size: '2M'
169 table_open_cache: '500'
170 innodb_autoextend_increment: '1000'
171 innodb_buffer_pool_size: '2G'
172 innodb_flush_log_at_trx_commit: '2'
173 innodb_flush_method: 'O_DSYNC'
174 innodb_lock_wait_timeout: '120'
175 innodb_log_buffer_size: '8M'
176 innodb_log_file_size: '1G'
177 innodb_log_files_in_group: '3'
178 innodb_read_io_threads: '4'
179 innodb_write_io_threads: '4'
180 {{/code}}
181
Christian Germann 4.1 182 (% id="cke_bm_172S" style="color:#000000; display:none" %) (% style="color:#000000" %)Folgende Einstellung können für die mysql56.yaml gesetzt werden:
Jens Gruber 1.8 183
Christian Germann 4.1 184 {{code language="bash"}}
185 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/mariadb103.yaml
186 {{/code}}
Jens Gruber 1.8 187
Christian Germann 4.1 188 {{code language="yaml"}}
189 mysql::server::override_options:
190 mysqldump:
191 max_allowed_packet: '1G'
192 mysqld:
193 innodb_file_per_table: '1'
194 bind-address: '0.0.0.0'
195 skip-name-resolve: true
196 innodb_large_prefix: '1'
197 max_allowed_packet: '256M'
198 max_connections: '151'
199 query_cache_limit: '2M'
200 query_cache_size: '64M'
201 thread_stack: '512K'
202 tmp_table_size: '64M'
203 max_heap_table_size: '64M'
204 sort_buffer_size: '2M'
205 join_buffer_size: '2M'
206 table_open_cache: '500'
207 innodb_autoextend_increment: '1000'
208 innodb_buffer_pool_size: '1G'
209 # The following setting is based on the existing ibdata1 file, check current size and insert it here (rounded to MB)
210 innodb_data_file_path: 'ibdata1:12M:autoextend'
211 innodb_flush_log_at_trx_commit: '2'
212 innodb_flush_method: 'O_DSYNC'
213 innodb_lock_wait_timeout: '120'
214 innodb_log_buffer_size: '8M'
215 innodb_log_file_size: '1G'
216 innodb_log_files_in_group: '3'
217 innodb_read_io_threads: '4'
218 innodb_write_io_threads: '4'
219 {{/code}}
Jens Gruber 1.8 220
221
Christian Germann 4.1 222 **mariadb103.yaml für Kopano <50 Users:**
Jens Gruber 1.8 223
Christian Germann 4.1 224 {{code language="yaml"}}
225 max_allowed_packet: '256M'
226 sort_buffer_size: '2M'
227 innodb_buffer_pool_size: '1G'
Jens Gruber 1.8 228
229 {{/code}}
230
231
Christian Germann 4.1 232 **mariadb103.yaml für Kopano >= 50 Users:**
Jens Gruber 1.8 233
Christian Germann 4.1 234 {{code language="yaml"}}
235 max_allowed_packet: '1G'
236 sort_buffer_size: '4M'
237 innodb_buffer_pool_size: '2G'
Jens Gruber 1.8 238 {{/code}}
239
240
Jens Gruber 3.1 241 ===== (% style="color:#000000" %)__**Public Folder erstellen**__(%%) =====
Jens Gruber 2.2 242
Jens Gruber 3.1 243 (% 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 244
245 {{code language="bash"}}
246 root@kopano-g1:~ # kopano-admin -s
247 {{/code}}
248
249
Jens Gruber 3.1 250 ===== (% style="color:#000000" %)__**Cronjob für Wartungsaufgaben**__(%%) =====
Jens Gruber 2.2 251
Jens Gruber 3.1 252 (% 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 253
254 {{code language="bash"}}
255 # /etc/cron.d/kopano-optimization
256 */30 * * * * root [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --sync 2>&1 >/dev/null
257 0 4 * * * root [ -x /usr/sbin/kopano-admin ] && /usr/sbin/kopano-admin --purge-softdelete 30 2>&1 >/dev/null
258 {{/code}}
259
260
Jens Gruber 3.1 261 ===== (% style="color:#000000" %)**__Netzlaufwerke auf der Kopano-Weboberfläche anzeigen__**(%%) =====
Jens Gruber 2.3 262
Jens Gruber 3.1 263 (% 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 264
265
Jens Gruber 3.1 266 (% style="color:#000000" %)Führen Sie den Sync über den kopano-admin durch:
Jens Gruber 2.3 267
268 {{code language="bash"}}
269 root@kopano-g1:~ # kopano-admin --sync
270 {{/code}}
271
272
Jens Gruber 3.1 273 (% style="color:#000000" %)Laden Sie folgendes Skript herunter:
Jens Gruber 2.3 274
275 {{code language="bash"}}
276 root@kopano-g1:~ # wget https://files.sbe.de/kopano/install-inject-shares.sh -O /tmp/install-inject-shares.sh
277 {{/code}}
278
279
Jens Gruber 3.1 280 (% style="color:#000000" %)Führen Sie das Skript aus:
Jens Gruber 2.3 281
282 {{code language="bash"}}
283 root@kopano-g1:~ # bash /tmp/install-inject-shares.sh
284 {{/code}}
285
286
Jens Gruber 3.1 287 (% 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 288
289 {{code language="bash"}}
290 root@kopano-g1:~ # inject-shares.sh
291 {{/code}}
292
Christian Germann 4.1 293 (% style="color:#000000" %)**__Hinweis:__** Falls beim aufrufen des Skripts Mapi Fehler auftreten, bitte folgende Pakete installieren:(%%)
Jens Gruber 3.1 294
Jens Gruber 2.3 295
Jens Gruber 3.1 296 {{code language="bash"}}
297 python-mapi
298 python-kopano
299 python3-kopano-utils
300 kopano-python-utils
301 {{/code}}
302
303
304 ===== (% style="color:#000000" %)__**Synchronisation der Benutzer in das globale Adressbuch**__(%%) =====
305
306 (% 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.
307
308 {{code language="bash"}}
309 root@kopano-g1:~ # chmod +x /etc/cron.daily/gabsync
310 {{/code}}
311
Christian Germann 4.1 312 (% 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.