@drumee/setup-infra 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +3 -0
  3. package/configs/etc/cron.d/drumee +6 -0
  4. package/configs/etc/postfix/master.cf +137 -0
  5. package/congigure/init/acme +69 -0
  6. package/congigure/init/mail +16 -0
  7. package/congigure/init/named +27 -0
  8. package/congigure/menu/menu -tmp +144 -0
  9. package/congigure/menu/menu-install +147 -0
  10. package/congigure/menu/menu-reinstall +15 -0
  11. package/congigure/prepare +10 -0
  12. package/congigure/preset/jitsi +9 -0
  13. package/congigure/setup-infra +58 -0
  14. package/congigure/setup-schemas +57 -0
  15. package/congigure/start +29 -0
  16. package/congigure/utils/configure +56 -0
  17. package/congigure/utils/dependencies +90 -0
  18. package/congigure/utils/jitsi +122 -0
  19. package/congigure/utils/misc +77 -0
  20. package/congigure/utils/prompt.sh +35 -0
  21. package/congigure/utils/setup-versions +7 -0
  22. package/index.js +572 -0
  23. package/package.json +30 -0
  24. package/template.js +453 -0
  25. package/templates/env/application.json.tpl +0 -0
  26. package/templates/env/logrotate.tpl +7 -0
  27. package/templates/etc/bind/named.conf.local +13 -0
  28. package/templates/etc/bind/named.conf.log +105 -0
  29. package/templates/etc/bind/named.conf.options +33 -0
  30. package/templates/etc/dkimkeys/dkim.key +1 -0
  31. package/templates/etc/drumee/conf.d/conference.json.tpl +9 -0
  32. package/templates/etc/drumee/conf.d/drumee.json.tpl +7 -0
  33. package/templates/etc/drumee/conf.d/exchange.json.tpl +4 -0
  34. package/templates/etc/drumee/conf.d/myDrumee.json.tpl +16 -0
  35. package/templates/etc/drumee/credential/db.json.tpl +6 -0
  36. package/templates/etc/drumee/credential/email.json.tpl +12 -0
  37. package/templates/etc/drumee/credential/ovh/dns.json.tpl +6 -0
  38. package/templates/etc/drumee/credential/ovh/dns.sh.tpl +7 -0
  39. package/templates/etc/drumee/credential/redis.json.tpl +6 -0
  40. package/templates/etc/drumee/credential/sms.json.tpl +6 -0
  41. package/templates/etc/drumee/dnsapi.sh.tpl +28 -0
  42. package/templates/etc/drumee/drumee.sh.tpl +43 -0
  43. package/templates/etc/drumee/env.json +29 -0
  44. package/templates/etc/drumee/infrastructure/internals/accel.conf.tpl +47 -0
  45. package/templates/etc/drumee/infrastructure/mfs.conf.tpl +16 -0
  46. package/templates/etc/drumee/infrastructure/platform.json.tpl +16 -0
  47. package/templates/etc/drumee/infrastructure/routes/main.conf.tpl +143 -0
  48. package/templates/etc/drumee/infrastructure/servers/tt.conf +199 -0
  49. package/templates/etc/drumee/ssl/main.conf.tpl +10 -0
  50. package/templates/etc/jitsi/jicofo/config +2 -0
  51. package/templates/etc/jitsi/jicofo/defaults/jicofo.conf +225 -0
  52. package/templates/etc/jitsi/jicofo/defaults/logging.properties +15 -0
  53. package/templates/etc/jitsi/jicofo/jicofo.conf.tpl +46 -0
  54. package/templates/etc/jitsi/jicofo/logging.properties.tpl +12 -0
  55. package/templates/etc/jitsi/meet.conf.tpl +131 -0
  56. package/templates/etc/jitsi/ssl.conf.tpl +25 -0
  57. package/templates/etc/jitsi/videobridge/config +2 -0
  58. package/templates/etc/jitsi/videobridge/defaults/jvb.conf +129 -0
  59. package/templates/etc/jitsi/videobridge/defaults/logging.properties +12 -0
  60. package/templates/etc/jitsi/videobridge/jvb.conf +67 -0
  61. package/templates/etc/jitsi/videobridge/logging.properties.tpl +12 -0
  62. package/templates/etc/jitsi/web/config.js.tpl +208 -0
  63. package/templates/etc/jitsi/web/defaults/default +26 -0
  64. package/templates/etc/jitsi/web/defaults/ffdhe2048.txt +8 -0
  65. package/templates/etc/jitsi/web/defaults/interface_config.js +273 -0
  66. package/templates/etc/jitsi/web/defaults/meet.conf +193 -0
  67. package/templates/etc/jitsi/web/defaults/nginx.conf +73 -0
  68. package/templates/etc/jitsi/web/defaults/settings-config.js +480 -0
  69. package/templates/etc/jitsi/web/defaults/ssl.conf +28 -0
  70. package/templates/etc/jitsi/web/defaults/system-config.js +60 -0
  71. package/templates/etc/jitsi/web/interface_config.js +273 -0
  72. package/templates/etc/mail/dkim.key +1 -0
  73. package/templates/etc/mailname +1 -0
  74. package/templates/etc/mysql/mariadb.conf.d/50-server.cnf +120 -0
  75. package/templates/etc/nginx/modules-enabled/90-turn-relay.conf +27 -0
  76. package/templates/etc/nginx/modules-enabled/90-turn-relay.conf.tpl +27 -0
  77. package/templates/etc/nginx/nginx.conf +65 -0
  78. package/templates/etc/nginx/sites-enabled/drumee.conf.tpl +33 -0
  79. package/templates/etc/nginx/sites-enabled/jitsi.conf.tpl +28 -0
  80. package/templates/etc/nginx/sites-enabled/turnrelay.conf.tpl +9 -0
  81. package/templates/etc/opendkim/KeyTable +1 -0
  82. package/templates/etc/postfix/main.cf +76 -0
  83. package/templates/etc/postfix/mysql-virtual-alias-maps.cf +5 -0
  84. package/templates/etc/postfix/mysql-virtual-mailbox-domains.cf +5 -0
  85. package/templates/etc/postfix/mysql-virtual-mailbox-maps.cf +5 -0
  86. package/templates/etc/prosody/conf.d/vhost.cfg.lua.tpl +162 -0
  87. package/templates/etc/prosody/defaults/conf.d/jitsi-meet.cfg.lua +406 -0
  88. package/templates/etc/prosody/defaults/credentials.sh +10 -0
  89. package/templates/etc/prosody/defaults/prosody.cfg.lua +225 -0
  90. package/templates/etc/prosody/defaults/saslauthd.conf +30 -0
  91. package/templates/etc/prosody/prosody.cfg.lua.tpl +203 -0
  92. package/templates/etc/turnserver.conf.tpl +46 -0
  93. package/templates/index.js +102 -0
  94. package/templates/schema/utils/configs.init.sql.tpl +20 -0
  95. package/templates/schema/utils/configs.update.sql.tpl +19 -0
  96. package/templates/server/ecosystem.config.js.tpl +8 -0
  97. package/templates/var/lib/bind/domain.tpl +70 -0
