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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/Plugins/Apps/Authentik/Authentik-ProxyOutpost.container +14 -0
- data/Plugins/Apps/Authentik/Authentik-Server.container +1 -0
- data/Plugins/Apps/Authentik/Authentik-Worker.container +1 -0
- data/Plugins/Apps/Authentik/Authentik.conf.erb +7 -0
- data/Plugins/Apps/Authentik/Authentik.lmm.rb +24 -2
- data/Plugins/Apps/BookStack/BookStack.conf.erb +41 -0
- data/Plugins/Apps/BookStack/BookStack.container +15 -0
- data/Plugins/Apps/BookStack/BookStack.lmm.rb +80 -0
- data/Plugins/Apps/Discourse/Discourse-Sidekiq.container +17 -0
- data/Plugins/Apps/Discourse/Discourse.conf.erb +41 -0
- data/Plugins/Apps/Discourse/Discourse.container +17 -0
- data/Plugins/Apps/Discourse/Discourse.lmm.rb +95 -0
- data/Plugins/Apps/Dovecot/Dovecot.lmm.rb +25 -2
- data/Plugins/Apps/ERPNext/ERPNext-Frontend.container +19 -0
- data/Plugins/Apps/ERPNext/ERPNext-Queue.container +17 -0
- data/Plugins/Apps/ERPNext/ERPNext-Scheduler.container +17 -0
- data/Plugins/Apps/ERPNext/ERPNext-Websocket.container +19 -0
- data/Plugins/Apps/ERPNext/ERPNext.container +18 -0
- data/Plugins/Apps/ERPNext/ERPNext.lmm.rb +193 -0
- data/Plugins/Apps/ERPNext/ERPNext.network +12 -0
- data/Plugins/Apps/ERPNext/sites/apps.json +10 -0
- data/Plugins/Apps/ERPNext/sites/apps.txt +3 -0
- data/Plugins/Apps/ERPNext/sites/common_site_config.json +11 -0
- data/Plugins/Apps/GitLab/GitLab.container +3 -2
- data/Plugins/Apps/GitLab/GitLab.lmm.rb +37 -12
- data/Plugins/Apps/LetsEncrypt/LetsEncrypt.lmm.rb +57 -0
- data/Plugins/Apps/LetsEncrypt/hooks/dovecot.sh +2 -0
- data/Plugins/Apps/LetsEncrypt/hooks/nginx.sh +2 -0
- data/Plugins/Apps/LetsEncrypt/hooks/postfix.sh +2 -0
- data/Plugins/Apps/LetsEncrypt/renew-certificates.service +7 -0
- data/Plugins/Apps/LetsEncrypt/renew-certificates.timer +12 -0
- data/Plugins/Apps/LetsEncrypt/rfc2136.ini +11 -0
- data/Plugins/Apps/MariaDB/MariaDB.lmm.rb +115 -0
- data/Plugins/Apps/Matrix/Element.container +14 -0
- data/Plugins/Apps/Matrix/Matrix.conf.erb +49 -5
- data/Plugins/Apps/Matrix/Matrix.lmm.rb +86 -1
- data/Plugins/Apps/Matrix/Synapse.container +17 -0
- data/Plugins/Apps/Matrix/config.json +50 -0
- data/Plugins/Apps/Matrix/homeserver.yaml +70 -0
- data/Plugins/Apps/Matrix/log.config +30 -0
- data/Plugins/Apps/Nextcloud/Nextcloud.lmm.rb +70 -45
- data/Plugins/Apps/Nginx/conf.d/configlmm.conf +9 -0
- data/Plugins/Apps/Nginx/config-lmm/errors.conf +10 -4
- data/Plugins/Apps/Nginx/config-lmm/proxy.conf +5 -1
- data/Plugins/Apps/Nginx/nginx.lmm.rb +15 -11
- data/Plugins/Apps/Nginx/proxy.conf.erb +13 -3
- data/Plugins/Apps/Odoo/Odoo.container +2 -1
- data/Plugins/Apps/Odoo/Odoo.lmm.rb +1 -1
- data/Plugins/Apps/OpenVidu/Ingress.container +18 -0
- data/Plugins/Apps/OpenVidu/OpenVidu.conf.erb +34 -0
- data/Plugins/Apps/OpenVidu/OpenVidu.container +16 -0
- data/Plugins/Apps/OpenVidu/OpenVidu.lmm.rb +90 -0
- data/Plugins/Apps/OpenVidu/OpenViduCall.conf.erb +35 -0
- data/Plugins/Apps/OpenVidu/OpenViduCall.container +15 -0
- data/Plugins/Apps/OpenVidu/ingress.yaml +10 -0
- data/Plugins/Apps/OpenVidu/livekit.yaml +13 -0
- data/Plugins/Apps/Peppermint/Peppermint.conf.erb +0 -4
- data/Plugins/Apps/Peppermint/Peppermint.container +2 -1
- data/Plugins/Apps/Postfix/Postfix.lmm.rb +32 -6
- data/Plugins/Apps/PostgreSQL/PostgreSQL.lmm.rb +80 -11
- data/Plugins/Apps/Roundcube/Roundcube.conf.erb +75 -0
- data/Plugins/Apps/Roundcube/Roundcube.lmm.rb +145 -0
- data/Plugins/Apps/Tunnel/tunnel.lmm.rb +63 -0
- data/Plugins/Apps/Tunnel/tunnelTCP.service +9 -0
- data/Plugins/Apps/Tunnel/tunnelTCP.socket +9 -0
- data/Plugins/Apps/Tunnel/tunnelUDP.service +9 -0
- data/Plugins/Apps/Tunnel/tunnelUDP.socket +9 -0
- data/Plugins/Apps/Valkey/Valkey.lmm.rb +32 -0
- data/Plugins/Apps/Vaultwarden/Vaultwarden.lmm.rb +4 -0
- data/Plugins/Apps/Wiki.js/Wiki.js.conf.erb +42 -0
- data/Plugins/Apps/Wiki.js/Wiki.js.container +15 -0
- data/Plugins/Apps/Wiki.js/Wiki.js.lmm.rb +61 -0
- data/Plugins/Apps/gollum/gollum.conf.erb +39 -1
- data/Plugins/Apps/gollum/gollum.container +4 -1
- data/Plugins/Apps/gollum/gollum.lmm.rb +11 -3
- data/Plugins/OS/Linux/Debian/preseed.cfg.erb +62 -0
- data/Plugins/OS/Linux/Distributions.yaml +32 -0
- data/Plugins/OS/Linux/Flavours.yaml +11 -0
- data/Plugins/OS/Linux/Linux.lmm.rb +255 -67
- data/Plugins/OS/Linux/Packages.yaml +47 -2
- data/Plugins/OS/Linux/Proxmox/answer.toml.erb +30 -0
- data/Plugins/OS/Linux/WireGuard/WireGuard.lmm.rb +33 -4
- data/Plugins/Platforms/GoDaddy/GoDaddy.lmm.rb +1 -1
- data/Plugins/Platforms/libvirt/libvirt.lmm.rb +3 -2
- data/Plugins/Services/DNS/PowerDNS.lmm.rb +95 -8
- data/bootstrap.sh +41 -3
- data/lib/ConfigLMM/Framework/plugins/linuxApp.rb +146 -64
- data/lib/ConfigLMM/Framework/plugins/nginxApp.rb +34 -3
- data/lib/ConfigLMM/Framework/plugins/plugin.rb +62 -6
- data/lib/ConfigLMM/cli.rb +3 -1
- data/lib/ConfigLMM/commands/cleanup.rb +1 -0
- data/lib/ConfigLMM/commands/configsCommand.rb +3 -1
- data/lib/ConfigLMM/io/configList.rb +3 -1
- data/lib/ConfigLMM/state.rb +10 -2
- data/lib/ConfigLMM/version.rb +1 -1
- metadata +54 -3
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -43,7 +43,7 @@ module ConfigLMM
|
|
|
43
43
|
options = @Options.dup
|
|
44
44
|
options.delete(:locations)
|
|
45
45
|
options.delete(:things)
|
|
46
|
-
|
|
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])
|
|
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)
|
data/lib/ConfigLMM/state.rb
CHANGED
|
@@ -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
|
-
|
|
70
|
-
|
|
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
|
data/lib/ConfigLMM/version.rb
CHANGED
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.
|
|
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-
|
|
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/
|
|
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
|
-
}
|