ConfigLMM 0.3.0 → 0.5.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 +70 -0
- data/CNAME +1 -0
- data/Examples/.lmm.state.yaml +159 -0
- data/Examples/ConfigLMM.mm.yaml +32 -0
- data/Examples/Implemented.mm.yaml +252 -4
- data/Examples/SmallBusiness.mm.yaml +492 -0
- data/Plugins/Apps/Answer/answer.lmm.rb +165 -0
- data/Plugins/Apps/Answer/answer@.service +40 -0
- data/Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.conf.erb +0 -3
- data/Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.lmm.rb +0 -1
- data/Plugins/Apps/Authentik/Authentik-ProxyOutpost.container +20 -0
- data/Plugins/Apps/Authentik/Authentik-Server.container +7 -1
- data/Plugins/Apps/Authentik/Authentik-Worker.container +7 -1
- data/Plugins/Apps/Authentik/Authentik.conf.erb +18 -6
- data/Plugins/Apps/Authentik/Authentik.lmm.rb +232 -45
- data/Plugins/Apps/BookStack/BookStack.conf.erb +38 -0
- data/Plugins/Apps/BookStack/BookStack.container +20 -0
- data/Plugins/Apps/BookStack/BookStack.lmm.rb +91 -0
- data/Plugins/Apps/Cassandra/Cassandra.lmm.rb +9 -19
- data/Plugins/Apps/ClickHouse/ClickHouse.container +28 -0
- data/Plugins/Apps/ClickHouse/ClickHouse.lmm.rb +113 -0
- data/Plugins/Apps/ClickHouse/Config/listen.yaml +2 -0
- data/Plugins/Apps/ClickHouse/Config/logger.yaml +8 -0
- data/Plugins/Apps/ClickHouse/Config/zookeepers.yaml +5 -0
- data/Plugins/Apps/ClickHouse/Connection.rb +96 -0
- data/Plugins/Apps/Discourse/Discourse-Sidekiq.container +22 -0
- data/Plugins/Apps/Discourse/Discourse.conf.erb +38 -0
- data/Plugins/Apps/Discourse/Discourse.container +21 -0
- data/Plugins/Apps/Discourse/Discourse.lmm.rb +156 -0
- data/Plugins/Apps/Dovecot/Dovecot.lmm.rb +87 -52
- data/Plugins/Apps/ERPNext/ERPNext-Frontend.container +24 -0
- data/Plugins/Apps/ERPNext/ERPNext-Queue.container +22 -0
- data/Plugins/Apps/ERPNext/ERPNext-Scheduler.container +22 -0
- data/Plugins/Apps/ERPNext/ERPNext-Websocket.container +24 -0
- data/Plugins/Apps/ERPNext/ERPNext.container +23 -0
- data/Plugins/Apps/ERPNext/ERPNext.lmm.rb +204 -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 +9 -2
- data/Plugins/Apps/GitLab/GitLab.lmm.rb +52 -33
- data/Plugins/Apps/Homepage/Homepage.conf.erb +86 -0
- data/Plugins/Apps/Homepage/Homepage.container +19 -0
- data/Plugins/Apps/Homepage/Homepage.lmm.rb +54 -0
- data/Plugins/Apps/IPFS/IPFS.conf.erb +0 -3
- data/Plugins/Apps/IPFS/IPFS.lmm.rb +0 -1
- data/Plugins/Apps/InfluxDB/InfluxDB.conf.erb +0 -3
- data/Plugins/Apps/InfluxDB/InfluxDB.lmm.rb +0 -1
- data/Plugins/Apps/Jackett/Jackett.conf.erb +0 -3
- data/Plugins/Apps/Jackett/Jackett.lmm.rb +0 -1
- data/Plugins/Apps/Jellyfin/Jellyfin.conf.erb +0 -3
- data/Plugins/Apps/Jellyfin/Jellyfin.lmm.rb +0 -1
- data/Plugins/Apps/LetsEncrypt/LetsEncrypt.lmm.rb +78 -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/LibreTranslate/LibreTranslate.container +21 -0
- data/Plugins/Apps/LibreTranslate/LibreTranslate.lmm.rb +34 -0
- data/Plugins/Apps/Lobsters/Containerfile +81 -0
- data/Plugins/Apps/Lobsters/Lobsters-Tasks.container +26 -0
- data/Plugins/Apps/Lobsters/Lobsters.conf.erb +99 -0
- data/Plugins/Apps/Lobsters/Lobsters.container +27 -0
- data/Plugins/Apps/Lobsters/Lobsters.lmm.rb +196 -0
- data/Plugins/Apps/Lobsters/crontab +3 -0
- data/Plugins/Apps/Lobsters/database.yml +26 -0
- data/Plugins/Apps/Lobsters/entrypoint.sh +30 -0
- data/Plugins/Apps/Lobsters/generateCredentials.rb +19 -0
- data/Plugins/Apps/Lobsters/lobsters-cron.sh +25 -0
- data/Plugins/Apps/Lobsters/lobsters-daily.sh +23 -0
- data/Plugins/Apps/Lobsters/puma.rb +49 -0
- data/Plugins/Apps/MariaDB/Connection.rb +55 -0
- data/Plugins/Apps/MariaDB/MariaDB.lmm.rb +122 -0
- data/Plugins/Apps/Mastodon/Mastodon-Sidekiq.container +22 -0
- data/Plugins/Apps/Mastodon/Mastodon-Streaming.container +20 -0
- data/Plugins/Apps/Mastodon/Mastodon.conf.erb +34 -45
- data/Plugins/Apps/Mastodon/Mastodon.container +28 -0
- data/Plugins/Apps/Mastodon/Mastodon.lmm.rb +240 -5
- data/Plugins/Apps/Mastodon/configlmm.rake +30 -0
- data/Plugins/Apps/Mastodon/entrypoint.sh +16 -0
- data/Plugins/Apps/Matrix/Element.container +19 -0
- data/Plugins/Apps/Matrix/Matrix.conf.erb +47 -9
- data/Plugins/Apps/Matrix/Matrix.lmm.rb +119 -5
- data/Plugins/Apps/Matrix/Synapse.container +22 -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/Netdata/Netdata.conf.erb +0 -3
- data/Plugins/Apps/Netdata/Netdata.lmm.rb +0 -1
- data/Plugins/Apps/Nextcloud/Nextcloud.conf.erb +3 -4
- data/Plugins/Apps/Nextcloud/Nextcloud.lmm.rb +155 -48
- data/Plugins/Apps/Nextcloud/autoconfig.php +13 -0
- data/Plugins/Apps/Nextcloud/config.php +10 -1
- data/Plugins/Apps/Nextcloud/nextcloudcron.service +8 -0
- data/Plugins/Apps/Nextcloud/nextcloudcron.timer +10 -0
- data/Plugins/Apps/Nginx/Connection.rb +93 -0
- data/Plugins/Apps/Nginx/conf.d/configlmm.conf +54 -4
- data/Plugins/Apps/Nginx/conf.d/languages.conf +21 -0
- data/Plugins/Apps/Nginx/config-lmm/errors.conf +33 -22
- data/Plugins/Apps/Nginx/config-lmm/gateway-errors.conf +20 -0
- data/Plugins/Apps/Nginx/config-lmm/proxy.conf +6 -2
- data/Plugins/Apps/Nginx/main.conf.erb +7 -3
- data/Plugins/Apps/Nginx/nginx.conf +2 -2
- data/Plugins/Apps/Nginx/nginx.lmm.rb +103 -81
- data/Plugins/Apps/Nginx/proxy.conf.erb +24 -6
- data/Plugins/Apps/Odoo/Odoo.conf.erb +0 -3
- data/Plugins/Apps/Odoo/Odoo.container +7 -1
- data/Plugins/Apps/Odoo/Odoo.lmm.rb +4 -5
- data/Plugins/Apps/Ollama/Ollama.container +26 -0
- data/Plugins/Apps/Ollama/Ollama.lmm.rb +73 -0
- data/Plugins/Apps/OpenTelemetry/Config/config.yaml +704 -0
- data/Plugins/Apps/OpenTelemetry/OpenTelemetry.lmm.rb +154 -0
- data/Plugins/Apps/OpenVidu/Ingress.container +23 -0
- data/Plugins/Apps/{GitLab/GitLab.conf.erb → OpenVidu/OpenVidu.conf.erb} +8 -3
- data/Plugins/Apps/OpenVidu/OpenVidu.container +21 -0
- data/Plugins/Apps/OpenVidu/OpenVidu.lmm.rb +94 -0
- data/Plugins/Apps/OpenVidu/OpenViduCall.conf.erb +32 -0
- data/Plugins/Apps/OpenVidu/OpenViduCall.container +20 -0
- data/Plugins/Apps/OpenVidu/ingress.yaml +10 -0
- data/Plugins/Apps/OpenVidu/livekit.yaml +13 -0
- data/Plugins/Apps/PHP-FPM/Connection.rb +91 -0
- data/Plugins/Apps/PHP-FPM/PHP-FPM.lmm.rb +31 -4
- data/Plugins/Apps/Peppermint/Peppermint.conf.erb +2 -9
- data/Plugins/Apps/Peppermint/Peppermint.container +7 -1
- data/Plugins/Apps/Peppermint/Peppermint.lmm.rb +29 -33
- data/Plugins/Apps/Perplexica/Perplexica.container +25 -0
- data/Plugins/Apps/Perplexica/Perplexica.lmm.rb +92 -0
- data/Plugins/Apps/Perplexica/config.toml +26 -0
- data/Plugins/Apps/Podman/Connection.rb +24 -0
- data/Plugins/Apps/Podman/Podman.lmm.rb +80 -0
- data/Plugins/Apps/Podman/storage.conf +6 -0
- data/Plugins/Apps/Postfix/Postfix.lmm.rb +249 -145
- data/Plugins/Apps/PostgreSQL/Connection.rb +97 -0
- data/Plugins/Apps/PostgreSQL/PostgreSQL.lmm.rb +204 -99
- data/Plugins/Apps/Pterodactyl/Pterodactyl.conf.erb +0 -3
- data/Plugins/Apps/Pterodactyl/Pterodactyl.lmm.rb +0 -2
- data/Plugins/Apps/Pterodactyl/Wings.conf.erb +0 -3
- data/Plugins/Apps/RVM/RVM.lmm.rb +57 -0
- data/Plugins/Apps/Roundcube/Roundcube.conf.erb +72 -0
- data/Plugins/Apps/Roundcube/Roundcube.lmm.rb +141 -0
- data/Plugins/Apps/SSH/SSH.lmm.rb +9 -15
- data/Plugins/Apps/SearXNG/SearXNG.container +22 -0
- data/Plugins/Apps/SearXNG/SearXNG.lmm.rb +79 -0
- data/Plugins/Apps/SearXNG/limiter.toml +40 -0
- data/Plugins/Apps/SearXNG/settings.yml +2 -0
- data/Plugins/Apps/SigNoz/Config/alerts.yml +11 -0
- data/Plugins/Apps/SigNoz/Config/otel-collector-config.yaml +110 -0
- data/Plugins/Apps/SigNoz/Config/otel-collector-opamp-config.yaml +1 -0
- data/Plugins/Apps/SigNoz/Config/prometheus.yml +18 -0
- data/Plugins/Apps/SigNoz/SigNoz-Collector.container +23 -0
- data/Plugins/Apps/SigNoz/SigNoz-Migrator.container +17 -0
- data/Plugins/Apps/SigNoz/SigNoz.conf.erb +61 -0
- data/Plugins/Apps/SigNoz/SigNoz.container +26 -0
- data/Plugins/Apps/SigNoz/SigNoz.lmm.rb +319 -0
- data/Plugins/Apps/Solr/log4j2.xml +89 -0
- data/Plugins/Apps/Solr/solr.lmm.rb +82 -0
- data/Plugins/Apps/Sunshine/Sunshine.conf.erb +0 -3
- data/Plugins/Apps/Sunshine/Sunshine.lmm.rb +0 -1
- data/Plugins/Apps/Tunnel/tunnel.lmm.rb +59 -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/UVdesk/UVdesk.conf.erb +0 -3
- data/Plugins/Apps/Umami/Umami.container +19 -0
- data/Plugins/Apps/Umami/Umami.lmm.rb +108 -0
- data/Plugins/Apps/Valkey/Valkey.lmm.rb +64 -20
- data/Plugins/Apps/Vaultwarden/Vaultwarden.conf.erb +9 -6
- data/Plugins/Apps/Vaultwarden/Vaultwarden.container +7 -1
- data/Plugins/Apps/Vaultwarden/Vaultwarden.lmm.rb +67 -28
- data/Plugins/Apps/Wiki.js/Wiki.js.conf.erb +39 -0
- data/Plugins/Apps/Wiki.js/Wiki.js.container +20 -0
- data/Plugins/Apps/Wiki.js/Wiki.js.lmm.rb +55 -0
- data/Plugins/Apps/YaCy/YaCy.conf.erb +93 -0
- data/Plugins/Apps/YaCy/YaCy.container +21 -0
- data/Plugins/Apps/YaCy/YaCy.lmm.rb +160 -0
- data/Plugins/Apps/ZooKeeper/ZooKeeper.container +24 -0
- data/Plugins/Apps/ZooKeeper/ZooKeeper.lmm.rb +68 -0
- data/Plugins/Apps/bitmagnet/bitmagnet.conf.erb +0 -3
- data/Plugins/Apps/bitmagnet/bitmagnet.lmm.rb +0 -1
- data/Plugins/Apps/gollum/gollum.conf.erb +40 -4
- data/Plugins/Apps/gollum/gollum.container +10 -1
- data/Plugins/Apps/gollum/gollum.lmm.rb +56 -47
- data/Plugins/Apps/llama.cpp/llama.cpp.container +28 -0
- data/Plugins/Apps/llama.cpp/llama.cpp.lmm.rb +90 -0
- data/Plugins/Apps/vLLM/vLLM.container +32 -0
- data/Plugins/Apps/vLLM/vLLM.lmm.rb +89 -0
- data/Plugins/OS/General/Utils.lmm.rb +26 -0
- data/Plugins/OS/Linux/Connection.rb +472 -0
- data/Plugins/OS/Linux/Debian/preseed.cfg.erb +81 -0
- data/Plugins/OS/Linux/Distributions.yaml +32 -0
- data/Plugins/OS/Linux/Flavours.yaml +24 -0
- data/Plugins/OS/Linux/Grub/grub.cfg +10 -0
- data/Plugins/OS/Linux/HTTP.rb +32 -0
- data/Plugins/OS/Linux/Linux.lmm.rb +708 -174
- data/Plugins/OS/Linux/Packages.yaml +67 -3
- data/Plugins/OS/Linux/Proxmox/answer.toml.erb +30 -0
- data/Plugins/OS/Linux/Services.yaml +8 -0
- data/Plugins/OS/Linux/Shell.rb +70 -0
- data/Plugins/OS/Linux/Syslinux/default +8 -0
- data/Plugins/OS/Linux/WireGuard/WireGuard.lmm.rb +93 -40
- data/Plugins/OS/Linux/WireGuard/wg0.conf.erb +3 -0
- data/Plugins/OS/Linux/openSUSE/autoinst.xml.erb +29 -3
- data/Plugins/OS/Linux/systemd/systemd.lmm.rb +13 -11
- data/Plugins/OS/Routers/Aruba/ArubaInstant.lmm.rb +6 -5
- data/Plugins/Platforms/GitHub.lmm.rb +73 -28
- data/Plugins/Platforms/GoDaddy/GoDaddy.lmm.rb +10 -7
- data/Plugins/Platforms/Proxmox/Proxmox.lmm.rb +402 -0
- data/Plugins/Platforms/Proxmox/XTerm.rb +321 -0
- data/Plugins/Platforms/libvirt/libvirt.lmm.rb +41 -15
- data/Plugins/Platforms/porkbun.lmm.rb +12 -2
- data/Plugins/Platforms/porkbun_spec.rb +2 -2
- data/Plugins/Services/DNS/AmberBit.lmm.rb +1 -1
- data/Plugins/Services/DNS/ArubaItDNS.lmm.rb +1 -1
- data/Plugins/Services/DNS/NICLV.lmm.rb +1 -1
- data/Plugins/Services/DNS/PowerDNS.lmm.rb +130 -41
- data/Plugins/Services/DNS/tonic.lmm.rb +22 -12
- data/bootstrap.sh +41 -3
- data/lib/ConfigLMM/Framework/plugins/dns.rb +4 -3
- data/lib/ConfigLMM/Framework/plugins/linuxApp.rb +187 -144
- data/lib/ConfigLMM/Framework/plugins/nginxApp.rb +54 -6
- data/lib/ConfigLMM/Framework/plugins/plugin.rb +68 -140
- data/lib/ConfigLMM/Framework/plugins/store.rb +4 -4
- data/lib/ConfigLMM/Framework/variables.rb +75 -0
- data/lib/ConfigLMM/Framework.rb +1 -0
- data/lib/ConfigLMM/cli.rb +13 -5
- data/lib/ConfigLMM/commands/cleanup.rb +1 -0
- data/lib/ConfigLMM/commands/configsCommand.rb +38 -5
- data/lib/ConfigLMM/commands/diff.rb +33 -9
- data/lib/ConfigLMM/context.rb +22 -3
- data/lib/ConfigLMM/io/configList.rb +85 -7
- data/lib/ConfigLMM/io/connection.rb +143 -0
- data/lib/ConfigLMM/io/dhcp.rb +330 -0
- data/lib/ConfigLMM/io/http.rb +78 -0
- data/lib/ConfigLMM/io/local.rb +207 -0
- data/lib/ConfigLMM/io/pxe.rb +92 -0
- data/lib/ConfigLMM/io/ssh.rb +156 -0
- data/lib/ConfigLMM/io/tftp.rb +105 -0
- data/lib/ConfigLMM/io.rb +2 -0
- data/lib/ConfigLMM/secrets/envStore.rb +39 -0
- data/lib/ConfigLMM/secrets/fileStore.rb +43 -0
- data/lib/ConfigLMM/state.rb +12 -3
- data/lib/ConfigLMM/version.rb +2 -1
- data/lib/ConfigLMM.rb +1 -0
- data/{Examples → scripts}/configlmmAuth.sh +7 -5
- metadata +257 -9
@@ -1,14 +1,16 @@
|
|
1
1
|
|
2
2
|
module ConfigLMM
|
3
3
|
module LMM
|
4
|
-
class Nextcloud < Framework::
|
4
|
+
class Nextcloud < Framework::Plugin
|
5
5
|
|
6
6
|
USER = 'nextcloud'
|
7
7
|
HOME_DIR = '/var/lib/nextcloud'
|
8
8
|
PACKAGE_NAME = 'Nextcloud'
|
9
9
|
|
10
10
|
def actionNextcloudBuild(id, target, state, context, options)
|
11
|
-
|
11
|
+
Nginx.withConnection(local) do |nginxConnection|
|
12
|
+
nginxConnection.writeConfig(__dir__, 'Nextcloud', target, state, context, options)
|
13
|
+
end
|
12
14
|
end
|
13
15
|
|
14
16
|
def actionNextcloudDiff(id, target, activeState, context, options)
|
@@ -16,62 +18,167 @@ module ConfigLMM
|
|
16
18
|
end
|
17
19
|
|
18
20
|
def actionNextcloudDeploy(id, target, activeState, context, options)
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
21
|
+
self.withConnection(target['Location'], target) do |connection|
|
22
|
+
Linux.withConnection(connection) do |linuxConnection|
|
23
|
+
PHP_FPM::deploy(linuxConnection, options)
|
24
|
+
linuxConnection.ensurePackage(PACKAGE_NAME, options)
|
25
|
+
|
26
|
+
Podman.createUser(USER, HOME_DIR, 'Nextcloud', linuxConnection, options)
|
27
|
+
linuxConnection.withUserShell(USER) do |shell|
|
28
|
+
shell.createDirs(options, '~/apps', '~/data')
|
29
|
+
end
|
30
|
+
linuxConnection.createDirs(options, '/var/log/php')
|
31
|
+
linuxConnection.makeAccessible(HOME_DIR, options)
|
32
|
+
|
33
|
+
webappsDir = nil
|
34
|
+
PHP_FPM.withConnection(linuxConnection) do |phpConnection|
|
35
|
+
webappsDir = phpConnection.webappsDir
|
36
|
+
phpConnection.enableExtension('imagick', options)
|
37
|
+
end
|
38
|
+
|
39
|
+
target['User'] = USER unless target['User']
|
40
|
+
target['Root'] = webappsDir + 'nextcloud'
|
41
|
+
dbPassword = configureDatabase(target, linuxConnection, context, options)
|
42
|
+
|
43
|
+
configDir = webappsDir + 'nextcloud/config/'
|
44
|
+
if !linuxConnection.filePresent?(configDir + 'config.php', options)
|
45
|
+
linuxConnection.fileWrite('/var/log/php/nextcloud.access.json', '', options)
|
46
|
+
linuxConnection.fileWrite('/var/log/php/nextcloud.errors.log', '', options)
|
47
|
+
linuxConnection.fileWrite('/var/log/php/nextcloud.mail.log', '', options)
|
48
|
+
|
49
|
+
linuxConnection.setUserGroup('/var/log/php/nextcloud.access.json', USER, USER, options)
|
50
|
+
linuxConnection.setUserGroup('/var/log/php/nextcloud.errors.log', USER, USER, options)
|
51
|
+
linuxConnection.setUserGroup('/var/log/php/nextcloud.mail.log', USER, USER, options)
|
52
|
+
|
53
|
+
linuxConnection.exec("chmod o-r /var/log/php/nextcloud.access.json /var/log/php/nextcloud.errors.log /var/log/php/nextcloud.mail.log", false, options)
|
54
|
+
|
55
|
+
linuxConnection.upload(__dir__ + '/autoconfig.php', configDir, options)
|
56
|
+
|
57
|
+
linuxConnection.fileReplace("#{configDir}autoconfig.php", "'dbuser' .*", "'dbuser' => '#{target['User']}',", options)
|
58
|
+
linuxConnection.fileReplace("#{configDir}autoconfig.php", "'dbpass' .*", "'dbpass' => '#{dbPassword}',", { **options, hide: true })
|
59
|
+
|
60
|
+
if target['Database']['HostName'] != 'localhost'
|
61
|
+
linuxConnection.fileReplace("#{configDir}autoconfig.php", "'dbhost' .*", "'dbhost' => '#{target['Database']['HostName']}',", options)
|
43
62
|
end
|
44
|
-
self.class.sshExec!(ssh, "chown -R nextcloud:nextcloud #{configDir}")
|
45
|
-
self.class.sshExec!(ssh, "chown -R nextcloud:nextcloud /var/lib/nextcloud/")
|
46
63
|
|
47
|
-
target['
|
48
|
-
|
49
|
-
|
64
|
+
if target['Admin'].to_h.empty?
|
65
|
+
linuxConnection.fileReplace("#{configDir}autoconfig.php", "'adminlogin'", "//'adminlogin'", options)
|
66
|
+
linuxConnection.fileReplace("#{configDir}autoconfig.php", "'adminpass'", "//'adminpass'", options)
|
67
|
+
else
|
68
|
+
raise 'Admin.Name missing!' unless target['Admin']['Name']
|
69
|
+
linuxConnection.fileReplace("#{configDir}autoconfig.php", "'adminlogin' .*", "'adminlogin' => '#{target['Admin']['Name']}',", options)
|
70
|
+
|
71
|
+
adminPassword = context.secrets.load(target['SecretId'], 'ADMIN_PASSWORD')
|
72
|
+
if adminPassword.nil?
|
73
|
+
adminPassword = SecureRandom.alphanumeric(20)
|
74
|
+
context.secrets.store(target['SecretId'], 'ADMIN_PASSWORD', adminPassword)
|
75
|
+
context.secrets.print("Nextcloud Admin '#{target['Admin']['Name']}' password", adminPassword)
|
76
|
+
end
|
77
|
+
|
78
|
+
linuxConnection.fileReplace("#{configDir}autoconfig.php", "'adminpass' .*", "'adminpass' => '#{adminPassword}',", { **options, hide: true })
|
50
79
|
end
|
51
80
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
81
|
+
linuxConnection.upload(__dir__ + '/config.php', configDir, options)
|
82
|
+
linuxConnection.fileReplace("#{configDir}config.php", "'instanceid' .*", "'instanceid' => '#{SecureRandom.alphanumeric(10)}',", options)
|
83
|
+
|
84
|
+
if target['Valkey'].to_h.empty?
|
85
|
+
linuxConnection.fileReplace("#{configDir}config.php", "'memcache.distributed'", "//'memcache.distributed'", options)
|
86
|
+
linuxConnection.fileReplace("#{configDir}config.php", "'memcache.locking'", "//'memcache.locking'", options)
|
87
|
+
else
|
88
|
+
if target['Valkey']['Host']
|
89
|
+
linuxConnection.fileReplace("#{configDir}config.php", "'host' .*", "'host' => '#{target['Valkey']['Host']}',", options)
|
90
|
+
end
|
91
|
+
if target['Valkey']['SecretId']
|
92
|
+
valkeyPassword = context.secrets.load(target['Valkey']['SecretId'], 'VALKEY_PASSWORD')
|
93
|
+
linuxConnection.fileReplace("#{configDir}config.php", "'password' .*", "'password' => '#{valkeyPassword}',", { **options, hide: true })
|
94
|
+
end
|
56
95
|
end
|
57
96
|
|
58
|
-
|
97
|
+
linuxConnection.fileWrite("#{configDir}CAN_INSTALL", '', options)
|
98
|
+
linuxConnection.fileReplace("#{configDir}config.php", '/usr/share/webapps/', webappsDir, options)
|
59
99
|
end
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
100
|
+
linuxConnection.setUserGroup(configDir, USER, USER, options)
|
101
|
+
linuxConnection.setUserGroup('/var/lib/nextcloud', USER, USER, options)
|
102
|
+
|
103
|
+
name = 'nextcloud'
|
104
|
+
PHP_FPM.withConnection(linuxConnection) do |phpConnection|
|
105
|
+
linuxConnection.updateFile(phpConnection.configDir + name + '.conf', options, false, ';') do |configLines|
|
106
|
+
phpConnection.writeConfig(name, target, configLines)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
linuxConnection.upload(__dir__ + '/nextcloudcron.service', '/etc/systemd/system/', options)
|
111
|
+
linuxConnection.upload(__dir__ + '/nextcloudcron.timer', '/etc/systemd/system/', options)
|
112
|
+
linuxConnection.fileReplace('/etc/systemd/system/nextcloudcron.service', '\$WEBAPPS/', webappsDir, options)
|
113
|
+
|
114
|
+
linuxConnection.reloadServiceManager(options)
|
115
|
+
linuxConnection.startService(PHP_FPM::PHPFPM_SERVICE, options)
|
116
|
+
linuxConnection.ensureServiceAutoStart('nextcloudcron.timer', options)
|
117
|
+
linuxConnection.startService('nextcloudcron.timer', options)
|
118
|
+
|
119
|
+
Nginx.withConnection(linuxConnection) do |nginxConnection|
|
120
|
+
nginxConnection.provision(__dir__, 'Nextcloud', target, activeState, context, options)
|
68
121
|
end
|
69
122
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def configureDatabase(target, linuxConnection, context, options)
|
127
|
+
target['Database'] ||= {}
|
128
|
+
|
129
|
+
password = context.secrets.load(target['SecretId'], 'DB_PASSWORD')
|
130
|
+
if password.nil?
|
131
|
+
password = SecureRandom.alphanumeric(20)
|
132
|
+
context.secrets.store(target['SecretId'], 'DB_PASSWORD', password)
|
133
|
+
end
|
134
|
+
|
135
|
+
if !target['Database']['Type'] || target['Database']['Type'] == 'pgsql'
|
136
|
+
PostgreSQL.defaults(target['Database'])
|
137
|
+
PostgreSQL.withConnection(target['Database'], linuxConnection) do |postgresConnection|
|
138
|
+
postgresConnection.createUserAndDB(target['User'], password, options)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
password
|
142
|
+
end
|
143
|
+
|
144
|
+
def cleanup(configs, state, context, options)
|
145
|
+
cleanupType(:Nextcloud, configs, state, context, options) do |item, id, state, context, options, connection|
|
146
|
+
Linux.withConnection(connection) do |linuxConnection|
|
147
|
+
Nginx.withConnection(linuxConnection) do |nginxConnection|
|
148
|
+
nginxConnection.cleanupConfig('Nextcloud', context, options)
|
149
|
+
nginxConnection.reload(options)
|
150
|
+
end
|
151
|
+
linuxConnection.stopService('nextcloudcron.timer', options)
|
152
|
+
|
153
|
+
configDir = nil
|
154
|
+
webappsDir = nil
|
155
|
+
PHP_FPM.withConnection(linuxConnection) do |phpConnection|
|
156
|
+
configDir = phpConnection.configDir
|
157
|
+
webappsDir = phpConnection.webappsDir
|
158
|
+
end
|
159
|
+
|
160
|
+
linuxConnection.rm(configDir + 'nextcloud.conf', options[:dry])
|
161
|
+
linuxConnection.rm('/etc/systemd/system/nextcloudcron.service', options[:dry])
|
162
|
+
linuxConnection.rm('/etc/systemd/system/nextcloudcron.timer', options[:dry])
|
163
|
+
linuxConnection.reloadService(PHP_FPM::PHPFPM_SERVICE, options)
|
164
|
+
linuxConnection.removePackage(PACKAGE_NAME, options)
|
165
|
+
state.item(id)['Status'] = State::STATUS_DELETED unless options[:dry]
|
166
|
+
|
167
|
+
if options[:destroy]
|
168
|
+
linuxConnection.rm(webappsDir + 'nextcloud', options[:dry])
|
169
|
+
item['Config']['Database'] ||= {}
|
170
|
+
if !item['Config']['Database']['Type'] || item['Config']['Database']['Type'] == 'pgsql'
|
171
|
+
PostgreSQL.withConnection(item['Config']['Database'], linuxConnection) do |postgresConnection|
|
172
|
+
postgresConnection.dropUserAndDB(USER, options)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
linuxConnection.deleteUserAndGroup(USER, options)
|
176
|
+
linuxConnection.rm('/var/log/php/nextcloud.access.json', options[:dry])
|
177
|
+
linuxConnection.rm('/var/log/php/nextcloud.errors.log', options[:dry])
|
178
|
+
linuxConnection.rm('/var/log/php/nextcloud.mail.log', options[:dry])
|
179
|
+
state.item(id)['Status'] = State::STATUS_DESTROYED unless options[:dry]
|
180
|
+
end
|
73
181
|
end
|
74
|
-
activeState['Location'] = '@me'
|
75
182
|
end
|
76
183
|
end
|
77
184
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?php
|
2
|
+
|
3
|
+
$AUTOCONFIG = [
|
4
|
+
'directory' => '/var/lib/nextcloud/data/',
|
5
|
+
'dbtype' => 'pgsql',
|
6
|
+
'dbname' => 'nextcloud',
|
7
|
+
'dbuser' => 'nextcloud',
|
8
|
+
'dbpass' => '',
|
9
|
+
'dbhost' => '127.0.0.1',
|
10
|
+
'dbtableprefix' => 'oc_',
|
11
|
+
'adminlogin' => '',
|
12
|
+
'adminpass' => '',
|
13
|
+
];
|
@@ -14,5 +14,14 @@ $CONFIG = [
|
|
14
14
|
'url' => '/wapps',
|
15
15
|
'writable' => true,
|
16
16
|
],
|
17
|
-
]
|
17
|
+
],
|
18
|
+
'maintenance_window_start' => 2,
|
19
|
+
//'memcache.local' => '\OC\Memcache\APCu',
|
20
|
+
'memcache.distributed' => '\OC\Memcache\Redis',
|
21
|
+
'memcache.locking' => '\OC\Memcache\Redis',
|
22
|
+
'redis' => [
|
23
|
+
'host' => '127.0.0.1',
|
24
|
+
'port' => 6379,
|
25
|
+
'password' => '',
|
26
|
+
],
|
18
27
|
];
|
@@ -0,0 +1,93 @@
|
|
1
|
+
|
2
|
+
module ConfigLMM
|
3
|
+
module LMM
|
4
|
+
class NginxConnection
|
5
|
+
|
6
|
+
NGINX_PACKAGE = 'nginx'
|
7
|
+
CONFIG_DIR = '/etc/nginx/'
|
8
|
+
WWW_DIR = '/srv/www/'
|
9
|
+
|
10
|
+
attr_reader :connection
|
11
|
+
attr_reader :nginxVersion
|
12
|
+
|
13
|
+
def initialize(connection)
|
14
|
+
@connection = connection
|
15
|
+
end
|
16
|
+
|
17
|
+
def nginxVersion
|
18
|
+
# Allow to fail when nginx is not installed
|
19
|
+
@nginxVersion ||= connection.exec('nginx -v', true).strip.split('/')[1].to_f
|
20
|
+
end
|
21
|
+
|
22
|
+
def reload(options)
|
23
|
+
connection.reloadService(:nginx, options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def writeConfig(dir, name, target, activeState, context, options)
|
27
|
+
outputFolder = options['output']
|
28
|
+
|
29
|
+
config = prepareConfig(target)
|
30
|
+
|
31
|
+
config['NginxVersion'] = nginxVersion
|
32
|
+
template = ERB.new(File.read(dir + '/' + name + '.conf.erb'))
|
33
|
+
name = config['ConfigName'] if config['ConfigName']
|
34
|
+
connection.local.renderTemplate(template, config, outputFolder + '/nginx/servers-lmm/' + name.to_s + '.conf', options)
|
35
|
+
end
|
36
|
+
|
37
|
+
def deployAllConfigs(target, activeState, context, options)
|
38
|
+
outputFolder = options['output'] + '/nginx/servers-lmm'
|
39
|
+
|
40
|
+
connection.createDirs(options, CONFIG_DIR)
|
41
|
+
connection.uploadFolder(outputFolder, CONFIG_DIR, options)
|
42
|
+
if target['TLS']
|
43
|
+
connection.firewallAddService('https', options)
|
44
|
+
else
|
45
|
+
connection.firewallAddService('http', options)
|
46
|
+
end
|
47
|
+
reload(options)
|
48
|
+
end
|
49
|
+
|
50
|
+
def cleanupConfig(name, context, options)
|
51
|
+
connection.rm('/etc/nginx/servers-lmm/' + name + '.conf', options['dry'])
|
52
|
+
end
|
53
|
+
|
54
|
+
def provision(dir, configName, target, activeState, context, options)
|
55
|
+
connection.ensurePackage(NGINX_PACKAGE, options)
|
56
|
+
connection.ensureServiceAutoStart(:nginx, options)
|
57
|
+
writeConfig(dir, configName, target, activeState, context, options)
|
58
|
+
connection.startService(:nginx, options)
|
59
|
+
deployAllConfigs(target, activeState, context, options)
|
60
|
+
reload(options)
|
61
|
+
end
|
62
|
+
|
63
|
+
def provisionProxy(server, name, target, activeState, context, options)
|
64
|
+
target = target.dup
|
65
|
+
target['Proxy'] = server
|
66
|
+
target['Name'] = name if name
|
67
|
+
target['ConfigName'] = target['Name']
|
68
|
+
provision(__dir__, 'proxy', target, activeState, context, options)
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def prepareConfig(target)
|
74
|
+
config = target.dup
|
75
|
+
config['TLS'] = true if config['TLS'].nil?
|
76
|
+
|
77
|
+
if !config['Port']
|
78
|
+
config['Port'] = config['TLS'] ? 443 : 80
|
79
|
+
end
|
80
|
+
if config['Domain']
|
81
|
+
config['Domain'] = Addressable::IDNA.to_ascii(config['Domain'])
|
82
|
+
end
|
83
|
+
if config['Server'] && !config['Server'].start_with?('/') && !config['Server'].include?(':/')
|
84
|
+
config['Server'] = Addressable::IDNA.to_ascii(config['Server'])
|
85
|
+
end
|
86
|
+
if config['AuthentikDomain']
|
87
|
+
config['AuthentikDomain'] = Addressable::IDNA.to_ascii(config['AuthentikDomain'])
|
88
|
+
end
|
89
|
+
config
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -12,24 +12,74 @@ resolver 127.0.0.53;
|
|
12
12
|
# proxy_headers_hash_max_size 512;
|
13
13
|
# proxy_headers_hash_bucket_size 128;
|
14
14
|
|
15
|
+
log_format json escape=json '{'
|
16
|
+
'"time":$msec,'
|
17
|
+
'"time_iso8601":"$time_iso8601",'
|
18
|
+
'"remote_addr":"$remote_addr",'
|
19
|
+
'"remote_port":$remote_port,'
|
20
|
+
'"remote_user":"$remote_user",'
|
21
|
+
'"request":"$request",'
|
22
|
+
'"status":$status,'
|
23
|
+
'"method":"$request_method",'
|
24
|
+
'"scheme":"$scheme",'
|
25
|
+
'"host":"$http_host",'
|
26
|
+
'"uri":"$uri",'
|
27
|
+
'"request_uri":"$request_uri",'
|
28
|
+
'"query_string":"$query_string",'
|
29
|
+
'"request_filename":"$request_filename",'
|
30
|
+
'"request_length":$request_length,'
|
31
|
+
'"content_length":"$content_length",'
|
32
|
+
'"content_type":"$content_type",'
|
33
|
+
'"bytes_sent":$bytes_sent,'
|
34
|
+
'"body_bytes_sent":$body_bytes_sent,'
|
35
|
+
'"server_name":"$server_name",'
|
36
|
+
'"server_port":$server_port,'
|
37
|
+
'"server_protocol":"$server_protocol",'
|
38
|
+
'"http_referer":"$http_referer",'
|
39
|
+
'"http_user_agent":"$http_user_agent",'
|
40
|
+
'"http_accept_language":"$http_accept_language",'
|
41
|
+
'"http_x_forwarded_for":"$http_x_forwarded_for",'
|
42
|
+
'"http_x_real_ip":"$http_x_real_ip",'
|
43
|
+
'"request_time":$request_time,'
|
44
|
+
'"upstream_addr":"$upstream_addr",'
|
45
|
+
'"upstream_status":"$upstream_status",'
|
46
|
+
'"upstream_http_etag":"$upstream_http_etag",'
|
47
|
+
'"upstream_http_last_modified":"$upstream_http_last_modified",'
|
48
|
+
'"upstream_connect_time":"$upstream_connect_time",'
|
49
|
+
'"upstream_header_time":"$upstream_header_time",'
|
50
|
+
'"upstream_response_time":"$upstream_response_time",'
|
51
|
+
'"proxy_protocol_addr":"$proxy_protocol_addr",'
|
52
|
+
'"proxy_protocol_port":"$proxy_protocol_port",'
|
53
|
+
'"connection_time":$connection_time,'
|
54
|
+
'"connection_requests":$connection_requests'
|
55
|
+
'}';
|
56
|
+
|
57
|
+
access_log /var/log/nginx/access.json json;
|
15
58
|
|
16
59
|
gzip on;
|
60
|
+
gzip_static on;
|
17
61
|
gzip_vary on;
|
18
62
|
gzip_proxied any;
|
19
63
|
gzip_comp_level 6;
|
20
64
|
gzip_min_length 256;
|
21
65
|
|
22
|
-
# do not remove ETag headers
|
23
|
-
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
|
24
|
-
|
25
66
|
gzip_types application/atom+xml text/javascript text/xml application/xml+rss application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
|
26
67
|
|
27
|
-
|
28
68
|
charset utf-8;
|
29
69
|
charset_types text/css text/plain text/xml text/javascript text/vnd.wap.wml application/json application/javascript application/xml application/xml+rss application/rss+xm image/svg+xml;
|
30
70
|
proxy_intercept_errors on;
|
31
71
|
fastcgi_intercept_errors on;
|
32
72
|
|
73
|
+
map '' $ProxyHost {
|
74
|
+
default $host;
|
75
|
+
~. '';
|
76
|
+
}
|
77
|
+
|
78
|
+
map '' $ProxyForwardedHost {
|
79
|
+
default $http_host;
|
80
|
+
~. '';
|
81
|
+
}
|
82
|
+
|
33
83
|
map $http_accept $errorExtension
|
34
84
|
{
|
35
85
|
default html;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
# Here we include only those languages that are supported
|
3
|
+
# by https://github.com/ConfigLMM/HttpErrorPages/tree/configlmm/i18n
|
4
|
+
|
5
|
+
map $http_accept_language $userLanguage
|
6
|
+
{
|
7
|
+
default en_US;
|
8
|
+
~*^es-VE es_VE;
|
9
|
+
~*^es es_VE; # Fallback
|
10
|
+
~*^fr-FR fr_FR;
|
11
|
+
~*^fr fr_FR;
|
12
|
+
~*^it-IT it_IT;
|
13
|
+
~*^it it_IT;
|
14
|
+
~*^lv-LV lv_LV;
|
15
|
+
~*^lv lv_LV;
|
16
|
+
~*^pl pl_PL;
|
17
|
+
~*^pt-BR pt_BR;
|
18
|
+
~*^pt pt_BR;
|
19
|
+
~*^zh-CN zh_CN;
|
20
|
+
~*^zh zh_CN;
|
21
|
+
}
|
@@ -1,31 +1,42 @@
|
|
1
1
|
|
2
2
|
# add one directive for each http status code
|
3
|
-
error_page 301 /_errors_/HTTP301.$errorExtension;
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
error_page
|
10
|
-
|
11
|
-
error_page
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
error_page
|
16
|
-
|
17
|
-
error_page
|
18
|
-
error_page
|
19
|
-
error_page
|
20
|
-
error_page
|
21
|
-
error_page
|
3
|
+
error_page 301 /_errors_/HTTP301.$userLanguage.$errorExtension;
|
4
|
+
|
5
|
+
# Looks like enabling custom 302 can be problematic
|
6
|
+
# due to apps using multiple Set-Cookie headers
|
7
|
+
# for example this breaks BookStack
|
8
|
+
# so lets not use it by default
|
9
|
+
#error_page 302 /_errors_/HTTP302.$userLanguage.$errorExtension;
|
10
|
+
|
11
|
+
error_page 303 /_errors_/HTTP303.$userLanguage.$errorExtension;
|
12
|
+
|
13
|
+
# Some applications (eg. Umami) misuse this status
|
14
|
+
# code and don't actually expect redirect...
|
15
|
+
#error_page 307 /_errors_/HTTP307.$userLanguage.$errorExtension;
|
16
|
+
|
17
|
+
error_page 308 /_errors_/HTTP308.$userLanguage.$errorExtension;
|
18
|
+
error_page 400 /_errors_/HTTP400.$userLanguage.$errorExtension;
|
19
|
+
error_page 401 /_errors_/HTTP401.$userLanguage.$errorExtension;
|
20
|
+
# error_page 402 /_errors_/HTTP402.$userLanguage.$errorExtension;
|
21
|
+
error_page 403 /_errors_/HTTP403.$userLanguage.$errorExtension;
|
22
|
+
error_page 404 /_errors_/HTTP404.$userLanguage.$errorExtension;
|
23
|
+
error_page 405 /_errors_/HTTP405.$userLanguage.$errorExtension;
|
24
|
+
error_page 497 /_errors_/HTTP497.$userLanguage.$errorExtension;
|
25
|
+
error_page 500 /_errors_/HTTP500.$userLanguage.$errorExtension;
|
26
|
+
error_page 501 /_errors_/HTTP501.$userLanguage.$errorExtension;
|
27
|
+
error_page 502 /_errors_/HTTP502.$userLanguage.$errorExtension;
|
28
|
+
error_page 503 /_errors_/HTTP503.$userLanguage.$errorExtension;
|
29
|
+
error_page 504 /_errors_/HTTP504.$userLanguage.$errorExtension;
|
30
|
+
error_page 520 /_errors_/HTTP520.$userLanguage.$errorExtension;
|
31
|
+
error_page 521 /_errors_/HTTP521.$userLanguage.$errorExtension;
|
32
|
+
error_page 533 /_errors_/HTTP533.$userLanguage.$errorExtension;
|
22
33
|
|
23
34
|
location /_errors_/ {
|
24
35
|
include config-lmm/public.conf;
|
25
36
|
|
37
|
+
add_header Location $upstream_http_location;
|
38
|
+
add_header Set-Cookie $upstream_http_set_cookie;
|
39
|
+
|
26
40
|
alias /srv/www/errors/;
|
27
41
|
internal;
|
28
42
|
}
|
29
|
-
|
30
|
-
add_header Location $upstream_http_location;
|
31
|
-
add_header Set-Cookie $upstream_http_set_cookie;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
error_page 497 /_errors_/HTTP497.$userLanguage.$errorExtension;
|
3
|
+
|
4
|
+
error_page 502 /_errors_/HTTP502.$userLanguage.$errorExtension;
|
5
|
+
error_page 503 /_errors_/HTTP503.$userLanguage.$errorExtension;
|
6
|
+
error_page 504 /_errors_/HTTP504.$userLanguage.$errorExtension;
|
7
|
+
|
8
|
+
error_page 520 /_errors_/HTTP520.$userLanguage.$errorExtension;
|
9
|
+
error_page 521 /_errors_/HTTP521.$userLanguage.$errorExtension;
|
10
|
+
error_page 533 /_errors_/HTTP533.$userLanguage.$errorExtension;
|
11
|
+
|
12
|
+
location /_errors_/ {
|
13
|
+
include config-lmm/public.conf;
|
14
|
+
|
15
|
+
add_header Location $upstream_http_location;
|
16
|
+
add_header Set-Cookie $upstream_http_set_cookie;
|
17
|
+
|
18
|
+
alias /srv/www/errors/;
|
19
|
+
internal;
|
20
|
+
}
|
@@ -1,15 +1,19 @@
|
|
1
1
|
|
2
2
|
proxy_http_version 1.1;
|
3
3
|
|
4
|
-
proxy_set_header Host $
|
4
|
+
proxy_set_header Host $ProxyHost;
|
5
5
|
proxy_set_header X-Real-IP $remote_addr;
|
6
6
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
7
7
|
proxy_set_header X-Forwarded-Proto $scheme;
|
8
8
|
proxy_set_header X-Forwarded-Protocol $scheme;
|
9
|
-
proxy_set_header X-Forwarded-Host $
|
9
|
+
proxy_set_header X-Forwarded-Host $ProxyForwardedHost;
|
10
10
|
|
11
11
|
proxy_set_header Upgrade $http_upgrade;
|
12
12
|
proxy_set_header Connection $connectionUpgrade;
|
13
13
|
|
14
14
|
# proxy_set_header Proxy "";
|
15
15
|
proxy_pass_header Server;
|
16
|
+
|
17
|
+
proxy_ssl_protocols TLSv1.2 TLSv1.3;
|
18
|
+
|
19
|
+
proxy_connect_timeout 2s;
|
@@ -6,7 +6,9 @@ server {
|
|
6
6
|
|
7
7
|
include config-lmm/errors.conf;
|
8
8
|
|
9
|
-
|
9
|
+
location / {
|
10
|
+
return 308 https://$host$request_uri;
|
11
|
+
}
|
10
12
|
}
|
11
13
|
|
12
14
|
server {
|
@@ -21,11 +23,13 @@ server {
|
|
21
23
|
|
22
24
|
server_name _;
|
23
25
|
|
24
|
-
deny all;
|
25
|
-
|
26
26
|
ssl_early_data on;
|
27
27
|
|
28
28
|
include config-lmm/errors.conf;
|
29
29
|
include config-lmm/security.conf;
|
30
30
|
include config-lmm/ssl.conf;
|
31
|
+
|
32
|
+
location / {
|
33
|
+
return 403;
|
34
|
+
}
|
31
35
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
worker_processes 4;
|
3
3
|
|
4
|
-
error_log
|
4
|
+
error_log stderr info;
|
5
5
|
|
6
6
|
events {
|
7
7
|
worker_connections 1024;
|
@@ -18,7 +18,7 @@ http {
|
|
18
18
|
|
19
19
|
include /etc/nginx/main.conf;
|
20
20
|
|
21
|
-
# Load modular configuration files from the /etc/nginx/
|
21
|
+
# Load modular configuration files from the /etc/nginx/vhosts.d directory.
|
22
22
|
# See http://nginx.org/en/docs/ngx_core_module.html#include
|
23
23
|
# for more information.
|
24
24
|
include vhosts.d/*.conf;
|