Wiki-Quellcode von Kopano Optimierungen

Version 5.1 von Jonas Mayer am 2022/05/02 13:00

Zeige letzte Bearbeiter
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:
2
3 {{toc start="5"/}}
4
5
6 ===== (% style="color:#000000" %)**__Zustellbarkeit der Unzustellbarkeits-Nachrichten verbessern__**(%%) =====
7
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.
9
10
11 (% style="color:#000000" %)Bearbeiten Sie in die Datei kopano-g1.yaml im puppeteer Container:
12
13 {{code language="bash"}}
14 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/kopano-g1.yaml
15 {{/code}}
16
17
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).
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
29
30 ===== (% style="color:#000000" %)**__Anbindung/Akkulaufzeit von Endgeräten verbessern__**(%%) =====
31
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.
33
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).
35
36
37 (% style="color:#000000" %)Zum erhöhen der TimeOuts öffnen Sie die kopano-g1.yaml:
38
39 {{code language="bash"}}
40 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/kopano-g1.yaml
41 {{/code}}
42
43
44 (% style="color:#000000" %)Fügen Sie folgende Zeilen am Ende der Datei ein:
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
58 (% style="color:#000000" %)Zusätzlich müssen Sie die Datei rev-proxy.yaml erstellen/bearbeiten:
59
60 {{code language="bash"}}
61 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/rev-proxy.yaml
62 {{/code}}
63
64
65 (% style="color:#000000" %)Ergänzen/Befüllen Sie die Datei mit folgendem Inhalt:
66
67 {{code language="bash"}}
68 nginx::keepalive_timeout: 3600
69 nginx::keepalive_requests: 500
70 {{/code}}
71
72
73 ===== (% style="color:#000000" %)**__Kopano Leistung verbessern__**(%%) =====
74
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.
76
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.
78
79
80 (% style="color:#000000" %)Bearbeiten Sie in die Datei kopano-g1.yaml im puppeteer Container:
81
82 {{code language="bash"}}
83 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/kopano-g1.yaml
84 {{/code}}
85
86
87 (% style="color:#000000" %)Folgende Parameter können ggf. helfen die Leistung zu verbessern:
88
89 {{code language="yaml"}}
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
96 # kopano-g1.yaml für Kopano <50 Users
97 ld_kopano::server:
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'
128 {{/code}}
129
130
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:
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
144 (% style="color:#000000" %)Folgende Einstellung können für die mysql56.yaml gesetzt werden:
145
146 {{code language="bash"}}
147 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/mysql56.yaml
148 {{/code}}
149
150 {{code language="yaml"}}
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
182 (% id="cke_bm_172S" style="color:#000000; display:none" %) (% style="color:#000000" %)Folgende Einstellung können für die mariadb103.yaml gesetzt werden:
183
184 {{code language="bash"}}
185 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/mariadb103.yaml
186 {{/code}}
187
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}}
220
221
222 **mariadb103.yaml für Kopano <50 Users:**
223
224 {{code language="yaml"}}
225 max_allowed_packet: '256M'
226 sort_buffer_size: '2M'
227 innodb_buffer_pool_size: '1G'
228
229 {{/code}}
230
231
232 **mariadb103.yaml für Kopano >= 50 Users:**
233
234 {{code language="yaml"}}
235 max_allowed_packet: '1G'
236 sort_buffer_size: '4M'
237 innodb_buffer_pool_size: '2G'
238 {{/code}}
239
240
241 ===== (% style="color:#000000" %)__**Public Folder erstellen**__(%%) =====
242
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:
244
245 {{code language="bash"}}
246 root@kopano-g1:~ # kopano-admin -s
247 {{/code}}
248
249
250 ===== (% style="color:#000000" %)__**Cronjob für Wartungsaufgaben**__(%%) =====
251
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:
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
261 ===== (% style="color:#000000" %)**__Netzlaufwerke auf der Kopano-Weboberfläche anzeigen__**(%%) =====
262
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:
264
265
266 (% style="color:#000000" %)Führen Sie den Sync über den kopano-admin durch:
267
268 {{code language="bash"}}
269 root@kopano-g1:~ # kopano-admin --sync
270 {{/code}}
271
272
273 (% style="color:#000000" %)Laden Sie folgendes Skript herunter:
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
280 (% style="color:#000000" %)Führen Sie das Skript aus:
281
282 {{code language="bash"}}
283 root@kopano-g1:~ # bash /tmp/install-inject-shares.sh
284 {{/code}}
285
286
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:
288
289 {{code language="bash"}}
290 root@kopano-g1:~ # inject-shares.sh
291 {{/code}}
292
293 (% style="color:#000000" %)**__Hinweis:__** Falls beim aufrufen des Skripts Mapi Fehler auftreten, bitte folgende Pakete installieren:(%%)
294
295
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
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.