ConfigLMM 0.3.0 → 0.4.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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/Plugins/Apps/Authentik/Authentik-ProxyOutpost.container +14 -0
  4. data/Plugins/Apps/Authentik/Authentik-Server.container +1 -0
  5. data/Plugins/Apps/Authentik/Authentik-Worker.container +1 -0
  6. data/Plugins/Apps/Authentik/Authentik.conf.erb +7 -0
  7. data/Plugins/Apps/Authentik/Authentik.lmm.rb +24 -2
  8. data/Plugins/Apps/BookStack/BookStack.conf.erb +41 -0
  9. data/Plugins/Apps/BookStack/BookStack.container +15 -0
  10. data/Plugins/Apps/BookStack/BookStack.lmm.rb +80 -0
  11. data/Plugins/Apps/Discourse/Discourse-Sidekiq.container +17 -0
  12. data/Plugins/Apps/Discourse/Discourse.conf.erb +41 -0
  13. data/Plugins/Apps/Discourse/Discourse.container +17 -0
  14. data/Plugins/Apps/Discourse/Discourse.lmm.rb +95 -0
  15. data/Plugins/Apps/Dovecot/Dovecot.lmm.rb +25 -2
  16. data/Plugins/Apps/ERPNext/ERPNext-Frontend.container +19 -0
  17. data/Plugins/Apps/ERPNext/ERPNext-Queue.container +17 -0
  18. data/Plugins/Apps/ERPNext/ERPNext-Scheduler.container +17 -0
  19. data/Plugins/Apps/ERPNext/ERPNext-Websocket.container +19 -0
  20. data/Plugins/Apps/ERPNext/ERPNext.container +18 -0
  21. data/Plugins/Apps/ERPNext/ERPNext.lmm.rb +193 -0
  22. data/Plugins/Apps/ERPNext/ERPNext.network +12 -0
  23. data/Plugins/Apps/ERPNext/sites/apps.json +10 -0
  24. data/Plugins/Apps/ERPNext/sites/apps.txt +3 -0
  25. data/Plugins/Apps/ERPNext/sites/common_site_config.json +11 -0
  26. data/Plugins/Apps/GitLab/GitLab.container +3 -2
  27. data/Plugins/Apps/GitLab/GitLab.lmm.rb +37 -12
  28. data/Plugins/Apps/LetsEncrypt/LetsEncrypt.lmm.rb +57 -0
  29. data/Plugins/Apps/LetsEncrypt/hooks/dovecot.sh +2 -0
  30. data/Plugins/Apps/LetsEncrypt/hooks/nginx.sh +2 -0
  31. data/Plugins/Apps/LetsEncrypt/hooks/postfix.sh +2 -0
  32. data/Plugins/Apps/LetsEncrypt/renew-certificates.service +7 -0
  33. data/Plugins/Apps/LetsEncrypt/renew-certificates.timer +12 -0
  34. data/Plugins/Apps/LetsEncrypt/rfc2136.ini +11 -0
  35. data/Plugins/Apps/MariaDB/MariaDB.lmm.rb +115 -0
  36. data/Plugins/Apps/Matrix/Element.container +14 -0
  37. data/Plugins/Apps/Matrix/Matrix.conf.erb +49 -5
  38. data/Plugins/Apps/Matrix/Matrix.lmm.rb +86 -1
  39. data/Plugins/Apps/Matrix/Synapse.container +17 -0
  40. data/Plugins/Apps/Matrix/config.json +50 -0
  41. data/Plugins/Apps/Matrix/homeserver.yaml +70 -0
  42. data/Plugins/Apps/Matrix/log.config +30 -0
  43. data/Plugins/Apps/Nextcloud/Nextcloud.lmm.rb +70 -45
  44. data/Plugins/Apps/Nginx/conf.d/configlmm.conf +9 -0
  45. data/Plugins/Apps/Nginx/config-lmm/errors.conf +10 -4
  46. data/Plugins/Apps/Nginx/config-lmm/proxy.conf +5 -1
  47. data/Plugins/Apps/Nginx/nginx.lmm.rb +15 -11
  48. data/Plugins/Apps/Nginx/proxy.conf.erb +13 -3
  49. data/Plugins/Apps/Odoo/Odoo.container +2 -1
  50. data/Plugins/Apps/Odoo/Odoo.lmm.rb +1 -1
  51. data/Plugins/Apps/OpenVidu/Ingress.container +18 -0
  52. data/Plugins/Apps/OpenVidu/OpenVidu.conf.erb +34 -0
  53. data/Plugins/Apps/OpenVidu/OpenVidu.container +16 -0
  54. data/Plugins/Apps/OpenVidu/OpenVidu.lmm.rb +90 -0
  55. data/Plugins/Apps/OpenVidu/OpenViduCall.conf.erb +35 -0
  56. data/Plugins/Apps/OpenVidu/OpenViduCall.container +15 -0
  57. data/Plugins/Apps/OpenVidu/ingress.yaml +10 -0
  58. data/Plugins/Apps/OpenVidu/livekit.yaml +13 -0
  59. data/Plugins/Apps/Peppermint/Peppermint.conf.erb +0 -4
  60. data/Plugins/Apps/Peppermint/Peppermint.container +2 -1
  61. data/Plugins/Apps/Postfix/Postfix.lmm.rb +32 -6
  62. data/Plugins/Apps/PostgreSQL/PostgreSQL.lmm.rb +80 -11
  63. data/Plugins/Apps/Roundcube/Roundcube.conf.erb +75 -0
  64. data/Plugins/Apps/Roundcube/Roundcube.lmm.rb +145 -0
  65. data/Plugins/Apps/Tunnel/tunnel.lmm.rb +63 -0
  66. data/Plugins/Apps/Tunnel/tunnelTCP.service +9 -0
  67. data/Plugins/Apps/Tunnel/tunnelTCP.socket +9 -0
  68. data/Plugins/Apps/Tunnel/tunnelUDP.service +9 -0
  69. data/Plugins/Apps/Tunnel/tunnelUDP.socket +9 -0
  70. data/Plugins/Apps/Valkey/Valkey.lmm.rb +32 -0
  71. data/Plugins/Apps/Vaultwarden/Vaultwarden.lmm.rb +4 -0
  72. data/Plugins/Apps/Wiki.js/Wiki.js.conf.erb +42 -0
  73. data/Plugins/Apps/Wiki.js/Wiki.js.container +15 -0
  74. data/Plugins/Apps/Wiki.js/Wiki.js.lmm.rb +61 -0
  75. data/Plugins/Apps/gollum/gollum.conf.erb +39 -1
  76. data/Plugins/Apps/gollum/gollum.container +4 -1
  77. data/Plugins/Apps/gollum/gollum.lmm.rb +11 -3
  78. data/Plugins/OS/Linux/Debian/preseed.cfg.erb +62 -0
  79. data/Plugins/OS/Linux/Distributions.yaml +32 -0
  80. data/Plugins/OS/Linux/Flavours.yaml +11 -0
  81. data/Plugins/OS/Linux/Linux.lmm.rb +255 -67
  82. data/Plugins/OS/Linux/Packages.yaml +47 -2
  83. data/Plugins/OS/Linux/Proxmox/answer.toml.erb +30 -0
  84. data/Plugins/OS/Linux/WireGuard/WireGuard.lmm.rb +33 -4
  85. data/Plugins/Platforms/GoDaddy/GoDaddy.lmm.rb +1 -1
  86. data/Plugins/Platforms/libvirt/libvirt.lmm.rb +3 -2
  87. data/Plugins/Services/DNS/PowerDNS.lmm.rb +95 -8
  88. data/bootstrap.sh +41 -3
  89. data/lib/ConfigLMM/Framework/plugins/linuxApp.rb +146 -64
  90. data/lib/ConfigLMM/Framework/plugins/nginxApp.rb +34 -3
  91. data/lib/ConfigLMM/Framework/plugins/plugin.rb +62 -6
  92. data/lib/ConfigLMM/cli.rb +3 -1
  93. data/lib/ConfigLMM/commands/cleanup.rb +1 -0
  94. data/lib/ConfigLMM/commands/configsCommand.rb +3 -1
  95. data/lib/ConfigLMM/io/configList.rb +3 -1
  96. data/lib/ConfigLMM/state.rb +10 -2
  97. data/lib/ConfigLMM/version.rb +1 -1
  98. metadata +54 -3
  99. data/Plugins/Apps/GitLab/GitLab.conf.erb +0 -26