package/template.js ADDED
@@ -0,0 +1,453 @@
1
+ #!/usr/bin/env node
2
+
3
+ // ======================================================
4
+ //
5
+ // ======================================================
6
+ const Template = require("./templates");
7
+ const { writeFileSync, readFileSync } = require(`jsonfile`);
8
+ const { exec } = require("shelljs");
9
+ const { join } = require("path");
10
+ const { isString } = require("lodash");
11
+ const { exit } = process;
12
+ const { sysEnv } = require("@drumee/server-essentials");
13
+ const { totalmem } = require('os');
14
+ const ARGV = require('minimist')(process.argv.slice(2));
15
+ const { existsSync } = require("fs");
16
+
17
+ const {
18
+ ACME_DIR,
19
+ ACME_EMAIL_ACCOUNT,
20
+ ADMIN_EMAIL,
21
+ DRUMEE_DESCRIPTION,
22
+ DRUMEE_DOMAIN_NAME,
23
+ FORCE_INSTALL,
24
+ NSUPDATE_KEY,
25
+ PUBLIC_IP4,
26
+ PUBLIC_IP6,
27
+ } = process.env;
28
+
29
+ let Dns = require("dns");
30
+ /**
31
+ *
32
+ * @param {*} l
33
+ * @returns
34
+ */
35
+ function randomString(l = 16) {
36
+ let crypto = require("crypto");
37
+ return crypto
38
+ .randomBytes(16)
39
+ .toString("base64")
40
+ .replace(/[\+\/=]+/g, "");
41
+ }
42
+
43
+ /**
44
+ *
45
+ * @param {*} data
46
+ * @returns
47
+ */
48
+ function copyFields(data, keys) {
49
+ let r = {};
50
+ for (let key of keys) {
51
+ if (data[key] !== null) {
52
+ r[key] = data[key];
53
+ }
54
+ }
55
+ return r;
56
+ }
57
+
58
+ /**
59
+ *
60
+ * @param {*} data
61
+ * @returns
62
+ */
63
+ function factory(data) {
64
+ let route = "main";
65
+ let mode = "dist";
66
+ let base = `${data.server_dir}/${mode}/${route}/`;
67
+ return {
68
+ name: "factory",
69
+ script: `./index.js`,
70
+ autorestart: false,
71
+ cwd: `${base}/offline/factory`,
72
+ env: copyFields(data, [
73
+ "domain_name",
74
+ "domain_desc",
75
+ "data_dir",
76
+ "system_user",
77
+ "system_group",
78
+ "drumee_root",
79
+ "cache_dir",
80
+ "acme_dir",
81
+ "acme_dns",
82
+ "acme_email_account",
83
+ "static_dir",
84
+ "runtime_dir",
85
+ "credential_dir",
86
+ ]),
87
+ dependencies: [`pm2-logrotate`],
88
+ };
89
+ }
90
+
91
+ /**
92
+ *
93
+ * @param {*} data
94
+ * @returns
95
+ */
96
+ function worker(data, instances = 1, exec_mode = 'fork_mode') {
97
+ let {
98
+ script,
99
+ pushPort,
100
+ route,
101
+ restPort,
102
+ name,
103
+ server_dir,
104
+ runtime_dir,
105
+ mode,
106
+ } = data;
107
+ if (!server_dir) server_dir = join(runtime_dir, 'server');
108
+ let base = `${server_dir}/${mode}/${route}`;
109
+ return {
110
+ name,
111
+ script,
112
+ cwd: base,
113
+ args: `--pushPort=${pushPort} --restPort=${restPort}`,
114
+ route,
115
+ env: {
116
+ cwd: base,
117
+ route,
118
+ server_home: base,
119
+ },
120
+ dependencies: [`pm2-logrotate`],
121
+ exec_mode,
122
+ instances
123
+ };
124
+ }
125
+
126
+ /***
127
+ *
128
+ */
129
+ function writeTemplates(data, targets) {
130
+ if (ARGV.readonly || ARGV.noCheck) {
131
+ console.log("Readonly", targets, data);
132
+ return
133
+ }
134
+ for (let target of targets) {
135
+ if (isString(target)) {
136
+ Template.write(data, target, target);
137
+ } else {
138
+ let { out, tpl } = target;
139
+ Template.write(data, out, tpl);
140
+ }
141
+ }
142
+ }
143
+
144
+ /**
145
+ *
146
+ */
147
+ function writeEcoSystem(data) {
148
+ const ports = {
149
+ pushPort: 23000,
150
+ restPort: 24000,
151
+ mode: "dist",
152
+ route: "main",
153
+ };
154
+
155
+ let main = worker({
156
+ ...data,
157
+ ...ports,
158
+ name: "main",
159
+ script: "./index.js",
160
+ });
161
+
162
+ let instances = 4;
163
+ if ((totalmem() / (1024 * 1024 * 1024)) < 2) {
164
+ instances = 2;
165
+ } else if ((totalmem() / (1024 * 1024 * 1024) < 6)) {
166
+ instances = 3;
167
+ }
168
+
169
+ let main_service = worker({
170
+ ...data,
171
+ ...ports,
172
+ name: "main/service",
173
+ script: "./service.js"
174
+ }, instances, 'cluster_mode');
175
+
176
+ let f = factory(data);
177
+ let routes = [main, main_service, f];
178
+ let ecosystem = "/etc/drumee/infrastructure/ecosystem.json";
179
+ if (ARGV.readonly) {
180
+ console.log("Readonly", ecosystem, routes);
181
+ return
182
+ }
183
+ writeFileSync(ecosystem, routes, { spaces: 2, EOL: "\r\n" });
184
+ let targets = [
185
+ {
186
+ out: `${data.server_dir}/ecosystem.config.js`,
187
+ tpl: "server/ecosystem.config.js",
188
+ },
189
+ ];
190
+ writeTemplates({ ecosystem, chroot: Template.chroot }, targets);
191
+ }
192
+
193
+ /**
194
+ *
195
+ */
196
+ function getSysConfigs() {
197
+ let { domain_name } = sysEnv();
198
+ if (existsSync('/etc/drumee/drumee.sh') && !FORCE_INSTALL) {
199
+ console.log(
200
+ `There is already a domain name configured on this server (${domain_name})\n`, `Use FORCE_INSTALL=yes to override`);
201
+ exit(0)
202
+ }
203
+ domain_name = domain_name || ARGV.domain || DRUMEE_DOMAIN_NAME;
204
+ if (!domain_name) {
205
+ console.log("There no domain name defined for the installation");
206
+ exit(0)
207
+ }
208
+
209
+ let data = { ...sysEnv(), domain_name, domain: domain_name };
210
+
211
+ data.chroot = Template.chroot();
212
+ data.acme_store = join(data.certs_dir, `${data.domain_name}_ecc`);
213
+ data.ca_server = data.ca_server || data.acme_ssl;
214
+ if (data.own_ssl && data.certs_dir) {
215
+ data.own_certs_dir = data.certs_dir;
216
+ }
217
+
218
+ if (!data.acme_dir) {
219
+ data.acme_dir = ACME_DIR || '/usr/share/acme';
220
+ }
221
+
222
+
223
+ if (!data.jitsi_domain) {
224
+ data.jitsi_domain = `jit.${data.domain_name}`;
225
+ }
226
+
227
+ if (!data.nsupdate_key) {
228
+ data.nsupdate_key = NSUPDATE_KEY || "/etc/bind/keys/update.key";
229
+ }
230
+
231
+ if (!data.domain_desc) {
232
+ data.domain_desc = DRUMEE_DESCRIPTION || 'My Drumee Box';
233
+ }
234
+
235
+ if (!data.admin_email) {
236
+ data.admin_email = ADMIN_EMAIL || `admin@${data.domain_name}`;
237
+ }
238
+
239
+ if (!data.acme_email_account) {
240
+ data.acme_email_account = ACME_EMAIL_ACCOUNT || data.admin_email;
241
+ }
242
+
243
+ if (!data.public_ip4) {
244
+ data.public_ip4 = PUBLIC_IP4;
245
+ }
246
+
247
+ if (!data.public_ip6) {
248
+ data.public_ip6 = PUBLIC_IP6;
249
+ }
250
+ let d = new Date().toISOString();
251
+ let [day, hour] = d.split('T')
252
+ day = day.replace(/\-/g, '');
253
+ hour = hour.split(':')[0];
254
+ data.serial = `${day}${hour}`;
255
+ let target = [
256
+ "etc/drumee/drumee.sh",
257
+ {
258
+ tpl: "etc/bind/db.domain",
259
+ out: `etc/bind/db.${domain_name}`
260
+ },
261
+ "etc/bind/named.conf.local",
262
+ "etc/bind/named.conf.log",
263
+ "etc/bind/named.conf.options"
264
+ ];
265
+
266
+ writeTemplates(data, target);
267
+
268
+ let args = { ...data };
269
+ let keys = ["myConf", "chroot", "date"];
270
+
271
+ for (let key of keys) {
272
+ delete args[key];
273
+ }
274
+
275
+ if (ARGV.readonly) {
276
+ return args;
277
+ }
278
+ console.log("Writing main conf into drumee.json");
279
+ writeFileSync(Template.chroot("etc/drumee/drumee.json"), args, {
280
+ spaces: 2,
281
+ EOL: "\r\n",
282
+ });
283
+ return args;
284
+ }
285
+
286
+ /**
287
+ *
288
+ */
289
+ function writeInfraConf(data) {
290
+ writeEcoSystem(data);
291
+ const etc = 'etc';
292
+ const nginx = join(etc, 'nginx');
293
+ const drumee = join(etc, 'drumee');
294
+ const infra = join(drumee, 'infrastructure');
295
+ let targets = [
296
+
297
+ // Nginx
298
+ `${nginx}/sites-enabled/drumee.conf`,
299
+
300
+ // Drumee
301
+ `${drumee}/ssl/main.conf`,
302
+ `${drumee}/conf.d/conference.json`,
303
+ `${drumee}/conf.d/drumee.json`,
304
+ `${drumee}/conf.d/exchange.json`,
305
+ `${drumee}/conf.d/myDrumee.json`,
306
+ `${drumee}/conf.d/conference.json`,
307
+ `${drumee}/conf.d/drumee.json`,
308
+ `${drumee}/conf.d/exchange.json`,
309
+ `${drumee}/conf.d/myDrumee.json`,
310
+
311
+ `${infra}/mfs.conf`,
312
+ `${infra}/routes/main.conf`,
313
+ `${infra}/internals/accel.conf`
314
+ ];
315
+ writeTemplates(data, targets);
316
+
317
+ }
318
+
319
+ /**
320
+ *
321
+ */
322
+ function writeJitsiConf(data) {
323
+ const etc = 'etc';
324
+ const jitsi = join(etc, 'jitsi');
325
+ const nginx = join(etc, 'nginx');
326
+ const prosody = join(etc, 'prosody');
327
+ const drumee = join(etc, 'drumee');
328
+ let targets = [
329
+ // Jicofo
330
+ `${jitsi}/jicofo/config`,
331
+ `${jitsi}/jicofo/jicofo.conf`,
332
+ `${jitsi}/jicofo/logging.properties`,
333
+
334
+ // Jitsi Video Bridge
335
+ `${jitsi}/videobridge/config`,
336
+ `${jitsi}/videobridge/jvb.conf`,
337
+ `${jitsi}/videobridge/logging.properties`,
338
+
339
+ // Jitsi meet
340
+ `${jitsi}/ssl.conf`,
341
+ `${jitsi}/meet.conf`,
342
+ `${jitsi}/web/config.js`,
343
+ `${jitsi}/web/interface_config.js`,
344
+ `${jitsi}/web/defaults/ffdhe2048.txt`,
345
+
346
+ // Nginx
347
+ `${nginx}/sites-enabled/jitsi.conf`,
348
+ `${nginx}/modules-enabled/90-turn-relay.conf`,
349
+ //`${nginx}/sites-enabled/turnrelay.conf`,
350
+
351
+ // Prosody
352
+ `${prosody}/prosody.cfg.lua`,
353
+ `${prosody}/defaults/credentials.sh`,
354
+ {
355
+ out: `${prosody}/conf.d/${data.jitsi_domain}.cfg.lua`,
356
+ tpl: `${prosody}/conf.d/vhost.cfg.lua`
357
+ },
358
+ // `${prosody}/migrator.cfg.lua`,
359
+
360
+ // Turnserver
361
+ `${etc}/turnserver.conf`,
362
+
363
+ `${drumee}/conf.d/conference.json`,
364
+
365
+ ];
366
+ writeTemplates(data, targets);
367
+
368
+ }
369
+
370
+ /**
371
+ *
372
+ */
373
+ function makeConfData(data) {
374
+ const routes = join('etc', 'drumee', 'infrastructure', 'routes');
375
+ //let jitsi_domain = `jit.${data.domain}`;
376
+ data = {
377
+ ...data,
378
+ turn_sercret: randomString(),
379
+ prosody_plugins: "/usr/share/jitsi-meet/prosody-plugins/",
380
+ xmpp_password: randomString(),
381
+ public_port: 9090,
382
+ ice_port: 10000,
383
+ jicofo_password: randomString(),
384
+ jvb_password: randomString(),
385
+ app_id: randomString(),
386
+ app_password: randomString(),
387
+ //jitsi_domain,
388
+ ui_base: join(data.ui_base, 'dist', 'main'),
389
+ location: '/-/',
390
+ pushPort: 23000,
391
+ restPort: 24000,
392
+ };
393
+ if (!data.export_dir) data.export_dir = null;
394
+ if (!data.import_dir) data.import_dir = null;
395
+ return data
396
+ }
397
+
398
+ /**
399
+ *
400
+ */
401
+ function privateIp() {
402
+ return new Promise(async (res, rej) => {
403
+ import("private-ip").then(module => { res(module.default) });
404
+ })
405
+ }
406
+
407
+ /**
408
+ *
409
+ * @returns
410
+ */
411
+ function configure() {
412
+ return new Promise(async (res, rej) => {
413
+ let data = getSysConfigs();
414
+ data.chroot = Template.chroot();
415
+ const isPrivate = await privateIp();
416
+ let os = require("os");
417
+ let interfaces = os.networkInterfaces();
418
+ for (let name in interfaces) {
419
+ for (let dev of interfaces[name]) {
420
+ if (dev.family == 'IPv4' && !dev.internal) {
421
+ if (isPrivate(dev.address)) {
422
+ data.local_address = dev.address;
423
+ break;
424
+ }
425
+ }
426
+ }
427
+ if (data.local_address) break;
428
+ }
429
+ //console.log(addr, service);
430
+ data = makeConfData(data);
431
+ let func = [];
432
+ if (!ARGV.infra && !ARGV.jitsi) {
433
+ func = [writeInfraConf, writeJitsiConf];
434
+ } else {
435
+ if (ARGV.infra) func.push(writeInfraConf)
436
+ if (ARGV.jitsi) func.push(writeJitsiConf)
437
+ }
438
+ func.map(function (f) {
439
+ f(data);
440
+ })
441
+ res();
442
+
443
+ });
444
+ }
445
+
446
+ configure()
447
+ .then(() => {
448
+ exit(0);
449
+ })
450
+ .catch((e) => {
451
+ console.error("Failed to setup Drumee infra", e);
452
+ exit(0);
453
+ });
File without changes
@@ -0,0 +1,7 @@
1
+ <%= runtime_dir %>/backend/.pm2/logs/* {
2
+ daily
3
+ rotate 2
4
+ olddir <%= runtime_dir %>/backend/.pm2/logs.old/
5
+ missingok
6
+ }
7
+ /srv/drumee/runtime/backend/.pm2/logs/
@@ -0,0 +1,13 @@
1
+ //
2
+ // Configs setup by Drumee infra-setup utility
3
+ //
4
+
5
+ include "/etc/bind/named.conf.log";
6
+ include "<%= nsupdate_key %>";
7
+ zone "<%= domain %>" {
8
+ type master;
9
+ file "/var/lib/bind/<%= domain %>";
10
+ allow-query { any; };
11
+ allow-update { key "update"; };
12
+ allow-transfer { <%= public_ip4 %>; };
13
+ };
@@ -0,0 +1,105 @@
1
+ logging {
2
+ channel default_file {
3
+ file "/var/log/named/default.log" versions 3 size 5m;
4
+ severity dynamic;
5
+ print-time yes;
6
+ };
7
+ channel general_file {
8
+ file "/var/log/named/general.log" versions 3 size 5m;
9
+ severity dynamic;
10
+ print-time yes;
11
+ };
12
+ channel database_file {
13
+ file "/var/log/named/database.log" versions 3 size 5m;
14
+ severity dynamic;
15
+ print-time yes;
16
+ };
17
+ channel security_file {
18
+ file "/var/log/named/security.log" versions 3 size 5m;
19
+ severity dynamic;
20
+ print-time yes;
21
+ };
22
+ channel config_file {
23
+ file "/var/log/named/config.log" versions 3 size 5m;
24
+ severity dynamic;
25
+ print-time yes;
26
+ };
27
+ channel resolver_file {
28
+ file "/var/log/named/resolver.log" versions 3 size 5m;
29
+ severity dynamic;
30
+ print-time yes;
31
+ };
32
+ channel xfer-in_file {
33
+ file "/var/log/named/xfer-in.log" versions 3 size 5m;
34
+ severity dynamic;
35
+ print-time yes;
36
+ };
37
+ channel xfer-out_file {
38
+ file "/var/log/named/xfer-out.log" versions 3 size 5m;
39
+ severity dynamic;
40
+ print-time yes;
41
+ };
42
+ channel notify_file {
43
+ file "/var/log/named/notify.log" versions 3 size 5m;
44
+ severity dynamic;
45
+ print-time yes;
46
+ };
47
+ channel client_file {
48
+ file "/var/log/named/client.log" versions 3 size 5m;
49
+ severity dynamic;
50
+ print-time yes;
51
+ };
52
+ channel unmatched_file {
53
+ file "/var/log/named/unmatched.log" versions 3 size 5m;
54
+ severity dynamic;
55
+ print-time yes;
56
+ };
57
+ channel queries_file {
58
+ file "/var/log/named/queries.log" versions 3 size 5m;
59
+ severity dynamic;
60
+ print-time yes;
61
+ };
62
+ channel network_file {
63
+ file "/var/log/named/network.log" versions 3 size 5m;
64
+ severity dynamic;
65
+ print-time yes;
66
+ };
67
+ channel update_file {
68
+ file "/var/log/named/update.log" versions 3 size 5m;
69
+ severity dynamic;
70
+ print-time yes;
71
+ };
72
+ channel dispatch_file {
73
+ file "/var/log/named/dispatch.log" versions 3 size 5m;
74
+ severity dynamic;
75
+ print-time yes;
76
+ };
77
+ channel dnssec_file {
78
+ file "/var/log/named/dnssec.log" versions 3 size 5m;
79
+ severity dynamic;
80
+ print-time yes;
81
+ };
82
+ channel lame-servers_file {
83
+ file "/var/log/named/lame-servers.log" versions 3 size 5m;
84
+ severity dynamic;
85
+ print-time yes;
86
+ };
87
+
88
+ category default { default_file; };
89
+ category general { general_file; };
90
+ category database { database_file; };
91
+ category security { security_file; };
92
+ category config { config_file; };
93
+ category resolver { resolver_file; };
94
+ category xfer-in { xfer-in_file; };
95
+ category xfer-out { xfer-out_file; };
96
+ category notify { notify_file; };
97
+ category client { client_file; };
98
+ category unmatched { unmatched_file; };
99
+ category queries { queries_file; };
100
+ category network { network_file; };
101
+ category update { update_file; };
102
+ category dispatch { dispatch_file; };
103
+ category dnssec { dnssec_file; };
104
+ category lame-servers { lame-servers_file; };
105
+ };
@@ -0,0 +1,33 @@
1
+ options {
2
+ directory "/var/cache/bind";
3
+
4
+ // If there is a firewall between you and nameservers you want
5
+ // to talk to, you may need to fix the firewall to allow multiple
6
+ // ports to talk. See http://www.kb.cert.org/vuls/id/800113
7
+
8
+ // If your ISP provided one or more IP addresses for stable
9
+ // nameservers, you probably want to use them as forwarders.
10
+ // Uncomment the following block, and insert the addresses replacing
11
+ // the all-0's placeholder.
12
+
13
+ //============================================================
14
+ // If BIND logs error messages about the root key being expired,
15
+ // you will need to update your keys. See https://www.isc.org/bind-keys
16
+ //============================================================
17
+ dnssec-validation auto;
18
+
19
+ listen-on-v6 { any; };
20
+
21
+ // hide version number from clients for security reasons.
22
+ version "not currently available";
23
+
24
+ // allow recursion for trusted clients only.
25
+ recursion yes;
26
+ allow-query { localhost; <%= public_ip4 %>; };
27
+
28
+ // enable the query log
29
+ querylog yes;
30
+
31
+ // disallow zone transfer
32
+ allow-transfer { none; };
33
+ };
@@ -0,0 +1 @@
1
+ *@<%= domain %>:<%= domain %>:/etc/opendkim/keys/<%= domain %>/private.pem
@@ -0,0 +1,9 @@
1
+ {
2
+ "domain": "<%= jitsi_domain %>",
3
+ "hosts": {
4
+ "domain": "<%= jitsi_domain %>",
5
+ "muc": "conference.<%= jitsi_domain %>"
6
+ },
7
+ "bosh": "https://<%= jitsi_domain %>/http-bind",
8
+ "auth": ["<%= app_id %>", "<%= app_password %>"]
9
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "arch":"pod",
3
+ "sys_languages":["en", "fr", "km", "ru", "zh"],
4
+ "quota":{
5
+ "watermark": "<%= quota_watermark %>"
6
+ }
7
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "exportFolder":"<%= export_dir %>",
3
+ "importFolder":"<%= import_dir %>"
4
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "arch": "pod",
3
+ "sys_languages": [
4
+ "en",
5
+ "es",
6
+ "fr",
7
+ "km",
8
+ "ru",
9
+ "zh"
10
+ ],
11
+ "verbosity": 2,
12
+ "useEmail":1,
13
+ "quota": {
14
+ "watermark": "<%= quota_watermark %>"
15
+ }
16
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "host": "<%= host %>",
3
+ "port": <%= port %>,
4
+ "user": "<%= user %>",
5
+ "password": "<%= password %>"
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "host": "<%= email_host %>",
3
+ "port": <%= email_port %>,
4
+ "secure": false,
5
+ "auth": {
6
+ "user": "<%= email_user %>@<%= domain_name %>",
7
+ "pass": "<%= email_pass %>"
8
+ },
9
+ "tls": {
10
+ "rejectUnauthorized": false
11
+ }
12
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "appKey": "<%= appKey %>",
3
+ "consumerKey": <%= consumerKey %>,
4
+ "appSecret": "<%= appSecret %>",
5
+ "endpoint": "<%= endpoint %>"
6
+ }
@@ -0,0 +1,7 @@
1
+ # -------------------------------------------------------------
2
+ # ! DO NOT EDIT !
3
+ # Config file automatically generated by <infra-setup>
4
+ # -------------------------------------------------------------
5
+ export OVH_AK=<%= appKey %>
6
+ export OVH_CK=<%= consumerKey %>
7
+ export OVH_AS=<%= appSecret %>