ConfigLMM 0.1.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 +7 -0
- data/.rspec +3 -0
- data/.yardopts +4 -0
- data/CHANGELOG.md +5 -0
- data/Examples/Android.mm.yaml +8 -0
- data/Examples/Apps/Blog.mm.yaml +7 -0
- data/Examples/Apps/Jellyfin.mm.yaml +3 -0
- data/Examples/Implemented.mm.yaml +155 -0
- data/Examples/Keys.ini +7 -0
- data/Examples/Linux.mm.yaml +16 -0
- data/Examples/Windows.mm.yaml +11 -0
- data/Examples/configlmmAuth.sh +26 -0
- data/Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.conf.erb +38 -0
- data/Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.lmm.rb +19 -0
- data/Plugins/Apps/IPFS/IPFS.conf.erb +44 -0
- data/Plugins/Apps/IPFS/IPFS.lmm.rb +23 -0
- data/Plugins/Apps/InfluxDB/InfluxDB.conf.erb +34 -0
- data/Plugins/Apps/InfluxDB/InfluxDB.lmm.rb +19 -0
- data/Plugins/Apps/Jackett/Jackett.conf.erb +38 -0
- data/Plugins/Apps/Jackett/Jackett.lmm.rb +19 -0
- data/Plugins/Apps/Jellyfin/Jellyfin.conf.erb +59 -0
- data/Plugins/Apps/Jellyfin/Jellyfin.lmm.rb +23 -0
- data/Plugins/Apps/Mastodon/Mastodon.conf.erb +81 -0
- data/Plugins/Apps/Mastodon/Mastodon.lmm.rb +23 -0
- data/Plugins/Apps/Matrix/Matrix.conf.erb +36 -0
- data/Plugins/Apps/Matrix/Matrix.lmm.rb +23 -0
- data/Plugins/Apps/Netdata/Netdata.conf.erb +37 -0
- data/Plugins/Apps/Netdata/Netdata.lmm.rb +23 -0
- data/Plugins/Apps/Nextcloud/Nextcloud.conf.erb +165 -0
- data/Plugins/Apps/Nextcloud/Nextcloud.lmm.rb +23 -0
- data/Plugins/Apps/Nginx/config-lmm/errors.conf +31 -0
- data/Plugins/Apps/Nginx/config-lmm/private.conf +6 -0
- data/Plugins/Apps/Nginx/config-lmm/proxy.conf +15 -0
- data/Plugins/Apps/Nginx/config-lmm/public.conf +3 -0
- data/Plugins/Apps/Nginx/config-lmm/ssl.conf +18 -0
- data/Plugins/Apps/Nginx/main.conf +30 -0
- data/Plugins/Apps/Nginx/nginx.conf +90 -0
- data/Plugins/Apps/Nginx/nginx.lmm.rb +62 -0
- data/Plugins/Apps/Nginx/proxy.conf.erb +31 -0
- data/Plugins/Apps/Odoo/Odoo.conf.erb +44 -0
- data/Plugins/Apps/Odoo/Odoo.lmm.rb +23 -0
- data/Plugins/Apps/Pterodactyl/Pterodactyl.conf.erb +50 -0
- data/Plugins/Apps/Pterodactyl/Pterodactyl.lmm.rb +30 -0
- data/Plugins/Apps/Pterodactyl/Wings.conf.erb +38 -0
- data/Plugins/Apps/Sunshine/Sunshine.conf.erb +31 -0
- data/Plugins/Apps/Sunshine/Sunshine.lmm.rb +21 -0
- data/Plugins/Apps/Vaultwarden/Vaultwarden.conf.erb +48 -0
- data/Plugins/Apps/Vaultwarden/Vaultwarden.lmm.rb +25 -0
- data/Plugins/Apps/bitmagnet/bitmagnet.conf.erb +35 -0
- data/Plugins/Apps/bitmagnet/bitmagnet.lmm.rb +19 -0
- data/Plugins/Apps/gollum/config.ru +11 -0
- data/Plugins/Apps/gollum/gollum.conf.erb +41 -0
- data/Plugins/Apps/gollum/gollum.lmm.rb +52 -0
- data/Plugins/OS/Linux.lmm.rb +64 -0
- data/Plugins/OS/Routers/Aruba/ArubaInstant.lmm.rb +144 -0
- data/Plugins/Platforms/GitHub.lmm.rb +57 -0
- data/Plugins/Platforms/GoDaddy/GoDaddy.lmm.rb +83 -0
- data/Plugins/Platforms/GoDaddy/zone.txt.erb +13 -0
- data/Plugins/Platforms/porkbun.lmm.rb +129 -0
- data/Plugins/Platforms/porkbun_spec.rb +110 -0
- data/Plugins/Services/DNS/AmberBit.lmm.rb +14 -0
- data/Plugins/Services/DNS/ArubaItDNS.lmm.rb +14 -0
- data/Plugins/Services/DNS/NICLV.lmm.rb +18 -0
- data/Plugins/Services/DNS/PowerDNS.lmm.rb +261 -0
- data/Plugins/Services/DNS/tonic.lmm.rb +126 -0
- data/README.md +337 -0
- data/Rakefile +15 -0
- data/UNLICENSE +24 -0
- data/bin/configlmm +7 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/lib/ConfigLMM/Framework/plugins/dns.rb +63 -0
- data/lib/ConfigLMM/Framework/plugins/errors.rb +23 -0
- data/lib/ConfigLMM/Framework/plugins/nginxApp.rb +55 -0
- data/lib/ConfigLMM/Framework/plugins/plugin.rb +167 -0
- data/lib/ConfigLMM/Framework/plugins/ssh.rb +37 -0
- data/lib/ConfigLMM/Framework/plugins/store.rb +57 -0
- data/lib/ConfigLMM/Framework/plugins.rb +5 -0
- data/lib/ConfigLMM/Framework/registrator.rb +32 -0
- data/lib/ConfigLMM/Framework.rb +9 -0
- data/lib/ConfigLMM/LMM/plugins.rb +5 -0
- data/lib/ConfigLMM/LMM.rb +8 -0
- data/lib/ConfigLMM/cli.rb +161 -0
- data/lib/ConfigLMM/command.rb +53 -0
- data/lib/ConfigLMM/commands/build.rb +41 -0
- data/lib/ConfigLMM/commands/cleanup.rb +30 -0
- data/lib/ConfigLMM/commands/configsCommand.rb +167 -0
- data/lib/ConfigLMM/commands/deploy.rb +39 -0
- data/lib/ConfigLMM/commands/diff.rb +45 -0
- data/lib/ConfigLMM/commands/list.rb +15 -0
- data/lib/ConfigLMM/commands/refresh.rb +46 -0
- data/lib/ConfigLMM/commands/types.rb +35 -0
- data/lib/ConfigLMM/commands/validate.rb +49 -0
- data/lib/ConfigLMM/context.rb +52 -0
- data/lib/ConfigLMM/io/configList.rb +98 -0
- data/lib/ConfigLMM/io/path.rb +48 -0
- data/lib/ConfigLMM/io/source.rb +47 -0
- data/lib/ConfigLMM/io.rb +2 -0
- data/lib/ConfigLMM/state.rb +78 -0
- data/lib/ConfigLMM/utils/filters.rb +126 -0
- data/lib/ConfigLMM/version.rb +5 -0
- data/lib/ConfigLMM.rb +6 -0
- data/sig/ConfigLMM.rbs +4 -0
- metadata +485 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 8e1dcd8d8d61d199700f39e2298c45ffaedfcb12822a833ebd16423120c4526c
|
|
4
|
+
data.tar.gz: ea7e2be4c9ea59a2babe325a8d63c1440aae67f147106d4b30e17839c0d6abda
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 32fcd1db26c56ce7787a4515ce1d653cf96cf9a812f56ac7bcaa94465bcad4fa0a3082f2420cf6bdea7ae7b8e6229c8d416b3be7e4157eb37d3ea11cd4c7a42c
|
|
7
|
+
data.tar.gz: fcd652884fe0f191739e830315da87f066507fd719e38b60bdfeb35030116de97ac9eaabf913b9e75f2e33c95a85dafc77539eba985be6968a80f136d545c186
|
data/.rspec
ADDED
data/.yardopts
ADDED
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
|
|
2
|
+
# https://porkbun.com/
|
|
3
|
+
Porkbun:
|
|
4
|
+
Type: PorkbunDNS
|
|
5
|
+
DNS:
|
|
6
|
+
example.org:
|
|
7
|
+
'@': A=@me # `@me` means use current hosts external IP
|
|
8
|
+
|
|
9
|
+
# https://www.tonic.to/
|
|
10
|
+
Tonic:
|
|
11
|
+
Type: TonicDNS
|
|
12
|
+
Domain: example.to
|
|
13
|
+
Nameservers:
|
|
14
|
+
ns.example.org: 192.168.5.5
|
|
15
|
+
|
|
16
|
+
# https://www.powerdns.com/
|
|
17
|
+
PowerDNS:
|
|
18
|
+
Type: PowerDNS
|
|
19
|
+
# Location: pdns://dns.example.org:8081/
|
|
20
|
+
# Location: ssh://server/?host=localhost&port=8081
|
|
21
|
+
Location: ssh://server/
|
|
22
|
+
Settings:
|
|
23
|
+
version-string: anonymous
|
|
24
|
+
api: yes
|
|
25
|
+
expand-alias: yes
|
|
26
|
+
resolver: 127.0.0.53
|
|
27
|
+
default-soa-content: ns.example.org. contact.example.org. 0 10800 3600 604800 3600
|
|
28
|
+
DNS:
|
|
29
|
+
example.org:
|
|
30
|
+
'@': A=@me
|
|
31
|
+
ns: A=192.168.5.5
|
|
32
|
+
|
|
33
|
+
# https://www.godaddy.com/
|
|
34
|
+
GoDaddy:
|
|
35
|
+
Type: GoDaddyDNS
|
|
36
|
+
DNS:
|
|
37
|
+
example.org:
|
|
38
|
+
'@': A=@me
|
|
39
|
+
Wiki: CNAME=@ # `@` means point it to the domain root (ie. example.org)
|
|
40
|
+
ipv6:
|
|
41
|
+
- AAAA=2606:2800:21f:cb07:6820:80da:af6b:8b2c
|
|
42
|
+
- AAAA=2606:2800:21f:cb07:6820:80da:af6b:0153
|
|
43
|
+
|
|
44
|
+
Linux:
|
|
45
|
+
Type: Linux
|
|
46
|
+
Hosts:
|
|
47
|
+
127.0.0.1:
|
|
48
|
+
- example.org
|
|
49
|
+
|
|
50
|
+
# https://www.arubanetworks.com/
|
|
51
|
+
ArubaInstant:
|
|
52
|
+
Type: ArubaInstant
|
|
53
|
+
Location: user@aruba.example.org
|
|
54
|
+
CertificateName: Aruba
|
|
55
|
+
|
|
56
|
+
# https://github.com/JustArchiNET/ArchiSteamFarm
|
|
57
|
+
ArchiSteamFarm:
|
|
58
|
+
Type: ArchiSteamFarm
|
|
59
|
+
Domain: ASF.example.org
|
|
60
|
+
|
|
61
|
+
# https://bitmagnet.io/
|
|
62
|
+
Bitmagnet:
|
|
63
|
+
Type: Bitmagnet
|
|
64
|
+
Domain: bitmagnet.example.org
|
|
65
|
+
|
|
66
|
+
# https://github.com/gollum/gollum
|
|
67
|
+
Gollum:
|
|
68
|
+
Type: Gollum
|
|
69
|
+
Domain: gollum.example.org
|
|
70
|
+
|
|
71
|
+
# https://grafana.com/
|
|
72
|
+
Grafana:
|
|
73
|
+
Type: NginxProxy
|
|
74
|
+
Domain: grafana.example.org
|
|
75
|
+
Proxy: unix:/run/grafana/grafana.sock
|
|
76
|
+
Private: yes
|
|
77
|
+
|
|
78
|
+
# https://ipfs.tech/
|
|
79
|
+
IPFS:
|
|
80
|
+
Type: IPFS
|
|
81
|
+
Domain: IPFS.example.org
|
|
82
|
+
|
|
83
|
+
# https://www.influxdata.com/
|
|
84
|
+
InfluxDB:
|
|
85
|
+
Type: InfluxDB
|
|
86
|
+
Domain: influx.example.org
|
|
87
|
+
|
|
88
|
+
# https://github.com/Jackett/Jackett/
|
|
89
|
+
Jackett:
|
|
90
|
+
Type: Jackett
|
|
91
|
+
Domain: jackett.example.org
|
|
92
|
+
|
|
93
|
+
# https://jellyfin.org/
|
|
94
|
+
Jellyfin:
|
|
95
|
+
Type: Jellyfin
|
|
96
|
+
Domain: jellyfin.example.org
|
|
97
|
+
|
|
98
|
+
# https://github.com/mastodon/mastodon
|
|
99
|
+
Mastodon:
|
|
100
|
+
Type: Mastodon
|
|
101
|
+
Domain: mastodon.example.org
|
|
102
|
+
|
|
103
|
+
# https://matrix.org/
|
|
104
|
+
Matrix:
|
|
105
|
+
Type: Matrix
|
|
106
|
+
Domain: matrix.example.org
|
|
107
|
+
|
|
108
|
+
# https://www.netdata.cloud/
|
|
109
|
+
Netdata:
|
|
110
|
+
Type: Netdata
|
|
111
|
+
Domain: netdata.example.org
|
|
112
|
+
|
|
113
|
+
# https://nextcloud.com/
|
|
114
|
+
Nextcloud:
|
|
115
|
+
Type: Nextcloud
|
|
116
|
+
Domain: nextcloud.example.org
|
|
117
|
+
|
|
118
|
+
# https://www.odoo.com/
|
|
119
|
+
Odoo:
|
|
120
|
+
Type: Odoo
|
|
121
|
+
Domain: odoo.example.org
|
|
122
|
+
|
|
123
|
+
# https://pterodactyl.io/
|
|
124
|
+
Pterodactyl:
|
|
125
|
+
Type: Pterodactyl
|
|
126
|
+
Domain: pterodactyl.example.org
|
|
127
|
+
|
|
128
|
+
# https://pterodactyl.io/
|
|
129
|
+
Wings:
|
|
130
|
+
Type: Wings
|
|
131
|
+
Domain: wings.example.org
|
|
132
|
+
|
|
133
|
+
# https://www.qbittorrent.org/
|
|
134
|
+
qBittorrent:
|
|
135
|
+
Type: NginxProxy
|
|
136
|
+
Domain: qBittorrent.example.org
|
|
137
|
+
Proxy: http://127.0.0.1:7777
|
|
138
|
+
Private: yes
|
|
139
|
+
|
|
140
|
+
# https://github.com/AnalogJ/scrutiny
|
|
141
|
+
Scrutiny:
|
|
142
|
+
Type: NginxProxy
|
|
143
|
+
Domain: scrutiny.example.org
|
|
144
|
+
Proxy: http://127.0.0.1:7080
|
|
145
|
+
Private: yes
|
|
146
|
+
|
|
147
|
+
# https://app.lizardbyte.dev/Sunshine/
|
|
148
|
+
Sunshine:
|
|
149
|
+
Type: Sunshine
|
|
150
|
+
Domain: sunshine.example.org
|
|
151
|
+
|
|
152
|
+
# https://github.com/dani-garcia/vaultwarden
|
|
153
|
+
Vaultwarden:
|
|
154
|
+
Type: Vaultwarden
|
|
155
|
+
Domain: vaultwarden.example.org
|
data/Examples/Keys.ini
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/sh
|
|
2
|
+
|
|
3
|
+
if [ "$#" -ne 3 ]; then
|
|
4
|
+
echo "Usage $0 <cmd> <key file> <config file>"
|
|
5
|
+
exit 1
|
|
6
|
+
fi
|
|
7
|
+
|
|
8
|
+
cmd="$1"
|
|
9
|
+
keysFile="$2"
|
|
10
|
+
configFile="$3"
|
|
11
|
+
|
|
12
|
+
if [ ! -f "$keysFile" ]; then
|
|
13
|
+
echo "Provided key file '$keysFile' doesn't exist!"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if [[ ${keysFile:0:2} != "./" ]]; then
|
|
18
|
+
keysFile="./$keysFile"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
export $(grep -v '^#' "$keysFile" | xargs -d '\n')
|
|
22
|
+
|
|
23
|
+
echo "Deploying..."
|
|
24
|
+
|
|
25
|
+
ruby configlmm $cmd $configFile
|
|
26
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
upstream archi_steam_farm {
|
|
3
|
+
server 127.0.0.1:1242;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
server {
|
|
7
|
+
<% if !config['TLS'] %>
|
|
8
|
+
listen <%= config['Port'] %>;
|
|
9
|
+
listen [::]:<%= config['Port'] %>;
|
|
10
|
+
<% else %>
|
|
11
|
+
listen <%= config['Port'] %> ssl;
|
|
12
|
+
listen [::]:<%= config['Port'] %> ssl;
|
|
13
|
+
http2 on;
|
|
14
|
+
include config-lmm/ssl.conf;
|
|
15
|
+
<% end %>
|
|
16
|
+
|
|
17
|
+
server_name <%= config['Domain'] %>;
|
|
18
|
+
|
|
19
|
+
root /opt/ArchiSteamFarm-bin/www;
|
|
20
|
+
|
|
21
|
+
access_log /var/log/nginx/ArchiSteamFarm.access.log;
|
|
22
|
+
error_log /var/log/nginx/ArchiSteamFarm.error.log;
|
|
23
|
+
|
|
24
|
+
include config-lmm/private.conf;
|
|
25
|
+
include config-lmm/errors.conf;
|
|
26
|
+
|
|
27
|
+
location ~* /Api/NLog {
|
|
28
|
+
proxy_pass http://archi_steam_farm;
|
|
29
|
+
|
|
30
|
+
include config/proxy.conf;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
location / {
|
|
34
|
+
proxy_pass http://archi_steam_farm;
|
|
35
|
+
|
|
36
|
+
include config/proxy.conf;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
module ConfigLMM
|
|
3
|
+
module LMM
|
|
4
|
+
class ArchiSteamFarm < Framework::NginxApp
|
|
5
|
+
|
|
6
|
+
def actionArchiSteamFarmBuild(id, target, state, context, options)
|
|
7
|
+
writeNginxConfig(__dir__, 'ArchiSteamFarm', id, target, state, context, options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def actionArchiSteamFarmDeploy(id, target, activeState, context, options)
|
|
11
|
+
if !target['Location'] || target['Location'] == '@me'
|
|
12
|
+
deployNginxConfig(id, target, activeState, context, options)
|
|
13
|
+
activeState['Location'] = '@me'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
upstream ipfs_api {
|
|
3
|
+
server 127.0.0.1:5001;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
upstream ipfs_gateway {
|
|
7
|
+
server 127.0.0.1:5080;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
server {
|
|
11
|
+
<% if !config['TLS'] %>
|
|
12
|
+
listen <%= config['Port'] %>;
|
|
13
|
+
listen [::]:<%= config['Port'] %>;
|
|
14
|
+
<% else %>
|
|
15
|
+
listen <%= config['Port'] %> ssl;
|
|
16
|
+
listen [::]:<%= config['Port'] %> ssl;
|
|
17
|
+
http2 on;
|
|
18
|
+
include config-lmm/ssl.conf;
|
|
19
|
+
<% end %>
|
|
20
|
+
|
|
21
|
+
server_name <%= config['Domain'] %>;
|
|
22
|
+
|
|
23
|
+
access_log /var/log/nginx/ipfs.access.log;
|
|
24
|
+
error_log /var/log/nginx/ipfs.error.log;
|
|
25
|
+
|
|
26
|
+
include config-lmm/private.conf;
|
|
27
|
+
include config-lmm/errors.conf;
|
|
28
|
+
|
|
29
|
+
rewrite ^/$ /webui/ last;
|
|
30
|
+
|
|
31
|
+
location / {
|
|
32
|
+
proxy_pass http://ipfs_gateway;
|
|
33
|
+
proxy_read_timeout 180s;
|
|
34
|
+
|
|
35
|
+
include config-lmm/proxy.conf;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
location ~ ^/(webui|api)/ {
|
|
39
|
+
proxy_pass http://ipfs_api;
|
|
40
|
+
|
|
41
|
+
include config-lmm/proxy.conf;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
module ConfigLMM
|
|
3
|
+
module LMM
|
|
4
|
+
class IPFS < Framework::NginxApp
|
|
5
|
+
|
|
6
|
+
def actionIPFSBuild(id, target, state, context, options)
|
|
7
|
+
writeNginxConfig(__dir__, 'IPFS', id, target, state, context, options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def actionIPFSDiff(id, target, activeState, context, options)
|
|
11
|
+
# TODO
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def actionIPFSDeploy(id, target, activeState, context, options)
|
|
15
|
+
if !target['Location'] || target['Location'] == '@me'
|
|
16
|
+
deployNginxConfig(id, target, activeState, context, options)
|
|
17
|
+
activeState['Location'] = '@me'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
upstream influxdb {
|
|
3
|
+
server 127.0.0.1:8086;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
server {
|
|
7
|
+
<% if !config['TLS'] %>
|
|
8
|
+
listen <%= config['Port'] %>;
|
|
9
|
+
listen [::]:<%= config['Port'] %>;
|
|
10
|
+
<% else %>
|
|
11
|
+
listen <%= config['Port'] %> ssl;
|
|
12
|
+
listen [::]:<%= config['Port'] %> ssl;
|
|
13
|
+
http2 on;
|
|
14
|
+
include config-lmm/ssl.conf;
|
|
15
|
+
<% end %>
|
|
16
|
+
|
|
17
|
+
server_name <%= config['Domain'] %>;
|
|
18
|
+
|
|
19
|
+
access_log /var/log/nginx/influxdb.access.log;
|
|
20
|
+
error_log /var/log/nginx/influxdb.error.log;
|
|
21
|
+
|
|
22
|
+
include config-lmm/private.conf;
|
|
23
|
+
include config-lmm/errors.conf;
|
|
24
|
+
|
|
25
|
+
location / {
|
|
26
|
+
proxy_pass http://influxdb;
|
|
27
|
+
include config-lmm/proxy.conf;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
location /api {
|
|
31
|
+
proxy_pass http://influxdb;
|
|
32
|
+
include config-lmm/proxy.conf;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
module ConfigLMM
|
|
3
|
+
module LMM
|
|
4
|
+
class InfluxDB < Framework::NginxApp
|
|
5
|
+
|
|
6
|
+
def actionInfluxDBBuild(id, target, state, context, options)
|
|
7
|
+
writeNginxConfig(__dir__, 'InfluxDB', id, target, state, context, options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def actionInfluxDBDeploy(id, target, activeState, context, options)
|
|
11
|
+
if !target['Location'] || target['Location'] == '@me'
|
|
12
|
+
deployNginxConfig(id, target, activeState, context, options)
|
|
13
|
+
activeState['Location'] = '@me'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
upstream jackett {
|
|
3
|
+
server 127.0.0.1:9117;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
server {
|
|
7
|
+
<% if !config['TLS'] %>
|
|
8
|
+
listen <%= config['Port'] %>;
|
|
9
|
+
listen [::]:<%= config['Port'] %>;
|
|
10
|
+
<% else %>
|
|
11
|
+
listen <%= config['Port'] %> ssl;
|
|
12
|
+
listen [::]:<%= config['Port'] %> ssl;
|
|
13
|
+
http2 on;
|
|
14
|
+
include config-lmm/ssl.conf;
|
|
15
|
+
<% end %>
|
|
16
|
+
|
|
17
|
+
server_name <%= config['Domain'] %>;
|
|
18
|
+
|
|
19
|
+
access_log /var/log/nginx/jackett.access.log;
|
|
20
|
+
error_log /var/log/nginx/jackett.error.log;
|
|
21
|
+
|
|
22
|
+
include config-lmm/private.conf;
|
|
23
|
+
include config-lmm/errors.conf;
|
|
24
|
+
|
|
25
|
+
location / {
|
|
26
|
+
proxy_pass http://jackett;
|
|
27
|
+
|
|
28
|
+
include config-lmm/proxy.conf;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
location /api/v2.0/ {
|
|
32
|
+
proxy_read_timeout 10m;
|
|
33
|
+
proxy_pass http://jackett;
|
|
34
|
+
|
|
35
|
+
include config/proxy.conf;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
module ConfigLMM
|
|
3
|
+
module LMM
|
|
4
|
+
class Jackett < Framework::NginxApp
|
|
5
|
+
|
|
6
|
+
def actionJackettBuild(id, target, state, context, options)
|
|
7
|
+
writeNginxConfig(__dir__, 'Jackett', id, target, state, context, options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def actionJackettDeploy(id, target, activeState, context, options)
|
|
11
|
+
if !target['Location'] || target['Location'] == '@me'
|
|
12
|
+
deployNginxConfig(id, target, activeState, context, options)
|
|
13
|
+
activeState['Location'] = '@me'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
upstream jellyfin {
|
|
4
|
+
server 127.0.0.1:8096;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
server {
|
|
8
|
+
<% if !config['TLS'] %>
|
|
9
|
+
listen <%= config['Port'] %>;
|
|
10
|
+
listen [::]:<%= config['Port'] %>;
|
|
11
|
+
<% else %>
|
|
12
|
+
listen <%= config['Port'] %> ssl;
|
|
13
|
+
listen [::]:<%= config['Port'] %> ssl;
|
|
14
|
+
http2 on;
|
|
15
|
+
include config-lmm/ssl.conf;
|
|
16
|
+
<% end %>
|
|
17
|
+
|
|
18
|
+
server_name <%= config['Domain'] %>;
|
|
19
|
+
|
|
20
|
+
access_log /var/log/nginx/jellyfin.access.log;
|
|
21
|
+
error_log /var/log/nginx/jellyfin.error.log;
|
|
22
|
+
|
|
23
|
+
include config-lmm/errors.conf;
|
|
24
|
+
include config-lmm/ssl.conf;
|
|
25
|
+
|
|
26
|
+
location = / {
|
|
27
|
+
return 302 /web/;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
# Don't expose this publicly
|
|
31
|
+
location = /Startup/ {
|
|
32
|
+
return 401;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
location / {
|
|
36
|
+
# Proxy main Jellyfin traffic
|
|
37
|
+
proxy_pass http://jellyfin;
|
|
38
|
+
|
|
39
|
+
include config-lmm/proxy.conf;
|
|
40
|
+
|
|
41
|
+
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
|
|
42
|
+
proxy_buffering off;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
location = /web/ {
|
|
46
|
+
proxy_pass http://jellyfin/web/index.html;
|
|
47
|
+
include config-lmm/proxy.conf;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
location /socket {
|
|
51
|
+
# Proxy Jellyfin Websockets traffic
|
|
52
|
+
proxy_pass http://jellyfin;
|
|
53
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
54
|
+
proxy_set_header Connection "upgrade";
|
|
55
|
+
|
|
56
|
+
include config-lmm/proxy.conf;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
module ConfigLMM
|
|
3
|
+
module LMM
|
|
4
|
+
class Jellyfin < Framework::NginxApp
|
|
5
|
+
|
|
6
|
+
def actionJellyfinBuild(id, target, state, context, options)
|
|
7
|
+
writeNginxConfig(__dir__, 'Jellyfin', id, target, state, context, options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def actionJellyfinDiff(id, target, activeState, context, options)
|
|
11
|
+
# TODO
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def actionJellyfinDeploy(id, target, activeState, context, options)
|
|
15
|
+
if !target['Location'] || target['Location'] == '@me'
|
|
16
|
+
deployNginxConfig(id, target, activeState, context, options)
|
|
17
|
+
activeState['Location'] = '@me'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
|
|
2
|
+
upstream mastodon {
|
|
3
|
+
server unix:///run/mastodon.sock fail_timeout=0;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
upstream mastodon-streaming {
|
|
7
|
+
# Instruct nginx to send connections to the server with the least number of connections
|
|
8
|
+
# to ensure load is distributed evenly.
|
|
9
|
+
least_conn;
|
|
10
|
+
|
|
11
|
+
server 127.0.0.1:4000 fail_timeout=0;
|
|
12
|
+
# Uncomment these lines for load-balancing multiple instances of streaming for scaling,
|
|
13
|
+
# this assumes your running the streaming server on ports 4000, 4001, and 4002:
|
|
14
|
+
# server 127.0.0.1:4001 fail_timeout=0;
|
|
15
|
+
# server 127.0.0.1:4002 fail_timeout=0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
# proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g;
|
|
19
|
+
|
|
20
|
+
server {
|
|
21
|
+
<% if !config['TLS'] %>
|
|
22
|
+
listen <%= config['Port'] %>;
|
|
23
|
+
listen [::]:<%= config['Port'] %>;
|
|
24
|
+
<% else %>
|
|
25
|
+
listen <%= config['Port'] %> ssl;
|
|
26
|
+
listen [::]:<%= config['Port'] %> ssl;
|
|
27
|
+
http2 on;
|
|
28
|
+
include config-lmm/ssl.conf;
|
|
29
|
+
<% end %>
|
|
30
|
+
|
|
31
|
+
server_name <%= config['Domain'] %>;
|
|
32
|
+
|
|
33
|
+
access_log /var/log/nginx/mastodon.access.log;
|
|
34
|
+
error_log /var/log/nginx/mastodon.error.log;
|
|
35
|
+
|
|
36
|
+
client_max_body_size 99M;
|
|
37
|
+
|
|
38
|
+
include config-lmm/errors.conf;
|
|
39
|
+
|
|
40
|
+
# proxy_redirect off;
|
|
41
|
+
# proxy_cache CACHE;
|
|
42
|
+
# proxy_cache_valid 200 7d;
|
|
43
|
+
# proxy_cache_valid 410 24h;
|
|
44
|
+
# proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
|
45
|
+
# add_header X-Cached $upstream_cache_status;
|
|
46
|
+
|
|
47
|
+
root /var/lib/mastodon/public;
|
|
48
|
+
|
|
49
|
+
location / {
|
|
50
|
+
try_files $uri @mastodon;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
location @mastodon {
|
|
54
|
+
proxy_pass http://mastodon;
|
|
55
|
+
include config-lmm/proxy.conf;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
location ~ ^/assets|avatars|emoji|headers|packs|shortcuts|sounds/ {
|
|
59
|
+
|
|
60
|
+
add_header Cache-Control "public, max-age=2419200, must-revalidate";
|
|
61
|
+
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
|
|
62
|
+
try_files $uri =404;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
location ~ ^/system/ {
|
|
66
|
+
add_header Cache-Control "public, max-age=2419200, immutable";
|
|
67
|
+
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
|
|
68
|
+
#add_header X-Content-Type-Options nosniff;
|
|
69
|
+
add_header Content-Security-Policy "default-src 'none'; form-action 'none'";
|
|
70
|
+
try_files $uri =404;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
location ^~ /api/v1/streaming {
|
|
74
|
+
|
|
75
|
+
proxy_buffering off;
|
|
76
|
+
proxy_cache off;
|
|
77
|
+
proxy_pass http://mastodon-streaming;
|
|
78
|
+
include config-lmm/proxy.conf;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
}
|