@@ -14,6 +14,7 @@ module ConfigLMM
14
14
 
15
15
  class Plugin
16
16
 
17
+ REPOS_CACHE = '~/.cache/configlmm/repos'
17
18
 
18
19
  def self.inherited(plugin)
19
20
  Store.registerPlugin(plugin)
@@ -123,11 +124,19 @@ module ConfigLMM
123
124
  end
124
125
  end
125
126
 
126
- def rm(path, dry)
127
+ def rm(path, dry, ssh = nil)
127
128
  if dry
128
- prompt.say('Would remove ' + path)
129
+ if ssh
130
+ prompt.say("Would remove ssh://#{ssh.transport.host}:#{ssh.transport.port}" + path)
131
+ else
132
+ prompt.say('Would remove ' + path)
133
+ end
129
134
  else
130
- FileUtils.rm_r(path, noop: dry)
135
+ if ssh
136
+ self.class.sshExec!(ssh, "rm -rf #{path}")
137
+ else
138
+ FileUtils.rm_r(path, noop: dry)
139
+ end
131
140
  end
132
141
  end
133
142
 
@@ -247,8 +256,12 @@ module ConfigLMM
247
256
  end
248
257
  end
249
258
 
250
- def self.exec(command, ssh = nil, allowFailure = false)
259
+ def self.exec(command, ssh = nil, allowFailure = false, dry = false)
251
260
  if ssh.nil?
