Initial commit
This commit is contained in:
35
.docker/ca.pem
Normal file
35
.docker/ca.pem
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIGDTCCA/WgAwIBAgIUDkIYxPkslQJuPwY9Z1fLA7yoh6AwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwWjEaMBgGA1UEAxMRQ29udGFpbmVyIFN0YXRpb24xDTALBgNVBAoTBFFOQVAx
|
||||||
|
DzANBgNVBAgTBlRhaXBlaTEPMA0GA1UEBxMGVGFpcGVpMQswCQYDVQQGEwJUVzAe
|
||||||
|
Fw0yMjEyMDkxMTA3NTFaFw0yNTEyMDgxMTA3NTFaMFoxGjAYBgNVBAMTEUNvbnRh
|
||||||
|
aW5lciBTdGF0aW9uMQ0wCwYDVQQKEwRRTkFQMQ8wDQYDVQQIEwZUYWlwZWkxDzAN
|
||||||
|
BgNVBAcTBlRhaXBlaTELMAkGA1UEBhMCVFcwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
||||||
|
DwAwggIKAoICAQC+A13Me+nQE/nMWrvN1He/NuYrshZW01tJ/smqSkVBj/VDvSEg
|
||||||
|
VyjWNFsAt/M/rqIRWmlqdiAKcaoUZsHNCfjZqZtB6n/WvqJvT7DGltzYDSJbdbkj
|
||||||
|
4WD1ApNnTf4DGD4nTv2wEPREyXLja6vVNurc5SzCbad01y1/3yeIVbmYcXy7jLJn
|
||||||
|
qUkojyp4W34g3jKGaTf2jvF2VBpY0HnAIqCa9zOzDtRfnXtCBStrp20GigxrRCGC
|
||||||
|
vXQ4vEl9R0OGcZjFxWtmxU6xzvRXm+27o01wx1FWcmjoLM2vyAle9waxYEPXoSg0
|
||||||
|
h2MswJMidUYFU3p2eiEblnkDcRAXcIT2XWl/gCZhbNtWDuWF9JNbZDZyfv7WIxLy
|
||||||
|
hI5nKdKaUctbrFwvjgCWu1fSji2OXwFD4XKmNtr4ezN4YGfpr78nsmMDuPjoakZn
|
||||||
|
GHUAIr/toJghUQZSNHNd+YLYdxzLWtlA4mNwaB3kO1NHXWPHqhvUIt7EoWwaAN5R
|
||||||
|
a+vBXIkGVIlEgj7ESpOUEaOLhjdp6CfDkuivfyfWxix/UdlxuQzUnzfBzaziShXn
|
||||||
|
SBqCMTB1zceRjncvkx4CrZPQ4sAncbvIqUBcHisR6/cCf2mK1p9aq1paECDP7R5L
|
||||||
|
Be7HlF4npPBpoMUp4YC0V7rMNjwgrS3T8i3WsGAhJPiy1AwvB1tp9VAHGQIDAQAB
|
||||||
|
o4HKMIHHMB0GA1UdDgQWBBRUlL80tcOmbhb7fSmErhjskLNCCzCBlwYDVR0jBIGP
|
||||||
|
MIGMgBRUlL80tcOmbhb7fSmErhjskLNCC6FepFwwWjEaMBgGA1UEAxMRQ29udGFp
|
||||||
|
bmVyIFN0YXRpb24xDTALBgNVBAoTBFFOQVAxDzANBgNVBAgTBlRhaXBlaTEPMA0G
|
||||||
|
A1UEBxMGVGFpcGVpMQswCQYDVQQGEwJUV4IUDkIYxPkslQJuPwY9Z1fLA7yoh6Aw
|
||||||
|
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXiQHGSP2tghjzxTzrVhW
|
||||||
|
xpEKbdE7PbnjLj8P6HqX2ofnGoteFPLCVQ7IzxgNXj/JAi3uVXSYbbn2UtXEZdAA
|
||||||
|
eDpjOdBx8t1ITT8i8xykg2AfL1InZzVQaF71NuoWF8raN5e5F5JUSVJUzqRJp+Ek
|
||||||
|
14bIJ3kmLKVns4snowMVgABKm7SdNvbLQLvNJY2P7t55lumYpJSCJMb57MzRd9xI
|
||||||
|
nHgXZu0mnJpXkl1DEwOz+gJe6HjbPp5VGdkj95VIMOk3aJayYxflj6KZDrO0GLs7
|
||||||
|
ZOv5BiZlFGOZPSUwhys7Gc4Ffc3o8RkJLCFo6Ey1kwNVl77inYb/rAGvMF58Dlr3
|
||||||
|
DuDi70plhiUaHTeK50ckxFgbkdN0Hw6MEvMoIisWoo+1ckTUa5YctJX5GH/T4HCO
|
||||||
|
4jde6D0rX/ng3EnFLlvDn+rfftHD/v+16k8QdhzXnuc2DhBXR+wTztHwBPfs8j4V
|
||||||
|
M/AqamN44otD/3N+3QtZz8HjQWxIOEMO+FQZipdWBHFT5WA0SP/2TIwvcy/KD/w2
|
||||||
|
BgsQhuC5uvCm3xi730T/gId6eZVr0exnZpQUWLo+1OzyDIJOK7Qz9REl/3q8ta1T
|
||||||
|
YgKP+NhMqvwZrqLj3qv2Id82gnAknoVHYWV8krk//Dh/P6/dIlY+Hdn8z4UEsoF7
|
||||||
|
7C91omWFHonwe1Um85K6uT0=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
30
.docker/cert.pem
Normal file
30
.docker/cert.pem
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
FnsblROOuUf2GeaPZlqb998=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
51
.docker/key.pem
Normal file
51
.docker/key.pem
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
36
.gitignore
vendored
Normal file
36
.gitignore
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Local .terraform directories
|
||||||
|
**/.terraform/*
|
||||||
|
|
||||||
|
# .tfstate files
|
||||||
|
*.tfstate
|
||||||
|
*.tfstate.*
|
||||||
|
|
||||||
|
# Crash log files
|
||||||
|
crash.log
|
||||||
|
crash.*.log
|
||||||
|
|
||||||
|
# Exclude all .tfvars files, which are likely to contain sensitive data, such as
|
||||||
|
# password, private keys, and other secrets. These should not be part of version
|
||||||
|
# control as they are data points which are potentially sensitive and subject
|
||||||
|
# to change depending on the environment.
|
||||||
|
*.tfvars
|
||||||
|
*.tfvars.json
|
||||||
|
|
||||||
|
# Ignore override files as they are usually used to override resources locally and so
|
||||||
|
# are not checked in
|
||||||
|
override.tf
|
||||||
|
override.tf.json
|
||||||
|
*_override.tf
|
||||||
|
*_override.tf.json
|
||||||
|
|
||||||
|
# Include override files you do wish to add to version control using negated pattern
|
||||||
|
# !example_override.tf
|
||||||
|
|
||||||
|
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
|
||||||
|
# example: *tfplan*
|
||||||
|
|
||||||
|
# Ignore CLI configuration files
|
||||||
|
.terraformrc
|
||||||
|
terraform.rc
|
||||||
|
|
||||||
|
youless-exporter/node_modules
|
||||||
60
.idea/$CACHE_FILE$
generated
Normal file
60
.idea/$CACHE_FILE$
generated
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectInspectionProfilesVisibleTreeState">
|
||||||
|
<entry key="Project Default">
|
||||||
|
<profile-state>
|
||||||
|
<expanded-state>
|
||||||
|
<State />
|
||||||
|
<State>
|
||||||
|
<id>Class structureJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Code maturityJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Google Web Toolkit</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>JUnitJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Java</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Java 5Java language level migration aidsJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Java 7Java language level migration aidsJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Java 8Java language level migration aidsJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Java language level migration aidsJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>JavadocJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Numeric issuesJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>PerformanceJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Spring</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Spring AOPSpring</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>TestNGJava</id>
|
||||||
|
</State>
|
||||||
|
<State>
|
||||||
|
<id>Threading issuesJava</id>
|
||||||
|
</State>
|
||||||
|
</expanded-state>
|
||||||
|
</profile-state>
|
||||||
|
</entry>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
6
.idea/azureSettings.xml
generated
Normal file
6
.idea/azureSettings.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AzureSettings">
|
||||||
|
<option name="appInsights" value="rO0ABXVyAEtbTGNvbS5taWNyb3NvZnQuYXBwbGljYXRpb25pbnNpZ2h0cy5wcmVmZXJlbmNlLkFwcGxpY2F0aW9uSW5zaWdodHNSZXNvdXJjZTvCzxEP0C2HbAIAAHhwAAAAAA==" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
11
.idea/dataSources.xml
generated
Normal file
11
.idea/dataSources.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="192.168.2.72" uuid="20d2dc6c-6cf7-4314-aa42-aef8ffa8d1f0">
|
||||||
|
<driver-ref>mariadb</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mariadb://192.168.2.72:3306</jdbc-url>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
15
.idea/git_toolbox_prj.xml
generated
Normal file
15
.idea/git_toolbox_prj.xml
generated
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GitToolBoxProjectSettings">
|
||||||
|
<option name="commitMessageIssueKeyValidationOverride">
|
||||||
|
<BoolValueOverride>
|
||||||
|
<option name="enabled" value="true" />
|
||||||
|
</BoolValueOverride>
|
||||||
|
</option>
|
||||||
|
<option name="commitMessageValidationEnabledOverride">
|
||||||
|
<BoolValueOverride>
|
||||||
|
<option name="enabled" value="true" />
|
||||||
|
</BoolValueOverride>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/jpa-buddy.xml
generated
Normal file
6
.idea/jpa-buddy.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="JpaBuddyIdeaProjectConfig">
|
||||||
|
<option name="renamerInitialized" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
9
.idea/misc.xml
generated
Normal file
9
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="JavaScriptSettings">
|
||||||
|
<option name="languageLevel" value="ES6" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectType">
|
||||||
|
<option name="id" value="jpab" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/qnap-containers.iml" filepath="$PROJECT_DIR$/.idea/qnap-containers.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
9
.idea/qnap-containers.iml
generated
Normal file
9
.idea/qnap-containers.iml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
23
.terraform.lock.hcl
generated
Normal file
23
.terraform.lock.hcl
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# This file is maintained automatically by "terraform init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.terraform.io/kreuzwerker/docker" {
|
||||||
|
version = "2.15.0"
|
||||||
|
constraints = "2.15.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:NkSDvVnpey6pAcrq1uYnOH7nr4m/mJ5lw5f62ieXcyE=",
|
||||||
|
"zh:0241e5c7b66c14aa54e367dfe380fbde8388d3254cbe8a70717c12f71897e82b",
|
||||||
|
"zh:0f162f0a01ffe9eec32e78dfc2a5b05a373230c41f041439efa3f4b68903fdcb",
|
||||||
|
"zh:1c222c1425fbb0367154bcb8e4d87b19d6eae133fbb341f73102fa3b300f34bf",
|
||||||
|
"zh:679206433e31d8fa69d95167af6d2cd762218e89811b735ee20bd8da19f97854",
|
||||||
|
"zh:a16baab045bc7a709a9767816304cc5548aa2ee0b72c0eee49e3826e6a46a3fd",
|
||||||
|
"zh:a29c4e304a6a7faf5b651a61a91a1aa2e837591cff049fbe1c747b6319e43956",
|
||||||
|
"zh:bed7a69dbb9a024aecfac840ca2ac2f1527062f3d9c8c718e4e81d464b5ad329",
|
||||||
|
"zh:c22aa10806de216b6aa0b36a2c1114a9fdaa5b47925aaad3333de3ce24cc52c9",
|
||||||
|
"zh:d034295663d8a39035fd6fdf0488b72544b13f48acaee797af967343248676f8",
|
||||||
|
"zh:d9001dfeac0db1799d8ab9d04be090522529baae0dba7f7e82b71f2168f05582",
|
||||||
|
"zh:d9f3eb7ef8f256eb9148d72bd4a00e34f3be5570484598e26b603cbdc5eed923",
|
||||||
|
"zh:ef573f1e0f000127fa9f569c8ee320f03ba1d302a6fbf9aac8300efa6fc6f4b2",
|
||||||
|
"zh:ef7e246b4205202161b4119c10a1282f74243e029508184132731f9f6f6d9f4c",
|
||||||
|
]
|
||||||
|
}
|
||||||
11
README.md
Normal file
11
README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Instructions
|
||||||
|
|
||||||
|
Terraform cannot create a qnet network, so we do it manually and then import into Terraform.
|
||||||
|
|
||||||
|
```
|
||||||
|
dockerx.bat network create -d qnet --ipam-driver=qnet --ipam-opt=iface=eth0 --subnet=192.168.2.0/24 --gateway=192.168.2.1 terraform-static-eth1-shared
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
terraform import docker_network.bridge f9cf6469837bece2c688b65787869af240fcffa95d9d5d3a71a0c4da119e5edc
|
||||||
|
```
|
||||||
51
_disabled/rhasspy.tf
Normal file
51
_disabled/rhasspy.tf
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
data "docker_registry_image" "rhasspy" {
|
||||||
|
name = "rhasspy/rhasspy"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "rhasspy" {
|
||||||
|
name = data.docker_registry_image.rhasspy.name
|
||||||
|
pull_triggers = [data.docker_registry_image.rhasspy.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "rhasspy" {
|
||||||
|
image = docker_image.rhasspy.latest
|
||||||
|
name = "rhasspy"
|
||||||
|
|
||||||
|
command = [
|
||||||
|
"--profile", "en",
|
||||||
|
"--user-profiles", "/profiles"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config"
|
||||||
|
source = "/share/appdata/rhasspy"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/localtime"
|
||||||
|
source = "/etc/localtime"
|
||||||
|
type = "bind"
|
||||||
|
read_only = true
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.118"
|
||||||
|
}
|
||||||
|
|
||||||
|
devices {
|
||||||
|
host_path = "/dev/snd"
|
||||||
|
container_path = "/dev/snd"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
36
_disabled/unifi-video.tf
Normal file
36
_disabled/unifi-video.tf
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
data "docker_registry_image" "unifi-video" {
|
||||||
|
name = "pducharme/unifi-video-controller"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "unifi-video" {
|
||||||
|
name = data.docker_registry_image.unifi-video.name
|
||||||
|
pull_triggers = [data.docker_registry_image.unifi-video.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "unifi-video" {
|
||||||
|
image = docker_image.unifi-video.latest
|
||||||
|
name = "unifi-video"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/lib/unifi-video"
|
||||||
|
source = "/share/appdata/unifi-video/data"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/lib/unifi-video/videos"
|
||||||
|
source = "/share/appdata/unifi-video/videos"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
capabilities {
|
||||||
|
add = ["SYS_ADMIN", "DAC_READ_SEARCH"]
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.71"
|
||||||
|
}
|
||||||
|
}
|
||||||
61
airsonic.tf
Normal file
61
airsonic.tf
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
resource "docker_image" "airsonic" {
|
||||||
|
name = "airsonicadvanced/airsonic-advanced:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "airsonic" {
|
||||||
|
image = docker_image.airsonic.latest
|
||||||
|
name = "airsonic"
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
// Untested
|
||||||
|
depends_on = [
|
||||||
|
docker_container.mariadb
|
||||||
|
]
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"spring_datasource_url=jdbc:mariadb://192.168.2.127:3306/airsonic",
|
||||||
|
"spring_datasource_username=airsonic",
|
||||||
|
"spring_datasource_password=3qpMTTfHid5hSaagEvu2",
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/music"
|
||||||
|
source = "/share/appdata/airsonic/music"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/podcasts"
|
||||||
|
source = "/share/appdata/airsonic/podcasts"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/playlists"
|
||||||
|
source = "/share/appdata/airsonic/playlists"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/airsonic"
|
||||||
|
source = "/share/appdata/airsonic/data"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.83"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.mariadb.name
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
30
docker-qnap.tf
Normal file
30
docker-qnap.tf
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
docker = {
|
||||||
|
source = "kreuzwerker/docker"
|
||||||
|
version = "2.15.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "docker" {
|
||||||
|
host = "tcp://192.168.2.64:2376"
|
||||||
|
cert_path = pathexpand(".docker")
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "bridge" {
|
||||||
|
name = "terraform-static-eth1-shared"
|
||||||
|
driver = "qnet"
|
||||||
|
ipam_driver = "qnet"
|
||||||
|
internal = false
|
||||||
|
attachable = false
|
||||||
|
ingress = false
|
||||||
|
ipv6 = false
|
||||||
|
|
||||||
|
ipam_config {
|
||||||
|
aux_address = {}
|
||||||
|
subnet = "192.168.2.0/24"
|
||||||
|
gateway = "192.168.2.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
6
dockerx.bat
Normal file
6
dockerx.bat
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
docker ^
|
||||||
|
--tlsverify ^
|
||||||
|
-H=192.168.2.64:2376 ^
|
||||||
|
--tlscacert=.docker\ca.pem ^
|
||||||
|
--tlscert=.docker\cert.pem ^
|
||||||
|
--tlskey=.docker\key.pem %*
|
||||||
3
env.bat
Normal file
3
env.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
SET DOCKER_CERT_PATH=c:\Dev\qnap-containers\.docker
|
||||||
|
SET DOCKER_HOST=tcp://192.168.2.64:2376
|
||||||
|
SET DOCKER_TLS=1
|
||||||
44
freshrss.tf
Normal file
44
freshrss.tf
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
resource "docker_image" "freshrss" {
|
||||||
|
name = "freshrss/freshrss:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "freshrss" {
|
||||||
|
image = docker_image.freshrss.latest
|
||||||
|
name = "freshrss"
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"TZ=Europe/Paris",
|
||||||
|
"CRON_MIN=1,31",
|
||||||
|
"OIDC_ENABLED=0",
|
||||||
|
"FRESHRSS_INSTALL=--api_enabled --base_url https://freshrss.xz1.nl --db-base freshrss --db-host 192.168.2.127 --db-password utquCzXEnrjFU2BbDqYT --db-type mysql --db-user freshrss --default_user admin --language en",
|
||||||
|
"FRESHRSS_USER=--api_password CmZpTF3pUYz7rVtFrDTQ --email freshrss@xz1.nl --language en --password CmZpTF3pUYz7rVtFrDTQ --user admin"
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/www/FreshRSS/data"
|
||||||
|
source = "/share/appdata/freshrss/data"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/www/FreshRSS/extensions"
|
||||||
|
source = "/share/appdata/freshrss/extensions"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.129"
|
||||||
|
}
|
||||||
|
}
|
||||||
37
ginlong-mqtt.tf
Normal file
37
ginlong-mqtt.tf
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
data "docker_registry_image" "ginlong-mqtt" {
|
||||||
|
name = "rescla/ginlong-mqtt"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "ginlong-mqtt" {
|
||||||
|
name = data.docker_registry_image.ginlong-mqtt.name
|
||||||
|
pull_triggers = [data.docker_registry_image.ginlong-mqtt.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "ginlong-mqtt" {
|
||||||
|
name = "ginlong-mqtt"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "ginlong-mqtt" {
|
||||||
|
image = docker_image.ginlong-mqtt.latest
|
||||||
|
name = "ginlong-mqtt"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config.ini"
|
||||||
|
source = "/share/appdata/ginlong-mqtt/config.ini"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.122"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
51
gitea.tf
Normal file
51
gitea.tf
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
resource "docker_image" "gitea" {
|
||||||
|
name = "gitea/gitea:latest-rootless"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "gitea" {
|
||||||
|
image = docker_image.gitea.latest
|
||||||
|
name = "gitea"
|
||||||
|
restart = "always"
|
||||||
|
# user = "1000:1000"
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"GITEA__database__DB_TYPE=mysql",
|
||||||
|
"GITEA__database__HOST=192.168.2.127:3306",
|
||||||
|
"GITEA__database__NAME=gitea",
|
||||||
|
"GITEA__database__USER=gitea",
|
||||||
|
"GITEA__database__PASSWD=3uM4kBGaNQDo3tsRa9Nh",
|
||||||
|
# "USER_UID=1000",
|
||||||
|
# "USER_GID=1000"
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/lib/gitea"
|
||||||
|
source = "/share/appdata/gitea/data"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/gitea"
|
||||||
|
source = "/share/appdata/gitea/config"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/localtime"
|
||||||
|
source = "/etc/localtime"
|
||||||
|
type = "bind"
|
||||||
|
read_only = true
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.131"
|
||||||
|
}
|
||||||
|
}
|
||||||
28
grafana.tf
Normal file
28
grafana.tf
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
resource "docker_image" "grafana" {
|
||||||
|
name = "grafana/grafana:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "grafana" {
|
||||||
|
image = docker_image.grafana.latest
|
||||||
|
name = "grafana"
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/lib/grafana"
|
||||||
|
source = "/share/appdata/grafana"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.79"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
49
home-assistant.tf
Normal file
49
home-assistant.tf
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
data "docker_registry_image" "home-assistant" {
|
||||||
|
name = "homeassistant/home-assistant"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "home-assistant" {
|
||||||
|
name = data.docker_registry_image.home-assistant.name
|
||||||
|
pull_triggers = [data.docker_registry_image.home-assistant.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "home-assistant" {
|
||||||
|
image = docker_image.home-assistant.latest
|
||||||
|
name = "home-assistant"
|
||||||
|
hostname = "hass"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config"
|
||||||
|
source = "/share/appdata/home-assistant"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
// Untested
|
||||||
|
depends_on = [
|
||||||
|
docker_container.mariadb
|
||||||
|
]
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.70"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.mariadb.name
|
||||||
|
}
|
||||||
|
|
||||||
|
# devices {
|
||||||
|
# container_path = "/dev/ttyACM0"
|
||||||
|
# host_path = "/dev/ttyACM0"
|
||||||
|
# permissions = "rwm"
|
||||||
|
# }
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
32
kodi.tf
Normal file
32
kodi.tf
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
resource "docker_image" "kodi" {
|
||||||
|
name = "linuxserver/kodi-headless:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
resource "docker_container" "kodi" {
|
||||||
|
image = docker_image.kodi.latest
|
||||||
|
name = "kodi"
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"TZ=europe/amsterdam",
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config/.kodi"
|
||||||
|
source = "/share/appdata/kodi"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.128"
|
||||||
|
}
|
||||||
|
}
|
||||||
41
mariadb.tf
Normal file
41
mariadb.tf
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
data "docker_registry_image" "mariadb" {
|
||||||
|
name = "mariadb:10.6"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "mariadb" {
|
||||||
|
name = data.docker_registry_image.mariadb.name
|
||||||
|
pull_triggers = [data.docker_registry_image.mariadb.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "mariadb" {
|
||||||
|
name = "mariadb"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "mariadb" {
|
||||||
|
image = docker_image.mariadb.latest
|
||||||
|
name = "mariadb"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/lib/mysql"
|
||||||
|
source = "/share/appdata/mariadb"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.mariadb.name
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.127"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
49
mosquitto.tf
Normal file
49
mosquitto.tf
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
data "docker_registry_image" "mosquitto" {
|
||||||
|
name = "eclipse-mosquitto:2"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "mosquitto" {
|
||||||
|
name = data.docker_registry_image.mosquitto.name
|
||||||
|
pull_triggers = [data.docker_registry_image.mosquitto.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "mosquitto" {
|
||||||
|
name = "mosquitto"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "mosquitto" {
|
||||||
|
image = docker_image.mosquitto.latest
|
||||||
|
name = "mosquitto"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/mosquitto/config"
|
||||||
|
source = "/share/appdata/mosquitto/config"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/mosquitto/data"
|
||||||
|
source = "/share/appdata/mosquitto/data"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/mosquitto/log"
|
||||||
|
source = "/share/appdata/mosquitto/log"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.125"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
37
mqtt-exporter.tf
Normal file
37
mqtt-exporter.tf
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
data "docker_registry_image" "mqtt-exporter" {
|
||||||
|
name = "fhemberger/mqtt_exporter:1.2.1"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "mqtt-exporter" {
|
||||||
|
name = data.docker_registry_image.mqtt-exporter.name
|
||||||
|
pull_triggers = [data.docker_registry_image.mqtt-exporter.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "mqtt-exporter" {
|
||||||
|
name = "mqtt-exporter"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "mqtt-exporter" {
|
||||||
|
image = docker_image.mqtt-exporter.latest
|
||||||
|
name = "mqtt-exporter"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/usr/src/app/conf"
|
||||||
|
source = "/share/appdata/mqtt-exporter"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.123"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
44
nginx-lb-certbot.tf
Normal file
44
nginx-lb-certbot.tf
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
data "docker_registry_image" "nginx-lb-certbot" {
|
||||||
|
name = "certbot/certbot:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "nginx-lb-certbot" {
|
||||||
|
name = data.docker_registry_image.nginx-lb-certbot.name
|
||||||
|
pull_triggers = [data.docker_registry_image.nginx-lb-certbot.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "nginx-lb-certbot" {
|
||||||
|
name = "nginx-lb-certbot"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "nginx-lb-certbot" {
|
||||||
|
image = docker_image.nginx-lb-certbot.latest
|
||||||
|
name = "nginx-lb-certbot"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/letsencrypt"
|
||||||
|
source = "/share/appdata/nginx-lb/certs"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/www/acme-challenge-root"
|
||||||
|
source = "/share/appdata/nginx-lb/certbot"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Triggered by ofelia
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
#command = ["certonly", "--webroot", "--email", "info@xz1.nl", "-w", "/var/www/acme-challenge-root", "-d", "photoprism.xz1.nl", "--agree-tos"]
|
||||||
|
#command = ["certonly", "--webroot", "--email", "info@xz1.nl", "-w", "/var/www/acme-challenge-root", "-d", "airsonic.xz1.nl", "--agree-tos"]
|
||||||
|
#command = ["certonly", "--webroot", "--email", "info@xz1.nl", "-w", "/var/www/acme-challenge-root", "-d", "hass.xz1.nl", "--agree-tos"]
|
||||||
|
#command = ["certonly", "--webroot", "--email", "info@xz1.nl", "-w", "/var/www/acme-challenge-root", "-d", "freshrss.xz1.nl", "--agree-tos"]
|
||||||
|
command = ["renew"]
|
||||||
|
}
|
||||||
55
nginx-lb.tf
Normal file
55
nginx-lb.tf
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
data "docker_registry_image" "nginx-lb" {
|
||||||
|
name = "nginx:alpine"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "nginx-lb" {
|
||||||
|
name = data.docker_registry_image.nginx-lb.name
|
||||||
|
pull_triggers = [data.docker_registry_image.nginx-lb.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "nginx-lb" {
|
||||||
|
name = "nginx-lb"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "nginx-lb" {
|
||||||
|
image = docker_image.nginx-lb.latest
|
||||||
|
name = "nginx-lb"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/nginx/nginx.conf"
|
||||||
|
source = "/share/appdata/nginx-lb/nginx.conf"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/nginx/config"
|
||||||
|
source = "/share/appdata/nginx-lb/conf"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/nginx/certs"
|
||||||
|
source = "/share/appdata/nginx-lb/certs"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/www/acme-challenge-root"
|
||||||
|
source = "/share/appdata/nginx-lb/certbot"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.115"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
37
node-red.tf
Normal file
37
node-red.tf
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
data "docker_registry_image" "node-red" {
|
||||||
|
name = "nodered/node-red:latest-12"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "node-red" {
|
||||||
|
name = data.docker_registry_image.node-red.name
|
||||||
|
pull_triggers = [data.docker_registry_image.node-red.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "node-red" {
|
||||||
|
image = docker_image.node-red.latest
|
||||||
|
name = "node-red"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/data"
|
||||||
|
source = "/share/appdata/node-red"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"TZ=Europe/Amsterdam"
|
||||||
|
]
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.124"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
31
ofelia.tf
Normal file
31
ofelia.tf
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
## Job scheduler for ofelia
|
||||||
|
|
||||||
|
resource "docker_image" "ofelia" {
|
||||||
|
name = "mcuadros/ofelia:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "ofelia" {
|
||||||
|
image = docker_image.ofelia.latest
|
||||||
|
name = "ofelia"
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/var/run/docker.sock"
|
||||||
|
source = "/var/run/docker.sock"
|
||||||
|
type = "bind"
|
||||||
|
read_only = true
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/ofelia"
|
||||||
|
source = "/share/appdata/ofelia"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
45
photoprism.tf
Normal file
45
photoprism.tf
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
resource "docker_image" "photoprism" {
|
||||||
|
name = "photoprism/photoprism:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "photoprism" {
|
||||||
|
image = docker_image.photoprism.latest
|
||||||
|
name = "photoprism"
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"PHOTOPRISM_UPLOAD_NSFW=true",
|
||||||
|
"PHOTOPRISM_ADMIN_PASSWORD=UAmpojHADcS5aB"
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/photoprism/originals/camera"
|
||||||
|
source = "/share/appdata/syncthing/Camera"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/photoprism/originals/capture-one-variants"
|
||||||
|
source = "/share/CaptureOne/Variants"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/photoprism/storage"
|
||||||
|
source = "/share/appdata/photoprism/storage"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.116"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
33
pihole.tf
Normal file
33
pihole.tf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
## Job scheduler for pihole
|
||||||
|
|
||||||
|
resource "docker_image" "pihole" {
|
||||||
|
name = "pihole/pihole:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "pihole" {
|
||||||
|
image = docker_image.pihole.latest
|
||||||
|
name = "pihole"
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc-pihole"
|
||||||
|
source = "/share/appdata/pi-hole"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
capabilities {
|
||||||
|
add = ["NET_ADMIN"]
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.114"
|
||||||
|
}
|
||||||
|
}
|
||||||
41
prometheus.tf
Normal file
41
prometheus.tf
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
data "docker_registry_image" "prometheus" {
|
||||||
|
name = "prom/prometheus:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "prometheus" {
|
||||||
|
name = data.docker_registry_image.prometheus.name
|
||||||
|
pull_triggers = [data.docker_registry_image.prometheus.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "prometheus" {
|
||||||
|
image = docker_image.prometheus.latest
|
||||||
|
name = "prometheus"
|
||||||
|
|
||||||
|
command = ["--config.file=/etc/prometheus/prometheus.yml","--storage.tsdb.path=/prometheus", "--web.console.libraries=/usr/share/prometheus/console_libraries","--web.console.templates=/usr/share/prometheus/consoles", "--storage.tsdb.retention.time=2y"]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/prometheus"
|
||||||
|
source = "/share/appdata/prometheus/config"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/prometheus"
|
||||||
|
source = "/share/appdata/prometheus/data"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.80"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
5
prometheus.yml
Normal file
5
prometheus.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
scrape_configs:
|
||||||
|
- job_name: youless
|
||||||
|
scrape_interval: 1s
|
||||||
|
static_configs:
|
||||||
|
- targets: ['192.168.2.82:4202']
|
||||||
27
rssbridge.tf
Normal file
27
rssbridge.tf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
resource "docker_image" "rss-bridge" {
|
||||||
|
name = "rssbridge/rss-bridge:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "rss-bridge" {
|
||||||
|
image = docker_image.rss-bridge.latest
|
||||||
|
name = "rss-bridge"
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config"
|
||||||
|
source = "/share/appdata/rssbridge"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.130"
|
||||||
|
}
|
||||||
|
}
|
||||||
43
ru-torrent.tf
Normal file
43
ru-torrent.tf
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
data "docker_registry_image" "ru-torrent" {
|
||||||
|
name = "linuxserver/rutorrent"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "ru-torrent" {
|
||||||
|
name = data.docker_registry_image.ru-torrent.name
|
||||||
|
pull_triggers = [data.docker_registry_image.ru-torrent.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "ru-torrent" {
|
||||||
|
name = "ru-torrent"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "ru-torrent" {
|
||||||
|
image = docker_image.ru-torrent.latest
|
||||||
|
name = "ru-torrent"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config"
|
||||||
|
source = "/share/appdata/ru-torrent"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/downloads"
|
||||||
|
source = "/share/Download"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.121"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
46
smokeping.tf
Normal file
46
smokeping.tf
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
data "docker_registry_image" "smokeping" {
|
||||||
|
name = "linuxserver/smokeping:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "smokeping" {
|
||||||
|
name = data.docker_registry_image.smokeping.name
|
||||||
|
pull_triggers = [data.docker_registry_image.smokeping.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "smokeping" {
|
||||||
|
name = "smokeping"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "smokeping" {
|
||||||
|
image = docker_image.smokeping.latest
|
||||||
|
name = "smokeping"
|
||||||
|
env = [
|
||||||
|
"TZ=Europe/Amsterdam"
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config"
|
||||||
|
source = "/share/appdata/smokeping/config"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/data"
|
||||||
|
source = "/share/appdata/smokeping/data"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.126"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
39
syncthing.tf
Normal file
39
syncthing.tf
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
data "docker_registry_image" "syncthing" {
|
||||||
|
name = "linuxserver/syncthing:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "syncthing" {
|
||||||
|
name = data.docker_registry_image.syncthing.name
|
||||||
|
pull_triggers = [data.docker_registry_image.syncthing.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "syncthing" {
|
||||||
|
image = docker_image.syncthing.latest
|
||||||
|
name = "syncthing"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/config"
|
||||||
|
source = "/share/appdata/syncthing"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
ports {
|
||||||
|
internal = 8384
|
||||||
|
external = 8384
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.119"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts,
|
||||||
|
ports
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
43
traccar.tf
Normal file
43
traccar.tf
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
data "docker_registry_image" "traccar" {
|
||||||
|
name = "traccar/traccar"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "traccar" {
|
||||||
|
name = data.docker_registry_image.traccar.name
|
||||||
|
pull_triggers = [data.docker_registry_image.traccar.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "traccar" {
|
||||||
|
image = docker_image.traccar.latest
|
||||||
|
name = "traccar"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/opt/traccar/logs"
|
||||||
|
source = "/share/appdata/traccar/logs"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/opt/traccar/conf/traccar.xml"
|
||||||
|
source = "/share/appdata/traccar/traccar.xml"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.113"
|
||||||
|
}
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.mariadb.name
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
33
unifi.tf
Normal file
33
unifi.tf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
data "docker_registry_image" "unifi" {
|
||||||
|
name = "jacobalberty/unifi"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "unifi" {
|
||||||
|
name = data.docker_registry_image.unifi.name
|
||||||
|
pull_triggers = [data.docker_registry_image.unifi.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "unifi" {
|
||||||
|
image = docker_image.unifi.latest
|
||||||
|
name = "unifi"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/unifi"
|
||||||
|
source = "/share/appdata/unifi"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.67"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
52
wireguard.tf
Normal file
52
wireguard.tf
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
data "docker_registry_image" "wireguard" {
|
||||||
|
name = "masipcat/wireguard-go:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "wireguard" {
|
||||||
|
name = data.docker_registry_image.wireguard.name
|
||||||
|
pull_triggers = [data.docker_registry_image.wireguard.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_network" "wireguard" {
|
||||||
|
name = "wireguard"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "wireguard" {
|
||||||
|
image = docker_image.wireguard.latest
|
||||||
|
name = "wireguard"
|
||||||
|
|
||||||
|
capabilities {
|
||||||
|
add = ["NET_ADMIN"]
|
||||||
|
}
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"TZ=Europe/Amsterdam",
|
||||||
|
"PEERS=1"
|
||||||
|
]
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/etc/wireguard"
|
||||||
|
source = "/share/appdata/wireguard"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/dev/net/tun"
|
||||||
|
source = "/dev/net/tun"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.120"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
25
youless-exporter.tf
Normal file
25
youless-exporter.tf
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
resource "docker_image" "youless-exporter" {
|
||||||
|
name = "youless-exporter:latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "youless-exporter" {
|
||||||
|
image = docker_image.youless-exporter.latest
|
||||||
|
name = "youless-exporter"
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
command = ["npm", "run", "start"]
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.82"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
6
youless-exporter/Dockerfile
Normal file
6
youless-exporter/Dockerfile
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
FROM node:12
|
||||||
|
COPY . /
|
||||||
|
CMD npm run start
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
70
youless-exporter/package-lock.json
generated
Normal file
70
youless-exporter/package-lock.json
generated
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"name": "youless-exporter",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": {
|
||||||
|
"version": "14.0.27",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz",
|
||||||
|
"integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"arg": {
|
||||||
|
"version": "4.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
|
||||||
|
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
|
||||||
|
},
|
||||||
|
"buffer-from": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
|
||||||
|
},
|
||||||
|
"diff": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
|
||||||
|
},
|
||||||
|
"make-error": {
|
||||||
|
"version": "1.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
||||||
|
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
|
||||||
|
},
|
||||||
|
"source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||||
|
},
|
||||||
|
"source-map-support": {
|
||||||
|
"version": "0.5.19",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
|
||||||
|
"integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
|
||||||
|
"requires": {
|
||||||
|
"buffer-from": "^1.0.0",
|
||||||
|
"source-map": "^0.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ts-node": {
|
||||||
|
"version": "8.10.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
|
||||||
|
"integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
|
||||||
|
"requires": {
|
||||||
|
"arg": "^4.1.0",
|
||||||
|
"diff": "^4.0.1",
|
||||||
|
"make-error": "^1.1.1",
|
||||||
|
"source-map-support": "^0.5.17",
|
||||||
|
"yn": "3.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"typescript": {
|
||||||
|
"version": "3.9.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz",
|
||||||
|
"integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw=="
|
||||||
|
},
|
||||||
|
"yn": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
18
youless-exporter/package.json
Normal file
18
youless-exporter/package.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "youless-exporter",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "ts-node src/main.ts"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"ts-node": "^8.10.2",
|
||||||
|
"typescript": "^3.9.7"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^14.0.27"
|
||||||
|
}
|
||||||
|
}
|
||||||
57
youless-exporter/src/main.ts
Normal file
57
youless-exporter/src/main.ts
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
import * as http from 'http';
|
||||||
|
|
||||||
|
const port = 4202;
|
||||||
|
const youlessUri = 'http://192.168.2.68/a'
|
||||||
|
|
||||||
|
const server = http.createServer((req, res) => {
|
||||||
|
|
||||||
|
http.request(youlessUri, response => {
|
||||||
|
let str = ''
|
||||||
|
response.on('data', function (chunk) {
|
||||||
|
str += chunk;
|
||||||
|
});
|
||||||
|
|
||||||
|
response.on('end', function () {
|
||||||
|
const parser = new Parser(str);
|
||||||
|
|
||||||
|
res.end(parser.toPrometheusFormat())
|
||||||
|
});
|
||||||
|
}).end();
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
server.listen(port)
|
||||||
|
|
||||||
|
|
||||||
|
class Parser {
|
||||||
|
public kWhTotal: number = null;
|
||||||
|
public currentPowerWatt: number = null;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private input: string
|
||||||
|
) {
|
||||||
|
this.parse();
|
||||||
|
}
|
||||||
|
|
||||||
|
public toPrometheusFormat(): string {
|
||||||
|
return [
|
||||||
|
`kwh_total ${this.kWhTotal}`,
|
||||||
|
`current_power_watt ${this.currentPowerWatt}`
|
||||||
|
].join('\n')
|
||||||
|
}
|
||||||
|
|
||||||
|
private parse() {
|
||||||
|
const lines = this.input.split('\n')
|
||||||
|
.map(line => line.trim())
|
||||||
|
.map(line => line.split(' '))
|
||||||
|
|
||||||
|
if (lines.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.kWhTotal = parseFloat(lines[0][0]?.replace(',', '.'));
|
||||||
|
this.currentPowerWatt = parseInt(lines[1][0])
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
52
zigbee2mqtt.tf
Normal file
52
zigbee2mqtt.tf
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
data "docker_registry_image" "zigbee-2-mqtt" {
|
||||||
|
name = "koenkk/zigbee2mqtt"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_image" "zigbee-2-mqtt" {
|
||||||
|
name = data.docker_registry_image.zigbee-2-mqtt.name
|
||||||
|
pull_triggers = [data.docker_registry_image.zigbee-2-mqtt.sha256_digest]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "docker_container" "zigbee-2-mqtt" {
|
||||||
|
image = docker_image.zigbee-2-mqtt.latest
|
||||||
|
name = "zigbee-2-mqtt"
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/app/data"
|
||||||
|
source = "/share/appdata/zigbee2mqtt"
|
||||||
|
type = "bind"
|
||||||
|
}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/run/udev"
|
||||||
|
source = "/run/udev"
|
||||||
|
type = "bind"
|
||||||
|
read_only = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"TZ=Europe/Amsterdam"
|
||||||
|
]
|
||||||
|
|
||||||
|
restart = "always"
|
||||||
|
|
||||||
|
|
||||||
|
networks_advanced {
|
||||||
|
name = docker_network.bridge.name
|
||||||
|
ipv4_address = "192.168.2.117"
|
||||||
|
}
|
||||||
|
|
||||||
|
devices {
|
||||||
|
container_path = "/dev/ttyACM0"
|
||||||
|
host_path = "/dev/ttyACM0"
|
||||||
|
permissions = "rwm"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
ulimit,
|
||||||
|
log_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user