261
+ if dry
262
+ puts "Would execute: #{command}"
263
+ return
264
+ end
252
265
  stdout, stdeerr, status = Open3.capture3(command)
253
266
  if !allowFailure && !status.success?
254
267
  $stderr.puts(stdout)
@@ -257,7 +270,15 @@ module ConfigLMM
257
270
  end
258
271
  stdout + stdeerr
259
272
  else
260
- self.sshExec!(ssh, command, allowFailure)
273
+ self.sshExec!(ssh, command, allowFailure, dry)
274
+ end
275
+ end
276
+
277
+ def self.cmdSuccess?(command, ssh = nil)
278
+ if ssh.nil?
279
+ system(command, :out => File::NULL)
280
+ else
281
+ self.sshSuccess?(ssh, command)
261
282
  end
262
283
  end
263
284
 
@@ -269,6 +290,15 @@ module ConfigLMM
269
290
  [server, params]
270
291
  end
271
292
 
293
+ def self.cmdSSH(uri)
294
+ uri = Addressable::URI.parse(uri) if uri.is_a?(String)
295
+ server, sshParams = self.toSSHparams(uri)
296
+ cmd = 'ssh '
297
+ cmd += '-p ' + sshParams[:port] if sshParams[:port]
298
+ cmd += sshParams[:user] + '@' if sshParams[:port]
299
+ cmd + server
300
+ end
301
+
272
302
  def self.sshStart(uri)
273
303
  uri = Addressable::URI.parse(uri) if uri.is_a?(String)
274
304
  server, sshParams = self.toSSHparams(uri)
@@ -277,7 +307,11 @@ module ConfigLMM
277
307
  end
278
308
  end
279
309
 
280
- def self.sshExec!(ssh, command, allowFailure = false)
310
+ def self.sshExec!(ssh, command, allowFailure = false, dry = false)
311
+ if dry
312
+ puts "Would execute: ssh #{ssh.transport.host} -p #{ssh.transport.port} '#{command}'"
313
+ return
314
+ end
281
315
  status = {}
282
316
  output = ''
283
317
  channel = ssh.exec(command, status: status) do |channel, stream, data|
@@ -291,6 +325,12 @@ module ConfigLMM
291
325
  output
292
326
  end
293
327
 
328
+ def self.sshSuccess?(ssh, command)
329
+ status = {}
330
+ ssh.exec!(command, status)
331
+ status[:exit_code].zero?
332
+ end
333
+
294
334
  def renderTemplate(template, target, outputPath, options)
295
335
  variables = {
296
336
  config: target,
@@ -304,6 +344,22 @@ module ConfigLMM
304
344
  end
305
345
  end
306
346
 
347
+ def cleanupType(type, configs, state, context, options)
348
+ items = state.selectType(type)
349
+ items.each do |id, item|
350
+ if !configs.key?(id) && item['Status'] != State::STATUS_DESTROYED && (item['Status'] != State::STATUS_DELETED || options[:destroy])
351
+ if item['Location'].nil? || item['Location'] == '@me'
352
+ yield(item, id, state, context, options, nil)
353
+ else
354
+ uri = Addressable::URI.parse(item['Location'])
355
+ self.class.sshStart(uri) do |ssh|
356
+ yield(item, id, state, context, options, ssh)
357
+ end
358
+ end
359
+ end
360
+ end
361
+ end
362
+
307
363
  def self.normalizeId(id)
308
364
  id = id.split('::').last
309
365
  if id.downcase.end_with?('plugin')
data/lib/ConfigLMM/cli.rb CHANGED
@@ -14,7 +14,7 @@ module ConfigLMM
14
14
  MissingArgument = Class.new(ArgumentError)
15
15
  InvalidOption = Class.new(ArgumentError)
16
16
 
17
- #class_option :locations, type: :string, default: '', group: :configs, desc: 'Filter by config file locations'
17
+ class_option :locations, type: :string, default: '', group: :configs, desc: 'Filter by config file locations'
18
18
  #class_option :things, type: :string, default: '', group: :configs, desc: 'Filter things to use'
19
19
  class_option :level, type: :string, enum: ['debug', 'info', 'warn', 'error'], default: 'info', desc: 'Logging level to use'
20
20
  class_option :dry, aliases: '-n', type: :boolean, desc: 'Only show actions without performing'
@@ -99,6 +99,8 @@ module ConfigLMM
99
99
  desc: 'Display usage information'
100
100
  method_option :state, aliases: '-s', type: :string,
101
101
  desc: 'Path to the state file'
102
+ method_option :destroy, aliases: '-d', type: :boolean,
103
+ desc: 'Destroy all data (eg. even DB)'
102
104
  def cleanup(*configPaths)
103
105
  handleCommand(:cleanup, configPaths, options)
104
106
  end
@@ -12,6 +12,7 @@ module ConfigLMM
12
12
  loadConfigs(plugin, config, configs)
13
13
  plugin.cleanup(configs, state, context, options)
14
14
  end
15
+ state.save
15
16
  prompt.ok('Cleanup successful!')
16
17
  end
17
18
 
@@ -43,7 +43,7 @@ module ConfigLMM
43
43
  options = @Options.dup
44
44
  options.delete(:locations)
45
45
  options.delete(:things)
46
- #options[:locationFilter] = Utils::Filters.parseLocationsOption(@Options[:locations], logger)
46
+ options[:locationFilter] = Utils::Filters.parseLocationsOption(@Options[:locations], logger)
47
47
  #options[:thingFilter] = Utils::Filters.parseThingsOption(@Options[:things], logger)
48
48
 
49
49
  configList = IO::ConfigList.create(@ConfigPaths, logger)
@@ -124,6 +124,8 @@ module ConfigLMM
124
124
  elsif activeState[:Type] != singleTarget['Type'].to_s
125
125
  raise Framework::PluginError.new("Unexpected Type #{activeState[:Type].inspect}! Wanted #{singleTarget['Type']}")
126
126
  end
127
+ activeState['Location'] = singleTarget['Location']
128
+ activeState['Proxy'] = singleTarget['Proxy']
127
129
  actionMethod = plugin.class.actionMethod(singleTarget['Type'], 'Deploy')
128
130
  if plugin.methods.include?(:authenticate)
129
131
  result = plugin.authenticate(actionMethod, singleTarget, state, context, options)
@@ -67,7 +67,9 @@ module ConfigLMM
67
67
  def toConfig(context)
68
68
  config = {}
69
69
  @Sources.each do |source|
70
- YAML.safe_load_file(source.to_s, permitted_classes: [Symbol]).each do |id, data|
70
+ data = YAML.safe_load_file(source.to_s, permitted_classes: [Symbol])
71
+ next unless data.is_a?(Hash)
72
+ data.each do |id, data|
71
73
  normalizedId = self.class.normalizeId(id)
72
74
  if id == '_CONTEXT_'
73
75
  context.add(data)
@@ -6,6 +6,11 @@ require 'yaml'
6
6
  module ConfigLMM
7
7
  class State
8
8
 
9
+ STATUS_CREATED = 'CREATED'
10
+ STATUS_DEPLOYED = 'DEPLOYED'
11
+ STATUS_DELETED = 'DELETED'
12
+ STATUS_DESTROYED = 'DESTROYED'
13
+
9
14
  def initialize(logger, prompt)
10
15
  @Logger = logger
11
16
  @Prompt = prompt
@@ -55,6 +60,7 @@ module ConfigLMM
55
60
  @State.each do |id, item|
56
61
  items[id] = item if item[:Type] == type.to_s
57
62
  end
63
+ items
58
64
  end
59
65
 
60
66
  def save
@@ -66,8 +72,10 @@ module ConfigLMM
66
72
  private
67
73
 
68
74
  def findStateFile(configList)
69
- if configList.count == 1
70
- configList.to_a.first.parent.to_s + '/.lmm.state.yaml'
75
+ parent = configList.to_a.first.parent
76
+ sameParent = configList.to_a.all? { |item| item.parent == parent }
77
+ if sameParent
78
+ parent.to_s + '/.lmm.state.yaml'
71
79
  else
72
80
  # FIXME TODO
73
81
  # Find common ancestor and use that as a path to the state file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ConfigLMM
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ConfigLMM
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dāvis Mosāns
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-14 00:00:00.000000000 Z
11
+ date: 2024-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -412,13 +412,30 @@ files:
412
412
  - Images/singleConfig.png
413
413
  - Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.conf.erb
414
414
  - Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.lmm.rb
415
+ - Plugins/Apps/Authentik/Authentik-ProxyOutpost.container
415
416
  - Plugins/Apps/Authentik/Authentik-Server.container
416
417
  - Plugins/Apps/Authentik/Authentik-Worker.container
417
418
  - Plugins/Apps/Authentik/Authentik.conf.erb
418
419
  - Plugins/Apps/Authentik/Authentik.lmm.rb
420
+ - Plugins/Apps/BookStack/BookStack.conf.erb
421
+ - Plugins/Apps/BookStack/BookStack.container
422
+ - Plugins/Apps/BookStack/BookStack.lmm.rb
419
423
  - Plugins/Apps/Cassandra/Cassandra.lmm.rb
424
+ - Plugins/Apps/Discourse/Discourse-Sidekiq.container
425
+ - Plugins/Apps/Discourse/Discourse.conf.erb
426
+ - Plugins/Apps/Discourse/Discourse.container
427
+ - Plugins/Apps/Discourse/Discourse.lmm.rb
420
428
  - Plugins/Apps/Dovecot/Dovecot.lmm.rb
421
- - Plugins/Apps/GitLab/GitLab.conf.erb
429
+ - Plugins/Apps/ERPNext/ERPNext-Frontend.container
430
+ - Plugins/Apps/ERPNext/ERPNext-Queue.container
431
+ - Plugins/Apps/ERPNext/ERPNext-Scheduler.container
432
+ - Plugins/Apps/ERPNext/ERPNext-Websocket.container
433
+ - Plugins/Apps/ERPNext/ERPNext.container
434
+ - Plugins/Apps/ERPNext/ERPNext.lmm.rb
435
+ - Plugins/Apps/ERPNext/ERPNext.network
436
+ - Plugins/Apps/ERPNext/sites/apps.json
437
+ - Plugins/Apps/ERPNext/sites/apps.txt
438
+ - Plugins/Apps/ERPNext/sites/common_site_config.json
422
439
  - Plugins/Apps/GitLab/GitLab.container
423
440
  - Plugins/Apps/GitLab/GitLab.lmm.rb
424
441
  - Plugins/Apps/IPFS/IPFS.conf.erb
@@ -429,10 +446,23 @@ files:
429
446
  - Plugins/Apps/Jackett/Jackett.lmm.rb
430
447
  - Plugins/Apps/Jellyfin/Jellyfin.conf.erb
431
448
  - Plugins/Apps/Jellyfin/Jellyfin.lmm.rb
449
+ - Plugins/Apps/LetsEncrypt/LetsEncrypt.lmm.rb
450
+ - Plugins/Apps/LetsEncrypt/hooks/dovecot.sh
451
+ - Plugins/Apps/LetsEncrypt/hooks/nginx.sh
452
+ - Plugins/Apps/LetsEncrypt/hooks/postfix.sh
453
+ - Plugins/Apps/LetsEncrypt/renew-certificates.service
454
+ - Plugins/Apps/LetsEncrypt/renew-certificates.timer
455
+ - Plugins/Apps/LetsEncrypt/rfc2136.ini
456
+ - Plugins/Apps/MariaDB/MariaDB.lmm.rb
432
457
  - Plugins/Apps/Mastodon/Mastodon.conf.erb
433
458
  - Plugins/Apps/Mastodon/Mastodon.lmm.rb
459
+ - Plugins/Apps/Matrix/Element.container
434
460
  - Plugins/Apps/Matrix/Matrix.conf.erb
435
461
  - Plugins/Apps/Matrix/Matrix.lmm.rb
462
+ - Plugins/Apps/Matrix/Synapse.container
463
+ - Plugins/Apps/Matrix/config.json
464
+ - Plugins/Apps/Matrix/homeserver.yaml
465
+ - Plugins/Apps/Matrix/log.config
436
466
  - Plugins/Apps/Netdata/Netdata.conf.erb
437
467
  - Plugins/Apps/Netdata/Netdata.lmm.rb
438
468
  - Plugins/Apps/Nextcloud/Nextcloud.conf.erb
@@ -453,6 +483,14 @@ files:
453
483
  - Plugins/Apps/Odoo/Odoo.container
454
484
  - Plugins/Apps/Odoo/Odoo.lmm.rb
455
485
  - Plugins/Apps/Odoo/odoo.conf
486
+ - Plugins/Apps/OpenVidu/Ingress.container
487
+ - Plugins/Apps/OpenVidu/OpenVidu.conf.erb
488
+ - Plugins/Apps/OpenVidu/OpenVidu.container
489
+ - Plugins/Apps/OpenVidu/OpenVidu.lmm.rb
490
+ - Plugins/Apps/OpenVidu/OpenViduCall.conf.erb
491
+ - Plugins/Apps/OpenVidu/OpenViduCall.container
492
+ - Plugins/Apps/OpenVidu/ingress.yaml
493
+ - Plugins/Apps/OpenVidu/livekit.yaml
456
494
  - Plugins/Apps/PHP-FPM/PHP-FPM.lmm.rb
457
495
  - Plugins/Apps/Peppermint/Peppermint.conf.erb
458
496
  - Plugins/Apps/Peppermint/Peppermint.container
@@ -463,24 +501,37 @@ files:
463
501
  - Plugins/Apps/Pterodactyl/Pterodactyl.conf.erb
464
502
  - Plugins/Apps/Pterodactyl/Pterodactyl.lmm.rb
465
503
  - Plugins/Apps/Pterodactyl/Wings.conf.erb
504
+ - Plugins/Apps/Roundcube/Roundcube.conf.erb
505
+ - Plugins/Apps/Roundcube/Roundcube.lmm.rb
466
506
  - Plugins/Apps/SSH/SSH.lmm.rb
467
507
  - Plugins/Apps/Sunshine/Sunshine.conf.erb
468
508
  - Plugins/Apps/Sunshine/Sunshine.lmm.rb
509
+ - Plugins/Apps/Tunnel/tunnel.lmm.rb
510
+ - Plugins/Apps/Tunnel/tunnelTCP.service
511
+ - Plugins/Apps/Tunnel/tunnelTCP.socket
512
+ - Plugins/Apps/Tunnel/tunnelUDP.service
513
+ - Plugins/Apps/Tunnel/tunnelUDP.socket
469
514
  - Plugins/Apps/UVdesk/UVdesk.conf.erb
470
515
  - Plugins/Apps/UVdesk/UVdesk.lmm.rb
471
516
  - Plugins/Apps/Valkey/Valkey.lmm.rb
472
517
  - Plugins/Apps/Vaultwarden/Vaultwarden.conf.erb
473
518
  - Plugins/Apps/Vaultwarden/Vaultwarden.container
474
519
  - Plugins/Apps/Vaultwarden/Vaultwarden.lmm.rb
520
+ - Plugins/Apps/Wiki.js/Wiki.js.conf.erb
521
+ - Plugins/Apps/Wiki.js/Wiki.js.container
522
+ - Plugins/Apps/Wiki.js/Wiki.js.lmm.rb
475
523
  - Plugins/Apps/bitmagnet/bitmagnet.conf.erb
476
524
  - Plugins/Apps/bitmagnet/bitmagnet.lmm.rb
477
525
  - Plugins/Apps/gollum/config.ru
478
526
  - Plugins/Apps/gollum/gollum.conf.erb
479
527
  - Plugins/Apps/gollum/gollum.container
480
528
  - Plugins/Apps/gollum/gollum.lmm.rb
529
+ - Plugins/OS/Linux/Debian/preseed.cfg.erb
481
530
  - Plugins/OS/Linux/Distributions.yaml
531
+ - Plugins/OS/Linux/Flavours.yaml
482
532
  - Plugins/OS/Linux/Linux.lmm.rb
483
533
  - Plugins/OS/Linux/Packages.yaml
534
+ - Plugins/OS/Linux/Proxmox/answer.toml.erb
484
535
  - Plugins/OS/Linux/WireGuard/WireGuard.lmm.rb
485
536
  - Plugins/OS/Linux/WireGuard/wg0.conf.erb
486
537
  - Plugins/OS/Linux/openSUSE/autoinst.xml.erb
@@ -1,26 +0,0 @@
1
-
2
- server {
3
- <% if config['NginxVersion'] >= 1.25 %>
4
- listen 443 ssl;
5
- listen [::]:443 ssl;
6
- http2 on;
7
- http3 on;
8
- quic_retry on;
9
- add_header Alt-Svc 'h3=":443"; ma=86400';
10
- <% else %>
11
- listen 443 ssl http2;
12
- listen [::]:443 ssl http2;
13
- <% end %>
14
-
15
- include config-lmm/ssl.conf;
16
-
17
- server_name <%= config['Domain'] %>;
18
-
19
- access_log /var/log/nginx/gitlab.access.log;
20
- error_log /var/log/nginx/gitlab.error.log;
21
-
22
- location / {
23
- proxy_pass http://127.0.0.1:18100;
24
- include config-lmm/proxy.conf;
25
- }
26
- }