sync
This commit is contained in:
@@ -1,385 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13570366,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "acme",
|
||||
"JobModifyIndex": 13570366,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13570366,
|
||||
"Multiregion": null,
|
||||
"Name": "acme",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": {
|
||||
"Enabled": true,
|
||||
"ProhibitOverlap": true,
|
||||
"Spec": "@weekly",
|
||||
"SpecType": "cron",
|
||||
"Specs": [],
|
||||
"TimeZone": "UTC"
|
||||
},
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1738335438469388686,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "acme",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/acme.sh"
|
||||
],
|
||||
"entrypoint": [
|
||||
"/local/acme_wrapper.sh"
|
||||
],
|
||||
"image": "neilpang/acme.sh"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"DuckDNS_Token": "e4b5ca33-1f4d-494b-b06d-6dd4600df662",
|
||||
"CONSUL_URL": "${attr.unique.network.ip-address}",
|
||||
"DEDYN_TOKEN": "JPwQpUiWGkKHSkmGEC4YAeGiGFki"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "acme",
|
||||
"Resources": {
|
||||
"CPU": 256,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 64,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "noop",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/acme_wrapper.sh",
|
||||
"EmbeddedTmpl": "{{ key \"scripts/acme.sh\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-avz",
|
||||
"--delete-excluded",
|
||||
"--exclude=renewal",
|
||||
"--exclude='live'",
|
||||
"--exclude='archive'",
|
||||
"--exclude='keys'",
|
||||
"--exclude='csr'",
|
||||
"/configbackup/",
|
||||
"/config/",
|
||||
"--delete-before"
|
||||
],
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"memory_hard_limit": 2048.0,
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "init",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"memory_hard_limit": 2048.0,
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
],
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-av",
|
||||
"--delete-excluded",
|
||||
"--exclude=renewal",
|
||||
"--exclude='live'",
|
||||
"--exclude='archive'",
|
||||
"--exclude='keys'",
|
||||
"--exclude='csr'",
|
||||
"/config/",
|
||||
"/configbackup/",
|
||||
"--remove-source-files"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststop",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "finalsync",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,304 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "odroid.*"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13571978,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "auth",
|
||||
"JobModifyIndex": 13770263,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13990955,
|
||||
"Multiregion": null,
|
||||
"Name": "auth",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1748145867863720703,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "auth",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"port_map": [
|
||||
{
|
||||
"auth": 4181.0
|
||||
}
|
||||
],
|
||||
"image": "thomseddon/traefik-forward-auth:2-arm",
|
||||
"volumes": [
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"CONFIG": "/local/config.ini",
|
||||
"LIFETIME": "31536000",
|
||||
"WHITELIST": "stuart.stent@gmail.com,stephen.bunt@gmail.com",
|
||||
"COOKIE_DOMAIN": "fbleagh.duckdns.org",
|
||||
"PROVIDERS_GOOGLE_CLIENT_ID": "807888907647-uog95jmiolsuh6ql1t8jm53l1jvuajck.apps.googleusercontent.com",
|
||||
"PROVIDERS_GOOGLE_CLIENT_SECRET": "B8bDri5mFvGv-Ghzbt8fLj4W",
|
||||
"SECRET": "ladskfdjmqwermnnbasfnmldas"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "fwdauth",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 64,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "auth",
|
||||
"Value": 4181
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"dex\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "fwdauth",
|
||||
"Timeout": 2000000000,
|
||||
"Type": "tcp"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "dex",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "auth",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"fwdauth",
|
||||
"web",
|
||||
"traefik.http.routers.dex.rule=Host(`fwdauth.fbleagh.duckdns.org`,`fwdauth.fbleagh.dedyn.io`)",
|
||||
"traefik.http.routers.dex.entrypoints=websecure",
|
||||
"traefik.http.routers.dex.tls=true",
|
||||
"traefik.http.middlewares.dex.forwardauth.address=http://dex.service.dc1.consul:4181",
|
||||
"traefik.http.middlewares.dex.forwardauth.trustForwardHeader=true",
|
||||
"traefik.http.middlewares.dex.forwardauth.authResponseHeaders=X-Forwarded-User",
|
||||
"traefik.http.routers.auth.middlewares=dex",
|
||||
"traefik.http.routers.traefik-forward-auth.middlewares=dex"
|
||||
],
|
||||
"TaskName": "fwdauth",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/config.ini",
|
||||
"EmbeddedTmpl": "{{ key \"Dex\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 2,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,406 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13940845,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "calendar-proxy",
|
||||
"JobModifyIndex": 13940997,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13991837,
|
||||
"Multiregion": null,
|
||||
"Name": "calendar-proxy",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1755792931244089317,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "web",
|
||||
"Networks": [
|
||||
{
|
||||
"DynamicPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 25000000000,
|
||||
"Interval": 300000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"calendar-proxy\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "/health",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "",
|
||||
"Timeout": 3000000000,
|
||||
"Type": "http"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "calendar-proxy",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.calendar-proxy.rule=Host(`mail.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.calendar-proxy.entrypoints=web"
|
||||
],
|
||||
"TaskName": "",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"local/nginx.conf:/etc/nginx/nginx.conf",
|
||||
"local/app:/var/www/html"
|
||||
],
|
||||
"image": "nginx:alpine",
|
||||
"ports": [
|
||||
"http"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "nginx",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 25000000000,
|
||||
"Interval": 300000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/nginx.conf",
|
||||
"EmbeddedTmpl": "events {\n worker_connections 1024;\n}\n\nhttp {\n include /etc/nginx/mime.types;\n default_type application/octet-stream;\n \n sendfile on;\n keepalive_timeout 65;\n \n upstream php-fpm {\n server 127.0.0.1:9000;\n }\n \n server {\n listen 80;\n server_name mail.fbleagh.duckdns.org;\n root /var/www/html;\n index ics.php;\n \n location /health {\n access_log off;\n return 200 \"healthy\\n\";\n add_header Content-Type text/plain;\n }\n \n location / {\n try_files $uri $uri/ /ics.php?$query_string;\n }\n \n location ~ \\.php$ {\n fastcgi_pass php-fpm;\n fastcgi_index index.php;\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n include fastcgi_params;\n }\n \n # Security headers\n add_header X-Frame-Options \"SAMEORIGIN\" always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n add_header X-Content-Type-Options \"nosniff\" always;\n \n # Hide nginx version\n server_tokens off;\n }\n}\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/app/ics.php",
|
||||
"EmbeddedTmpl": "<?php\n$url = $_GET['url'];\n// Accept ICS calendar links only\n$url_arr = explode('/', $url);\nif ($url_arr[2] !== 'outlook.office365.com'\n || $url_arr[3] !== 'owa'\n || $url_arr[4] !== 'calendar'\n || end($url_arr) !== 'calendar.ics'\n ) {\n http_response_code(500);\n print \"Error\";\n exit;\n}\n$context = stream_context_create([\n \"http\" => [\n \"header\" => \"User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n ]\n]);\nif (($data = @file_get_contents($url, false, $context)) === false) {\n $error = error_get_last();\n http_response_code(500);\n print \"HTTP request failed: \" . $error['message'];\n exit;\n}\nheader('Content-Type: text/calendar; charset=utf-8');\nprint $data;\n?>\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"network_mode": "container:nginx-${NOMAD_ALLOC_ID}",
|
||||
"volumes": [
|
||||
"local/app:/var/www/html",
|
||||
"local/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf"
|
||||
],
|
||||
"image": "php:8.2-fpm-alpine"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "php-fpm",
|
||||
"Resources": {
|
||||
"CPU": 200,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 25000000000,
|
||||
"Interval": 300000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/php-fpm.conf",
|
||||
"EmbeddedTmpl": "[www]\nuser = www-data\ngroup = www-data\nlisten = 127.0.0.1:9000\nlisten.owner = www-data\nlisten.group = www-data\npm = dynamic\npm.max_children = 5\npm.start_servers = 2\npm.min_spare_servers = 1\npm.max_spare_servers = 3\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/app/ics.php",
|
||||
"EmbeddedTmpl": "<?php\n$url = $_GET['url'];\n# // Accept ICS calendar links only\n# $url_arr = explode('/', $url);\n# if ($url_arr[2] !== 'outlook.office365.com'\n# || $url_arr[3] !== 'owa'\n# || $url_arr[4] !== 'calendar'\n# || end($url_arr) !== 'calendar.ics'\n# ) {\n# http_response_code(500);\n# print \"Error\";\n# exit;\n# }\n$context = stream_context_create([\n \"http\" => [\n \"header\" => \"User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n ]\n]);\nif (($data = @file_get_contents($url, false, $context)) === false) {\n $error = error_get_last();\n http_response_code(500);\n print \"HTTP request failed: \" . $error['message'];\n exit;\n}\nheader('Content-Type: text/calendar; charset=utf-8');\nprint $data;\n?>\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": true,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 180000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 7,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,339 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13925181,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "democratic-csi-local",
|
||||
"JobModifyIndex": 13925215,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13925215,
|
||||
"Multiregion": null,
|
||||
"Name": "democratic-csi-local",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1755193604654316261,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "controller",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": null,
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": {
|
||||
"HealthTimeout": 30000000000,
|
||||
"ID": "org.democratic-csi.local-hostpath",
|
||||
"MountDir": "/csi",
|
||||
"StagePublishBaseDir": "/local/csi",
|
||||
"Type": "controller"
|
||||
},
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"local/config:/config:ro"
|
||||
],
|
||||
"args": [
|
||||
"--csi-version=1.5.0",
|
||||
"--csi-name=org.democratic-csi.local-hostpath",
|
||||
"--driver-config-file=/config/driver-config-file.yaml",
|
||||
"--log-level=info",
|
||||
"--csi-mode=controller",
|
||||
"--server-socket=/csi/csi.sock"
|
||||
],
|
||||
"image": "democraticcsi/democratic-csi:latest"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "controller",
|
||||
"Resources": {
|
||||
"CPU": 256,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/config/driver-config-file.yaml",
|
||||
"EmbeddedTmpl": "driver: local-hostpath\ninstance_id: {{ env \"node.unique.id\" }}\nlocal-hostpath:\n shareBasePath: \"/tmp/democratic-csi-local-hostpath\"\n controllerBasePath: \"/tmp/democratic-csi-local-hostpath\"\n dirPermissionsMode: \"0755\"\n dirPermissionsUser: 0\n dirPermissionsGroup: 0\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
},
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "nodes",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": null,
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": {
|
||||
"HealthTimeout": 30000000000,
|
||||
"ID": "org.democratic-csi.local-hostpath",
|
||||
"MountDir": "/csi",
|
||||
"StagePublishBaseDir": "/local/csi",
|
||||
"Type": "node"
|
||||
},
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"local/config:/config:ro",
|
||||
"/tmp/democratic-csi-local-hostpath:/tmp/democratic-csi-local-hostpath:rshared"
|
||||
],
|
||||
"args": [
|
||||
"--csi-version=1.5.0",
|
||||
"--csi-name=org.democratic-csi.local-hostpath",
|
||||
"--driver-config-file=/config/driver-config-file.yaml",
|
||||
"--log-level=info",
|
||||
"--csi-mode=node",
|
||||
"--server-socket=/csi/csi.sock"
|
||||
],
|
||||
"image": "democraticcsi/democratic-csi:latest",
|
||||
"privileged": true
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "node",
|
||||
"Resources": {
|
||||
"CPU": 256,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/config/driver-config-file.yaml",
|
||||
"EmbeddedTmpl": "driver: local-hostpath\ninstance_id: {{ env \"node.unique.id\" }}\nlocal-hostpath:\n shareBasePath: \"/tmp/democratic-csi-local-hostpath\"\n controllerBasePath: \"/tmp/democratic-csi-local-hostpath\"\n dirPermissionsMode: \"0755\"\n dirPermissionsUser: 0\n dirPermissionsGroup: 0\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "system",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 1,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,405 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14064853,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "foodplanner",
|
||||
"JobModifyIndex": 14064853,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14064866,
|
||||
"Multiregion": null,
|
||||
"Name": "foodplanner",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1759672953055136364,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "app",
|
||||
"Networks": [
|
||||
{
|
||||
"DynamicPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 8999
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"foodplanner\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "/",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "",
|
||||
"Timeout": 2000000000,
|
||||
"Type": "http"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "foodplanner",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": null,
|
||||
"TaskName": "",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/opt/nomad/data:/data"
|
||||
],
|
||||
"args": [
|
||||
"restore",
|
||||
"-o",
|
||||
"/alloc/tmp/meal_planner.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db"
|
||||
],
|
||||
"image": "litestream/litestream:0.3"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "restore",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"volumes": [
|
||||
"/mnt/Public/configs/FoodPlanner_backups:/app/backups/"
|
||||
],
|
||||
"image": "ghcr.io/sstent/foodplanner:main"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"DATABASE_PATH": "/alloc/tmp",
|
||||
"DATABASE_URL": "sqlite:////alloc/tmp/meal_planner.db"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "app",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 1024,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 600000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "litestream/litestream:0.3",
|
||||
"args": [
|
||||
"replicate",
|
||||
"/alloc/tmp/meal_planner.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "litestream",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,542 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13923644,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "gonic",
|
||||
"JobModifyIndex": 13923644,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13991159,
|
||||
"Multiregion": null,
|
||||
"Name": "gonic",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1755124884723774513,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "gonic",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/configs/gonic/data:/data",
|
||||
"/mnt/configs/gonic/cache:/cache",
|
||||
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
|
||||
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
|
||||
"/mnt/Public/Downloads/podcasts:/podcasts",
|
||||
"/mnt/Public/Downloads/musicplaylists:/musicplaylists"
|
||||
],
|
||||
"port_map": [
|
||||
{
|
||||
"http": 80.0
|
||||
}
|
||||
],
|
||||
"image": "sentriz/gonic"
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"GONIC_SCAN_INTERVAL": "120",
|
||||
"GONIC_MUSIC_PATH": "/music",
|
||||
"GONIC_PODCAST_PATH": "/podcasts",
|
||||
"GONIC_PLAYLISTS_PATH": "/musicplaylists"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "gonic",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"Value": 4747
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"gonic\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "gonic",
|
||||
"Timeout": 2000000000,
|
||||
"Type": "tcp"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": {
|
||||
"ALLOC": "${NOMAD_ALLOC_ID}"
|
||||
},
|
||||
"Name": "gonic",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"gonic",
|
||||
"web",
|
||||
"urlprefix-/gonic",
|
||||
"backend",
|
||||
"traefik.http.routers.goniclan.rule=Host(`gonic.service.dc1.consul`)",
|
||||
"traefik.http.routers.gonicwan.rule=Host(`mg.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.gonicwan.tls=true",
|
||||
"traefik.http.routers.gonicwan.tls.certresolver=myresolver"
|
||||
],
|
||||
"TaskName": "gonic",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "2048",
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
],
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-av",
|
||||
"--exclude=Backups",
|
||||
"/configbackup/",
|
||||
"/config/",
|
||||
"--delete-before"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "init-manual",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
],
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-av",
|
||||
"/config/",
|
||||
"/configbackup/"
|
||||
],
|
||||
"memory_hard_limit": "2048",
|
||||
"image": "ghcr.io/sstent/rsync"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststop",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "finalsync-manual",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup"
|
||||
],
|
||||
"memory_hard_limit": "2048",
|
||||
"image": "ghcr.io/sstent/rsync"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "db-sync",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/litestream.yml",
|
||||
"EmbeddedTmpl": "dbs:\n - path: /data/gonic.db\n replicas:\n - path: /configbackup\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,536 +0,0 @@
|
||||
{
|
||||
"Affinities": [
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "=",
|
||||
"RTarget": "odroid2",
|
||||
"Weight": 80
|
||||
}
|
||||
],
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "odroid.*"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13607995,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "hass",
|
||||
"JobModifyIndex": 13992633,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13992664,
|
||||
"Multiregion": null,
|
||||
"Name": "hass",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1757869441327214250,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "hass",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 8123,
|
||||
"Value": 8123
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http_8989",
|
||||
"To": 8989,
|
||||
"Value": 8989
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 99,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 3600000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "2048",
|
||||
"image_pull_timeout": "10m",
|
||||
"force_pull": false,
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"DB_NAME": "home-assistant_v2.db"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "init",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 99,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 3600000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
],
|
||||
"memory_hard_limit": "2048"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststop",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "finalsync",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 99,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 3600000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"client"
|
||||
],
|
||||
"memory_hard_limit": "2048",
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"volumes": [
|
||||
"/mnt/configs/:/configs",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"CRON_TASK_1": "50 8-20 * * *rsync -av --exclude='*.db*' --exclude='*.db' --exclude='.db-litestream' --exclude='generations' /configs/${NOMAD_GROUP_NAME}/ /configbackup/;"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "sync",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 99,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 3600000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"network_mode": "host",
|
||||
"cap_add": [
|
||||
"NET_ADMIN"
|
||||
],
|
||||
"force_pull": false,
|
||||
"volumes": [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
"local/configuration.yaml:/config/configuration.yaml",
|
||||
"local/ui-lovelace.yaml:/config/ui-lovelace.yaml",
|
||||
"/mnt/configs/hass:/config"
|
||||
],
|
||||
"image": "ghcr.io/home-assistant/home-assistant:stable",
|
||||
"ports": [
|
||||
"http",
|
||||
"http_8989"
|
||||
],
|
||||
"memory_hard_limit": "2048"
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"JEMALLOC_DISABLE": "true"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 10000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 15,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "hass",
|
||||
"Resources": {
|
||||
"CPU": 256,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 99,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 3600000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "hass",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"homeassistant",
|
||||
"tools",
|
||||
"logo=home-assistant"
|
||||
],
|
||||
"TaskName": "hass",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/configuration.yaml",
|
||||
"EmbeddedTmpl": "{{ key \"homeassistant/configuration.yml\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/ui-lovelace.yaml",
|
||||
"EmbeddedTmpl": "{{ key \"homeassistant/lovelace.yml\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 8,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,414 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13571905,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "immich",
|
||||
"JobModifyIndex": 14198769,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14198796,
|
||||
"Multiregion": null,
|
||||
"Name": "immich",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763139333220876334,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "immich",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 8080,
|
||||
"Value": 8088
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 300000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/imagegenius/immich:2.2.3-noml",
|
||||
"memory_hard_limit": "2048",
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"volumes": [
|
||||
"/mnt/Public/configs/Immich:/config",
|
||||
"/mnt/Public/Immich/Photos:/photos",
|
||||
"/mnt/Public/Immich/libraries:/libraries"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"DB_PORT": "5432",
|
||||
"REDIS_HOSTNAME": "redis.service.dc1.consul",
|
||||
"MACHINE_LEARNING_WORKER_TIMEOUT": "120",
|
||||
"DB_PASSWORD": "postgres",
|
||||
"PUID": "1000",
|
||||
"DB_HOSTNAME": "master.postgres.service.dc1.consul",
|
||||
"PGID": "1000",
|
||||
"REDIS_PORT": "6379",
|
||||
"MACHINE_LEARNING_PORT": "3003",
|
||||
"MACHINE_LEARNING_HOST": "0.0.0.0",
|
||||
"DB_VECTOR_EXTENSION": "pgvector",
|
||||
"MACHINE_LEARNING_WORKERS": "1",
|
||||
"DB_USERNAME": "postgres",
|
||||
"REDIS_PASSWORD": "",
|
||||
"TZ": "Etc/UTC",
|
||||
"DB_DATABASE_NAME": "immich"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "immich",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 512,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 300000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "immich",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"immich",
|
||||
"tools",
|
||||
"traefik.http.routers.immichlan.rule=Host(`immich.service.dc1.consul`)",
|
||||
"traefik.http.routers.immichwan.rule=Host(`immich.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.immichwan.tls=true"
|
||||
],
|
||||
"TaskName": "immich",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
},
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "redis",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "redis",
|
||||
"Value": 6379
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 300000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "redis",
|
||||
"ports": [
|
||||
"redis"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "redis",
|
||||
"Resources": {
|
||||
"CPU": 250,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 30000000000,
|
||||
"Interval": 300000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "redis",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "redis",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"wallabag",
|
||||
"tools"
|
||||
],
|
||||
"TaskName": "redis",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 15,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,240 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13716709,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "miniflux",
|
||||
"JobModifyIndex": 13716709,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13990946,
|
||||
"Multiregion": null,
|
||||
"Name": "miniflux",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1745243550127001781,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "miniflux",
|
||||
"Networks": [
|
||||
{
|
||||
"DynamicPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 8080
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "miniflux/miniflux:latest",
|
||||
"ports": [
|
||||
"http"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"ADMIN_USERNAME": "admin",
|
||||
"OAUTH2_PROVIDER": "google",
|
||||
"ADMIN_PASSWORD": "farscape5",
|
||||
"OAUTH2_CLIENT_SECRET": "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",
|
||||
"RUN_MIGRATIONS": "1",
|
||||
"BASE_URL": "https://miniflux.fbleagh.duckdns.org",
|
||||
"OAUTH2_REDIRECT_URL": "https://miniflux.fbleagh.duckdns.org/oauth2/google/callback",
|
||||
"OAUTH2_CLIENT_ID": "807888907647-g6i7t2auvbrjinf151qupc663tgpn6gh.apps.googleusercontent.com",
|
||||
"CREATE_ADMIN": "1",
|
||||
"DATABASE_URL": "postgres://postgres:postgres@master.postgres.service.dc1.consul/miniflux?sslmode=disable",
|
||||
"OAUTH2_USER_CREATION": "1"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "miniflux",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "miniflux",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"miniflux",
|
||||
"tools",
|
||||
"traefik.http.routers.minifluxlan.rule=Host(`miniflux.service.dc1.consul`)",
|
||||
"traefik.http.routers.minifluxwan.rule=Host(`miniflux.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.minifluxwan.tls=true",
|
||||
"traefik.http.middlewares.vaultwardenwan-admin-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.0/24",
|
||||
"traefik.http.routers.nginx-admin.middlewares=vaultwardenwan-admin-ipwhitelist"
|
||||
],
|
||||
"TaskName": "miniflux",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,254 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14013004,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "minihass",
|
||||
"JobModifyIndex": 14013055,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14013061,
|
||||
"Multiregion": null,
|
||||
"Name": "minihass",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1758392051490505959,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "smart-home",
|
||||
"Networks": [
|
||||
{
|
||||
"DynamicPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 5000
|
||||
}
|
||||
],
|
||||
"Mode": "host"
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 30000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"minihass\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "/health",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "",
|
||||
"Timeout": 7000000000,
|
||||
"Type": "http"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "minihass",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"traefik.http.routers.minihasslan.rule=Host(`minihass.service.dc1.consul`)",
|
||||
"traefik.http.routers.minihasswan.rule=Host(`mh.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.minihasswan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.minihasswan.tls=true"
|
||||
],
|
||||
"TaskName": "",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/minihass",
|
||||
"ports": [
|
||||
"http"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"CONSUL_HOST": "consul.service.dc1.consul",
|
||||
"CONSUL_PORT": "8500"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "app",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 3,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,439 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "odroid.*"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13928915,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "navidrome",
|
||||
"JobModifyIndex": 14171074,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14171094,
|
||||
"Multiregion": null,
|
||||
"Name": "navidrome",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1762404740673447473,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "navidrome",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 4533,
|
||||
"Value": 4533
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"restore",
|
||||
"-if-replica-exists",
|
||||
"-if-db-not-exists",
|
||||
"-o",
|
||||
"/alloc/tmp/navidrome.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
|
||||
],
|
||||
"volumes": [
|
||||
"/mnt/configs/navidrome:/data"
|
||||
],
|
||||
"image": "litestream/litestream:latest"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "restore",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "2048",
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"volumes": [
|
||||
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
|
||||
"/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro",
|
||||
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
|
||||
"/mnt/configs/navidrome:/data"
|
||||
],
|
||||
"image": "ghcr.io/navidrome/navidrome:latest"
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"ND_BACKUP_COUNT": "7",
|
||||
"ND_BACKUP_SCHEDULE": "0 0 * * *",
|
||||
"ND_LOGLEVEL": "debug",
|
||||
"ND_DATAFOLDER": "/alloc/tmp/",
|
||||
"ND_REVERSEPROXYWHITELIST": "0.0.0.0/0",
|
||||
"ND_SCANSCHEDULE": "32 8-20 * * *",
|
||||
"ND_SCANNER_GROUPALBUMRELEASES": "False",
|
||||
"ND_REVERSEPROXYUSERHEADER": "X-Forwarded-User",
|
||||
"ND_BACKUP_PATH": "/data",
|
||||
"ND_CACHEFOLDER": "./data/cache"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "navidrome",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"navidrome\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "navidrome",
|
||||
"Timeout": 2000000000,
|
||||
"Type": "tcp"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "navidrome",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"navidrome",
|
||||
"web",
|
||||
"urlprefix-/navidrome",
|
||||
"tools",
|
||||
"traefik.http.routers.navidromelan.rule=Host(`navidrome.service.dc1.consul`)",
|
||||
"traefik.http.routers.navidromewan.rule=Host(`fbleagh-m.ignorelist.com`)",
|
||||
"traefik.http.routers.navidromewan.rule=Host(`m.fbleagh.duckdns.org`,`m.fbleagh.dedyn.io`)",
|
||||
"traefik.http.routers.navidromewan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.navidromewan.tls=true"
|
||||
],
|
||||
"TaskName": "navidrome",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "litestream/litestream:latest",
|
||||
"args": [
|
||||
"replicate",
|
||||
"/alloc/tmp/navidrome.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
|
||||
],
|
||||
"volumes": [
|
||||
"/mnt/configs/navidrome:/data"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "litestream",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 22,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,292 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13996170,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "nginx",
|
||||
"JobModifyIndex": 13996170,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13996178,
|
||||
"Multiregion": null,
|
||||
"Name": "nginx",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1757964378356074970,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "nginx",
|
||||
"Networks": [
|
||||
{
|
||||
"DynamicPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 8080
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"custom/default.conf:/etc/nginx/conf.d/default.conf"
|
||||
],
|
||||
"image": "nginx",
|
||||
"ports": [
|
||||
"http"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "nginx",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 64,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"nginx\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "nginx",
|
||||
"Timeout": 2000000000,
|
||||
"Type": "tcp"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "nginx",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"nginx",
|
||||
"web",
|
||||
"urlprefix-/nginx",
|
||||
"backend"
|
||||
],
|
||||
"TaskName": "nginx",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "custom/default.conf",
|
||||
"EmbeddedTmpl": " server {\n listen 8080;\n server_name nginx.service.dc1.consul;\n location / {\n root /local/data;\n }\n }\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "noop",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/data/index.html",
|
||||
"EmbeddedTmpl": " <p>Local Services - HTTP/HTTPS</p>\n <table style=\"width:100%\">\n <tr>\n <th>Service Name</th>\n <th>Traefik</th>\n <th>Direct</th>\n </tr>\n {{range services}}\n {{range $i, $s :=service .Name}}\n {{ if eq $i 0 }}\n\n<tr>\n <td>{{.Name}}</td>\n <td><a href=\"{{ if eq .Name \"unifi\" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul\" target=\"_blank\">{{.Name}}.service.dc1.consul</a></td>\n <td><a href=\"{{ if eq .Name \"unifi\" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}\" target=\"_blank\">{{ if eq .Name \"unifi\" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}</a></td>\n </tr>\n {{end}}\n {{end}}\n {{end}}\n </table>\n <p>\n Node Environment Information: <br />\n node_id: {{ env \"node.unique.id\" }} <br/>\n datacenter: {{ env \"NOMAD_DC\" }}\n </p>\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,650 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "odroid.*"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13572065,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "nzbget",
|
||||
"JobModifyIndex": 14132455,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14199835,
|
||||
"Multiregion": null,
|
||||
"Name": "nzbget",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1761418699860703923,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "nzbget",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "shadowsocks",
|
||||
"To": 8388,
|
||||
"Value": 8338
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http_proxy",
|
||||
"To": 8888,
|
||||
"Value": 8888
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http_admin",
|
||||
"To": 8000,
|
||||
"Value": 8000
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "sabnzb_admin",
|
||||
"To": 8080,
|
||||
"Value": 8080
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "socks",
|
||||
"To": 1080,
|
||||
"Value": 1080
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "nzbget",
|
||||
"To": 6789,
|
||||
"Value": 6789
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "1024",
|
||||
"ports": [
|
||||
"shadowsocks",
|
||||
"nzbget",
|
||||
"http_proxy",
|
||||
"http_admin",
|
||||
"sabnzb_admin",
|
||||
"socks"
|
||||
],
|
||||
"cap_add": [
|
||||
"NET_ADMIN",
|
||||
"NET_BIND_SERVICE"
|
||||
],
|
||||
"volumes": [
|
||||
"/etc/localtime:/etc/localtime"
|
||||
],
|
||||
"devices": [
|
||||
{
|
||||
"host_path": "/dev/net/tun",
|
||||
"container_path": "/dev/net/tun"
|
||||
}
|
||||
],
|
||||
"image": "qmcgaw/gluetun"
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"FIREWALL_VPN_INPUT_PORTS": "56987",
|
||||
"CITY": "Toronto",
|
||||
"WIREGUARD_ADDRESS": "10.66.246.4/32",
|
||||
"WIREGUARD_PRIVATE_KEY": "2FHwQX1jxk+qeMmXUtSGRc2kKF1WHeSCyIgHNW+7akA=",
|
||||
"DOT_PROVIDERS": "cloudflare,google,quad9,quadrant",
|
||||
"COUNTRY": "Canada",
|
||||
"UPDATER_PERIOD": "24h",
|
||||
"VPNSP": "mullvad",
|
||||
"DOT": "off",
|
||||
"VPN_TYPE": "wireguard",
|
||||
"SHADOWSOCKS": "off",
|
||||
"HTTPPROXY": "on",
|
||||
"SHADOWSOCKS_PASSWORD": "farscape5"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "ovpn-client",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 100,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "nzbget-admin",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http_admin",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"ovpn-openpyn"
|
||||
],
|
||||
"TaskName": "ovpn-client",
|
||||
"Weights": null
|
||||
},
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "nzbget",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "shadowsocks",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"ovpn-openpyn"
|
||||
],
|
||||
"TaskName": "ovpn-client",
|
||||
"Weights": null
|
||||
},
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "nzbget",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "nzbget",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"ovpn-openpyn"
|
||||
],
|
||||
"TaskName": "ovpn-client",
|
||||
"Weights": null
|
||||
},
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "sabnzb",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "sabnzb_admin",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"ovpn-openpyn",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.247/32",
|
||||
"gocast_nat=tcp:8080:8080",
|
||||
"gocast_nat=udp:8080:8080"
|
||||
],
|
||||
"TaskName": "ovpn-client",
|
||||
"Weights": null
|
||||
},
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "socks-nord",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "socks",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"ovpn-openpyn",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.243/32",
|
||||
"gocast_nat=tcp:1080:1080",
|
||||
"gocast_nat=udp:1080:1080"
|
||||
],
|
||||
"TaskName": "ovpn-client",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "serjs/go-socks5-proxy",
|
||||
"network_mode": "container:ovpn-client-${NOMAD_ALLOC_ID}",
|
||||
"memory_hard_limit": 256.0,
|
||||
"devices": [
|
||||
{
|
||||
"host_path": "/dev/net/tun",
|
||||
"container_path": "/dev/net/tun"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"REQUIRE_AUTH": "false"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "dante",
|
||||
"Resources": {
|
||||
"CPU": 64,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/rsync:v0.3.5",
|
||||
"memory_hard_limit": "2048",
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
],
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-avz",
|
||||
"--exclude=Backups",
|
||||
"/configbackup/",
|
||||
"/config/",
|
||||
"--delete-before"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "init",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "2048",
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
],
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-avz",
|
||||
"/config/",
|
||||
"/configbackup/"
|
||||
],
|
||||
"image": "ghcr.io/sstent/rsync:v0.3.5"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststop",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "finalsync",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 90000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 90000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 10,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,203 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13569048,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "postgres-15",
|
||||
"JobModifyIndex": 13569135,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13569135,
|
||||
"Multiregion": null,
|
||||
"Name": "postgres-15",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1738279443028435823,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "group",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "api",
|
||||
"To": 8008,
|
||||
"Value": 8008
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "pg",
|
||||
"To": 5432,
|
||||
"Value": 5432
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": null,
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"ports": [
|
||||
"api",
|
||||
"pg"
|
||||
],
|
||||
"image": "ghcr.io/sstent/nomad-pgsql-patroni:latest",
|
||||
"volumes": [
|
||||
"/mnt/configs/postgres:/store"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"PGDATA": "/store/data"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "db",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 1024,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "/secrets/patroni.yml",
|
||||
"EmbeddedTmpl": "scope: postgres\nname: pg-{{env \"node.unique.name\"}}\nnamespace: /nomad\n\nrestapi:\n listen: 0.0.0.0:8008\n connect_address: {{env \"attr.unique.network.ip-address\"}}:8008\n\nconsul:\n scheme: http\n host: {{env \"attr.unique.network.ip-address\"}}:8500\n register_service: True\n\nbootstrap:\n dcs:\n ttl: 30\n loop_wait: 10\n retry_timeout: 10\n maximum_lag_on_failover: 1048576\n postgresql:\n use_pg_rewind: true\n use_slots: true\n parameters:\n timezone: 'UTC'\n max_connections: 100\n shared_preload_libraries: pg_stat_statements\n shared_buffers: 64MB\n work_mem: 16MB\n effective_cache_size: 512MB\n tcp_keepalives_idle: 300\n timescaledb.telemetry_level: off\n\n method: local\n local:\n command: /usr/local/bin/docker-initdb.sh\n keep_existing_recovery_conf: True\n\n initdb:\n - encoding: UTF8\n\n pg_hba:\n - host all postgres all md5\n - host replication repl all md5\n - host all all all md5\n\n users:\n postgres:\n password: postgres\n options:\n - createrole\n - createdb\n repl:\n password: repl\n options:\n - replication\n\npostgresql:\n listen: 0.0.0.0:5432\n connect_address: {{env \"attr.unique.network.ip-address\"}}:5432\n use_unix_socket: true\n data_dir: /store/data\n authentication:\n replication:\n username: repl\n password: repl\n superuser:\n username: postgres\n password: postgres\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "system",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 2,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,565 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "odroid.*"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13995677,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "prometheus",
|
||||
"JobModifyIndex": 13995677,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13995698,
|
||||
"Multiregion": null,
|
||||
"Name": "prometheus",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1757952031065143001,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.os.signals}",
|
||||
"Operand": "set_contains",
|
||||
"RTarget": "SIGHUP"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"Count": 2,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "prometheus",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 9090,
|
||||
"Value": 9090
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "alerthttp",
|
||||
"To": 9093,
|
||||
"Value": 9093
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "gotifybridge",
|
||||
"To": 8080,
|
||||
"Value": 9094
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "512",
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"volumes": [
|
||||
"local/prometheus.yml:/etc/prometheus/prometheus.yml",
|
||||
"local/alerts.yml:/etc/prometheus/alerts.yml"
|
||||
],
|
||||
"args": [
|
||||
"--web.enable-admin-api",
|
||||
"--config.file=/etc/prometheus/prometheus.yml"
|
||||
],
|
||||
"image": "prom/prometheus",
|
||||
"logging": [
|
||||
{
|
||||
"type": "json-file"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 10000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 15,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "prometheus",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 48,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "alive",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "/status",
|
||||
"PortLabel": "http",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "prometheus",
|
||||
"Timeout": 120000000000,
|
||||
"Type": "http"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "prometheus",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"prometheus"
|
||||
],
|
||||
"TaskName": "prometheus",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "signal",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "SIGHUP",
|
||||
"DestPath": "local/prometheus.yml",
|
||||
"EmbeddedTmpl": "{{ key \"prometheus_yml\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/alerts.yml",
|
||||
"EmbeddedTmpl": "{{ key \"alerts\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"--config.file=/local/alertmanager.yml"
|
||||
],
|
||||
"image": "prom/alertmanager",
|
||||
"logging": [
|
||||
{
|
||||
"type": "json-file"
|
||||
}
|
||||
],
|
||||
"ports": [
|
||||
"alerthttp"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 10000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 15,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "alertmanager",
|
||||
"Resources": {
|
||||
"CPU": 128,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 48,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 60000000000,
|
||||
"Method": "",
|
||||
"Name": "alive",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "/status",
|
||||
"PortLabel": "http",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "alertmanager",
|
||||
"Timeout": 120000000000,
|
||||
"Type": "http"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "alertmanager",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "alerthttp",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"prometheus"
|
||||
],
|
||||
"TaskName": "alertmanager",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/alertmanager.yml",
|
||||
"EmbeddedTmpl": "global:\nreceivers:\n - name: default-receiver\n - name: gotify-webhook\n webhook_configs:\n - url: \"http://prometheus.service.dc1.consul:9094/gotify_webhook\"\nroute:\n group_wait: 10s\n group_interval: 5m\n receiver: gotify-webhook\n repeat_interval: 3h\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"ports": [
|
||||
"gotifybridge"
|
||||
],
|
||||
"args": [
|
||||
"--debug"
|
||||
],
|
||||
"image": "ghcr.io/druggeri/alertmanager_gotify_bridge"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"GOTIFY_ENDPOINT": "http://gotify.service.dc1.consul/message",
|
||||
"GOTIFY_TOKEN": "AQ7l7NVgtylam86"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "gotifybridge",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 60000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 60000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,377 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "odroid.*"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13572040,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "prowlarr",
|
||||
"JobModifyIndex": 13998460,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13998474,
|
||||
"Multiregion": null,
|
||||
"Name": "prowlarr",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1758023732088250725,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "prowlarr",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 9696,
|
||||
"Value": 9696
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http_flare",
|
||||
"To": 8191,
|
||||
"Value": 8191
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/flaresolverr/flaresolverr:latest",
|
||||
"ports": [
|
||||
"http_flare"
|
||||
],
|
||||
"dns_servers": [
|
||||
"192.168.1.1",
|
||||
"1.1.1.1"
|
||||
],
|
||||
"memory_hard_limit": "2048",
|
||||
"force_pull": false
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "flaresolver",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "prowlarr",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http_flare",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"prowlarr_pg",
|
||||
"tools"
|
||||
],
|
||||
"TaskName": "flaresolver",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/Public/configs/prowlarr_pg:/config"
|
||||
],
|
||||
"force_pull": false,
|
||||
"image": "ghcr.io/linuxserver/prowlarr:develop",
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"dns_servers": [
|
||||
"192.168.1.1",
|
||||
"1.1.1.1"
|
||||
],
|
||||
"memory_hard_limit": "2048"
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"PUID": "1000",
|
||||
"PGID": "1000",
|
||||
"TZ": "EST5EDT"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 10000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 15,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "prowlarr",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "prowlarr",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"prowlarr_pg",
|
||||
"tools"
|
||||
],
|
||||
"TaskName": "prowlarr",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/healthcheck.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\n/usr/bin/curl -f \"http://localhost:${NOMAD_PORT_http}/api/v1/system/status?apikey=$(grep -Po '<ApiKey>\\K.*?(?=<.*?>)' /config/config.xml)\"\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0755",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 2,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,233 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13930001,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate",
|
||||
"JobModifyIndex": 13930001,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13930001,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": {
|
||||
"Enabled": true,
|
||||
"ProhibitOverlap": true,
|
||||
"Spec": "*/30 * * * *",
|
||||
"SpecType": "cron",
|
||||
"Specs": [],
|
||||
"TimeZone": "UTC"
|
||||
},
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1755347244371339444,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
],
|
||||
"image": "ghcr.io/sstent/ubuntu-python3"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202455,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763231400",
|
||||
"JobModifyIndex": 14202455,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202464,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763231400",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763231400001780238,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
],
|
||||
"image": "ghcr.io/sstent/ubuntu-python3"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202496,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763233200",
|
||||
"JobModifyIndex": 14202496,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202504,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763233200",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763233200005089389,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
],
|
||||
"image": "ghcr.io/sstent/ubuntu-python3"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202549,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763235000",
|
||||
"JobModifyIndex": 14202549,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202558,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763235000",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763235000002643660,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/ubuntu-python3",
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202593,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763236800",
|
||||
"JobModifyIndex": 14202593,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202601,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763236800",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763236800001635486,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
],
|
||||
"image": "ghcr.io/sstent/ubuntu-python3"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202645,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763238600",
|
||||
"JobModifyIndex": 14202645,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202653,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763238600",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763238600002832252,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/ubuntu-python3",
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202755,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763240400",
|
||||
"JobModifyIndex": 14202755,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202920,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763240400",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763240400003151783,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/ubuntu-python3",
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202806,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763242200",
|
||||
"JobModifyIndex": 14202806,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202815,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763242200",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763242200002299173,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/sstent/ubuntu-python3",
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14202856,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qautomate/periodic-1763244000",
|
||||
"JobModifyIndex": 14202856,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202864,
|
||||
"Multiregion": null,
|
||||
"Name": "qautomate/periodic-1763244000",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "qautomate",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "dead",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763244000001892686,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "app",
|
||||
"Networks": null,
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 1,
|
||||
"Delay": 5000000000,
|
||||
"DelayFunction": "constant",
|
||||
"Interval": 86400000000000,
|
||||
"MaxDelay": 0,
|
||||
"Unlimited": false
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"-v",
|
||||
"-c",
|
||||
"/local/prestart.sh"
|
||||
],
|
||||
"image": "ghcr.io/sstent/ubuntu-python3"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "setup",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 3,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 86400000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/prestart.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tagger.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tagger\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/torrent_tidy.py",
|
||||
"EmbeddedTmpl": "{{ key \"functions/torrent_tidy\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": null,
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "batch",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 0,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 0
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,593 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.cpu.arch}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "amd64"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13572099,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "qbittorrent",
|
||||
"JobModifyIndex": 14186766,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202925,
|
||||
"Multiregion": null,
|
||||
"Name": "qbittorrent",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1762817545936576873,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "qbittorrent",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "qbittorrent_51413",
|
||||
"To": 6881,
|
||||
"Value": 6881
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "shadowsocks",
|
||||
"To": 8388,
|
||||
"Value": 8388
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "socks",
|
||||
"To": 1080,
|
||||
"Value": 1080
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http_proxy",
|
||||
"To": 8888,
|
||||
"Value": 8888
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http_admin",
|
||||
"To": 8000,
|
||||
"Value": 8000
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "qbittorrent_80",
|
||||
"To": 8080,
|
||||
"Value": 8080
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"devices": [
|
||||
{
|
||||
"container_path": "/dev/net/tun",
|
||||
"host_path": "/dev/net/tun"
|
||||
}
|
||||
],
|
||||
"image": "qmcgaw/gluetun",
|
||||
"memory_hard_limit": "1024",
|
||||
"ports": [
|
||||
"shadowsocks",
|
||||
"http_proxy",
|
||||
"http_admin",
|
||||
"qbittorrent_51413",
|
||||
"qbittorrent_80",
|
||||
"socks"
|
||||
],
|
||||
"volumes": [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
"/mnt/syncthing/mullvad:/vpn",
|
||||
"local/gluetun.toml:/gluetun/config.toml"
|
||||
],
|
||||
"cap_add": [
|
||||
"NET_ADMIN",
|
||||
"NET_BIND_SERVICE"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"HTTP_CONTROL_SERVER_AUTH_CONFIG_FILEPATH": "/custom/auth.toml",
|
||||
"SERVER_CITIES": "Vancouver,Montreal,Toronto",
|
||||
"HEALTH_VPN_DURATION_INITIAL": "3600s",
|
||||
"DOT": "off",
|
||||
"SHADOWSOCKS": "on",
|
||||
"SHADOWSOCKS_PASSWORD": "farscape5",
|
||||
"DOT_PROVIDERS": "cloudflare,google,quad9,quadrant",
|
||||
"WIREGUARD_PRIVATE_KEY": "EIos1A9eGCIoCHr02aOsEu8S4C0gqhNLIYF/vMykEV0=",
|
||||
"SERVER_COUNTRIES": "Canada",
|
||||
"HEALTH_TARGET_ADDRESS": "1.1.1.1",
|
||||
"WIREGUARD_PRESHARED_KEY": "RzPcraPA24hLFxGiB7z5JMWrtI+JBbEzvmeiEX36XWo=",
|
||||
"HEALTH_SUCCESS_WAIT_DURATION": "30s",
|
||||
"HTTPPROXY": "on",
|
||||
"FIREWALL_VPN_INPUT_PORTS": "61944,53304",
|
||||
"VPN_SERVICE_PROVIDER": "airvpn",
|
||||
"WIREGUARD_ADDRESSES": "10.161.31.240/32",
|
||||
"HEALTH_VPN_DURATION_ADDITION": "600s",
|
||||
"WEBUI_PORT": "8080",
|
||||
"VPN_TYPE": "wireguard"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "qbittorrent-vpn",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 250,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "qbittorrent",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "qbittorrent_80",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"tools"
|
||||
],
|
||||
"TaskName": "qbittorrent-vpn",
|
||||
"Weights": null
|
||||
},
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "qbittorrent-admin",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http_admin",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global"
|
||||
],
|
||||
"TaskName": "qbittorrent-vpn",
|
||||
"Weights": null
|
||||
},
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "sp",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "socks",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"ovpn-openpyn",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.242/32",
|
||||
"gocast_nat=tcp:1080:1080",
|
||||
"gocast_nat=udp:1080:1080"
|
||||
],
|
||||
"TaskName": "qbittorrent-vpn",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "custom/auth.toml",
|
||||
"EmbeddedTmpl": "[[roles]]\nname = \"qbittorrent\"\n# Define a list of routes with the syntax \"Http-Method /path\"\nroutes = [\"GET /v1/openvpn/status\", \"PUT /v1/openvpn/status\", \"PUT /v1/openvpn/status\", \"GET /v1/openvpn/portforwarded\", \"GET /v1/openvpn/settings\", \"GET /v1/dns/status\", \"PUT /v1/dns/status\", \"PUT /v1/dns/status\", \"GET /v1/updater/status\", \"PUT /v1/updater/status\", \"PUT /v1/updater/status\", \"GET /v1/publicip/ip\", \"GET /v1/version\", \"GET /v1/vpn/status\", \"PUT /v1/vpn/status\", \"GET /v1/vpn/settings\", \"PUT /v1/vpn/settings\"]\nauth = \"none\"\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"devices": [
|
||||
{
|
||||
"container_path": "/dev/net/tun",
|
||||
"host_path": "/dev/net/tun"
|
||||
}
|
||||
],
|
||||
"image": "serjs/go-socks5-proxy",
|
||||
"memory_hard_limit": 256.0,
|
||||
"network_mode": "container:qbittorrent-vpn-${NOMAD_ALLOC_ID}"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"REQUIRE_AUTH": "false"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "dante",
|
||||
"Resources": {
|
||||
"CPU": 64,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/Public/Downloads/news/qbittorrent:/downloads/",
|
||||
"/mnt/configs/qbittorrent:/config",
|
||||
"/mnt/Archive/seeding:/archiveseeding",
|
||||
"/mnt/odroid5:/odroid5"
|
||||
],
|
||||
"image": "linuxserver/qbittorrent:5.1.0",
|
||||
"memory_hard_limit": 2048.0,
|
||||
"network_mode": "container:qbittorrent-vpn-${NOMAD_ALLOC_ID}",
|
||||
"sysctl": [
|
||||
{
|
||||
"net.core.somaxconn": "4096"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"TZ": "EST5EDT",
|
||||
"WEBUI_PORT": "8080",
|
||||
"PGID": "1000",
|
||||
"PUID": "1000"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "qbittorrent",
|
||||
"Resources": {
|
||||
"CPU": 128,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 8,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 1200000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "qb",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "qbittorrent_80",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"ovpn-openpyn",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.244/32",
|
||||
"gocast_nat=tcp:8080:8080",
|
||||
"gocast_nat=udp:8080:8080"
|
||||
],
|
||||
"TaskName": "qbittorrent",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "noop",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/qbithealth.sh",
|
||||
"EmbeddedTmpl": " #!/bin/bash\n curl -sL http://127.0.0.1:8080/api/v2/transfer/info | grep connected || exit;\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "task_states",
|
||||
"HealthyDeadline": 120000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 90000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 90000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 21,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,342 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.unique.hostname}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "odroid.*"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.cpu.arch}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "arm64"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13572027,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "radarr",
|
||||
"JobModifyIndex": 13928632,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13928632,
|
||||
"Multiregion": null,
|
||||
"Name": "radarr",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1755286992506450506,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "radarr",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 7878,
|
||||
"Value": 7878
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 5,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"dns_servers": [
|
||||
"192.168.4.250",
|
||||
"192.168.4.1"
|
||||
],
|
||||
"image": "linuxserver/radarr:latest",
|
||||
"memory_hard_limit": "2048",
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"volumes": [
|
||||
"/mnt/Public/Downloads/news:/downloads",
|
||||
"/mnt/Public/Downloads/movies:/movies",
|
||||
"/mnt/Archive/Movies:/archive",
|
||||
"/mnt/Public/configs/radarr_pg:/config"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"PUID": "1000",
|
||||
"TZ": "EST5EDT",
|
||||
"PGID": "1000"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 10000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 15,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "radarr",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 5,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": {
|
||||
"Grace": 90000000000,
|
||||
"IgnoreWarnings": false,
|
||||
"Limit": 3
|
||||
},
|
||||
"Command": "/local/healthcheck.sh",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 300000000000,
|
||||
"Method": "",
|
||||
"Name": "check_up",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "radarr",
|
||||
"Timeout": 25000000000,
|
||||
"Type": "script"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "radarr",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"radarr",
|
||||
"tools"
|
||||
],
|
||||
"TaskName": "radarr",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/file.yml",
|
||||
"EmbeddedTmpl": "---\nkey: {{ key \"ovpn-client\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/config.xml",
|
||||
"EmbeddedTmpl": "<Config>\n<LogLevel>Info</LogLevel>\n<Port>7878</Port>\n<UrlBase/>\n<BindAddress>*</BindAddress>\n<SslPort>9898</SslPort>\n<EnableSsl>False</EnableSsl>\n<ApiKey>237c27f22504440385e5ee295fd65eb5</ApiKey>\n<AuthenticationMethod>Forms</AuthenticationMethod>\n<Branch>master</Branch>\n<SslCertPath/>\n<LaunchBrowser>True</LaunchBrowser>\n<SslCertPassword/>\n<UpdateMechanism>Docker</UpdateMechanism>\n<AnalyticsEnabled>False</AnalyticsEnabled>\n<InstanceName>Radarr</InstanceName>\n<AuthenticationRequired>DisabledForLocalAddresses</AuthenticationRequired>\n<PostgresUser>postgres</PostgresUser>\n<PostgresPassword>postgres</PostgresPassword>\n<PostgresPort>5432</PostgresPort>\n<PostgresHost>master.postgres.service.dc1.consul</PostgresHost>\n</Config>\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0755",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/healthcheck.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\n/usr/bin/curl -f \"http://localhost:${NOMAD_PORT_http}/api/v3/system/status?apikey=$(grep -Eo '<ApiKey>(.*)</ApiKey>' /config/config.xml | sed -e 's/<[^>]*>//g')\"\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0755",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 13,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,331 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.cpu.arch}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "amd64"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13572054,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "slskd",
|
||||
"JobModifyIndex": 14202950,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202963,
|
||||
"Multiregion": null,
|
||||
"Name": "slskd",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763244688965100324,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "slskd",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 5000,
|
||||
"Value": 5000
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "https",
|
||||
"To": 5001,
|
||||
"Value": 5001
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "guac",
|
||||
"To": 6080,
|
||||
"Value": 6080
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"cap_add": [
|
||||
"NET_ADMIN",
|
||||
"NET_BIND_SERVICE"
|
||||
],
|
||||
"volumes": [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
"/mnt/syncthing/mullvad:/vpn"
|
||||
],
|
||||
"devices": [
|
||||
{
|
||||
"host_path": "/dev/net/tun",
|
||||
"container_path": "/dev/net/tun"
|
||||
}
|
||||
],
|
||||
"image": "qmcgaw/gluetun",
|
||||
"memory_hard_limit": "1024",
|
||||
"ports": [
|
||||
"http",
|
||||
"https",
|
||||
"guac"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"HEALTH_VPN_DURATION_ADDITION": "600s",
|
||||
"SERVER_CITIES": "Montreal",
|
||||
"SHADOWSOCKS_PASSWORD": "farscape5",
|
||||
"WIREGUARD_ADDRESSES": "10.186.222.247/32",
|
||||
"VPN_TYPE": "wireguard",
|
||||
"HTTPPROXY": "on",
|
||||
"WEBUI_PORT": "8080",
|
||||
"HEALTH_TARGET_ADDRESS": "1.1.1.1",
|
||||
"HEALTH_VPN_DURATION_INITIAL": "3600s",
|
||||
"DOT_PROVIDERS": "cloudflare,google,quad9,quadrant",
|
||||
"HEALTH_SUCCESS_WAIT_DURATION": "30s",
|
||||
"SERVER_COUNTRIES": "Canada",
|
||||
"VPN_SERVICE_PROVIDER": "airvpn",
|
||||
"SHADOWSOCKS": "on",
|
||||
"WIREGUARD_PRIVATE_KEY": "SPpgnVCsOnz+zzorzTiOmvDF8GElgp27dSIeYAq43Vk=",
|
||||
"FIREWALL_VPN_INPUT_PORTS": "53304",
|
||||
"WIREGUARD_PRESHARED_KEY": "TBb2gU8pSTSG6lT4QYr7pzNWN7wZEn0yeG4VDTtuy50=",
|
||||
"DOT": "off"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "slskd-vpn",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 250,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "ghcr.io/fletchto99/nicotine-plus-docker:latest",
|
||||
"memory_hard_limit": "1024",
|
||||
"network_mode": "container:slskd-vpn-${NOMAD_ALLOC_ID}",
|
||||
"volumes": [
|
||||
"/mnt/Public/Downloads/news/slskd/config:/config",
|
||||
"/mnt/Public/Downloads/news/slskd/shared:/shared",
|
||||
"/mnt/Public/Downloads/news/slskd/downloads/:/downloads",
|
||||
"/mnt/Public/Downloads/news/slskd/incomplete/:/incomplete"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"PGID": "1000",
|
||||
"TZ": "Etc/UTC",
|
||||
"LISTENING_PORT": "53304",
|
||||
"PUID": "1000"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "nicotine",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 14,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,333 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.cpu.arch}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "amd64"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13572015,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "sonarr",
|
||||
"JobModifyIndex": 13991917,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202918,
|
||||
"Multiregion": null,
|
||||
"Name": "sonarr",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1757855044385846000,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "sonarr",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 8989,
|
||||
"Value": 8989
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "2048",
|
||||
"volumes": [
|
||||
"/mnt/Public/Downloads/news:/downloads",
|
||||
"/mnt/Public/Downloads/tv:/tv",
|
||||
"/mnt/Public/configs/sonarr_pg:/config"
|
||||
],
|
||||
"force_pull": false,
|
||||
"image": "linuxserver/sonarr:develop",
|
||||
"ports": [
|
||||
"http"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"TZ": "EST5EDT",
|
||||
"PUID": "1000",
|
||||
"PGID": "1000"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 10000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 15,
|
||||
"MaxFiles": 12
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "sonarr",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": {
|
||||
"Grace": 90000000000,
|
||||
"IgnoreWarnings": false,
|
||||
"Limit": 3
|
||||
},
|
||||
"Command": "/local/healthcheck.sh",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 60000000000,
|
||||
"Method": "",
|
||||
"Name": "check_up",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "sonarr",
|
||||
"Timeout": 5000000000,
|
||||
"Type": "script"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "sonarr",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"sonarr",
|
||||
"tools"
|
||||
],
|
||||
"TaskName": "sonarr",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/healthcheck.sh",
|
||||
"EmbeddedTmpl": "#!/bin/bash\n/usr/bin/curl -f \"http://localhost:${NOMAD_PORT_http}/api/v3/system/status?apikey=$(grep -Eo '<ApiKey>(.*)</ApiKey>' /config/config.xml | sed -e 's/<[^>]*>//g')\"\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0755",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/file.yml",
|
||||
"EmbeddedTmpl": "---\nkey: {{ key \"ovpn-client\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/config.xml",
|
||||
"EmbeddedTmpl": "<Config>\n<LogLevel>Info</LogLevel>\n<Port>8989</Port>\n<UrlBase>/sonarr</UrlBase>\n<BindAddress>*</BindAddress>\n<SslPort>9898</SslPort>\n<EnableSsl>False</EnableSsl>\n<ApiKey>1632787062fb47a9a6eb4c88e32b3ff3</ApiKey>\n<AuthenticationMethod>None</AuthenticationMethod>\n<Branch>develop</Branch>\n<LaunchBrowser>True</LaunchBrowser>\n<SslCertHash/>\n<UpdateMechanism>Docker</UpdateMechanism>\n<AnalyticsEnabled>False</AnalyticsEnabled>\n<UpdateScriptPath>/config/restart.sh</UpdateScriptPath>\n<InstanceName>Sonarr</InstanceName>\n<PostgresUser>postgres</PostgresUser>\n<PostgresPassword>postgres</PostgresPassword>\n<PostgresPort>5432</PostgresPort>\n<PostgresHost>master.postgres.service.dc1.consul</PostgresHost>\n</Config>\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0755",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 20,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,391 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13570367,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "traefik",
|
||||
"JobModifyIndex": 14202342,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202342,
|
||||
"Multiregion": null,
|
||||
"Name": "traefik",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": false,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1763227820495039263,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": null,
|
||||
"Name": "traefik",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "traefik",
|
||||
"To": 80,
|
||||
"Value": 80
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "traefikui",
|
||||
"To": 8080,
|
||||
"Value": 8090
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "traefikhttps",
|
||||
"To": 443,
|
||||
"Value": 443
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": null,
|
||||
"RestartPolicy": {
|
||||
"Attempts": 6,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"dns_servers": [
|
||||
"192.168.1.1",
|
||||
"192.168.1.250"
|
||||
],
|
||||
"ports": [
|
||||
"traefik",
|
||||
"traefikhttps",
|
||||
"traefikui"
|
||||
],
|
||||
"memory_hard_limit": 2048.0,
|
||||
"image": "traefik:2.9",
|
||||
"args": [
|
||||
"--configFile=/local/file.yml",
|
||||
"--accesslog=true"
|
||||
],
|
||||
"volumes": [
|
||||
"/var/run/docker.sock:/var/run/docker.sock",
|
||||
"/mnt/mnt/configs/letsencrypt:/acmecert/"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"DUCKDNS_TOKEN": "e4b5ca33-1f4d-494b-b06d-6dd4600df662",
|
||||
"TZ": "EST5EDT",
|
||||
"PUID": "1000",
|
||||
"PGID": "1000"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "traefik",
|
||||
"Resources": {
|
||||
"CPU": 256,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 6,
|
||||
"Delay": 10000000000,
|
||||
"Interval": 60000000000,
|
||||
"Mode": "delay",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "traefik",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "traefik",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"traefik",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.249/32",
|
||||
"gocast_nat=tcp:443:443",
|
||||
"gocast_nat=udp:443:443"
|
||||
],
|
||||
"TaskName": "traefik",
|
||||
"Weights": null
|
||||
},
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "traefik-ui",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "traefik",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"global",
|
||||
"traefik",
|
||||
"traefik.http.routers.dashboard.rule=Host(`traefik-ui.service.dc1.consul`)",
|
||||
"traefik.http.routers.dashboard.service=api@internal"
|
||||
],
|
||||
"TaskName": "traefik",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": [
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/file.yml",
|
||||
"EmbeddedTmpl": "http:\n serversTransports:\n insecureSkipVerify: true\n\nentryPoints:\n web:\n address: :80\n websecure:\n address: :443\n\nlog:\n level: DEBUG\n\nmetrics:\n prometheus:\n addRoutersLabels: true\n addServicesLabels: true\n\napi:\n dashboard: true\n insecure: true\n\nproviders:\n consulCatalog:\n exposedByDefault: true\n refreshInterval: 30s\n defaultRule: \"Host(`{{ .Name }}.service.dc1.consul`)\"\n endpoint:\n address: \"[[env \"attr.unique.network.ip-address\"]]:8500\"\n file:\n filename: /local/tls.yml\n\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "[[",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "]]",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/tls.yml",
|
||||
"EmbeddedTmpl": "tls:\n certificates:\n - certFile: /local/duckdns_fullchain.pem\n keyFile: /local/duckdns_privkey.pem\n - certFile: /local/dedyn_fullchain.pem\n keyFile: /local/dedyn_privkey.pem\n stores:\n default:\n defaultCertificate:\n certFile: /local/duckdns_fullchain.pem\n keyFile: /local/duckdns_privkey.pem\n\n",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "0644",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/duckdns_fullchain.pem",
|
||||
"EmbeddedTmpl": "{{ key \"letsconsul/*.fbleagh.duckdns.org/fullchain.cer\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "noop",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/duckdns_privkey.pem",
|
||||
"EmbeddedTmpl": "{{ key \"letsconsul/*.fbleagh.duckdns.org/*.fbleagh.duckdns.org.key\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "restart",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/dedyn_fullchain.pem",
|
||||
"EmbeddedTmpl": "{{ key \"letsconsul/*.fbleagh.dedyn.io/fullchain.cer\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
},
|
||||
{
|
||||
"ChangeMode": "noop",
|
||||
"ChangeScript": null,
|
||||
"ChangeSignal": "",
|
||||
"DestPath": "local/dedyn_privkey.pem",
|
||||
"EmbeddedTmpl": "{{ key \"letsconsul/*.fbleagh.dedyn.io/*.fbleagh.dedyn.io.key\" }}",
|
||||
"Envvars": false,
|
||||
"ErrMissingKey": false,
|
||||
"Gid": null,
|
||||
"LeftDelim": "{{",
|
||||
"Once": false,
|
||||
"Perms": "777",
|
||||
"RightDelim": "}}",
|
||||
"SourcePath": "",
|
||||
"Splay": 5000000000,
|
||||
"Uid": null,
|
||||
"VaultGrace": 0,
|
||||
"Wait": null
|
||||
}
|
||||
],
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "system",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 10000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 7,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,424 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 14152854,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "trilium",
|
||||
"JobModifyIndex": 14153433,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14153445,
|
||||
"Multiregion": null,
|
||||
"Name": "trilium",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1761948663361166597,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "trilium",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 8080,
|
||||
"Value": 6699
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/configs/trilium:/data"
|
||||
],
|
||||
"image": "litestream/litestream:latest",
|
||||
"args": [
|
||||
"restore",
|
||||
"-if-replica-exists",
|
||||
"-if-db-not-exists",
|
||||
"-o",
|
||||
"/alloc/tmp/trilium.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/trilium.db"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "restore",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/configs/trilium:/home/node/trilium-data/data",
|
||||
"/mnt/Public/configs/trilium/backup:/home/node/trilium-data/backup",
|
||||
"/mnt/Public/configs/trilium/config:/home/node/trilium-data/config"
|
||||
],
|
||||
"image": "triliumnext/trilium:stable",
|
||||
"memory_hard_limit": "2048",
|
||||
"ports": [
|
||||
"http"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"TRILIUM_DATA_DIR": "/home/node/trilium-data/data",
|
||||
"TRILIUM_BACKUP_DIR": "/home/node/trilium-data/backup",
|
||||
"TRILIUM_CONFIG_INI_PATH": "/home/node/trilium-data/config/config.ini"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "trilium",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"trilium\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "trilium",
|
||||
"Timeout": 2000000000,
|
||||
"Type": "tcp"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "trilium",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"trilium",
|
||||
"web",
|
||||
"urlprefix-/trilium",
|
||||
"tools",
|
||||
"traefik.http.routers.triliumlan.rule=Host(`trilium.service.dc1.consul`)",
|
||||
"traefik.http.routers.triliumwan.rule=Host(`tril.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.triliumwan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.triliumwan.tls=true"
|
||||
],
|
||||
"TaskName": "trilium",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/configs/trilium:/data"
|
||||
],
|
||||
"image": "litestream/litestream:latest",
|
||||
"args": [
|
||||
"replicate",
|
||||
"/alloc/tmp/trilium.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/trilium.db"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "litestream",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 300,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 14,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,542 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.kernel.name}",
|
||||
"Operand": "=",
|
||||
"RTarget": "linux"
|
||||
},
|
||||
{
|
||||
"LTarget": "${attr.cpu.arch}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "arm64"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13569506,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "vaultwarden",
|
||||
"JobModifyIndex": 13570343,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13991135,
|
||||
"Multiregion": null,
|
||||
"Name": "vaultwarden",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1738335274858544947,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "vaultwarden",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 80,
|
||||
"Value": 8081
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"image": "vaultwarden/server:1.32.7",
|
||||
"memory_hard_limit": 2048.0,
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/data"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"ADMIN_TOKEN": "VReYRX0RuSw3mxmGFG4+2ECY71l/wYmuD52NOWDur6e43z/inbUmJGUr5KU4wtjW",
|
||||
"DATABASE_URL": "postgresql://postgres:postgres@master.postgres.service.dc1.consul:5432/vaultwarden",
|
||||
"ENABLE_DB_WAL": "false"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "vaultwarden",
|
||||
"Resources": {
|
||||
"CPU": 100,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 128,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": [
|
||||
{
|
||||
"AddressMode": "",
|
||||
"Args": null,
|
||||
"Body": "",
|
||||
"CheckRestart": null,
|
||||
"Command": "",
|
||||
"Expose": false,
|
||||
"FailuresBeforeCritical": 0,
|
||||
"FailuresBeforeWarning": 0,
|
||||
"GRPCService": "",
|
||||
"GRPCUseTLS": false,
|
||||
"Header": null,
|
||||
"InitialStatus": "",
|
||||
"Interval": 10000000000,
|
||||
"Method": "",
|
||||
"Name": "service: \"vaultwarden\" check",
|
||||
"Notes": "",
|
||||
"OnUpdate": "require_healthy",
|
||||
"Path": "",
|
||||
"PortLabel": "",
|
||||
"Protocol": "",
|
||||
"SuccessBeforePassing": 0,
|
||||
"TLSServerName": "",
|
||||
"TLSSkipVerify": false,
|
||||
"TaskName": "vaultwarden",
|
||||
"Timeout": 2000000000,
|
||||
"Type": "tcp"
|
||||
}
|
||||
],
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": {
|
||||
"ALLOC": "${NOMAD_ALLOC_ID}"
|
||||
},
|
||||
"Name": "vaultwarden",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"vaultwarden",
|
||||
"web",
|
||||
"urlprefix-/vaultwarden",
|
||||
"backend",
|
||||
"traefik.http.routers.vaultwardenlan.rule=Host(`vaultwarden.service.dc1.consul`)",
|
||||
"traefik.http.routers.vaultwardenwan.rule=Host(`vault.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.vaultwardenwan-admin.rule=(Host(`vault.fbleagh.duckdns.org`) && PathPrefix(`/admin/`))",
|
||||
"traefik.http.routers.vaultwardenwan.tls=true",
|
||||
"traefik.http.middlewares.vaultwardenwan-admin-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.4.0/22",
|
||||
"traefik.http.routers.nginx-admin.middlewares=vaultwardenwan-admin-ipwhitelist",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.246/32",
|
||||
"gocast_nat=tcp:8081:8081",
|
||||
"gocast_nat=udp:8081:8081"
|
||||
],
|
||||
"TaskName": "vaultwarden",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-avz",
|
||||
"--exclude='logs'",
|
||||
"--exclude='/run/*.sock'",
|
||||
"/configbackup/",
|
||||
"/config/",
|
||||
"--delete-before"
|
||||
],
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"memory_hard_limit": 2048.0,
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "prestart",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "init",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"args": [
|
||||
"flock",
|
||||
"-x",
|
||||
"/locks/${NOMAD_GROUP_NAME}_rsync.lock",
|
||||
"rsync",
|
||||
"-av",
|
||||
"--exclude='logs'",
|
||||
"--exclude='/run/*.sock'",
|
||||
"/config/",
|
||||
"/configbackup/",
|
||||
"--remove-source-files"
|
||||
],
|
||||
"image": "ghcr.io/sstent/rsync",
|
||||
"memory_hard_limit": 2048.0,
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": null,
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststop",
|
||||
"Sidecar": false
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "finalsync",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
},
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": "2048",
|
||||
"volumes": [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup"
|
||||
],
|
||||
"args": [
|
||||
"client"
|
||||
],
|
||||
"image": "ghcr.io/sstent/rsync"
|
||||
},
|
||||
"Constraints": null,
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"CRON_TASK_1": "50 * * * * rsync -av --exclude='*.db' --exclude='*.db' --exclude='.*.db-litestream' --exclude='generations' /config/ /configbackup/;"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": {
|
||||
"Hook": "poststart",
|
||||
"Sidecar": true
|
||||
},
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "sync",
|
||||
"Resources": {
|
||||
"CPU": 20,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 20,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 5,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,242 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": null,
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13721718,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "wallabag",
|
||||
"JobModifyIndex": 13721718,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 13990957,
|
||||
"Multiregion": null,
|
||||
"Name": "wallabag",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1745512053324129511,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "wallabag",
|
||||
"Networks": [
|
||||
{
|
||||
"DynamicPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "http",
|
||||
"To": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"memory_hard_limit": 2048.0,
|
||||
"ports": [
|
||||
"http"
|
||||
],
|
||||
"image": "wallabag/wallabag:latest"
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"SYMFONY__ENV__DATABASE_NAME": "wallabag",
|
||||
"SYMFONY__ENV__DOMAIN_NAME": "https://wallabag.fbleagh.duckdns.org",
|
||||
"SYMFONY__ENV__DATABASE_PASSWORD": "wallabag",
|
||||
"SYMFONY__ENV__MAILER_DSN": "gmail+smtp://stuart.stent@gmail.com:lsrhrzfembksmvgc@default",
|
||||
"SYMFONY__ENV__FROM_EMAIL": "wallabag@wallabag.fbleagh.duckdns.org",
|
||||
"SYMFONY__ENV__DATABASE_DRIVER": "pdo_pgsql",
|
||||
"POSTGRES_PASSWORD": "postgres",
|
||||
"SYMFONY__ENV__DATABASE_PORT": "5432",
|
||||
"POPULATE_DATABASE": "False",
|
||||
"SYMFONY__ENV__DATABASE_HOST": "master.postgres.service.dc1.consul",
|
||||
"POSTGRES_USER": "postgres",
|
||||
"SYMFONY__ENV__DATABASE_USER": "wallabag"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "wallabag",
|
||||
"Resources": {
|
||||
"CPU": 500,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 256,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "wallabag",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "http",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": [
|
||||
"wallabag",
|
||||
"tools",
|
||||
"traefik.http.routers.wallabaglan.rule=Host(`wallabag.service.dc1.consul`)",
|
||||
"traefik.http.routers.wallabagwan.rule=Host(`wallabag.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.wallabagwan.tls=true",
|
||||
"traefik.http.middlewares.vaultwardenwan-admin-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.0/24",
|
||||
"traefik.http.routers.nginx-admin.middlewares=vaultwardenwan-admin-ipwhitelist"
|
||||
],
|
||||
"TaskName": "wallabag",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 0,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,259 +0,0 @@
|
||||
{
|
||||
"Affinities": null,
|
||||
"AllAtOnce": false,
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.cpu.arch}",
|
||||
"Operand": "regexp",
|
||||
"RTarget": "amd64"
|
||||
}
|
||||
],
|
||||
"ConsulNamespace": "",
|
||||
"CreateIndex": 13571990,
|
||||
"Datacenters": [
|
||||
"dc1"
|
||||
],
|
||||
"DispatchIdempotencyToken": "",
|
||||
"Dispatched": false,
|
||||
"ID": "wireguard",
|
||||
"JobModifyIndex": 13892530,
|
||||
"Meta": null,
|
||||
"ModifyIndex": 14202927,
|
||||
"Multiregion": null,
|
||||
"Name": "wireguard",
|
||||
"Namespace": "default",
|
||||
"NodePool": "default",
|
||||
"NomadTokenID": "",
|
||||
"ParameterizedJob": null,
|
||||
"ParentID": "",
|
||||
"Payload": null,
|
||||
"Periodic": null,
|
||||
"Priority": 50,
|
||||
"Region": "global",
|
||||
"Spreads": null,
|
||||
"Stable": true,
|
||||
"Status": "running",
|
||||
"StatusDescription": "",
|
||||
"Stop": false,
|
||||
"SubmitTime": 1753800396765131865,
|
||||
"TaskGroups": [
|
||||
{
|
||||
"Affinities": null,
|
||||
"Constraints": null,
|
||||
"Consul": {
|
||||
"Cluster": "default",
|
||||
"Namespace": "",
|
||||
"Partition": ""
|
||||
},
|
||||
"Count": 1,
|
||||
"Disconnect": null,
|
||||
"EphemeralDisk": {
|
||||
"Migrate": false,
|
||||
"SizeMB": 300,
|
||||
"Sticky": false
|
||||
},
|
||||
"MaxClientDisconnect": null,
|
||||
"Meta": null,
|
||||
"Migrate": {
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000
|
||||
},
|
||||
"Name": "wireguard",
|
||||
"Networks": [
|
||||
{
|
||||
"ReservedPorts": [
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "vpn",
|
||||
"To": 51820,
|
||||
"Value": 51820
|
||||
},
|
||||
{
|
||||
"HostNetwork": "default",
|
||||
"Label": "vpn_ui",
|
||||
"To": 51821,
|
||||
"Value": 51821
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreventRescheduleOnLost": false,
|
||||
"ReschedulePolicy": {
|
||||
"Attempts": 0,
|
||||
"Delay": 30000000000,
|
||||
"DelayFunction": "exponential",
|
||||
"Interval": 0,
|
||||
"MaxDelay": 3600000000000,
|
||||
"Unlimited": true
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"Scaling": null,
|
||||
"Services": null,
|
||||
"ShutdownDelay": null,
|
||||
"Spreads": null,
|
||||
"StopAfterClientDisconnect": null,
|
||||
"Tasks": [
|
||||
{
|
||||
"Actions": null,
|
||||
"Affinities": null,
|
||||
"Artifacts": null,
|
||||
"CSIPluginConfig": null,
|
||||
"Config": {
|
||||
"volumes": [
|
||||
"/mnt/Public/config/wireguard:/etc/wireguard"
|
||||
],
|
||||
"cap_add": [
|
||||
"NET_ADMIN",
|
||||
"SYS_MODULE"
|
||||
],
|
||||
"sysctl": [
|
||||
{
|
||||
"net.ipv4.conf.all.src_valid_mark": "1",
|
||||
"net.ipv4.ip_forward": "1"
|
||||
}
|
||||
],
|
||||
"image": "ghcr.io/wg-easy/wg-easy",
|
||||
"ports": [
|
||||
"vpn",
|
||||
"vpn_ui"
|
||||
]
|
||||
},
|
||||
"Constraints": [
|
||||
{
|
||||
"LTarget": "${attr.consul.version}",
|
||||
"Operand": "semver",
|
||||
"RTarget": ">= 1.8.0"
|
||||
}
|
||||
],
|
||||
"Consul": null,
|
||||
"DispatchPayload": null,
|
||||
"Driver": "docker",
|
||||
"Env": {
|
||||
"UI_CHART_TYPE": "1",
|
||||
"WG_PORT": "51820",
|
||||
"UI_TRAFFIC_STATS": "true",
|
||||
"WEBUI_HOST": "0.0.0.0",
|
||||
"PGID": "1000",
|
||||
"WG_ALLOWED_IPS": "0.0.0.0/0",
|
||||
"PORT": "51821",
|
||||
"WG_DEFAULT_DNS": "192.168.4.36, 8.8.8.8",
|
||||
"PUID": "1000",
|
||||
"WG_HOST": "wireguard.fbleagh.duckdns.org",
|
||||
"TZ": "EST5EDT"
|
||||
},
|
||||
"Identities": null,
|
||||
"Identity": {
|
||||
"Audience": [
|
||||
"nomadproject.io"
|
||||
],
|
||||
"ChangeMode": "",
|
||||
"ChangeSignal": "",
|
||||
"Env": false,
|
||||
"File": false,
|
||||
"Filepath": "",
|
||||
"Name": "default",
|
||||
"ServiceName": "",
|
||||
"TTL": 0
|
||||
},
|
||||
"KillSignal": "",
|
||||
"KillTimeout": 5000000000,
|
||||
"Kind": "",
|
||||
"Leader": false,
|
||||
"Lifecycle": null,
|
||||
"LogConfig": {
|
||||
"Disabled": false,
|
||||
"MaxFileSizeMB": 10,
|
||||
"MaxFiles": 10
|
||||
},
|
||||
"Meta": null,
|
||||
"Name": "wireguard",
|
||||
"Resources": {
|
||||
"CPU": 50,
|
||||
"Cores": 0,
|
||||
"Devices": null,
|
||||
"DiskMB": 0,
|
||||
"IOPS": 0,
|
||||
"MemoryMB": 100,
|
||||
"MemoryMaxMB": 0,
|
||||
"NUMA": null,
|
||||
"Networks": null,
|
||||
"SecretsMB": 0
|
||||
},
|
||||
"RestartPolicy": {
|
||||
"Attempts": 2,
|
||||
"Delay": 15000000000,
|
||||
"Interval": 1800000000000,
|
||||
"Mode": "fail",
|
||||
"RenderTemplates": false
|
||||
},
|
||||
"ScalingPolicies": null,
|
||||
"Schedule": null,
|
||||
"Services": [
|
||||
{
|
||||
"Address": "",
|
||||
"AddressMode": "auto",
|
||||
"CanaryMeta": null,
|
||||
"CanaryTags": null,
|
||||
"Checks": null,
|
||||
"Cluster": "default",
|
||||
"Connect": null,
|
||||
"EnableTagOverride": false,
|
||||
"Identity": null,
|
||||
"Meta": null,
|
||||
"Name": "wireguard",
|
||||
"Namespace": "default",
|
||||
"OnUpdate": "require_healthy",
|
||||
"PortLabel": "vpn",
|
||||
"Provider": "consul",
|
||||
"TaggedAddresses": null,
|
||||
"Tags": null,
|
||||
"TaskName": "wireguard",
|
||||
"Weights": null
|
||||
}
|
||||
],
|
||||
"ShutdownDelay": 0,
|
||||
"Templates": null,
|
||||
"User": "",
|
||||
"Vault": null,
|
||||
"VolumeMounts": null
|
||||
}
|
||||
],
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "checks",
|
||||
"HealthyDeadline": 300000000000,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 10000000000,
|
||||
"ProgressDeadline": 600000000000,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"Volumes": null
|
||||
}
|
||||
],
|
||||
"Type": "service",
|
||||
"UI": null,
|
||||
"Update": {
|
||||
"AutoPromote": false,
|
||||
"AutoRevert": false,
|
||||
"Canary": 0,
|
||||
"HealthCheck": "",
|
||||
"HealthyDeadline": 0,
|
||||
"MaxParallel": 1,
|
||||
"MinHealthyTime": 0,
|
||||
"ProgressDeadline": 0,
|
||||
"Stagger": 30000000000
|
||||
},
|
||||
"VaultNamespace": "",
|
||||
"Version": 6,
|
||||
"VersionTag": null
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "acme",
|
||||
"JobModifyIndex": 13570366,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"acme\" {\n datacenters = [\"dc1\"]\n type = \"batch\"\n\n periodic {\n cron = \"@weekly\"\n prohibit_overlap = true\n }\n\n group \"acme\" {\n restart {\n attempts = 1\n delay = \"30s\"\n } \n task \"acme\" {\n driver = \"docker\"\n\n config {\n image = \"neilpang/acme.sh\"\n entrypoint = [\"/local/acme_wrapper.sh\"]\n volumes = [\n \"/mnt/configs/${NOMAD_GROUP_NAME}:/acme.sh\",\n ]\n }\n env {\n DEDYN_TOKEN=\"JPwQpUiWGkKHSkmGEC4YAeGiGFki\" \n DuckDNS_Token=\"e4b5ca33-1f4d-494b-b06d-6dd4600df662\" \n CONSUL_URL=\"${attr.unique.network.ip-address}\"\n\n }\n\n template {\n change_mode = \"noop\"\n data = \"{{ key \\\"scripts/acme.sh\\\" }}\"\n destination = \"local/acme_wrapper.sh\"\n perms = 0777\n }\n\n\n\n resources {\n cpu = 256\n memory = 64\n }\n }\n\n task \"init\" {\n driver = \"docker\"\n\n lifecycle {\n hook = \"prestart\"\n sidecar = false\n }\n\n config {\n image = \"ghcr.io/sstent/rsync\"\n memory_hard_limit = 2048\n\n volumes = [\n \"/mnt/configs/${NOMAD_GROUP_NAME}:/config\",\n \"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup\",\n \"/mnt/Public/config/locks:/locks\",\n ]\n\n args = [\"flock\", \"-x\", \"/locks/${NOMAD_GROUP_NAME}_rsync.lock\", \"rsync\", \"-avz\",\"--delete-excluded\",\"--exclude=renewal\",\"--exclude='live'\",\"--exclude='archive'\",\"--exclude='keys'\",\"--exclude='csr'\", \"/configbackup/\", \"/config/\", \"--delete-before\"]\n }\n resources {\n cpu = 20 # 500 MHz\n memory = 20 # 128MB\n }\n } #end init task\n\n task \"finalsync\" {\n driver = \"docker\"\n\n lifecycle {\n hook = \"poststop\"\n }\n\n config {\n // image = \"pebalk/rsync\"\n image = \"ghcr.io/sstent/rsync\"\n memory_hard_limit = 2048\n\n volumes = [\n \"/mnt/configs/${NOMAD_GROUP_NAME}:/config\",\n \"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup\",\n \"/mnt/Public/config/locks:/locks\",\n ]\n\n args = [\"flock\", \"-x\", \"/locks/${NOMAD_GROUP_NAME}_rsync.lock\", \"rsync\", \"-av\",\"--delete-excluded\",\"--exclude=renewal\",\"--exclude='live'\",\"--exclude='archive'\",\"--exclude='keys'\",\"--exclude='csr'\", \"/config/\", \"/configbackup/\",\"--remove-source-files\"]\n }\n resources {\n cpu = 20 # 500 MHz\n memory = 20 # 128MB\n }\n } #end finalsync task\n }\n}",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 0
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "auth",
|
||||
"JobModifyIndex": 13770263,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"auth\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n constraint {\n attribute = \"${attr.kernel.name}\"\n value = \"linux\"\n }\n\n constraint {\n attribute = \"${attr.unique.hostname}\"\n operator = \"regexp\"\n value = \"odroid.*\"\n }\n group \"auth\" {\n count = 1\n\n task \"fwdauth\" {\n driver = \"docker\"\n\n config {\n // image = \"npawelek/traefik-forward-auth\"\n image = \"thomseddon/traefik-forward-auth:2-arm\"\n\n port_map {\n auth = 4181\n }\n\n volumes = [\n \"/etc/localtime:/etc/localtime:ro\",\n ]\n }\n\n env {\n PROVIDERS_GOOGLE_CLIENT_ID = \"807888907647-uog95jmiolsuh6ql1t8jm53l1jvuajck.apps.googleusercontent.com\"\n PROVIDERS_GOOGLE_CLIENT_SECRET = \"B8bDri5mFvGv-Ghzbt8fLj4W\"\n SECRET = \"ladskfdjmqwermnnbasfnmldas\"\n CONFIG = \"/local/config.ini\"\n LIFETIME = \"31536000\"\n WHITELIST = \"stuart.stent@gmail.com,stephen.bunt@gmail.com\"\n\n // AUTH_HOST = \"fwdauth.fbleagh.duckdns.org\"\n COOKIE_DOMAIN = \"fbleagh.duckdns.org\"\n }\n\n template {\n data = \"{{ key \\\"Dex\\\" }}\"\n destination = \"local/config.ini\"\n change_mode = \"restart\"\n }\n\n resources {\n cpu = 100 # 100 MHz\n memory = 64 # 128 MB\n\n network {\n port \"auth\" {\n static = 4181\n }\n }\n }\n\n service {\n name = \"dex\"\n\n tags = [\n \"fwdauth\",\n \"web\",\n \"traefik.http.routers.dex.rule=Host(`fwdauth.fbleagh.duckdns.org`,`fwdauth.fbleagh.dedyn.io`)\",\n \"traefik.http.routers.dex.entrypoints=websecure\",\n \"traefik.http.routers.dex.tls=true\",\n // \"traefik.http.routers.dex.tls.certresolver=myresolver\",\n \"traefik.http.middlewares.dex.forwardauth.address=http://dex.service.dc1.consul:4181\",\n \"traefik.http.middlewares.dex.forwardauth.trustForwardHeader=true\",\n \"traefik.http.middlewares.dex.forwardauth.authResponseHeaders=X-Forwarded-User\",\n \"traefik.http.routers.auth.middlewares=dex\",\n \"traefik.http.routers.traefik-forward-auth.middlewares=dex\",\n ]\n\n port = \"auth\"\n\n check {\n type = \"tcp\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n } #end Dex\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 2
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "democratic-csi-local",
|
||||
"JobModifyIndex": 13925215,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"democratic-csi-local\" {\n datacenters = [\"dc1\"]\n type = \"system\"\n\n group \"controller\" {\n count = 1\n\n task \"controller\" {\n driver = \"docker\"\n\n config {\n image = \"democraticcsi/democratic-csi:latest\"\n \n args = [\n \"--csi-version=1.5.0\",\n \"--csi-name=org.democratic-csi.local-hostpath\", \n \"--driver-config-file=/config/driver-config-file.yaml\",\n \"--log-level=info\",\n \"--csi-mode=controller\",\n \"--server-socket=/csi/csi.sock\",\n ]\n\n volumes = [\n \"local/config:/config:ro\"\n ]\n }\n\n template {\n data = <<-EOH\ndriver: local-hostpath\ninstance_id: {{ env \"node.unique.id\" }}\nlocal-hostpath:\n shareBasePath: \"/tmp/democratic-csi-local-hostpath\"\n controllerBasePath: \"/tmp/democratic-csi-local-hostpath\"\n dirPermissionsMode: \"0755\"\n dirPermissionsUser: 0\n dirPermissionsGroup: 0\nEOH\n destination = \"local/config/driver-config-file.yaml\"\n }\n\n csi_plugin {\n id = \"org.democratic-csi.local-hostpath\"\n type = \"controller\"\n mount_dir = \"/csi\"\n }\n\n resources {\n cpu = 256\n memory = 128\n }\n }\n }\n\n group \"nodes\" {\n task \"node\" {\n driver = \"docker\"\n\n config {\n image = \"democraticcsi/democratic-csi:latest\"\n \n args = [\n \"--csi-version=1.5.0\",\n \"--csi-name=org.democratic-csi.local-hostpath\",\n \"--driver-config-file=/config/driver-config-file.yaml\", \n \"--log-level=info\",\n \"--csi-mode=node\",\n \"--server-socket=/csi/csi.sock\",\n ]\n\n privileged = true\n \n volumes = [\n \"local/config:/config:ro\",\n \"/tmp/democratic-csi-local-hostpath:/tmp/democratic-csi-local-hostpath:rshared\"\n ]\n }\n\n template {\n data = <<-EOH\ndriver: local-hostpath\ninstance_id: {{ env \"node.unique.id\" }}\nlocal-hostpath:\n shareBasePath: \"/tmp/democratic-csi-local-hostpath\"\n controllerBasePath: \"/tmp/democratic-csi-local-hostpath\"\n dirPermissionsMode: \"0755\"\n dirPermissionsUser: 0\n dirPermissionsGroup: 0\nEOH\n destination = \"local/config/driver-config-file.yaml\"\n }\n\n csi_plugin {\n id = \"org.democratic-csi.local-hostpath\"\n type = \"node\"\n mount_dir = \"/csi\"\n }\n\n resources {\n cpu = 256\n memory = 128\n }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 1
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "foodplanner",
|
||||
"JobModifyIndex": 14064853,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"foodplanner\" {\n datacenters = [\"dc1\"]\n\n type = \"service\"\n\n group \"app\" {\n count = 1\n\n network {\n port \"http\" {\n to = 8999\n }\n }\n\n service {\n name = \"foodplanner\"\n port = \"http\"\n\n check {\n type = \"http\"\n path = \"/\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # Prestart restore task\n task \"restore\" {\n driver = \"docker\"\n lifecycle {\n hook = \"prestart\"\n sidecar = false\n }\n config {\n # image = \"litestream/litestream:latest\"\n image = \"litestream/litestream:0.3\"\n args = [\n \"restore\",\n # \"-if-replica-exists\",\n #\"-if-db-not-exists\",\n \"-o\", \"/alloc/tmp/meal_planner.db\",\n \"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db\"\n ]\n volumes = [\n \"/opt/nomad/data:/data\"\n ]\n }\n }\n\n task \"app\" {\n driver = \"docker\"\n\n config {\n image = \"ghcr.io/sstent/foodplanner:main\"\n ports = [\"http\"]\n\n # Mount the SQLite database file to persist data\n # Adjust the source path as needed for your environment\n volumes = [\n \"/mnt/Public/configs/FoodPlanner_backups:/app/backups/\",\n ]\n }\n env {\n DATABASE_PATH = \"/alloc/tmp\"\n DATABASE_URL = \"sqlite:////alloc/tmp/meal_planner.db\"\n }\n resources {\n cpu = 500\n memory = 1024\n }\n\n # Restart policy\n restart {\n attempts = 3\n interval = \"10m\"\n delay = \"15s\"\n mode = \"fail\"\n }\n }\n\n # Litestream sidecar for continuous replication\n task \"litestream\" {\n driver = \"docker\"\n lifecycle {\n hook = \"poststart\" # runs after main task starts\n sidecar = true\n }\n config {\n # image = \"litestream/litestream:0.5.0-test.10\"\n image = \"litestream/litestream:0.3\"\n args = [\n \"replicate\",\n \"/alloc/tmp/meal_planner.db\",\n \"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db\"\n ]\n }\n }\n }\n}",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 0
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "gonic",
|
||||
"JobModifyIndex": 13923644,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"gonic\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n\n\n\n group \"gonic\" {\n count = 1\n task \"gonic\" {\n driver = \"docker\"\n config {\n image = \"sentriz/gonic\"\n port_map {\n http = 80\n }\n volumes = [\n \"/mnt/configs/gonic/data:/data\",\n \"/mnt/configs/gonic/cache:/cache\",\n \"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro\",\n \"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro\",\n \"/mnt/Public/Downloads/podcasts:/podcasts\",\n \"/mnt/Public/Downloads/musicplaylists:/musicplaylists\",\n\n ]\n }\n env{\n GONIC_SCAN_INTERVAL = \"120\"\n GONIC_MUSIC_PATH = \"/music\"\n GONIC_PODCAST_PATH = \"/podcasts\"\n GONIC_PLAYLISTS_PATH = \"/musicplaylists\"\n }\n resources {\n cpu = 100 # 100 MHz\n memory = 256 # 128 MB\n network {\n port \"http\" {\n static = \"4747\"\n }\n }\n }\n service {\n name = \"gonic\"\n tags = [ \n \"gonic\",\n \"web\",\n \"urlprefix-/gonic\",\n \"backend\",\n \"traefik.http.routers.goniclan.rule=Host(`gonic.service.dc1.consul`)\",\n \"traefik.http.routers.gonicwan.rule=Host(`mg.fbleagh.duckdns.org`)\",\n \"traefik.http.routers.gonicwan.tls=true\",\n \"traefik.http.routers.gonicwan.tls.certresolver=myresolver\"\n \n ]\n // \"traefik.http.middlewares.gonic_auth.basicauth.users=admin:$2y$05$cJGONoS0BFTeBUXqmETikeI14QhLDKIDkYuPdA1umIOC129grVMAm\",\n port = \"http\"\n meta {\n ALLOC = \"${NOMAD_ALLOC_ID}\"\n }\n check {\n type = \"tcp\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n } #end gonic\n\n task \"init-manual\" {\n driver = \"docker\"\n lifecycle {\n hook = \"prestart\"\n sidecar = false\n }\n config {\n memory_hard_limit = \"2048\"\n\n image = \"ghcr.io/sstent/rsync\"\n volumes = [\n \"/mnt/configs/${NOMAD_GROUP_NAME}:/config\",\n \"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup\",\n \"/mnt/Public/config/locks:/locks\" \n ]\n\n args = [\"flock\", \"-x\",\"/locks/${NOMAD_GROUP_NAME}_rsync.lock\",\"rsync\",\"-av\",\"--exclude=Backups\",\"/configbackup/\",\"/config/\",\"--delete-before\"]\n }\n resources {\n cpu = 20 # 500 MHz\n memory = 20 # 128MB\n }\n }\n\n\n task \"finalsync-manual\" {\n driver = \"docker\"\n lifecycle {\n hook = \"poststop\"\n }\n config {\n memory_hard_limit = \"2048\"\n\n image = \"ghcr.io/sstent/rsync\"\n volumes = [\n \"/mnt/configs/${NOMAD_GROUP_NAME}:/config\",\n \"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup\",\n \"/mnt/Public/config/locks:/locks\" \n ]\n\n args = [\"flock\", \"-x\",\"/locks/${NOMAD_GROUP_NAME}_rsync.lock\",\"rsync\",\"-av\",\"/config/\",\"/configbackup/\"]\n }\n resources {\n cpu = 20 # 500 MHz\n memory = 20 # 128MB\n }\n }\n\n task \"db-sync\" {\n driver = \"docker\"\n lifecycle {\n hook = \"poststart\"\n sidecar = true\n }\n config {\n memory_hard_limit = \"2048\"\n\n image = \"ghcr.io/sstent/rsync\"\n volumes = [\n \"/mnt/configs/${NOMAD_GROUP_NAME}:/config\",\n \"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup\", \n ]\n \n // args = [\"/usr/local/bin/litestream\", \"replicate\", \"-config\",\"/local/litestream.yml\"]\n }\n resources {\n cpu = 20 # 500 MHz\n memory = 20 # 128MB\n }\n template {\n data = <<EOH\ndbs:\n - path: /data/gonic.db\n replicas:\n - path: /configbackup\n EOH\n\n destination = \"local/litestream.yml\"\n }\n\n } #####\n\n\n }\n}",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 0
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "immich",
|
||||
"JobModifyIndex": 14198769,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"immich\" {\n datacenters = [\"dc1\"] # Specify your datacenter\n type = \"service\"\n\n group \"immich\" {\n count = 1\n\n task \"immich\" {\n driver = \"docker\"\n\n config {\n image = \"ghcr.io/imagegenius/immich:2.2.3-noml\"\n memory_hard_limit = \"2048\"\n ports = [\"http\"]\n volumes = [\n \"/mnt/Public/configs/Immich:/config\",\n \"/mnt/Public/Immich/Photos:/photos\",\n \"/mnt/Public/Immich/libraries:/libraries\" # optional\n ]\n }\n\n env {\n PUID = \"1000\"\n PGID = \"1000\"\n TZ = \"Etc/UTC\"\n DB_HOSTNAME = \"master.postgres.service.dc1.consul\"\n DB_USERNAME = \"postgres\"\n DB_PASSWORD = \"postgres\"\n DB_DATABASE_NAME = \"immich\"\n DB_PORT = \"5432\" # optional\n REDIS_HOSTNAME = \"redis.service.dc1.consul\"\n REDIS_PORT = \"6379\" # optional\n REDIS_PASSWORD = \"\" # optional\n MACHINE_LEARNING_HOST = \"0.0.0.0\" # optional\n MACHINE_LEARNING_PORT = \"3003\" # optional\n MACHINE_LEARNING_WORKERS = \"1\" # optional\n MACHINE_LEARNING_WORKER_TIMEOUT = \"120\" # optional\n DB_VECTOR_EXTENSION= \"pgvector\"\n }\n service {\n name = \"${TASKGROUP}\"\n tags = [\"immich\", \"tools\",\n \"traefik.http.routers.immichlan.rule=Host(`immich.service.dc1.consul`)\",\n \"traefik.http.routers.immichwan.rule=Host(`immich.fbleagh.duckdns.org`)\",\n \"traefik.http.routers.immichwan.tls=true\",\n ]\n port = \"http\"\n\n }\n resources {\n cpu = 500\n memory = 512\n }\n }\n\n network {\n port \"http\" {\n static = 8088\n to = 8080\n }\n }\n\n restart {\n attempts = 2\n interval = \"5m\"\n delay = \"30s\"\n mode = \"delay\"\n }\n }\n\n# group \"immichpg\" {\n# count = 1\n\n# task \"immichpg\" {\n# driver = \"docker\"\n\n# config {\n# image = \"tensorchord/pgvecto-rs:pg14-v0.2.0\"\n# ports = [\"pg\"]\n# }\n# env {\n# POSTGRES_USER=\"postgres\"\n# POSTGRES_PASSWORD = \"postgres\"\n# POSTGRES_DB = \"immich\"\n# }\n\n# service {\n# name = \"${TASKGROUP}\"\n# tags = [\"immich\", \"tools\"]\n# port = \"pg\" \n\n# }\n# resources {\n# cpu = 500\n# memory = 500\n# }\n# }\n\n# network {\n# port \"pg\" {\n# static = 5433\n# to = 5432\n# }\n# }\n\n# restart {\n# attempts = 2\n# interval = \"5m\"\n# delay = \"30s\"\n# mode = \"delay\"\n# }\n\n\n# }\n\n group \"redis\" {\n count = 1\n\n task \"redis\" {\n driver = \"docker\"\n\n config {\n image = \"redis\"\n ports = [\"redis\"]\n }\n service {\n name = \"${TASKGROUP}\"\n tags = [\"wallabag\", \"tools\"]\n port = \"redis\" \n\n }\n resources {\n cpu = 250\n memory = 256\n }\n }\n\n network {\n port \"redis\" {\n static = 6379\n }\n }\n\n restart {\n attempts = 2\n interval = \"5m\"\n delay = \"30s\"\n mode = \"delay\"\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 15
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "minihass",
|
||||
"JobModifyIndex": 14013055,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"minihass\" {\n datacenters = [\"dc1\"]\n\n group \"smart-home\" {\n network {\n mode = \"host\"\n port \"http\" {\n to = 5000\n }\n }\n\n service {\n name = \"minihass\"\n port = \"http\"\n tags = [\n \"traefik.http.routers.minihasslan.rule=Host(`minihass.service.dc1.consul`)\",\n \"traefik.http.routers.minihasswan.rule=Host(`mh.fbleagh.duckdns.org`)\",\n \"traefik.http.routers.minihasswan.middlewares=dex@consulcatalog\",\n \"traefik.http.routers.minihasswan.tls=true\",\n ]\n check {\n type = \"http\"\n path = \"/health\"\n interval = \"30s\"\n timeout = \"7s\"\n }\n }\n\n task \"app\" {\n driver = \"docker\"\n\n config {\n image = \"ghcr.io/sstent/minihass\"\n ports = [\"http\"]\n }\n\n env {\n CONSUL_HOST = \"consul.service.dc1.consul\"\n CONSUL_PORT = \"8500\"\n }\n\n resources {\n cpu = 500\n memory = 256\n }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 3
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "navidrome",
|
||||
"JobModifyIndex": 14171074,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"navidrome\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n\n constraint {\n attribute = \"${attr.unique.hostname}\"\n operator = \"regexp\"\n value = \"odroid.*\"\n }\n\n group \"navidrome\" {\n count = 1\n\n # Prestart restore task\n task \"restore\" {\n driver = \"docker\"\n lifecycle {\n hook = \"prestart\"\n sidecar = false\n }\n config {\n image = \"litestream/litestream:latest\"\n args = [\n \"restore\",\n \"-if-replica-exists\",\n \"-if-db-not-exists\",\n \"-o\", \"/alloc/tmp/navidrome.db\",\n \"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db\"\n\n ]\n volumes = [\n \"/mnt/configs/navidrome:/data\"\n ]\n }\n }\n\n # Main Navidrome task\n task \"navidrome\" {\n driver = \"docker\"\n config {\n image = \"ghcr.io/navidrome/navidrome:latest\"\n memory_hard_limit = \"2048\"\n ports = [\"http\"]\n volumes = [\n \"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro\",\n \"/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro\",\n \"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro\",\n \"/mnt/configs/navidrome:/data\"\n \n ]\n }\n env {\n ND_DATAFOLDER = \"/alloc/tmp/\"\n ND_CACHEFOLDER = \"./data/cache\"\n ND_SCANSCHEDULE = \"32 8-20 * * *\"\n ND_LOGLEVEL = \"debug\"\n ND_REVERSEPROXYWHITELIST = \"0.0.0.0/0\"\n ND_REVERSEPROXYUSERHEADER = \"X-Forwarded-User\"\n ND_SCANNER_GROUPALBUMRELEASES = \"False\"\n ND_BACKUP_PATH = \"/data\"\n ND_BACKUP_SCHEDULE = \"0 0 * * *\"\n ND_BACKUP_COUNT = \"7\"\n }\n resources {\n cpu = 100\n memory = 128\n }\n service {\n name = \"navidrome\"\n tags = [\n \"navidrome\",\n \"web\",\n \"urlprefix-/navidrome\",\n \"tools\",\n \"traefik.http.routers.navidromelan.rule=Host(`navidrome.service.dc1.consul`)\",\n \"traefik.http.routers.navidromewan.rule=Host(`fbleagh-m.ignorelist.com`)\",\n \"traefik.http.routers.navidromewan.rule=Host(`m.fbleagh.duckdns.org`,`m.fbleagh.dedyn.io`)\",\n \"traefik.http.routers.navidromewan.middlewares=dex@consulcatalog\",\n \"traefik.http.routers.navidromewan.tls=true\",\n ]\n port = \"http\"\n check {\n type = \"tcp\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n }\n\n # Litestream sidecar for continuous replication\n task \"litestream\" {\n driver = \"docker\"\n lifecycle {\n hook = \"poststart\" # runs after main task starts\n sidecar = true\n }\n config {\n image = \"litestream/litestream:latest\"\n args = [\n \"replicate\",\n \"/alloc/tmp/navidrome.db\",\n \"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db\"\n ]\n volumes = [\n \"/mnt/configs/navidrome:/data\"\n ]\n }\n }\n\n network {\n port \"http\" {\n static = 4533\n to = 4533\n }\n }\n }\n}\n\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 22
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "nginx",
|
||||
"JobModifyIndex": 13996170,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"nginx\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n group \"nginx\" {\n count = 1\n\n task \"nginx\" {\n driver = \"docker\"\n\n config {\n image = \"nginx\"\n ports = [\"http\"]\n\n volumes = [\n \"custom/default.conf:/etc/nginx/conf.d/default.conf\",\n ]\n }\n\n template {\n data = <<EOH\n server {\n listen 8080;\n server_name nginx.service.dc1.consul;\n location / {\n root /local/data;\n }\n }\n EOH\n\n destination = \"custom/default.conf\"\n }\n\n template {\n data = <<EOH\n <p>Local Services - HTTP/HTTPS</p>\n <table style=\"width:100%\">\n <tr>\n <th>Service Name</th>\n <th>Traefik</th>\n <th>Direct</th>\n </tr>\n {{range services}}\n {{range $i, $s :=service .Name}}\n {{ if eq $i 0 }}\n\n<tr>\n <td>{{.Name}}</td>\n <td><a href=\"{{ if eq .Name \"unifi\" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul\" target=\"_blank\">{{.Name}}.service.dc1.consul</a></td>\n <td><a href=\"{{ if eq .Name \"unifi\" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}\" target=\"_blank\">{{ if eq .Name \"unifi\" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}</a></td>\n </tr>\n {{end}}\n {{end}}\n {{end}}\n </table>\n <p>\n Node Environment Information: <br />\n node_id: {{ env \"node.unique.id\" }} <br/>\n datacenter: {{ env \"NOMAD_DC\" }}\n </p>\n EOH\n\n destination = \"local/data/index.html\"\n change_mode = \"noop\"\n }\n\n resources {\n cpu = 100 # 100 MHz\n memory = 64 # 128 MB\n }\n service {\n name = \"nginx\"\n tags = [\"nginx\", \"web\", \"urlprefix-/nginx\", \"backend\"]\n port = \"http\"\n\n check {\n type = \"tcp\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n }\n\n network {\n port \"http\" {\n to = 8080\n }\n\n // port \"https\" {\n // to = 443\n // }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 0
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "postgres-15",
|
||||
"JobModifyIndex": 13569135,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"postgres-15\" {\n type = \"system\"\n datacenters = [\"dc1\"]\n\n group \"group\" {\n count = 1\n\n network {\n \n port api { \n static = 8008 \n to = 8008 \n }\n port pg { \n static = 5432 \n to = 5432 \n }\n }\n\n task \"db\" {\n driver = \"docker\"\n\n template {\n data = <<EOL\nscope: postgres\nname: pg-{{env \"node.unique.name\"}}\nnamespace: /nomad\n\nrestapi:\n listen: 0.0.0.0:8008\n connect_address: {{env \"attr.unique.network.ip-address\"}}:8008\n\nconsul:\n scheme: http\n host: {{env \"attr.unique.network.ip-address\"}}:8500\n register_service: True\n\nbootstrap:\n dcs:\n ttl: 30\n loop_wait: 10\n retry_timeout: 10\n maximum_lag_on_failover: 1048576\n postgresql:\n use_pg_rewind: true\n use_slots: true\n parameters:\n timezone: 'UTC'\n max_connections: 100\n shared_preload_libraries: pg_stat_statements\n shared_buffers: 64MB\n work_mem: 16MB\n effective_cache_size: 512MB\n tcp_keepalives_idle: 300\n timescaledb.telemetry_level: off\n\n method: local\n local:\n command: /usr/local/bin/docker-initdb.sh\n keep_existing_recovery_conf: True\n\n initdb:\n - encoding: UTF8\n\n pg_hba:\n - host all postgres all md5\n - host replication repl all md5\n - host all all all md5\n\n users:\n postgres:\n password: postgres\n options:\n - createrole\n - createdb\n repl:\n password: repl\n options:\n - replication\n\npostgresql:\n listen: 0.0.0.0:5432\n connect_address: {{env \"attr.unique.network.ip-address\"}}:5432\n use_unix_socket: true\n data_dir: /store/data\n authentication:\n replication:\n username: repl\n password: repl\n superuser:\n username: postgres\n password: postgres\nEOL\n\n destination = \"/secrets/patroni.yml\"\n }\n\n config {\n image = \"ghcr.io/sstent/nomad-pgsql-patroni:latest\"\n volumes = [\n \"/mnt/configs/postgres:/store\",\n ]\n ports = [\"api\", \"pg\"]\n \n }\nenv {\n PGDATA=\"/store/data\"\n // POSTGRES_USER=\"root\"\n // POSTGRES_PASSWORD=\"rootpassword\"\n }\n resources {\n memory = 1024\n }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 2
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "prometheus",
|
||||
"JobModifyIndex": 13995677,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"prometheus\" {\n # region = \"global\"\n datacenters = [\"dc1\"]\n type = \"service\"\n\n # priority = 50\n\n constraint {\n attribute = \"${attr.kernel.name}\"\n value = \"linux\"\n }\n constraint {\n attribute = \"${attr.unique.hostname}\"\n operator = \"regexp\"\n value = \"odroid.*\"\n }\n\n # constraint {\n # \tattribute = \"${attr.unique.hostname}\"\n # operator = \"regexp\"\n # value = \"pi.*\"\n # }\n\n update {\n # Stagger updates every 60 seconds\n stagger = \"60s\"\n max_parallel = 1\n }\n group \"prometheus\" {\n count = 2\n\n restart {\n attempts = 2\n interval = \"1m\"\n delay = \"10s\"\n mode = \"delay\"\n }\n\n task \"prometheus\" {\n driver = \"docker\"\n\n config {\n image = \"prom/prometheus\"\nargs = [\"--web.enable-admin-api\",\"--config.file=/etc/prometheus/prometheus.yml\"]\n \n\n ports = [\"http\"]\n memory_hard_limit = \"512\"\n volumes = [\n \"local/prometheus.yml:/etc/prometheus/prometheus.yml\",\n \"local/alerts.yml:/etc/prometheus/alerts.yml\",\n ]\n\n // \"/mnt/gv0/prom_data:/data\",\n // \"/etc/localtime:/etc/localtime\",\n\n logging {\n type = \"json-file\"\n }\n }\n\n service {\n name = \"${TASKGROUP}\"\n tags = [\"global\", \"prometheus\"]\n port = \"http\"\n\n check {\n name = \"alive\"\n type = \"http\"\n interval = \"10s\"\n timeout = \"120s\"\n path = \"/status\"\n port = \"http\"\n }\n }\n\n template {\n change_mode = \"signal\"\n change_signal = \"SIGHUP\"\n data = \"{{ key \\\"prometheus_yml\\\" }}\"\n destination = \"local/prometheus.yml\"\n }\n\n template {\n change_mode = \"restart\"\n \n destination = \"local/alerts.yml\"\n data = \"{{ key \\\"alerts\\\" }}\"\n }\n resources {\n cpu = 500 # 500 MHz\n memory = 48 # 128MB\n }\n # Specify configuration related to log rotation\n logs {\n max_files = 10\n max_file_size = 15\n }\n kill_timeout = \"10s\"\n } ## end prometheus\n\n task \"alertmanager\" {\n driver = \"docker\"\n\n config {\n image = \"prom/alertmanager\"\n\n ports = [\"alerthttp\"]\n\n // volumes = [\n // \"local/alertmanager.yml:/etc/prometheus/prometheus.yml\",\n // ]\n args = [\"--config.file=/local/alertmanager.yml\"]\n // \"/mnt/gv0/prom_data:/data\",\n // \"/etc/localtime:/etc/localtime\",\n\n logging {\n type = \"json-file\"\n }\n }\n\n service {\n name = \"${TASK}\"\n tags = [\"global\", \"prometheus\"]\n port = \"alerthttp\"\n\n check {\n name = \"alive\"\n type = \"http\"\n interval = \"60s\"\n timeout = \"120s\"\n path = \"/status\"\n port = \"http\"\n }\n }\n\n template {\n data = <<EOH\nglobal:\nreceivers:\n - name: default-receiver\n - name: gotify-webhook\n webhook_configs:\n - url: \"http://prometheus.service.dc1.consul:9094/gotify_webhook\"\nroute:\n group_wait: 10s\n group_interval: 5m\n receiver: gotify-webhook\n repeat_interval: 3h\n\nEOH\n\n destination = \"local/alertmanager.yml\"\n }\n resources {\n cpu = 128 # 500 MHz\n memory = 48 # 128MB\n }\n # Specify configuration related to log rotation\n logs {\n max_files = 10\n max_file_size = 15\n }\n kill_timeout = \"10s\"\n } ## end alertmanager\n\n task \"gotifybridge\" {\n driver = \"docker\"\n config {\n image = \"ghcr.io/druggeri/alertmanager_gotify_bridge\"\n ports = [\"gotifybridge\"]\n args = [\"--debug\"]\n }\n env {\n GOTIFY_TOKEN=\"AQ7l7NVgtylam86\"\n GOTIFY_ENDPOINT=\"http://gotify.service.dc1.consul/message\"\n }\n}\n\n network {\n port \"http\" {\n static = 9090\n to = 9090\n }\n port \"alerthttp\" {\n static = 9093\n to = 9093\n }\n port \"gotifybridge\" {\n static = 9094\n to = 8080\n }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 0
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "prowlarr",
|
||||
"JobModifyIndex": 13998460,
|
||||
"Namespace": "default",
|
||||
"Source": "# There can only be a single job definition per file.\n# Create a job with ID and Name 'example'\njob \"prowlarr\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n\n constraint {\n attribute = \"${attr.kernel.name}\"\n value = \"linux\"\n }\n constraint {\n attribute = \"${attr.unique.hostname}\"\n operator = \"regexp\"\n value = \"odroid.*\"\n }\n\n update {\n stagger = \"10s\"\n max_parallel = 1\n }\n\n group \"prowlarr\" {\n count = 1\n\n restart {\n attempts = 2\n interval = \"1m\"\n delay = \"10s\"\n mode = \"fail\"\n }\n\n\ntask \"flaresolver\" {\n driver = \"docker\"\n config {\n image = \"ghcr.io/flaresolverr/flaresolverr:latest\"\n ports = [\"http_flare\"]\n dns_servers = [\"192.168.1.1\", \"1.1.1.1\"]\n memory_hard_limit = \"2048\"\n force_pull = false\n }\n service {\n name = \"${TASKGROUP}\"\n tags = [\"prowlarr_pg\", \"tools\"]\n port = \"http_flare\"\n }\n}\n\n task \"prowlarr\" {\n driver = \"docker\"\n config {\n image = \"ghcr.io/linuxserver/prowlarr:develop\"\n ports = [\"http\"]\n dns_servers = [\"192.168.1.1\", \"1.1.1.1\"]\n memory_hard_limit = \"2048\"\n volumes = [\n \"/mnt/Public/configs/prowlarr_pg:/config\",\n ]\n force_pull = false\n }\n\n service {\n name = \"${TASKGROUP}\"\n tags = [\"prowlarr_pg\", \"tools\"]\n port = \"http\"\n\n // check {\n // type = \"script\"\n // name = \"check_up\"\n // command = \"/local/healthcheck.sh\"\n\n // interval = \"60s\"\n // timeout = \"5s\"\n\n // check_restart {\n // limit = 3\n // grace = \"90s\"\n // ignore_warnings = false\n // }\n \n // // export API=$(grep -Po '<ApiKey>\\K.8-20 * * *?(?=<.8-20 * * *?>)' /config/config.xml)\n // // curl -f \"http://localhost:9696/api/v1/system/status?apikey=$API\"\n // }\n }\n template {\n data = <<EOH\n#!/bin/bash\n/usr/bin/curl -f \"http://localhost:${NOMAD_PORT_http}/api/v1/system/status?apikey=$(grep -Po '<ApiKey>\\K.*?(?=<.*?>)' /config/config.xml)\"\n EOH\n\n destination = \"local/healthcheck.sh\"\n perms = \"0755\"\n }\n\n env {\n // SHARE = \"Public;/mount/Public;yes;no;yes;all;none;;Public\"\n # GLOBAL = \"socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536\"\n # PERMISSIONS = \"true\"\n # WORKGROUP = \"WORKGROUP\"\n TZ = \"EST5EDT\"\n\n PUID = 1000\n PGID = 1000\n }\n\n # We must specify the resources required for\n # this task to ensure it runs on a machine with\n # enough capacity.\n resources {\n cpu = 500 # 500 MHz\n memory = 256 # 128MB\n }\n\n # Specify configuration related to log rotation\n logs {\n max_files = 10\n max_file_size = 15\n }\n\n # Controls the timeout between signalling a task it will be killed\n # and killing the task. If not set a default is used.\n kill_timeout = \"10s\"\n } #End main task\n\n network {\n // mbits = 100\n\n port \"http\" {\n static = 9696\n to = 9696\n }\n port \"http_flare\" {\n static = 8191\n to = 8191\n }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 2
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "qautomate",
|
||||
"JobModifyIndex": 13930001,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"qautomate\" {\n periodic {\n cron = \"*/30 * * * *\"\n prohibit_overlap = true\n }\n datacenters = [\"dc1\"]\n\n type = \"batch\"\n\n group \"app\" {\n count = 1\n\n task \"setup\" {\n driver = \"docker\"\n\n lifecycle {\n hook = \"prestart\"\n }\n\n config {\n image = \"ghcr.io/sstent/ubuntu-python3\"\n // command = \"/bin/bash\"\n args = [\"-v\",\"-c\", \"/local/prestart.sh\"]\n\n }\n\n template {\n data = <<EOH\n#!/bin/bash\nrm /usr/lib/python3.11/EXTERNALLY-MANAGED\npip3 install qbittorrent-api --upgrade\npython3 /local/torrent_tagger.py\npython3 /local/torrent_tidy.py\n\n EOH\n perms = 0777\n destination = \"local/prestart.sh\"\n }\n\n template {\n change_mode = \"restart\"\n data = \"{{ key \\\"functions/torrent_tagger\\\" }}\"\n destination = \"local/torrent_tagger.py\"\n }\n\n template {\n change_mode = \"restart\"\n data = \"{{ key \\\"functions/torrent_tidy\\\" }}\"\n destination = \"local/torrent_tidy.py\"\n }\n\n\n }\n\n }\n\n\n\n}",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 0
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "radarr",
|
||||
"JobModifyIndex": 13928632,
|
||||
"Namespace": "default",
|
||||
"Source": "# There can only be a single job definition per file.\n# Create a job with ID and Name 'example'\njob \"radarr\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n\n constraint {\n attribute = \"${attr.kernel.name}\"\n value = \"linux\"\n }\n constraint {\n attribute = \"${attr.unique.hostname}\"\n operator = \"regexp\"\n value = \"odroid.*\"\n }\nconstraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"regexp\"\n value = \"arm64\"\n }\n\n\n update {\n stagger = \"10s\"\n max_parallel = 1\n }\n\n group \"radarr\" {\n count = 1\n\n restart {\n attempts = 5\n interval = \"1m\"\n delay = \"10s\"\n mode = \"delay\"\n }\n\n task \"radarr\" {\n driver = \"docker\"\n\n config {\n // image = \"linuxserver/radarr:nightly\"\n image = \"linuxserver/radarr:latest\"\n dns_servers = [\"192.168.4.250\", \"192.168.4.1\"]\n ports = [\"http\"]\n memory_hard_limit = \"2048\"\n // cpuset_cpus = \"4-7\"\n\n volumes = [\n \"/mnt/Public/Downloads/news:/downloads\",\n \"/mnt/Public/Downloads/movies:/movies\",\n // \"/mnt/configs/radarr:/config\",\n \"/mnt/Archive/Movies:/archive\",\n \"/mnt/Public/configs/radarr_pg:/config\",\n // \"local/config.xml:/config/config.xml\"\n ]\n }\n\n template {\n data = \"---\\nkey: {{ key \\\"ovpn-client\\\" }}\"\n destination = \"local/file.yml\"\n change_mode = \"restart\"\n }\n template {\n data = <<EOH\n<Config>\n<LogLevel>Info</LogLevel>\n<Port>7878</Port>\n<UrlBase/>\n<BindAddress>*</BindAddress>\n<SslPort>9898</SslPort>\n<EnableSsl>False</EnableSsl>\n<ApiKey>237c27f22504440385e5ee295fd65eb5</ApiKey>\n<AuthenticationMethod>Forms</AuthenticationMethod>\n<Branch>master</Branch>\n<SslCertPath/>\n<LaunchBrowser>True</LaunchBrowser>\n<SslCertPassword/>\n<UpdateMechanism>Docker</UpdateMechanism>\n<AnalyticsEnabled>False</AnalyticsEnabled>\n<InstanceName>Radarr</InstanceName>\n<AuthenticationRequired>DisabledForLocalAddresses</AuthenticationRequired>\n<PostgresUser>postgres</PostgresUser>\n<PostgresPassword>postgres</PostgresPassword>\n<PostgresPort>5432</PostgresPort>\n<PostgresHost>master.postgres.service.dc1.consul</PostgresHost>\n</Config>\n EOH\n\n destination = \"local/config.xml\"\n perms = \"0755\"\n }\n\n service {\n name = \"${TASKGROUP}\"\n tags = [\"radarr\", \"tools\"]\n port = \"http\"\n\n check {\n type = \"script\"\n name = \"check_up\"\n command = \"/local/healthcheck.sh\"\n interval = \"5m\"\n timeout = \"25s\"\n\n check_restart {\n limit = 3\n grace = \"90s\"\n ignore_warnings = false\n } \n }\n }\n template {\n data = <<EOH\n#!/bin/bash\n/usr/bin/curl -f \"http://localhost:${NOMAD_PORT_http}/api/v3/system/status?apikey=$(grep -Eo '<ApiKey>(.*)</ApiKey>' /config/config.xml | sed -e 's/<[^>]*>//g')\"\n EOH\n\n destination = \"local/healthcheck.sh\"\n perms = \"0755\"\n }\n\n env {\n TZ = \"EST5EDT\"\n PUID = 1000\n PGID = 1000\n }\n\n resources {\n cpu = 500 # 500 MHz\n memory = 256 # 128MB\n\n // network {\n // port \"radarr\" {\n // static = \"7878\"\n // }\n // }\n }\n\n logs {\n max_files = 10\n max_file_size = 15\n }\n\n kill_timeout = \"10s\"\n } #Task\n\n network {\n // mode = \"bridge\"\n port \"http\" {\n static = 7878\n to = 7878\n }\n }\n } #Group\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 13
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "slskd",
|
||||
"JobModifyIndex": 14202950,
|
||||
"Namespace": "default",
|
||||
"Source": "# There can only be a single job definition per file.\n# Create a job with ID and Name 'example'\njob \"slskd\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n\n constraint {\n attribute = \"${attr.kernel.name}\"\n value = \"linux\"\n }\nconstraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"regexp\"\n value = \"amd64\"\n }\n\n update {\n stagger = \"10s\"\n max_parallel = 1\n }\n\n group \"slskd\" {\n count = 1\n\n restart {\n attempts = 2\n interval = \"1m\"\n delay = \"10s\"\n mode = \"fail\"\n }\n\ntask \"slskd-vpn\" {\n driver = \"docker\"\n lifecycle {\n hook = \"prestart\"\n sidecar = true\n }\n\n config {\n // image = \"registry.service.dc1.consul:5000/openpyn:latest\"\n // image = \"qmcgaw/gluetun\"\n image = \"qmcgaw/gluetun\"\n\n memory_hard_limit = \"1024\"\n ports = [\"http\",\"https\",\"guac\"]\n\n cap_add = [\n \"NET_ADMIN\",\n \"NET_BIND_SERVICE\",\n ]\n\n #network_mode = \"host\"\n #network_mode = \"vpn\"\n\n volumes = [\n \"/etc/localtime:/etc/localtime\",\n \"/mnt/syncthing/mullvad:/vpn\",\n\n ]\n devices = [\n {\n host_path = \"/dev/net/tun\"\n container_path = \"/dev/net/tun\"\n },\n ]\n }\n\n env {\n VPN_SERVICE_PROVIDER=\"airvpn\"\n VPN_TYPE=\"wireguard\"\n WIREGUARD_PRIVATE_KEY=\"SPpgnVCsOnz+zzorzTiOmvDF8GElgp27dSIeYAq43Vk=\"\n WIREGUARD_PRESHARED_KEY=\"TBb2gU8pSTSG6lT4QYr7pzNWN7wZEn0yeG4VDTtuy50=\"\n WIREGUARD_ADDRESSES=\"10.186.222.247/32\"\n SERVER_COUNTRIES=\"Canada\"\n SERVER_CITIES=\"Montreal\"\n FIREWALL_VPN_INPUT_PORTS = \"53304\"\n HEALTH_TARGET_ADDRESS=\"1.1.1.1\"\n HEALTH_SUCCESS_WAIT_DURATION=\"30s\"\n HEALTH_VPN_DURATION_INITIAL=\"3600s\"\n HEALTH_VPN_DURATION_ADDITION=\"600s\"\n // HEALTH_TARGET_ADDRESS=\"cloudflare.com:443\"\n \n \n ##Mullvad\n #VPNSP = \"mullvad\"\n #VPN_TYPE = \"wireguard\"\n #COUNTRY = \"Canada\"\n #CITY = \"Toronto\"\n #FIREWALL_VPN_INPUT_PORTS = \"56987\"\n #WIREGUARD_PRIVATE_KEY = \"iA64ImY2XNvml7s+HEHWNNGXeqpzFN0/KYGxhCsHLV8=\"\n #WIREGUARD_ADDRESS = \"10.64.141.217/32\"\n HTTPPROXY = \"on\"\n SHADOWSOCKS_PASSWORD = \"farscape5\"\n SHADOWSOCKS = \"on\"\n DOT_PROVIDERS = \"cloudflare,google,quad9,quadrant\"\n DOT = \"off\"\n WEBUI_PORT=8080\n }\n\n\n resources {\n cpu = 100 # 500 MHz\n memory = 250 # 128MB\n }\n } #task ovpn\n\n task \"nicotine\" {\n driver = \"docker\"\n\n config {\n image = \"ghcr.io/fletchto99/nicotine-plus-docker:latest\"\n memory_hard_limit = \"1024\"\n \n network_mode = \"container:slskd-vpn-${NOMAD_ALLOC_ID}\"\n\n volumes = [\n \"/mnt/Public/Downloads/news/slskd/config:/config\",\n \"/mnt/Public/Downloads/news/slskd/shared:/shared\",\n \"/mnt/Public/Downloads/news/slskd/downloads/:/downloads\",\n \"/mnt/Public/Downloads/news/slskd/incomplete/:/incomplete\",\n ]\n }\n env {\n PUID=1000\n PGID=1000\n TZ=\"Etc/UTC\"\n LISTENING_PORT=\"53304\"\n }\n }\n\n\n network {\n // mbits = 100\n\n port \"http\" {\n static = 5000\n to = 5000\n }\n port \"https\" {\n static = 5001\n to = 5001\n }\n port \"guac\" {\n static = 6080\n to = 6080\n }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 14
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "sonarr",
|
||||
"JobModifyIndex": 13991917,
|
||||
"Namespace": "default",
|
||||
"Source": "# There can only be a single job definition per file.\n# Create a job with ID and Name 'example'\njob \"sonarr\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n\n constraint {\n attribute = \"${attr.kernel.name}\"\n value = \"linux\"\n }\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"regexp\"\n value = \"amd64\"\n }\n \n update {\n stagger = \"10s\"\n max_parallel = 1\n }\n group \"sonarr\" {\n count = 1\n\n restart {\n attempts = 2\n interval = \"1m\"\n delay = \"10s\"\n mode = \"fail\"\n }\n\n task \"sonarr\" {\n // driver = \"raw_exec\" // config { // command = \"docker\" // args = [\"run\", // \"--rm\", // \"--name=sonarr\", // \"-e\", \"PUID=1000\", // \"-e\", \"PGID=1000\", // \"-e\", \"TZ=EST5EDT\", // \"-p\", \"8989:8989\", // \"-v\", \"/mnt/syncthing/sonarrv3:/config\", // \"-v\", \"/mnt/Public/Downloads/tv:/tv\", // \"-v\", \"/mnt/Public/Downloads/news:/downloads\", // \"--cpuset-cpus\",\"4-7\", // \"linuxserver/sonarr:preview\"] // }\n\n driver = \"docker\"\n\n config {\n image = \"linuxserver/sonarr:develop\"\n\n ports = [\"http\"]\n\n // dns_servers = [\"192.168.1.1\", \"1.1.1.1\"]\n memory_hard_limit = \"2048\"\n // cpuset_cpus = \"4-7\"\n\n volumes = [\n \"/mnt/Public/Downloads/news:/downloads\",\n \"/mnt/Public/Downloads/tv:/tv\",\n // \"/mnt/configs/sonarr:/config\",\n \"/mnt/Public/configs/sonarr_pg:/config\",\n // \"local/config.xml:/config/config.xml\"\n ]\n\n // \"/mnt/gv0/sonarr:/config\",\n force_pull = false\n }\n\n service {\n name = \"${TASKGROUP}\"\n tags = [\"sonarr\", \"tools\"]\n port = \"http\"\n\n check {\n type = \"script\"\n name = \"check_up\"\n command = \"/local/healthcheck.sh\"\n interval = \"60s\"\n timeout = \"5s\"\n\n check_restart {\n limit = 3\n grace = \"90s\"\n ignore_warnings = false\n } \n }\n }\n template {\n data = <<EOH\n#!/bin/bash\n/usr/bin/curl -f \"http://localhost:${NOMAD_PORT_http}/api/v3/system/status?apikey=$(grep -Eo '<ApiKey>(.*)</ApiKey>' /config/config.xml | sed -e 's/<[^>]*>//g')\"\n EOH\n\n destination = \"local/healthcheck.sh\"\n perms = \"0755\"\n }\n\n template {\n data = \"---\\nkey: {{ key \\\"ovpn-client\\\" }}\"\n destination = \"local/file.yml\"\n change_mode = \"restart\"\n }\n template {\n data = <<EOH\n<Config>\n<LogLevel>Info</LogLevel>\n<Port>8989</Port>\n<UrlBase>/sonarr</UrlBase>\n<BindAddress>*</BindAddress>\n<SslPort>9898</SslPort>\n<EnableSsl>False</EnableSsl>\n<ApiKey>1632787062fb47a9a6eb4c88e32b3ff3</ApiKey>\n<AuthenticationMethod>None</AuthenticationMethod>\n<Branch>develop</Branch>\n<LaunchBrowser>True</LaunchBrowser>\n<SslCertHash/>\n<UpdateMechanism>Docker</UpdateMechanism>\n<AnalyticsEnabled>False</AnalyticsEnabled>\n<UpdateScriptPath>/config/restart.sh</UpdateScriptPath>\n<InstanceName>Sonarr</InstanceName>\n<PostgresUser>postgres</PostgresUser>\n<PostgresPassword>postgres</PostgresPassword>\n<PostgresPort>5432</PostgresPort>\n<PostgresHost>master.postgres.service.dc1.consul</PostgresHost>\n</Config>\n EOH\n\n destination = \"local/config.xml\"\n perms = \"0755\"\n }\n env {\n // SHARE = \"Public;/mount/Public;yes;no;yes;all;none;;Public\"\n # GLOBAL = \"socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536\"\n # PERMISSIONS = \"true\"\n # WORKGROUP = \"WORKGROUP\"\n TZ = \"EST5EDT\"\n\n PUID = 1000\n PGID = 1000\n }\n\n # We must specify the resources required for\n # this task to ensure it runs on a machine with\n # enough capacity.\n resources {\n cpu = 500 # 500 MHz\n memory = 256 # 128MB\n }\n\n # Specify configuration related to log rotation\n logs {\n max_files = 12\n max_file_size = 15\n }\n\n # Controls the timeout between signalling a task it will be killed\n # and killing the task. If not set a default is used.\n kill_timeout = \"10s\"\n } #End main task\n\n network {\n // mbits = 100\n\n port \"http\" {\n static = 8989\n to = 8989\n }\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 20
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "trilium",
|
||||
"JobModifyIndex": 14153433,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"trilium\" {\n datacenters = [\"dc1\"]\n type = \"service\"\n\n group \"trilium\" {\n count = 1\n\n # Prestart restore task\n task \"restore\" {\n driver = \"docker\"\n lifecycle {\n hook = \"prestart\"\n sidecar = false\n }\n config {\n image = \"litestream/litestream:latest\"\n args = [\n \"restore\",\n \"-if-replica-exists\",\n \"-if-db-not-exists\",\n \"-o\", \"/alloc/tmp/trilium.db\",\n \"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/trilium.db\"\n\n ]\n volumes = [\n \"/mnt/configs/trilium:/data\"\n ]\n }\n }\n\n # Main trilium task\n task \"trilium\" {\n driver = \"docker\"\n config {\n image = \"triliumnext/trilium:stable\"\n memory_hard_limit = \"2048\"\n ports = [\"http\"]\n volumes = [\n \"/mnt/configs/trilium:/home/node/trilium-data/data\", \n \"/mnt/Public/configs/trilium/backup:/home/node/trilium-data/backup\",\n \"/mnt/Public/configs/trilium/config:/home/node/trilium-data/config\"\n \n \n ]\n }\n env {\n TRILIUM_DATA_DIR=\"/home/node/trilium-data/data\"\n TRILIUM_BACKUP_DIR=\"/home/node/trilium-data/backup\"\n TRILIUM_CONFIG_INI_PATH= \t\"/home/node/trilium-data/config/config.ini\"\n\n }\n resources {\n cpu = 100\n memory = 128\n }\n service {\n name = \"trilium\"\n tags = [\n \"trilium\",\n \"web\",\n \"urlprefix-/trilium\",\n \"tools\",\n \"traefik.http.routers.triliumlan.rule=Host(`trilium.service.dc1.consul`)\",\n \"traefik.http.routers.triliumwan.rule=Host(`tril.fbleagh.duckdns.org`)\",\n \"traefik.http.routers.triliumwan.middlewares=dex@consulcatalog\",\n \"traefik.http.routers.triliumwan.tls=true\",\n ]\n port = \"http\"\n check {\n type = \"tcp\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n }\n\n # Litestream sidecar for continuous replication\n task \"litestream\" {\n driver = \"docker\"\n lifecycle {\n hook = \"poststart\" # runs after main task starts\n sidecar = true\n }\n config {\n image = \"litestream/litestream:latest\"\n args = [\n \"replicate\",\n \"/alloc/tmp/trilium.db\",\n \"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/trilium.db\"\n ]\n volumes = [\n \"/mnt/configs/trilium:/data\"\n ]\n \n }\n }\n\n network {\n port \"http\" {\n static = 6699\n to = 8080\n }\n }\n }\n}\n\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 14
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "wallabag",
|
||||
"JobModifyIndex": 13721718,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"wallabag\" {\n datacenters = [\"dc1\"]\n\n group \"wallabag\" {\n count = 1\n\n task \"wallabag\" {\n driver = \"docker\"\n\n config {\n image = \"wallabag/wallabag:latest\"\n ports = [\"http\"]\n memory_hard_limit = 2048\n\n #health_check {\n # test = [\"CMD\", \"curl\", \"-f\", \"http://localhost:8080/health\"]\n # interval = \"10s\"\n # timeout = \"5s\"\n #}\n }\n\n env {\n POSTGRES_PASSWORD=\"postgres\"\n POSTGRES_USER=\"postgres\"\n SYMFONY__ENV__DATABASE_DRIVER=\"pdo_pgsql\"\n SYMFONY__ENV__DATABASE_HOST=\"master.postgres.service.dc1.consul\"\n SYMFONY__ENV__DATABASE_NAME=\"wallabag\"\n SYMFONY__ENV__DATABASE_USER=\"wallabag\"\n SYMFONY__ENV__DATABASE_PASSWORD=\"wallabag\"\n SYMFONY__ENV__DOMAIN_NAME=\"https://wallabag.fbleagh.duckdns.org\"\n SYMFONY__ENV__DATABASE_PORT=\"5432\"\n POPULATE_DATABASE=\"False\"\n SYMFONY__ENV__MAILER_DSN= \"gmail+smtp://stuart.stent@gmail.com:lsrhrzfembksmvgc@default\"\n SYMFONY__ENV__FROM_EMAIL=\"wallabag@wallabag.fbleagh.duckdns.org\"\n\n\n\n }\n\n service {\n name = \"${TASKGROUP}\"\n tags = [\"wallabag\", \"tools\",\n \"traefik.http.routers.wallabaglan.rule=Host(`wallabag.service.dc1.consul`)\",\n \"traefik.http.routers.wallabagwan.rule=Host(`wallabag.fbleagh.duckdns.org`)\",\n \"traefik.http.routers.wallabagwan.tls=true\",\n // \"traefik.http.routers.vaultwardenwan.tls.certresolver=myresolver-int\",\n \"traefik.http.middlewares.vaultwardenwan-admin-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.0/24\",\n \"traefik.http.routers.nginx-admin.middlewares=vaultwardenwan-admin-ipwhitelist\",\n ]\n port = \"http\"\n\n #check {\n # type = \"script\"\n # name = \"check_up\"\n # command = \"/local/healthcheck.sh\"\n # interval = \"60s\"\n # timeout = \"5s\"\n\n # check_restart {\n # limit = 3\n # grace = \"90s\"\n # ignore_warnings = false\n # } \n #}\n }\n\n\n\n resources {\n cpu = 500\n memory = 256\n }\n\n }\n network {\n // mbits = 100\n\n port \"http\" {\n to = 80\n }\n }\n\n\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 0
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"Format": "hcl2",
|
||||
"JobID": "wireguard",
|
||||
"JobModifyIndex": 13892530,
|
||||
"Namespace": "default",
|
||||
"Source": "job \"wireguard\" {\n region = \"global\"\n datacenters = [\"dc1\"]\n type = \"service\"\n\nconstraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"regexp\"\n value = \"amd64\"\n }\n\n group \"wireguard\" {\n count = 1\n task \"wireguard\" {\n driver = \"docker\"\n config {\n image = \"ghcr.io/wg-easy/wg-easy\"\n ports = [\"vpn\",\"vpn_ui\"]\n volumes = [\n \"/mnt/Public/config/wireguard:/etc/wireguard\",\n ]\n cap_add = [\"NET_ADMIN\",\"SYS_MODULE\"]\n sysctl = {\n \"net.ipv4.conf.all.src_valid_mark\"=\"1\"\n \"net.ipv4.ip_forward\"=\"1\"\n }\n\n }\n env {\n TZ = \"EST5EDT\"\n PUID = 1000\n PGID = 1000\n WG_HOST=\"wireguard.fbleagh.duckdns.org\"\n WG_PORT=51820 \n PORT=51821\n WEBUI_HOST=\"0.0.0.0\"\n WG_ALLOWED_IPS=\"0.0.0.0/0\"\n UI_TRAFFIC_STATS=\"true\"\n UI_CHART_TYPE=1\n WG_DEFAULT_DNS=\"192.168.4.36, 8.8.8.8\"\n }\n service {\n name = \"${TASKGROUP}\"\n port = \"vpn\"\n }\n\n resources {\n cpu = 50\n memory = 100\n }\n }\n\n network {\n port \"vpn\" {\n static = 51820\n to = 51820\n }\n port \"vpn_ui\" {\n static = 51821\n to = 51821\n }\n\n }\n }\n}\n",
|
||||
"VariableFlags": null,
|
||||
"Variables": "",
|
||||
"Version": 6
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
job "acme" {
|
||||
datacenters = ["dc1"]
|
||||
type = "batch"
|
||||
|
||||
periodic {
|
||||
cron = "@weekly"
|
||||
prohibit_overlap = true
|
||||
}
|
||||
|
||||
group "acme" {
|
||||
restart {
|
||||
attempts = 1
|
||||
delay = "30s"
|
||||
}
|
||||
task "acme" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "neilpang/acme.sh"
|
||||
entrypoint = ["/local/acme_wrapper.sh"]
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/acme.sh",
|
||||
]
|
||||
}
|
||||
env {
|
||||
DEDYN_TOKEN="JPwQpUiWGkKHSkmGEC4YAeGiGFki"
|
||||
DuckDNS_Token="e4b5ca33-1f4d-494b-b06d-6dd4600df662"
|
||||
CONSUL_URL="${attr.unique.network.ip-address}"
|
||||
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "noop"
|
||||
data = "{{ key \"scripts/acme.sh\" }}"
|
||||
destination = "local/acme_wrapper.sh"
|
||||
perms = 0777
|
||||
}
|
||||
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 256
|
||||
memory = 64
|
||||
}
|
||||
}
|
||||
|
||||
task "init" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-avz","--delete-excluded","--exclude=renewal","--exclude='live'","--exclude='archive'","--exclude='keys'","--exclude='csr'", "/configbackup/", "/config/", "--delete-before"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end init task
|
||||
|
||||
task "finalsync" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "pebalk/rsync"
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-av","--delete-excluded","--exclude=renewal","--exclude='live'","--exclude='archive'","--exclude='keys'","--exclude='csr'", "/config/", "/configbackup/","--remove-source-files"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end finalsync task
|
||||
}
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
job "auth" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
group "auth" {
|
||||
count = 1
|
||||
|
||||
task "fwdauth" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
// image = "npawelek/traefik-forward-auth"
|
||||
image = "thomseddon/traefik-forward-auth:2-arm"
|
||||
|
||||
port_map {
|
||||
auth = 4181
|
||||
}
|
||||
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime:ro",
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
PROVIDERS_GOOGLE_CLIENT_ID = "807888907647-uog95jmiolsuh6ql1t8jm53l1jvuajck.apps.googleusercontent.com"
|
||||
PROVIDERS_GOOGLE_CLIENT_SECRET = "B8bDri5mFvGv-Ghzbt8fLj4W"
|
||||
SECRET = "ladskfdjmqwermnnbasfnmldas"
|
||||
CONFIG = "/local/config.ini"
|
||||
LIFETIME = "31536000"
|
||||
WHITELIST = "stuart.stent@gmail.com,stephen.bunt@gmail.com"
|
||||
|
||||
// AUTH_HOST = "fwdauth.fbleagh.duckdns.org"
|
||||
COOKIE_DOMAIN = "fbleagh.duckdns.org"
|
||||
}
|
||||
|
||||
template {
|
||||
data = "{{ key \"Dex\" }}"
|
||||
destination = "local/config.ini"
|
||||
change_mode = "restart"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 100 # 100 MHz
|
||||
memory = 64 # 128 MB
|
||||
|
||||
network {
|
||||
port "auth" {
|
||||
static = 4181
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "dex"
|
||||
|
||||
tags = [
|
||||
"fwdauth",
|
||||
"web",
|
||||
"traefik.http.routers.dex.rule=Host(`fwdauth.fbleagh.duckdns.org`,`fwdauth.fbleagh.dedyn.io`)",
|
||||
"traefik.http.routers.dex.entrypoints=websecure",
|
||||
"traefik.http.routers.dex.tls=true",
|
||||
// "traefik.http.routers.dex.tls.certresolver=myresolver",
|
||||
"traefik.http.middlewares.dex.forwardauth.address=http://dex.service.dc1.consul:4181",
|
||||
"traefik.http.middlewares.dex.forwardauth.trustForwardHeader=true",
|
||||
"traefik.http.middlewares.dex.forwardauth.authResponseHeaders=X-Forwarded-User",
|
||||
"traefik.http.routers.auth.middlewares=dex",
|
||||
"traefik.http.routers.traefik-forward-auth.middlewares=dex",
|
||||
]
|
||||
|
||||
port = "auth"
|
||||
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
} #end Dex
|
||||
}
|
||||
}
|
||||
@@ -1,228 +0,0 @@
|
||||
job "calendar-proxy" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
group "web" {
|
||||
count = 1
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 80
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "calendar-proxy"
|
||||
port = "http"
|
||||
|
||||
tags = [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.calendar-proxy.rule=Host(`mail.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.calendar-proxy.entrypoints=web",
|
||||
]
|
||||
|
||||
check {
|
||||
type = "http"
|
||||
path = "/health"
|
||||
interval = "10s"
|
||||
timeout = "3s"
|
||||
}
|
||||
}
|
||||
|
||||
# Nginx container
|
||||
task "nginx" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = true
|
||||
}
|
||||
|
||||
config {
|
||||
image = "nginx:alpine"
|
||||
ports = ["http"]
|
||||
|
||||
volumes = [
|
||||
"local/nginx.conf:/etc/nginx/nginx.conf",
|
||||
"local/app:/var/www/html",
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
|
||||
upstream php-fpm {
|
||||
server 127.0.0.1:9000;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name mail.fbleagh.duckdns.org;
|
||||
root /var/www/html;
|
||||
index ics.php;
|
||||
|
||||
location /health {
|
||||
access_log off;
|
||||
return 200 "healthy\n";
|
||||
add_header Content-Type text/plain;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /ics.php?$query_string;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass php-fpm;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
# Security headers
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
|
||||
# Hide nginx version
|
||||
server_tokens off;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
destination = "local/nginx.conf"
|
||||
}
|
||||
template {
|
||||
data = <<EOF
|
||||
<?php
|
||||
$url = $_GET['url'];
|
||||
// Accept ICS calendar links only
|
||||
$url_arr = explode('/', $url);
|
||||
if ($url_arr[2] !== 'outlook.office365.com'
|
||||
|| $url_arr[3] !== 'owa'
|
||||
|| $url_arr[4] !== 'calendar'
|
||||
|| end($url_arr) !== 'calendar.ics'
|
||||
) {
|
||||
http_response_code(500);
|
||||
print "Error";
|
||||
exit;
|
||||
}
|
||||
$context = stream_context_create([
|
||||
"http" => [
|
||||
"header" => "User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
|
||||
]
|
||||
]);
|
||||
if (($data = @file_get_contents($url, false, $context)) === false) {
|
||||
$error = error_get_last();
|
||||
http_response_code(500);
|
||||
print "HTTP request failed: " . $error['message'];
|
||||
exit;
|
||||
}
|
||||
header('Content-Type: text/calendar; charset=utf-8');
|
||||
print $data;
|
||||
?>
|
||||
EOF
|
||||
destination = "local/app/ics.php"
|
||||
}
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 100
|
||||
memory = 128
|
||||
}
|
||||
}
|
||||
|
||||
# PHP-FPM container
|
||||
task "php-fpm" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "php:8.2-fpm-alpine"
|
||||
network_mode = "container:nginx-${NOMAD_ALLOC_ID}"
|
||||
|
||||
volumes = [
|
||||
"local/app:/var/www/html",
|
||||
"local/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf",
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
[www]
|
||||
user = www-data
|
||||
group = www-data
|
||||
listen = 127.0.0.1:9000
|
||||
listen.owner = www-data
|
||||
listen.group = www-data
|
||||
pm = dynamic
|
||||
pm.max_children = 5
|
||||
pm.start_servers = 2
|
||||
pm.min_spare_servers = 1
|
||||
pm.max_spare_servers = 3
|
||||
EOF
|
||||
destination = "local/php-fpm.conf"
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
<?php
|
||||
$url = $_GET['url'];
|
||||
# // Accept ICS calendar links only
|
||||
# $url_arr = explode('/', $url);
|
||||
# if ($url_arr[2] !== 'outlook.office365.com'
|
||||
# || $url_arr[3] !== 'owa'
|
||||
# || $url_arr[4] !== 'calendar'
|
||||
# || end($url_arr) !== 'calendar.ics'
|
||||
# ) {
|
||||
# http_response_code(500);
|
||||
# print "Error";
|
||||
# exit;
|
||||
# }
|
||||
$context = stream_context_create([
|
||||
"http" => [
|
||||
"header" => "User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
|
||||
]
|
||||
]);
|
||||
if (($data = @file_get_contents($url, false, $context)) === false) {
|
||||
$error = error_get_last();
|
||||
http_response_code(500);
|
||||
print "HTTP request failed: " . $error['message'];
|
||||
exit;
|
||||
}
|
||||
header('Content-Type: text/calendar; charset=utf-8');
|
||||
print $data;
|
||||
?>
|
||||
EOF
|
||||
destination = "local/app/ics.php"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 200
|
||||
memory = 256
|
||||
}
|
||||
}
|
||||
|
||||
# Restart policy
|
||||
restart {
|
||||
attempts = 3
|
||||
interval = "5m"
|
||||
delay = "25s"
|
||||
mode = "fail"
|
||||
}
|
||||
|
||||
# Update strategy
|
||||
update {
|
||||
max_parallel = 1
|
||||
min_healthy_time = "10s"
|
||||
healthy_deadline = "3m"
|
||||
auto_revert = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
job "democratic-csi-local" {
|
||||
datacenters = ["dc1"]
|
||||
type = "system"
|
||||
|
||||
group "controller" {
|
||||
count = 1
|
||||
|
||||
task "controller" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "democraticcsi/democratic-csi:latest"
|
||||
|
||||
args = [
|
||||
"--csi-version=1.5.0",
|
||||
"--csi-name=org.democratic-csi.local-hostpath",
|
||||
"--driver-config-file=/config/driver-config-file.yaml",
|
||||
"--log-level=info",
|
||||
"--csi-mode=controller",
|
||||
"--server-socket=/csi/csi.sock",
|
||||
]
|
||||
|
||||
volumes = [
|
||||
"local/config:/config:ro"
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<-EOH
|
||||
driver: local-hostpath
|
||||
instance_id: {{ env "node.unique.id" }}
|
||||
local-hostpath:
|
||||
shareBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
controllerBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
dirPermissionsMode: "0755"
|
||||
dirPermissionsUser: 0
|
||||
dirPermissionsGroup: 0
|
||||
EOH
|
||||
destination = "local/config/driver-config-file.yaml"
|
||||
}
|
||||
|
||||
csi_plugin {
|
||||
id = "org.democratic-csi.local-hostpath"
|
||||
type = "controller"
|
||||
mount_dir = "/csi"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 256
|
||||
memory = 128
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group "nodes" {
|
||||
task "node" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "democraticcsi/democratic-csi:latest"
|
||||
|
||||
args = [
|
||||
"--csi-version=1.5.0",
|
||||
"--csi-name=org.democratic-csi.local-hostpath",
|
||||
"--driver-config-file=/config/driver-config-file.yaml",
|
||||
"--log-level=info",
|
||||
"--csi-mode=node",
|
||||
"--server-socket=/csi/csi.sock",
|
||||
]
|
||||
|
||||
privileged = true
|
||||
|
||||
volumes = [
|
||||
"local/config:/config:ro",
|
||||
"/tmp/democratic-csi-local-hostpath:/tmp/democratic-csi-local-hostpath:rshared"
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<-EOH
|
||||
driver: local-hostpath
|
||||
instance_id: {{ env "node.unique.id" }}
|
||||
local-hostpath:
|
||||
shareBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
controllerBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
dirPermissionsMode: "0755"
|
||||
dirPermissionsUser: 0
|
||||
dirPermissionsGroup: 0
|
||||
EOH
|
||||
destination = "local/config/driver-config-file.yaml"
|
||||
}
|
||||
|
||||
csi_plugin {
|
||||
id = "org.democratic-csi.local-hostpath"
|
||||
type = "node"
|
||||
mount_dir = "/csi"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 256
|
||||
memory = 128
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
job "foodplanner" {
|
||||
datacenters = ["dc1"]
|
||||
|
||||
type = "service"
|
||||
|
||||
group "app" {
|
||||
count = 1
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 8999
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "foodplanner"
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
type = "http"
|
||||
path = "/"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
|
||||
# Prestart restore task
|
||||
task "restore" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
# image = "litestream/litestream:latest"
|
||||
image = "litestream/litestream:0.3"
|
||||
args = [
|
||||
"restore",
|
||||
# "-if-replica-exists",
|
||||
#"-if-db-not-exists",
|
||||
"-o", "/alloc/tmp/meal_planner.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db"
|
||||
]
|
||||
volumes = [
|
||||
"/opt/nomad/data:/data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
task "app" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/foodplanner:main"
|
||||
ports = ["http"]
|
||||
|
||||
# Mount the SQLite database file to persist data
|
||||
# Adjust the source path as needed for your environment
|
||||
volumes = [
|
||||
"/mnt/Public/configs/FoodPlanner_backups:/app/backups/",
|
||||
]
|
||||
}
|
||||
env {
|
||||
DATABASE_PATH = "/alloc/tmp"
|
||||
DATABASE_URL = "sqlite:////alloc/tmp/meal_planner.db"
|
||||
}
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 1024
|
||||
}
|
||||
|
||||
# Restart policy
|
||||
restart {
|
||||
attempts = 3
|
||||
interval = "10m"
|
||||
delay = "15s"
|
||||
mode = "fail"
|
||||
}
|
||||
}
|
||||
|
||||
# Litestream sidecar for continuous replication
|
||||
task "litestream" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart" # runs after main task starts
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
# image = "litestream/litestream:0.5.0-test.10"
|
||||
image = "litestream/litestream:0.3"
|
||||
args = [
|
||||
"replicate",
|
||||
"/alloc/tmp/meal_planner.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
job "gonic" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
|
||||
|
||||
group "gonic" {
|
||||
count = 1
|
||||
task "gonic" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "sentriz/gonic"
|
||||
port_map {
|
||||
http = 80
|
||||
}
|
||||
volumes = [
|
||||
"/mnt/configs/gonic/data:/data",
|
||||
"/mnt/configs/gonic/cache:/cache",
|
||||
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
|
||||
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
|
||||
"/mnt/Public/Downloads/podcasts:/podcasts",
|
||||
"/mnt/Public/Downloads/musicplaylists:/musicplaylists",
|
||||
|
||||
]
|
||||
}
|
||||
env{
|
||||
GONIC_SCAN_INTERVAL = "120"
|
||||
GONIC_MUSIC_PATH = "/music"
|
||||
GONIC_PODCAST_PATH = "/podcasts"
|
||||
GONIC_PLAYLISTS_PATH = "/musicplaylists"
|
||||
}
|
||||
resources {
|
||||
cpu = 100 # 100 MHz
|
||||
memory = 256 # 128 MB
|
||||
network {
|
||||
port "http" {
|
||||
static = "4747"
|
||||
}
|
||||
}
|
||||
}
|
||||
service {
|
||||
name = "gonic"
|
||||
tags = [
|
||||
"gonic",
|
||||
"web",
|
||||
"urlprefix-/gonic",
|
||||
"backend",
|
||||
"traefik.http.routers.goniclan.rule=Host(`gonic.service.dc1.consul`)",
|
||||
"traefik.http.routers.gonicwan.rule=Host(`mg.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.gonicwan.tls=true",
|
||||
"traefik.http.routers.gonicwan.tls.certresolver=myresolver"
|
||||
|
||||
]
|
||||
// "traefik.http.middlewares.gonic_auth.basicauth.users=admin:$2y$05$cJGONoS0BFTeBUXqmETikeI14QhLDKIDkYuPdA1umIOC129grVMAm",
|
||||
port = "http"
|
||||
meta {
|
||||
ALLOC = "${NOMAD_ALLOC_ID}"
|
||||
}
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
} #end gonic
|
||||
|
||||
task "init-manual" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
args = ["flock", "-x","/locks/${NOMAD_GROUP_NAME}_rsync.lock","rsync","-av","--exclude=Backups","/configbackup/","/config/","--delete-before"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task "finalsync-manual" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
args = ["flock", "-x","/locks/${NOMAD_GROUP_NAME}_rsync.lock","rsync","-av","/config/","/configbackup/"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
task "db-sync" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart"
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
]
|
||||
|
||||
// args = ["/usr/local/bin/litestream", "replicate", "-config","/local/litestream.yml"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
dbs:
|
||||
- path: /data/gonic.db
|
||||
replicas:
|
||||
- path: /configbackup
|
||||
EOH
|
||||
|
||||
destination = "local/litestream.yml"
|
||||
}
|
||||
|
||||
} #####
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,285 +0,0 @@
|
||||
job "hass" {
|
||||
# region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
# priority = 50
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
// constraint {
|
||||
// operator = "distinct_hosts"
|
||||
// value = "true"
|
||||
// }
|
||||
|
||||
affinity {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
value = "odroid2"
|
||||
weight = 80
|
||||
}
|
||||
update {
|
||||
# Stagger updates every 60 seconds
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
}
|
||||
group "hass" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 99
|
||||
interval = "1h"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
task "init" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
image_pull_timeout = "10m"
|
||||
force_pull = false
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
}
|
||||
env {
|
||||
DB_NAME = "home-assistant_v2.db"
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
// template {
|
||||
// data = <<EOH
|
||||
// dbs:
|
||||
// - path: /config/radarr.db
|
||||
// replicas:
|
||||
// - path: /configbackup
|
||||
// EOH
|
||||
|
||||
// destination = "local/litestream.yml"
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
task "finalsync" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
// args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-av","--exclude='8-20 * * *.db8-20 * * *'","--exclude='8-20 * * *.db'","--exclude='8-20 * * *.db-litestream'","--exclude='generations'","/config/","/configbackup/"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 128 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task "sync" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart"
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/:/configs",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
]
|
||||
args = ["client"]
|
||||
}
|
||||
env {
|
||||
CRON_TASK_1 = "50 8-20 * * *rsync -av --exclude='*.db*' --exclude='*.db' --exclude='.db-litestream' --exclude='generations' /configs/${NOMAD_GROUP_NAME}/ /configbackup/;"
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
task "hass" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
// image = "homeassistant/armhf-homeassistant:latest"
|
||||
image = "ghcr.io/home-assistant/home-assistant:stable"
|
||||
ports = ["http","http_8989"]
|
||||
memory_hard_limit = "2048"
|
||||
network_mode = "host"
|
||||
cap_add = ["NET_ADMIN"]
|
||||
force_pull = false
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
"local/configuration.yaml:/config/configuration.yaml",
|
||||
"local/ui-lovelace.yaml:/config/ui-lovelace.yaml",
|
||||
"/mnt/configs/hass:/config",
|
||||
]
|
||||
// "local/auth_provider.homeassistant:/config/.storage/auth_provider.homeassistant"
|
||||
|
||||
|
||||
|
||||
}
|
||||
env {
|
||||
JEMALLOC_DISABLE=true
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["global", "homeassistant", "tools","logo=home-assistant"]
|
||||
port = "http"
|
||||
|
||||
// check {
|
||||
// name = "hass-alive"
|
||||
// type = "http"
|
||||
// type = "script"
|
||||
// command = "curl -sS http://localhost:8123"
|
||||
// interval = "120s"
|
||||
// timeout = "15s"
|
||||
// path = "/api/"
|
||||
// port = "http"
|
||||
|
||||
// check_restart {
|
||||
// limit = 10
|
||||
// grace = "90s"
|
||||
// ignore_warnings = false
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
// template {
|
||||
// data = <<EOH
|
||||
// homeassistant:
|
||||
// name: Our_House
|
||||
// latitude: 40.7654
|
||||
// longitude: -73.8175
|
||||
// elevation: 26
|
||||
// unit_system: metric
|
||||
// time_zone: America/New_York
|
||||
// auth_providers:
|
||||
// - type: trusted_networks
|
||||
// trusted_networks:
|
||||
// - 127.0.0.1
|
||||
// - ::1
|
||||
// - 192.168.1.0/24
|
||||
// allow_bypass_login: true
|
||||
// - type: homeassistant
|
||||
// frontend:
|
||||
// lovelace:
|
||||
// mode: yaml
|
||||
// config:
|
||||
// http:
|
||||
// sun:
|
||||
// automation:
|
||||
// - alias: LightsAtSunset
|
||||
// trigger:
|
||||
// platform: sun
|
||||
// event: sunset
|
||||
// action:
|
||||
// service: switch.turn_on
|
||||
// entity_id: switch.lampdrawers
|
||||
// wemo:
|
||||
// static:
|
||||
// - 192.168.99.200 # StuBed
|
||||
// - 192.168.99.201 # LampDrawers
|
||||
// - 192.168.99.202 # BigLamp
|
||||
// - 192.168.99.203 # TallTree
|
||||
// - 192.168.99.204 # ShortTree
|
||||
// - 192.168.99.205 # TallTree
|
||||
// switch:
|
||||
// - platform: template
|
||||
// switches:
|
||||
// living_room_screen_off:
|
||||
// friendly_name: 'living_room_screen_off'
|
||||
// turn_on:
|
||||
// - service: input_boolean.turn_on
|
||||
// entity_id: input_boolean.living_room_screen_off
|
||||
// - service: webostv.command
|
||||
// data:
|
||||
// {
|
||||
// "entity_id": "media_player.lg_webos_smart_tv",
|
||||
// "command": "com.webos.service.tvpower/power/turnOffScreen"
|
||||
// }
|
||||
// turn_off:
|
||||
// - service: input_boolean.turn_off
|
||||
// entity_id: input_boolean.living_room_screen_off
|
||||
// - service: webostv.command
|
||||
// data:
|
||||
// {
|
||||
// "entity_id": "media_player.lg_webos_smart_tv",
|
||||
// "command": "com.webos.service.tvpower/power/turnOnScreen"
|
||||
// }
|
||||
// EOH
|
||||
|
||||
// destination = "local/configuration.yaml"
|
||||
// }
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"homeassistant/configuration.yml\" }}"
|
||||
destination = "local/configuration.yaml"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"homeassistant/lovelace.yml\" }}"
|
||||
destination = "local/ui-lovelace.yaml"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 256 # 500 MHz
|
||||
memory = 128 # 128MB
|
||||
}
|
||||
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
|
||||
kill_timeout = "10s"
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 8123
|
||||
to = 8123
|
||||
}
|
||||
port "http_8989" {
|
||||
static = 8989
|
||||
to = 8989
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
job "immich" {
|
||||
datacenters = ["dc1"] # Specify your datacenter
|
||||
type = "service"
|
||||
|
||||
group "immich" {
|
||||
count = 1
|
||||
|
||||
task "immich" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/imagegenius/immich:2.2.3-noml"
|
||||
memory_hard_limit = "2048"
|
||||
ports = ["http"]
|
||||
volumes = [
|
||||
"/mnt/Public/configs/Immich:/config",
|
||||
"/mnt/Public/Immich/Photos:/photos",
|
||||
"/mnt/Public/Immich/libraries:/libraries" # optional
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
PUID = "1000"
|
||||
PGID = "1000"
|
||||
TZ = "Etc/UTC"
|
||||
DB_HOSTNAME = "master.postgres.service.dc1.consul"
|
||||
DB_USERNAME = "postgres"
|
||||
DB_PASSWORD = "postgres"
|
||||
DB_DATABASE_NAME = "immich"
|
||||
DB_PORT = "5432" # optional
|
||||
REDIS_HOSTNAME = "redis.service.dc1.consul"
|
||||
REDIS_PORT = "6379" # optional
|
||||
REDIS_PASSWORD = "" # optional
|
||||
MACHINE_LEARNING_HOST = "0.0.0.0" # optional
|
||||
MACHINE_LEARNING_PORT = "3003" # optional
|
||||
MACHINE_LEARNING_WORKERS = "1" # optional
|
||||
MACHINE_LEARNING_WORKER_TIMEOUT = "120" # optional
|
||||
DB_VECTOR_EXTENSION= "pgvector"
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["immich", "tools",
|
||||
"traefik.http.routers.immichlan.rule=Host(`immich.service.dc1.consul`)",
|
||||
"traefik.http.routers.immichwan.rule=Host(`immich.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.immichwan.tls=true",
|
||||
]
|
||||
port = "http"
|
||||
|
||||
}
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 512
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 8088
|
||||
to = 8080
|
||||
}
|
||||
}
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "5m"
|
||||
delay = "30s"
|
||||
mode = "delay"
|
||||
}
|
||||
}
|
||||
|
||||
# group "immichpg" {
|
||||
# count = 1
|
||||
|
||||
# task "immichpg" {
|
||||
# driver = "docker"
|
||||
|
||||
# config {
|
||||
# image = "tensorchord/pgvecto-rs:pg14-v0.2.0"
|
||||
# ports = ["pg"]
|
||||
# }
|
||||
# env {
|
||||
# POSTGRES_USER="postgres"
|
||||
# POSTGRES_PASSWORD = "postgres"
|
||||
# POSTGRES_DB = "immich"
|
||||
# }
|
||||
|
||||
# service {
|
||||
# name = "${TASKGROUP}"
|
||||
# tags = ["immich", "tools"]
|
||||
# port = "pg"
|
||||
|
||||
# }
|
||||
# resources {
|
||||
# cpu = 500
|
||||
# memory = 500
|
||||
# }
|
||||
# }
|
||||
|
||||
# network {
|
||||
# port "pg" {
|
||||
# static = 5433
|
||||
# to = 5432
|
||||
# }
|
||||
# }
|
||||
|
||||
# restart {
|
||||
# attempts = 2
|
||||
# interval = "5m"
|
||||
# delay = "30s"
|
||||
# mode = "delay"
|
||||
# }
|
||||
|
||||
|
||||
# }
|
||||
|
||||
group "redis" {
|
||||
count = 1
|
||||
|
||||
task "redis" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "redis"
|
||||
ports = ["redis"]
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["wallabag", "tools"]
|
||||
port = "redis"
|
||||
|
||||
}
|
||||
resources {
|
||||
cpu = 250
|
||||
memory = 256
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "redis" {
|
||||
static = 6379
|
||||
}
|
||||
}
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "5m"
|
||||
delay = "30s"
|
||||
mode = "delay"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
job "minihass" {
|
||||
datacenters = ["dc1"]
|
||||
|
||||
group "smart-home" {
|
||||
network {
|
||||
mode = "host"
|
||||
port "http" {
|
||||
to = 5000
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "minihass"
|
||||
port = "http"
|
||||
tags = [
|
||||
"traefik.http.routers.minihasslan.rule=Host(`minihass.service.dc1.consul`)",
|
||||
"traefik.http.routers.minihasswan.rule=Host(`mh.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.minihasswan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.minihasswan.tls=true",
|
||||
]
|
||||
check {
|
||||
type = "http"
|
||||
path = "/health"
|
||||
interval = "30s"
|
||||
timeout = "7s"
|
||||
}
|
||||
}
|
||||
|
||||
task "app" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/minihass"
|
||||
ports = ["http"]
|
||||
}
|
||||
|
||||
env {
|
||||
CONSUL_HOST = "consul.service.dc1.consul"
|
||||
CONSUL_PORT = "8500"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 256
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,118 +0,0 @@
|
||||
job "navidrome" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
|
||||
group "navidrome" {
|
||||
count = 1
|
||||
|
||||
# Prestart restore task
|
||||
task "restore" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
image = "litestream/litestream:latest"
|
||||
args = [
|
||||
"restore",
|
||||
"-if-replica-exists",
|
||||
"-if-db-not-exists",
|
||||
"-o", "/alloc/tmp/navidrome.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
|
||||
|
||||
]
|
||||
volumes = [
|
||||
"/mnt/configs/navidrome:/data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
# Main Navidrome task
|
||||
task "navidrome" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/navidrome/navidrome:latest"
|
||||
memory_hard_limit = "2048"
|
||||
ports = ["http"]
|
||||
volumes = [
|
||||
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
|
||||
"/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro",
|
||||
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
|
||||
"/mnt/configs/navidrome:/data"
|
||||
|
||||
]
|
||||
}
|
||||
env {
|
||||
ND_DATAFOLDER = "/alloc/tmp/"
|
||||
ND_CACHEFOLDER = "./data/cache"
|
||||
ND_SCANSCHEDULE = "32 8-20 * * *"
|
||||
ND_LOGLEVEL = "debug"
|
||||
ND_REVERSEPROXYWHITELIST = "0.0.0.0/0"
|
||||
ND_REVERSEPROXYUSERHEADER = "X-Forwarded-User"
|
||||
ND_SCANNER_GROUPALBUMRELEASES = "False"
|
||||
ND_BACKUP_PATH = "/data"
|
||||
ND_BACKUP_SCHEDULE = "0 0 * * *"
|
||||
ND_BACKUP_COUNT = "7"
|
||||
}
|
||||
resources {
|
||||
cpu = 100
|
||||
memory = 128
|
||||
}
|
||||
service {
|
||||
name = "navidrome"
|
||||
tags = [
|
||||
"navidrome",
|
||||
"web",
|
||||
"urlprefix-/navidrome",
|
||||
"tools",
|
||||
"traefik.http.routers.navidromelan.rule=Host(`navidrome.service.dc1.consul`)",
|
||||
"traefik.http.routers.navidromewan.rule=Host(`fbleagh-m.ignorelist.com`)",
|
||||
"traefik.http.routers.navidromewan.rule=Host(`m.fbleagh.duckdns.org`,`m.fbleagh.dedyn.io`)",
|
||||
"traefik.http.routers.navidromewan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.navidromewan.tls=true",
|
||||
]
|
||||
port = "http"
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Litestream sidecar for continuous replication
|
||||
task "litestream" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart" # runs after main task starts
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
image = "litestream/litestream:latest"
|
||||
args = [
|
||||
"replicate",
|
||||
"/alloc/tmp/navidrome.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
|
||||
]
|
||||
volumes = [
|
||||
"/mnt/configs/navidrome:/data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 4533
|
||||
to = 4533
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
job "nginx" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
group "nginx" {
|
||||
count = 1
|
||||
|
||||
task "nginx" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "nginx"
|
||||
ports = ["http"]
|
||||
|
||||
volumes = [
|
||||
"custom/default.conf:/etc/nginx/conf.d/default.conf",
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
server {
|
||||
listen 8080;
|
||||
server_name nginx.service.dc1.consul;
|
||||
location / {
|
||||
root /local/data;
|
||||
}
|
||||
}
|
||||
EOH
|
||||
|
||||
destination = "custom/default.conf"
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
<p>Local Services - HTTP/HTTPS</p>
|
||||
<table style="width:100%">
|
||||
<tr>
|
||||
<th>Service Name</th>
|
||||
<th>Traefik</th>
|
||||
<th>Direct</th>
|
||||
</tr>
|
||||
{{range services}}
|
||||
{{range $i, $s :=service .Name}}
|
||||
{{ if eq $i 0 }}
|
||||
|
||||
<tr>
|
||||
<td>{{.Name}}</td>
|
||||
<td><a href="{{ if eq .Name "unifi" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul" target="_blank">{{.Name}}.service.dc1.consul</a></td>
|
||||
<td><a href="{{ if eq .Name "unifi" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}" target="_blank">{{ if eq .Name "unifi" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}</a></td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
</table>
|
||||
<p>
|
||||
Node Environment Information: <br />
|
||||
node_id: {{ env "node.unique.id" }} <br/>
|
||||
datacenter: {{ env "NOMAD_DC" }}
|
||||
</p>
|
||||
EOH
|
||||
|
||||
destination = "local/data/index.html"
|
||||
change_mode = "noop"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 100 # 100 MHz
|
||||
memory = 64 # 128 MB
|
||||
}
|
||||
service {
|
||||
name = "nginx"
|
||||
tags = ["nginx", "web", "urlprefix-/nginx", "backend"]
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 8080
|
||||
}
|
||||
|
||||
// port "https" {
|
||||
// to = 443
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,305 +0,0 @@
|
||||
job "nzbget" {
|
||||
# region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
# priority = 50
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
update {
|
||||
# Stagger updates every 60 seconds
|
||||
stagger = "90s"
|
||||
max_parallel = 1
|
||||
healthy_deadline = "5m"
|
||||
}
|
||||
group "nzbget" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 8
|
||||
interval = "20m"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
// task "init-trigger" {
|
||||
// driver = "docker"
|
||||
|
||||
// lifecycle {
|
||||
// hook = "prestart"
|
||||
// }
|
||||
|
||||
// config {
|
||||
// image = "curlimages/curl"
|
||||
// args = ["--request", "PUT", "--data", "${NOMAD_ALLOC_ID}", "http://${attr.unique.network.ip-address}:8500/v1/kv/${NOMAD_GROUP_NAME}"]
|
||||
// }
|
||||
// resources {
|
||||
// cpu = 20 # 500 MHz
|
||||
// memory = 20 # 128MB
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
task "ovpn-client" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = true
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "registry.service.dc1.consul:5000/openpyn:latest"
|
||||
image = "qmcgaw/gluetun"
|
||||
memory_hard_limit = "1024"
|
||||
|
||||
ports = [
|
||||
"shadowsocks",
|
||||
"nzbget",
|
||||
"http_proxy",
|
||||
"http_admin",
|
||||
"sabnzb_admin",
|
||||
"socks",
|
||||
]
|
||||
|
||||
cap_add = [
|
||||
"NET_ADMIN",
|
||||
"NET_BIND_SERVICE",
|
||||
]
|
||||
|
||||
#network_mode = "host"
|
||||
#network_mode = "vpn"
|
||||
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
]
|
||||
devices = [
|
||||
{
|
||||
host_path = "/dev/net/tun"
|
||||
container_path = "/dev/net/tun"
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
// VPNFLAGS = "us --max-load 70 --top-servers 10 --pings 5"
|
||||
// VPNFLAGS = "nl --max-load 70 --top-servers 10 --pings 5"
|
||||
// VPNSP = "nordvpn"
|
||||
// OPENVPN_USER = "yvPLaZ3xkXtnJKsyXDNQf9Ft"
|
||||
// OPENVPN_PASSWORD = "SW8XvhGkSVuQitjuFrbH9WPA"
|
||||
// REGION = "Netherlands"
|
||||
##Mullvad
|
||||
VPNSP = "mullvad"
|
||||
VPN_TYPE = "wireguard"
|
||||
COUNTRY = "Canada"
|
||||
CITY = "Toronto"
|
||||
FIREWALL_VPN_INPUT_PORTS = "56987"
|
||||
WIREGUARD_PRIVATE_KEY = "2FHwQX1jxk+qeMmXUtSGRc2kKF1WHeSCyIgHNW+7akA=" #ActiveLynx
|
||||
WIREGUARD_ADDRESS = "10.66.246.4/32"
|
||||
|
||||
|
||||
|
||||
HTTPPROXY = "on"
|
||||
UPDATER_PERIOD= "24h"
|
||||
SHADOWSOCKS_PASSWORD = "farscape5"
|
||||
SHADOWSOCKS = "off"
|
||||
DOT_PROVIDERS = "cloudflare,google,quad9,quadrant"
|
||||
DOT = "off"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}-admin"
|
||||
tags = ["global", "ovpn-openpyn"]
|
||||
port = "http_admin"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["global", "ovpn-openpyn"]
|
||||
port = "shadowsocks"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "nzbget"
|
||||
tags = ["global", "ovpn-openpyn"]
|
||||
port = "nzbget"
|
||||
}
|
||||
service {
|
||||
name = "sabnzb"
|
||||
tags = ["global", "ovpn-openpyn", "enable_gocast",
|
||||
"gocast_vip=192.168.1.247/32",
|
||||
"gocast_nat=tcp:8080:8080",
|
||||
"gocast_nat=udp:8080:8080",]
|
||||
port = "sabnzb_admin"
|
||||
}
|
||||
service {
|
||||
name = "socks-nord"
|
||||
tags = ["global", "ovpn-openpyn", "enable_gocast",
|
||||
"gocast_vip=192.168.1.243/32",
|
||||
"gocast_nat=tcp:1080:1080",
|
||||
"gocast_nat=udp:1080:1080",]
|
||||
port = "socks"
|
||||
|
||||
}
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 100 # 500 MHz
|
||||
memory = 100 # 128MB
|
||||
}
|
||||
} #task ovpn
|
||||
|
||||
|
||||
task "dante" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "serjs/go-socks5-proxy"
|
||||
// image = "ghcr.io/sstent/dante:latest"
|
||||
network_mode = "container:ovpn-client-${NOMAD_ALLOC_ID}"
|
||||
memory_hard_limit = 256
|
||||
|
||||
devices = [
|
||||
{
|
||||
host_path = "/dev/net/tun"
|
||||
container_path = "/dev/net/tun"
|
||||
},
|
||||
]
|
||||
}
|
||||
env {
|
||||
REQUIRE_AUTH = "false"
|
||||
}
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 64 # 500 MHz
|
||||
memory = 128 # 128MB
|
||||
}
|
||||
}
|
||||
######################################################################
|
||||
######################################################################
|
||||
######################################################################
|
||||
|
||||
task "init" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/rsync:v0.3.5"
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-avz", "--exclude=Backups", "/configbackup/", "/config/", "--delete-before"]
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end init task
|
||||
task "finalsync" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "pebalk/rsync"
|
||||
image = "ghcr.io/sstent/rsync:v0.3.5"
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-avz", "/config/", "/configbackup/"]
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end finalsync task
|
||||
// task "sync" {
|
||||
// driver = "docker"
|
||||
|
||||
// lifecycle {
|
||||
// hook = "poststart"
|
||||
// sidecar = true
|
||||
// }
|
||||
|
||||
// config {
|
||||
// image = "ghcr.io/sstent/rsync:v0.3.5"
|
||||
// memory_hard_limit = "2048"
|
||||
|
||||
// volumes = [
|
||||
// "/mnt/configs/:/configs",
|
||||
// "/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
// ]
|
||||
|
||||
// args = ["client"]
|
||||
// }
|
||||
// resources {
|
||||
// cpu = 20 # 500 MHz
|
||||
// memory = 20 # 128MB
|
||||
// }
|
||||
// env {
|
||||
// CRON_TASK_1 = "*/20 8-20 * * * chmod a-w /configs/${NOMAD_GROUP_NAME}/ ; rsync -avz /configs/${NOMAD_GROUP_NAME}/ /configbackup/; chmod a+w /configs/${NOMAD_GROUP_NAME}/;"
|
||||
// }
|
||||
// } #end sync task
|
||||
|
||||
######################################################################
|
||||
######################################################################
|
||||
######################################################################
|
||||
|
||||
network {
|
||||
port "shadowsocks" {
|
||||
static = "8338"
|
||||
to = "8388"
|
||||
}
|
||||
|
||||
port "http_proxy" {
|
||||
static = "8888"
|
||||
to = "8888"
|
||||
}
|
||||
port "http_admin" {
|
||||
static = "8000"
|
||||
to = "8000"
|
||||
}
|
||||
|
||||
port "sabnzb_admin" {
|
||||
static = "8080"
|
||||
to = "8080"
|
||||
}
|
||||
|
||||
|
||||
port "socks" {
|
||||
static = "1080"
|
||||
to = "1080"
|
||||
}
|
||||
port "nzbget" {
|
||||
static = "6789"
|
||||
to = "6789"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,116 +0,0 @@
|
||||
job "postgres-15" {
|
||||
type = "system"
|
||||
datacenters = ["dc1"]
|
||||
|
||||
group "group" {
|
||||
count = 1
|
||||
|
||||
network {
|
||||
|
||||
port api {
|
||||
static = 8008
|
||||
to = 8008
|
||||
}
|
||||
port pg {
|
||||
static = 5432
|
||||
to = 5432
|
||||
}
|
||||
}
|
||||
|
||||
task "db" {
|
||||
driver = "docker"
|
||||
|
||||
template {
|
||||
data = <<EOL
|
||||
scope: postgres
|
||||
name: pg-{{env "node.unique.name"}}
|
||||
namespace: /nomad
|
||||
|
||||
restapi:
|
||||
listen: 0.0.0.0:8008
|
||||
connect_address: {{env "attr.unique.network.ip-address"}}:8008
|
||||
|
||||
consul:
|
||||
scheme: http
|
||||
host: {{env "attr.unique.network.ip-address"}}:8500
|
||||
register_service: True
|
||||
|
||||
bootstrap:
|
||||
dcs:
|
||||
ttl: 30
|
||||
loop_wait: 10
|
||||
retry_timeout: 10
|
||||
maximum_lag_on_failover: 1048576
|
||||
postgresql:
|
||||
use_pg_rewind: true
|
||||
use_slots: true
|
||||
parameters:
|
||||
timezone: 'UTC'
|
||||
max_connections: 100
|
||||
shared_preload_libraries: pg_stat_statements
|
||||
shared_buffers: 64MB
|
||||
work_mem: 16MB
|
||||
effective_cache_size: 512MB
|
||||
tcp_keepalives_idle: 300
|
||||
timescaledb.telemetry_level: off
|
||||
|
||||
method: local
|
||||
local:
|
||||
command: /usr/local/bin/docker-initdb.sh
|
||||
keep_existing_recovery_conf: True
|
||||
|
||||
initdb:
|
||||
- encoding: UTF8
|
||||
|
||||
pg_hba:
|
||||
- host all postgres all md5
|
||||
- host replication repl all md5
|
||||
- host all all all md5
|
||||
|
||||
users:
|
||||
postgres:
|
||||
password: postgres
|
||||
options:
|
||||
- createrole
|
||||
- createdb
|
||||
repl:
|
||||
password: repl
|
||||
options:
|
||||
- replication
|
||||
|
||||
postgresql:
|
||||
listen: 0.0.0.0:5432
|
||||
connect_address: {{env "attr.unique.network.ip-address"}}:5432
|
||||
use_unix_socket: true
|
||||
data_dir: /store/data
|
||||
authentication:
|
||||
replication:
|
||||
username: repl
|
||||
password: repl
|
||||
superuser:
|
||||
username: postgres
|
||||
password: postgres
|
||||
EOL
|
||||
|
||||
destination = "/secrets/patroni.yml"
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/nomad-pgsql-patroni:latest"
|
||||
volumes = [
|
||||
"/mnt/configs/postgres:/store",
|
||||
]
|
||||
ports = ["api", "pg"]
|
||||
|
||||
}
|
||||
env {
|
||||
PGDATA="/store/data"
|
||||
// POSTGRES_USER="root"
|
||||
// POSTGRES_PASSWORD="rootpassword"
|
||||
}
|
||||
resources {
|
||||
memory = 1024
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,195 +0,0 @@
|
||||
job "prometheus" {
|
||||
# region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
# priority = 50
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
|
||||
# constraint {
|
||||
# attribute = "${attr.unique.hostname}"
|
||||
# operator = "regexp"
|
||||
# value = "pi.*"
|
||||
# }
|
||||
|
||||
update {
|
||||
# Stagger updates every 60 seconds
|
||||
stagger = "60s"
|
||||
max_parallel = 1
|
||||
}
|
||||
group "prometheus" {
|
||||
count = 2
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
task "prometheus" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "prom/prometheus"
|
||||
args = ["--web.enable-admin-api","--config.file=/etc/prometheus/prometheus.yml"]
|
||||
|
||||
|
||||
ports = ["http"]
|
||||
memory_hard_limit = "512"
|
||||
volumes = [
|
||||
"local/prometheus.yml:/etc/prometheus/prometheus.yml",
|
||||
"local/alerts.yml:/etc/prometheus/alerts.yml",
|
||||
]
|
||||
|
||||
// "/mnt/gv0/prom_data:/data",
|
||||
// "/etc/localtime:/etc/localtime",
|
||||
|
||||
logging {
|
||||
type = "json-file"
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["global", "prometheus"]
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
name = "alive"
|
||||
type = "http"
|
||||
interval = "10s"
|
||||
timeout = "120s"
|
||||
path = "/status"
|
||||
port = "http"
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "signal"
|
||||
change_signal = "SIGHUP"
|
||||
data = "{{ key \"prometheus_yml\" }}"
|
||||
destination = "local/prometheus.yml"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
|
||||
destination = "local/alerts.yml"
|
||||
data = "{{ key \"alerts\" }}"
|
||||
}
|
||||
resources {
|
||||
cpu = 500 # 500 MHz
|
||||
memory = 48 # 128MB
|
||||
}
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
kill_timeout = "10s"
|
||||
} ## end prometheus
|
||||
|
||||
task "alertmanager" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "prom/alertmanager"
|
||||
|
||||
ports = ["alerthttp"]
|
||||
|
||||
// volumes = [
|
||||
// "local/alertmanager.yml:/etc/prometheus/prometheus.yml",
|
||||
// ]
|
||||
args = ["--config.file=/local/alertmanager.yml"]
|
||||
// "/mnt/gv0/prom_data:/data",
|
||||
// "/etc/localtime:/etc/localtime",
|
||||
|
||||
logging {
|
||||
type = "json-file"
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASK}"
|
||||
tags = ["global", "prometheus"]
|
||||
port = "alerthttp"
|
||||
|
||||
check {
|
||||
name = "alive"
|
||||
type = "http"
|
||||
interval = "60s"
|
||||
timeout = "120s"
|
||||
path = "/status"
|
||||
port = "http"
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
global:
|
||||
receivers:
|
||||
- name: default-receiver
|
||||
- name: gotify-webhook
|
||||
webhook_configs:
|
||||
- url: "http://prometheus.service.dc1.consul:9094/gotify_webhook"
|
||||
route:
|
||||
group_wait: 10s
|
||||
group_interval: 5m
|
||||
receiver: gotify-webhook
|
||||
repeat_interval: 3h
|
||||
|
||||
EOH
|
||||
|
||||
destination = "local/alertmanager.yml"
|
||||
}
|
||||
resources {
|
||||
cpu = 128 # 500 MHz
|
||||
memory = 48 # 128MB
|
||||
}
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
kill_timeout = "10s"
|
||||
} ## end alertmanager
|
||||
|
||||
task "gotifybridge" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/druggeri/alertmanager_gotify_bridge"
|
||||
ports = ["gotifybridge"]
|
||||
args = ["--debug"]
|
||||
}
|
||||
env {
|
||||
GOTIFY_TOKEN="AQ7l7NVgtylam86"
|
||||
GOTIFY_ENDPOINT="http://gotify.service.dc1.consul/message"
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 9090
|
||||
to = 9090
|
||||
}
|
||||
port "alerthttp" {
|
||||
static = 9093
|
||||
to = 9093
|
||||
}
|
||||
port "gotifybridge" {
|
||||
static = 9094
|
||||
to = 8080
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,138 +0,0 @@
|
||||
# There can only be a single job definition per file.
|
||||
# Create a job with ID and Name 'example'
|
||||
job "prowlarr" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
|
||||
update {
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
}
|
||||
|
||||
group "prowlarr" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "fail"
|
||||
}
|
||||
|
||||
|
||||
task "flaresolver" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/flaresolverr/flaresolverr:latest"
|
||||
ports = ["http_flare"]
|
||||
dns_servers = ["192.168.1.1", "1.1.1.1"]
|
||||
memory_hard_limit = "2048"
|
||||
force_pull = false
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["prowlarr_pg", "tools"]
|
||||
port = "http_flare"
|
||||
}
|
||||
}
|
||||
|
||||
task "prowlarr" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/linuxserver/prowlarr:develop"
|
||||
ports = ["http"]
|
||||
dns_servers = ["192.168.1.1", "1.1.1.1"]
|
||||
memory_hard_limit = "2048"
|
||||
volumes = [
|
||||
"/mnt/Public/configs/prowlarr_pg:/config",
|
||||
]
|
||||
force_pull = false
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["prowlarr_pg", "tools"]
|
||||
port = "http"
|
||||
|
||||
// check {
|
||||
// type = "script"
|
||||
// name = "check_up"
|
||||
// command = "/local/healthcheck.sh"
|
||||
|
||||
// interval = "60s"
|
||||
// timeout = "5s"
|
||||
|
||||
// check_restart {
|
||||
// limit = 3
|
||||
// grace = "90s"
|
||||
// ignore_warnings = false
|
||||
// }
|
||||
|
||||
// // export API=$(grep -Po '<ApiKey>\K.8-20 * * *?(?=<.8-20 * * *?>)' /config/config.xml)
|
||||
// // curl -f "http://localhost:9696/api/v1/system/status?apikey=$API"
|
||||
// }
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
#!/bin/bash
|
||||
/usr/bin/curl -f "http://localhost:${NOMAD_PORT_http}/api/v1/system/status?apikey=$(grep -Po '<ApiKey>\K.*?(?=<.*?>)' /config/config.xml)"
|
||||
EOH
|
||||
|
||||
destination = "local/healthcheck.sh"
|
||||
perms = "0755"
|
||||
}
|
||||
|
||||
env {
|
||||
// SHARE = "Public;/mount/Public;yes;no;yes;all;none;;Public"
|
||||
# GLOBAL = "socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536"
|
||||
# PERMISSIONS = "true"
|
||||
# WORKGROUP = "WORKGROUP"
|
||||
TZ = "EST5EDT"
|
||||
|
||||
PUID = 1000
|
||||
PGID = 1000
|
||||
}
|
||||
|
||||
# We must specify the resources required for
|
||||
# this task to ensure it runs on a machine with
|
||||
# enough capacity.
|
||||
resources {
|
||||
cpu = 500 # 500 MHz
|
||||
memory = 256 # 128MB
|
||||
}
|
||||
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
|
||||
# Controls the timeout between signalling a task it will be killed
|
||||
# and killing the task. If not set a default is used.
|
||||
kill_timeout = "10s"
|
||||
} #End main task
|
||||
|
||||
network {
|
||||
// mbits = 100
|
||||
|
||||
port "http" {
|
||||
static = 9696
|
||||
to = 9696
|
||||
}
|
||||
port "http_flare" {
|
||||
static = 8191
|
||||
to = 8191
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
job "qautomate" {
|
||||
periodic {
|
||||
cron = "*/30 * * * *"
|
||||
prohibit_overlap = true
|
||||
}
|
||||
datacenters = ["dc1"]
|
||||
|
||||
type = "batch"
|
||||
|
||||
group "app" {
|
||||
count = 1
|
||||
|
||||
task "setup" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/ubuntu-python3"
|
||||
// command = "/bin/bash"
|
||||
args = ["-v","-c", "/local/prestart.sh"]
|
||||
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
#!/bin/bash
|
||||
rm /usr/lib/python3.11/EXTERNALLY-MANAGED
|
||||
pip3 install qbittorrent-api --upgrade
|
||||
python3 /local/torrent_tagger.py
|
||||
python3 /local/torrent_tidy.py
|
||||
|
||||
EOH
|
||||
perms = 0777
|
||||
destination = "local/prestart.sh"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"functions/torrent_tagger\" }}"
|
||||
destination = "local/torrent_tagger.py"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"functions/torrent_tidy\" }}"
|
||||
destination = "local/torrent_tidy.py"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,351 +0,0 @@
|
||||
job "qbittorrent" {
|
||||
# region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.cpu.arch}"
|
||||
operator = "regexp"
|
||||
value = "amd64"
|
||||
}
|
||||
update {
|
||||
# Stagger updates every 60 seconds
|
||||
stagger = "90s"
|
||||
max_parallel = 1
|
||||
healthy_deadline = "2m"
|
||||
health_check = "task_states"
|
||||
|
||||
}
|
||||
|
||||
group "qbittorrent" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 8
|
||||
interval = "20m"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
task "qbittorrent-vpn" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = true
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "registry.service.dc1.consul:5000/openpyn:latest"
|
||||
// image = "qmcgaw/gluetun"
|
||||
image = "qmcgaw/gluetun"
|
||||
|
||||
memory_hard_limit = "1024"
|
||||
ports = [
|
||||
"shadowsocks",
|
||||
"http_proxy",
|
||||
"http_admin",
|
||||
"qbittorrent_51413",
|
||||
"qbittorrent_80",
|
||||
"socks"
|
||||
]
|
||||
|
||||
cap_add = [
|
||||
"NET_ADMIN",
|
||||
"NET_BIND_SERVICE",
|
||||
]
|
||||
|
||||
#network_mode = "host"
|
||||
#network_mode = "vpn"
|
||||
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
"/mnt/syncthing/mullvad:/vpn",
|
||||
"local/gluetun.toml:/gluetun/config.toml"
|
||||
|
||||
]
|
||||
devices = [
|
||||
{
|
||||
host_path = "/dev/net/tun"
|
||||
container_path = "/dev/net/tun"
|
||||
},
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
[[roles]]
|
||||
name = "qbittorrent"
|
||||
# Define a list of routes with the syntax "Http-Method /path"
|
||||
routes = ["GET /v1/openvpn/status", "PUT /v1/openvpn/status", "PUT /v1/openvpn/status", "GET /v1/openvpn/portforwarded", "GET /v1/openvpn/settings", "GET /v1/dns/status", "PUT /v1/dns/status", "PUT /v1/dns/status", "GET /v1/updater/status", "PUT /v1/updater/status", "PUT /v1/updater/status", "GET /v1/publicip/ip", "GET /v1/version", "GET /v1/vpn/status", "PUT /v1/vpn/status", "GET /v1/vpn/settings", "PUT /v1/vpn/settings"]
|
||||
auth = "none"
|
||||
EOH
|
||||
|
||||
destination = "custom/auth.toml"
|
||||
}
|
||||
|
||||
|
||||
env {
|
||||
VPN_SERVICE_PROVIDER="airvpn"
|
||||
VPN_TYPE="wireguard"
|
||||
WIREGUARD_PRIVATE_KEY="EIos1A9eGCIoCHr02aOsEu8S4C0gqhNLIYF/vMykEV0="
|
||||
WIREGUARD_PRESHARED_KEY="RzPcraPA24hLFxGiB7z5JMWrtI+JBbEzvmeiEX36XWo="
|
||||
WIREGUARD_ADDRESSES="10.161.31.240/32"
|
||||
SERVER_COUNTRIES="Canada"
|
||||
SERVER_CITIES="Vancouver,Montreal,Toronto"
|
||||
FIREWALL_VPN_INPUT_PORTS = "61944,53304"
|
||||
HEALTH_TARGET_ADDRESS="1.1.1.1"
|
||||
HEALTH_SUCCESS_WAIT_DURATION="30s"
|
||||
HEALTH_VPN_DURATION_INITIAL="3600s"
|
||||
HEALTH_VPN_DURATION_ADDITION="600s"
|
||||
HTTP_CONTROL_SERVER_AUTH_CONFIG_FILEPATH="/custom/auth.toml"
|
||||
// HEALTH_TARGET_ADDRESS="cloudflare.com:443"
|
||||
|
||||
|
||||
##Mullvad
|
||||
#VPNSP = "mullvad"
|
||||
#VPN_TYPE = "wireguard"
|
||||
#COUNTRY = "Canada"
|
||||
#CITY = "Toronto"
|
||||
#FIREWALL_VPN_INPUT_PORTS = "56987"
|
||||
#WIREGUARD_PRIVATE_KEY = "iA64ImY2XNvml7s+HEHWNNGXeqpzFN0/KYGxhCsHLV8="
|
||||
#WIREGUARD_ADDRESS = "10.64.141.217/32"
|
||||
HTTPPROXY = "on"
|
||||
SHADOWSOCKS_PASSWORD = "farscape5"
|
||||
SHADOWSOCKS = "on"
|
||||
DOT_PROVIDERS = "cloudflare,google,quad9,quadrant"
|
||||
DOT = "off"
|
||||
WEBUI_PORT=8080
|
||||
}
|
||||
|
||||
service {
|
||||
name = "qbittorrent"
|
||||
tags = ["global", "tools"]
|
||||
port = "qbittorrent_80"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}-admin"
|
||||
tags = ["global"]
|
||||
port = "http_admin"
|
||||
}
|
||||
service {
|
||||
name = "sp"
|
||||
tags = ["global", "ovpn-openpyn",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.242/32",
|
||||
"gocast_nat=tcp:1080:1080",
|
||||
"gocast_nat=udp:1080:1080",
|
||||
]
|
||||
port = "socks"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 100 # 500 MHz
|
||||
memory = 250 # 128MB
|
||||
}
|
||||
} #task ovpn
|
||||
|
||||
task "dante" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "serjs/go-socks5-proxy"
|
||||
// image = "ghcr.io/sstent/dante-wg:latest"
|
||||
network_mode = "container:qbittorrent-vpn-${NOMAD_ALLOC_ID}"
|
||||
memory_hard_limit = 256
|
||||
|
||||
devices = [
|
||||
{
|
||||
host_path = "/dev/net/tun"
|
||||
container_path = "/dev/net/tun"
|
||||
},
|
||||
]
|
||||
}
|
||||
env {REQUIRE_AUTH="false"}
|
||||
resources {
|
||||
cpu = 64 # 500 MHz
|
||||
memory = 128 # 128MB
|
||||
}
|
||||
} #end dante
|
||||
|
||||
|
||||
# task "init" {
|
||||
# driver = "docker"
|
||||
# lifecycle {
|
||||
# hook = "prestart"
|
||||
# sidecar = false
|
||||
# }
|
||||
# config {
|
||||
# memory_hard_limit = "2048"
|
||||
|
||||
# image = "ghcr.io/sstent/rsync"
|
||||
# volumes = [
|
||||
# "/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
# "/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
# "/mnt/Public/config/locks:/locks"
|
||||
# ]
|
||||
|
||||
# args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-av", "/configbackup/", "/config/", "--delete-before"]
|
||||
# }
|
||||
# resources {
|
||||
# cpu = 20 # 500 MHz
|
||||
# memory = 20 # 128MB
|
||||
# }
|
||||
# }
|
||||
|
||||
|
||||
# task "finalsync" {
|
||||
# driver = "docker"
|
||||
# lifecycle {
|
||||
# hook = "poststop"
|
||||
# }
|
||||
# config {
|
||||
# memory_hard_limit = "2048"
|
||||
|
||||
# image = "ghcr.io/sstent/rsync"
|
||||
# volumes = [
|
||||
# "/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
# "/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
# "/mnt/Public/config/locks:/locks"
|
||||
# ]
|
||||
|
||||
# args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-av", "--delete", "/config/", "/configbackup/"]
|
||||
# }
|
||||
# resources {
|
||||
# cpu = 20 # 500 MHz
|
||||
# memory = 128 # 128MB
|
||||
# }
|
||||
# }
|
||||
|
||||
|
||||
# task "sync" {
|
||||
# driver = "docker"
|
||||
# lifecycle {
|
||||
# hook = "poststart"
|
||||
# sidecar = true
|
||||
# }
|
||||
# config {
|
||||
# memory_hard_limit = "2048"
|
||||
|
||||
# image = "ghcr.io/sstent/rsync"
|
||||
# volumes = [
|
||||
# "/mnt/configs/:/configs",
|
||||
# "/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
# ]
|
||||
# args = ["client"]
|
||||
# }
|
||||
# env {
|
||||
# CRON_TASK_1 = "25 8-20 * * * chmod a-w /configs/${NOMAD_GROUP_NAME}/ ; rsync -avz --delete /configs/${NOMAD_GROUP_NAME}/ /configbackup/; chmod a+w /configs/${NOMAD_GROUP_NAME}/;"
|
||||
|
||||
# }
|
||||
# resources {
|
||||
# cpu = 20 # 500 MHz
|
||||
# memory = 20 # 128MB
|
||||
# }
|
||||
# } #end sync
|
||||
|
||||
|
||||
task "qbittorrent" {
|
||||
driver = "docker"
|
||||
|
||||
// "/mnt/Public/config/qbittorrent:/config",
|
||||
config {
|
||||
image = "linuxserver/qbittorrent:5.1.0"
|
||||
network_mode = "container:qbittorrent-vpn-${NOMAD_ALLOC_ID}"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
#cpuset_cpus = "4-7"
|
||||
|
||||
volumes = [
|
||||
"/mnt/Public/Downloads/news/qbittorrent:/downloads/",
|
||||
"/mnt/configs/qbittorrent:/config",
|
||||
"/mnt/Archive/seeding:/archiveseeding",
|
||||
"/mnt/odroid5:/odroid5",
|
||||
]
|
||||
// ulimit {
|
||||
// nproc = "4242"
|
||||
// nofile = "2048:4096"
|
||||
// }
|
||||
sysctl = {
|
||||
"net.core.somaxconn" = "4096"
|
||||
}
|
||||
}
|
||||
env {
|
||||
TZ = "EST5EDT"
|
||||
PUID = 1000
|
||||
PGID = 1000
|
||||
WEBUI_PORT=8080
|
||||
}
|
||||
service {
|
||||
name = "qb"
|
||||
tags = ["global", "ovpn-openpyn",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.244/32",
|
||||
"gocast_nat=tcp:8080:8080",
|
||||
"gocast_nat=udp:8080:8080"
|
||||
]
|
||||
port = "qbittorrent_80"
|
||||
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
#!/bin/bash
|
||||
curl -sL http://127.0.0.1:8080/api/v2/transfer/info | grep connected || exit;
|
||||
EOH
|
||||
|
||||
destination = "local/qbithealth.sh"
|
||||
change_mode = "noop"
|
||||
perms = "0777"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 128 # 500 MHz
|
||||
memory = 256 # 128MB
|
||||
}
|
||||
} #task resilio-sync
|
||||
|
||||
network {
|
||||
// mode = "bridge"
|
||||
port "qbittorrent_51413" {
|
||||
static = 6881
|
||||
to = 6881
|
||||
}
|
||||
|
||||
port "shadowsocks" {
|
||||
static = "8388"
|
||||
to = "8388"
|
||||
}
|
||||
port "socks" {
|
||||
static = "1080"
|
||||
to = "1080"
|
||||
}
|
||||
|
||||
port "http_proxy" {
|
||||
static = "8888"
|
||||
to = "8888"
|
||||
}
|
||||
port "http_admin" {
|
||||
static = "8000"
|
||||
to = "8000"
|
||||
}
|
||||
|
||||
|
||||
port "qbittorrent_80" {
|
||||
static = 8080
|
||||
to = 8080
|
||||
}
|
||||
|
||||
}
|
||||
} #group "au-proxy"
|
||||
}
|
||||
|
||||
// }
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
# There can only be a single job definition per file.
|
||||
# Create a job with ID and Name 'example'
|
||||
job "radarr" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.cpu.arch}"
|
||||
operator = "regexp"
|
||||
value = "arm64"
|
||||
}
|
||||
|
||||
|
||||
update {
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
}
|
||||
|
||||
group "radarr" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 5
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
task "radarr" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
// image = "linuxserver/radarr:nightly"
|
||||
image = "linuxserver/radarr:latest"
|
||||
dns_servers = ["192.168.4.250", "192.168.4.1"]
|
||||
ports = ["http"]
|
||||
memory_hard_limit = "2048"
|
||||
// cpuset_cpus = "4-7"
|
||||
|
||||
volumes = [
|
||||
"/mnt/Public/Downloads/news:/downloads",
|
||||
"/mnt/Public/Downloads/movies:/movies",
|
||||
// "/mnt/configs/radarr:/config",
|
||||
"/mnt/Archive/Movies:/archive",
|
||||
"/mnt/Public/configs/radarr_pg:/config",
|
||||
// "local/config.xml:/config/config.xml"
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = "---\nkey: {{ key \"ovpn-client\" }}"
|
||||
destination = "local/file.yml"
|
||||
change_mode = "restart"
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
<Config>
|
||||
<LogLevel>Info</LogLevel>
|
||||
<Port>7878</Port>
|
||||
<UrlBase/>
|
||||
<BindAddress>*</BindAddress>
|
||||
<SslPort>9898</SslPort>
|
||||
<EnableSsl>False</EnableSsl>
|
||||
<ApiKey>237c27f22504440385e5ee295fd65eb5</ApiKey>
|
||||
<AuthenticationMethod>Forms</AuthenticationMethod>
|
||||
<Branch>master</Branch>
|
||||
<SslCertPath/>
|
||||
<LaunchBrowser>True</LaunchBrowser>
|
||||
<SslCertPassword/>
|
||||
<UpdateMechanism>Docker</UpdateMechanism>
|
||||
<AnalyticsEnabled>False</AnalyticsEnabled>
|
||||
<InstanceName>Radarr</InstanceName>
|
||||
<AuthenticationRequired>DisabledForLocalAddresses</AuthenticationRequired>
|
||||
<PostgresUser>postgres</PostgresUser>
|
||||
<PostgresPassword>postgres</PostgresPassword>
|
||||
<PostgresPort>5432</PostgresPort>
|
||||
<PostgresHost>master.postgres.service.dc1.consul</PostgresHost>
|
||||
</Config>
|
||||
EOH
|
||||
|
||||
destination = "local/config.xml"
|
||||
perms = "0755"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["radarr", "tools"]
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
type = "script"
|
||||
name = "check_up"
|
||||
command = "/local/healthcheck.sh"
|
||||
interval = "5m"
|
||||
timeout = "25s"
|
||||
|
||||
check_restart {
|
||||
limit = 3
|
||||
grace = "90s"
|
||||
ignore_warnings = false
|
||||
}
|
||||
}
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
#!/bin/bash
|
||||
/usr/bin/curl -f "http://localhost:${NOMAD_PORT_http}/api/v3/system/status?apikey=$(grep -Eo '<ApiKey>(.*)</ApiKey>' /config/config.xml | sed -e 's/<[^>]*>//g')"
|
||||
EOH
|
||||
|
||||
destination = "local/healthcheck.sh"
|
||||
perms = "0755"
|
||||
}
|
||||
|
||||
env {
|
||||
TZ = "EST5EDT"
|
||||
PUID = 1000
|
||||
PGID = 1000
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 500 # 500 MHz
|
||||
memory = 256 # 128MB
|
||||
|
||||
// network {
|
||||
// port "radarr" {
|
||||
// static = "7878"
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
|
||||
kill_timeout = "10s"
|
||||
} #Task
|
||||
|
||||
network {
|
||||
// mode = "bridge"
|
||||
port "http" {
|
||||
static = 7878
|
||||
to = 7878
|
||||
}
|
||||
}
|
||||
} #Group
|
||||
}
|
||||
@@ -1,149 +0,0 @@
|
||||
# There can only be a single job definition per file.
|
||||
# Create a job with ID and Name 'example'
|
||||
job "slskd" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.cpu.arch}"
|
||||
operator = "regexp"
|
||||
value = "amd64"
|
||||
}
|
||||
|
||||
update {
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
}
|
||||
|
||||
group "slskd" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "fail"
|
||||
}
|
||||
|
||||
task "slskd-vpn" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = true
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "registry.service.dc1.consul:5000/openpyn:latest"
|
||||
// image = "qmcgaw/gluetun"
|
||||
image = "qmcgaw/gluetun"
|
||||
|
||||
memory_hard_limit = "1024"
|
||||
ports = ["http","https","guac"]
|
||||
|
||||
cap_add = [
|
||||
"NET_ADMIN",
|
||||
"NET_BIND_SERVICE",
|
||||
]
|
||||
|
||||
#network_mode = "host"
|
||||
#network_mode = "vpn"
|
||||
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
"/mnt/syncthing/mullvad:/vpn",
|
||||
|
||||
]
|
||||
devices = [
|
||||
{
|
||||
host_path = "/dev/net/tun"
|
||||
container_path = "/dev/net/tun"
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
VPN_SERVICE_PROVIDER="airvpn"
|
||||
VPN_TYPE="wireguard"
|
||||
WIREGUARD_PRIVATE_KEY="SPpgnVCsOnz+zzorzTiOmvDF8GElgp27dSIeYAq43Vk="
|
||||
WIREGUARD_PRESHARED_KEY="TBb2gU8pSTSG6lT4QYr7pzNWN7wZEn0yeG4VDTtuy50="
|
||||
WIREGUARD_ADDRESSES="10.186.222.247/32"
|
||||
SERVER_COUNTRIES="Canada"
|
||||
SERVER_CITIES="Montreal"
|
||||
FIREWALL_VPN_INPUT_PORTS = "53304"
|
||||
HEALTH_TARGET_ADDRESS="1.1.1.1"
|
||||
HEALTH_SUCCESS_WAIT_DURATION="30s"
|
||||
HEALTH_VPN_DURATION_INITIAL="3600s"
|
||||
HEALTH_VPN_DURATION_ADDITION="600s"
|
||||
// HEALTH_TARGET_ADDRESS="cloudflare.com:443"
|
||||
|
||||
|
||||
##Mullvad
|
||||
#VPNSP = "mullvad"
|
||||
#VPN_TYPE = "wireguard"
|
||||
#COUNTRY = "Canada"
|
||||
#CITY = "Toronto"
|
||||
#FIREWALL_VPN_INPUT_PORTS = "56987"
|
||||
#WIREGUARD_PRIVATE_KEY = "iA64ImY2XNvml7s+HEHWNNGXeqpzFN0/KYGxhCsHLV8="
|
||||
#WIREGUARD_ADDRESS = "10.64.141.217/32"
|
||||
HTTPPROXY = "on"
|
||||
SHADOWSOCKS_PASSWORD = "farscape5"
|
||||
SHADOWSOCKS = "on"
|
||||
DOT_PROVIDERS = "cloudflare,google,quad9,quadrant"
|
||||
DOT = "off"
|
||||
WEBUI_PORT=8080
|
||||
}
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 100 # 500 MHz
|
||||
memory = 250 # 128MB
|
||||
}
|
||||
} #task ovpn
|
||||
|
||||
task "nicotine" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/fletchto99/nicotine-plus-docker:latest"
|
||||
memory_hard_limit = "1024"
|
||||
|
||||
network_mode = "container:slskd-vpn-${NOMAD_ALLOC_ID}"
|
||||
|
||||
volumes = [
|
||||
"/mnt/Public/Downloads/news/slskd/config:/config",
|
||||
"/mnt/Public/Downloads/news/slskd/shared:/shared",
|
||||
"/mnt/Public/Downloads/news/slskd/downloads/:/downloads",
|
||||
"/mnt/Public/Downloads/news/slskd/incomplete/:/incomplete",
|
||||
]
|
||||
}
|
||||
env {
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
TZ="Etc/UTC"
|
||||
LISTENING_PORT="53304"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
network {
|
||||
// mbits = 100
|
||||
|
||||
port "http" {
|
||||
static = 5000
|
||||
to = 5000
|
||||
}
|
||||
port "https" {
|
||||
static = 5001
|
||||
to = 5001
|
||||
}
|
||||
port "guac" {
|
||||
static = 6080
|
||||
to = 6080
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,158 +0,0 @@
|
||||
# There can only be a single job definition per file.
|
||||
# Create a job with ID and Name 'example'
|
||||
job "sonarr" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.cpu.arch}"
|
||||
operator = "regexp"
|
||||
value = "amd64"
|
||||
}
|
||||
|
||||
update {
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
}
|
||||
group "sonarr" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "fail"
|
||||
}
|
||||
|
||||
task "sonarr" {
|
||||
// driver = "raw_exec" // config { // command = "docker" // args = ["run", // "--rm", // "--name=sonarr", // "-e", "PUID=1000", // "-e", "PGID=1000", // "-e", "TZ=EST5EDT", // "-p", "8989:8989", // "-v", "/mnt/syncthing/sonarrv3:/config", // "-v", "/mnt/Public/Downloads/tv:/tv", // "-v", "/mnt/Public/Downloads/news:/downloads", // "--cpuset-cpus","4-7", // "linuxserver/sonarr:preview"] // }
|
||||
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "linuxserver/sonarr:develop"
|
||||
|
||||
ports = ["http"]
|
||||
|
||||
// dns_servers = ["192.168.1.1", "1.1.1.1"]
|
||||
memory_hard_limit = "2048"
|
||||
// cpuset_cpus = "4-7"
|
||||
|
||||
volumes = [
|
||||
"/mnt/Public/Downloads/news:/downloads",
|
||||
"/mnt/Public/Downloads/tv:/tv",
|
||||
// "/mnt/configs/sonarr:/config",
|
||||
"/mnt/Public/configs/sonarr_pg:/config",
|
||||
// "local/config.xml:/config/config.xml"
|
||||
]
|
||||
|
||||
// "/mnt/gv0/sonarr:/config",
|
||||
force_pull = false
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["sonarr", "tools"]
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
type = "script"
|
||||
name = "check_up"
|
||||
command = "/local/healthcheck.sh"
|
||||
interval = "60s"
|
||||
timeout = "5s"
|
||||
|
||||
check_restart {
|
||||
limit = 3
|
||||
grace = "90s"
|
||||
ignore_warnings = false
|
||||
}
|
||||
}
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
#!/bin/bash
|
||||
/usr/bin/curl -f "http://localhost:${NOMAD_PORT_http}/api/v3/system/status?apikey=$(grep -Eo '<ApiKey>(.*)</ApiKey>' /config/config.xml | sed -e 's/<[^>]*>//g')"
|
||||
EOH
|
||||
|
||||
destination = "local/healthcheck.sh"
|
||||
perms = "0755"
|
||||
}
|
||||
|
||||
template {
|
||||
data = "---\nkey: {{ key \"ovpn-client\" }}"
|
||||
destination = "local/file.yml"
|
||||
change_mode = "restart"
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
<Config>
|
||||
<LogLevel>Info</LogLevel>
|
||||
<Port>8989</Port>
|
||||
<UrlBase>/sonarr</UrlBase>
|
||||
<BindAddress>*</BindAddress>
|
||||
<SslPort>9898</SslPort>
|
||||
<EnableSsl>False</EnableSsl>
|
||||
<ApiKey>1632787062fb47a9a6eb4c88e32b3ff3</ApiKey>
|
||||
<AuthenticationMethod>None</AuthenticationMethod>
|
||||
<Branch>develop</Branch>
|
||||
<LaunchBrowser>True</LaunchBrowser>
|
||||
<SslCertHash/>
|
||||
<UpdateMechanism>Docker</UpdateMechanism>
|
||||
<AnalyticsEnabled>False</AnalyticsEnabled>
|
||||
<UpdateScriptPath>/config/restart.sh</UpdateScriptPath>
|
||||
<InstanceName>Sonarr</InstanceName>
|
||||
<PostgresUser>postgres</PostgresUser>
|
||||
<PostgresPassword>postgres</PostgresPassword>
|
||||
<PostgresPort>5432</PostgresPort>
|
||||
<PostgresHost>master.postgres.service.dc1.consul</PostgresHost>
|
||||
</Config>
|
||||
EOH
|
||||
|
||||
destination = "local/config.xml"
|
||||
perms = "0755"
|
||||
}
|
||||
env {
|
||||
// SHARE = "Public;/mount/Public;yes;no;yes;all;none;;Public"
|
||||
# GLOBAL = "socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536"
|
||||
# PERMISSIONS = "true"
|
||||
# WORKGROUP = "WORKGROUP"
|
||||
TZ = "EST5EDT"
|
||||
|
||||
PUID = 1000
|
||||
PGID = 1000
|
||||
}
|
||||
|
||||
# We must specify the resources required for
|
||||
# this task to ensure it runs on a machine with
|
||||
# enough capacity.
|
||||
resources {
|
||||
cpu = 500 # 500 MHz
|
||||
memory = 256 # 128MB
|
||||
}
|
||||
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 12
|
||||
max_file_size = 15
|
||||
}
|
||||
|
||||
# Controls the timeout between signalling a task it will be killed
|
||||
# and killing the task. If not set a default is used.
|
||||
kill_timeout = "10s"
|
||||
} #End main task
|
||||
|
||||
network {
|
||||
// mbits = 100
|
||||
|
||||
port "http" {
|
||||
static = 8989
|
||||
to = 8989
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,218 +0,0 @@
|
||||
job "traefik" {
|
||||
datacenters = ["dc1"]
|
||||
type = "system"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
|
||||
update {
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
healthy_deadline = "5m"
|
||||
}
|
||||
|
||||
group "traefik" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 6
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
task "traefik" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "traefik:2.9"
|
||||
// network_mode = "host"
|
||||
|
||||
args = [
|
||||
// "--api.dashboard",
|
||||
// "--providers.consulcatalog.defaultRule=Host(`{{ .Name }}.service.dc1.consul`)",
|
||||
// "--providers.consulcatalog.endpoint.address=${attr.unique.network.ip-address}:8500",
|
||||
// "--providers.consulcatalog.exposedbydefault=true",
|
||||
// "--metrics=true",
|
||||
// "--metrics.prometheus=true",
|
||||
// "--metrics.prometheus.entryPoint=web",
|
||||
// "--entryPoints.web.address=:80",
|
||||
// "--entryPoints.websecure.address=:443",
|
||||
// "--entryPoints.openvpn.address=:1194/udp",
|
||||
"--configFile=/local/file.yml",
|
||||
// "--certificatesresolvers.myresolver.acme.email=stuart.stent@gmail.com",
|
||||
// "--certificatesresolvers.myresolver.acme.storage=/acmecert/acme.json",
|
||||
// "--certificatesresolvers.myresolver.acme.tlschallenge=true",
|
||||
// "--certificatesresolvers.myresolver-int.acme.email=stuart.stent@gmail.com",
|
||||
// "--certificatesresolvers.myresolver-int.acme.storage=/acmecert/acme.json",
|
||||
// "--certificatesresolvers.myresolver-int.acme.tlschallenge=true",
|
||||
// "--certificatesresolvers.myresolver-int.acme.dnschallenge=true",
|
||||
// "--certificatesresolvers.myresolver-int.acme.dnschallenge.provider=duckdns",
|
||||
"--accesslog=true",
|
||||
// "--serversTransport.insecureSkipVerify=true",
|
||||
]
|
||||
volumes = [
|
||||
"/var/run/docker.sock:/var/run/docker.sock",
|
||||
"/mnt/mnt/configs/letsencrypt:/acmecert/",
|
||||
]
|
||||
|
||||
dns_servers = ["192.168.1.1", "192.168.1.250"]
|
||||
ports = ["traefik", "traefikhttps","traefikui"]
|
||||
|
||||
memory_hard_limit = 2048
|
||||
}
|
||||
|
||||
env {
|
||||
TZ = "EST5EDT"
|
||||
PUID = 1000
|
||||
PGID = 1000
|
||||
DUCKDNS_TOKEN="e4b5ca33-1f4d-494b-b06d-6dd4600df662"
|
||||
}
|
||||
|
||||
template {
|
||||
left_delimiter = "[["
|
||||
right_delimiter = "]]"
|
||||
|
||||
data = <<EOH
|
||||
http:
|
||||
serversTransports:
|
||||
insecureSkipVerify: true
|
||||
|
||||
entryPoints:
|
||||
web:
|
||||
address: :80
|
||||
websecure:
|
||||
address: :443
|
||||
|
||||
log:
|
||||
level: DEBUG
|
||||
|
||||
metrics:
|
||||
prometheus:
|
||||
addRoutersLabels: true
|
||||
addServicesLabels: true
|
||||
|
||||
api:
|
||||
dashboard: true
|
||||
insecure: true
|
||||
|
||||
providers:
|
||||
consulCatalog:
|
||||
exposedByDefault: true
|
||||
refreshInterval: 30s
|
||||
defaultRule: "Host(`{{ .Name }}.service.dc1.consul`)"
|
||||
endpoint:
|
||||
address: "[[env "attr.unique.network.ip-address"]]:8500"
|
||||
file:
|
||||
filename: /local/tls.yml
|
||||
|
||||
|
||||
EOH
|
||||
|
||||
destination = "local/file.yml"
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
tls:
|
||||
certificates:
|
||||
- certFile: /local/duckdns_fullchain.pem
|
||||
keyFile: /local/duckdns_privkey.pem
|
||||
- certFile: /local/dedyn_fullchain.pem
|
||||
keyFile: /local/dedyn_privkey.pem
|
||||
stores:
|
||||
default:
|
||||
defaultCertificate:
|
||||
certFile: /local/duckdns_fullchain.pem
|
||||
keyFile: /local/duckdns_privkey.pem
|
||||
|
||||
EOH
|
||||
|
||||
destination = "local/tls.yml"
|
||||
}
|
||||
|
||||
|
||||
// file:
|
||||
// directory: /local/tls.yaml
|
||||
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"letsconsul/*.fbleagh.duckdns.org/fullchain.cer\" }}"
|
||||
destination = "local/duckdns_fullchain.pem"
|
||||
perms = 0777
|
||||
}
|
||||
template {
|
||||
change_mode = "noop"
|
||||
data = "{{ key \"letsconsul/*.fbleagh.duckdns.org/*.fbleagh.duckdns.org.key\" }}"
|
||||
destination = "local/duckdns_privkey.pem"
|
||||
perms = 0777
|
||||
}
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"letsconsul/*.fbleagh.dedyn.io/fullchain.cer\" }}"
|
||||
destination = "local/dedyn_fullchain.pem"
|
||||
perms = 0777
|
||||
}
|
||||
template {
|
||||
change_mode = "noop"
|
||||
data = "{{ key \"letsconsul/*.fbleagh.dedyn.io/*.fbleagh.dedyn.io.key\" }}"
|
||||
destination = "local/dedyn_privkey.pem"
|
||||
perms = 0777
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
|
||||
tags = [
|
||||
"global",
|
||||
"traefik",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.249/32",
|
||||
"gocast_nat=tcp:443:443",
|
||||
"gocast_nat=udp:443:443"]
|
||||
|
||||
|
||||
|
||||
port = "traefik"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}-ui"
|
||||
|
||||
tags = [
|
||||
"global",
|
||||
"traefik",
|
||||
"traefik.http.routers.dashboard.rule=Host(`traefik-ui.service.dc1.consul`)",
|
||||
"traefik.http.routers.dashboard.service=api@internal",
|
||||
]
|
||||
|
||||
port = "traefik"
|
||||
} #end service
|
||||
|
||||
resources {
|
||||
cpu = 256 # 500 MHz
|
||||
memory = 256 # 128MB
|
||||
} #end resources
|
||||
} #end task
|
||||
|
||||
network {
|
||||
port "traefik" {
|
||||
static = 80
|
||||
to = 80
|
||||
}
|
||||
|
||||
port "traefikui" {
|
||||
static = 8090
|
||||
to = 8080
|
||||
}
|
||||
|
||||
port "traefikhttps" {
|
||||
static = 443
|
||||
to = 443
|
||||
}
|
||||
}
|
||||
} # end group
|
||||
} # end job
|
||||
@@ -1,106 +0,0 @@
|
||||
job "trilium" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
group "trilium" {
|
||||
count = 1
|
||||
|
||||
# Prestart restore task
|
||||
task "restore" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
image = "litestream/litestream:latest"
|
||||
args = [
|
||||
"restore",
|
||||
"-if-replica-exists",
|
||||
"-if-db-not-exists",
|
||||
"-o", "/alloc/tmp/trilium.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/trilium.db"
|
||||
|
||||
]
|
||||
volumes = [
|
||||
"/mnt/configs/trilium:/data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
# Main trilium task
|
||||
task "trilium" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "triliumnext/trilium:stable"
|
||||
memory_hard_limit = "2048"
|
||||
ports = ["http"]
|
||||
volumes = [
|
||||
"/mnt/configs/trilium:/home/node/trilium-data/data",
|
||||
"/mnt/Public/configs/trilium/backup:/home/node/trilium-data/backup",
|
||||
"/mnt/Public/configs/trilium/config:/home/node/trilium-data/config"
|
||||
|
||||
|
||||
]
|
||||
}
|
||||
env {
|
||||
TRILIUM_DATA_DIR="/home/node/trilium-data/data"
|
||||
TRILIUM_BACKUP_DIR="/home/node/trilium-data/backup"
|
||||
TRILIUM_CONFIG_INI_PATH= "/home/node/trilium-data/config/config.ini"
|
||||
|
||||
}
|
||||
resources {
|
||||
cpu = 100
|
||||
memory = 128
|
||||
}
|
||||
service {
|
||||
name = "trilium"
|
||||
tags = [
|
||||
"trilium",
|
||||
"web",
|
||||
"urlprefix-/trilium",
|
||||
"tools",
|
||||
"traefik.http.routers.triliumlan.rule=Host(`trilium.service.dc1.consul`)",
|
||||
"traefik.http.routers.triliumwan.rule=Host(`tril.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.triliumwan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.triliumwan.tls=true",
|
||||
]
|
||||
port = "http"
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Litestream sidecar for continuous replication
|
||||
task "litestream" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart" # runs after main task starts
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
image = "litestream/litestream:latest"
|
||||
args = [
|
||||
"replicate",
|
||||
"/alloc/tmp/trilium.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/trilium.db"
|
||||
]
|
||||
volumes = [
|
||||
"/mnt/configs/trilium:/data"
|
||||
]
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 6699
|
||||
to = 8080
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,231 +0,0 @@
|
||||
job "vaultwarden" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.cpu.arch}"
|
||||
operator = "regexp"
|
||||
value = "arm64"
|
||||
}
|
||||
|
||||
group "vaultwarden" {
|
||||
count = 1
|
||||
task "vaultwarden" {
|
||||
driver = "docker"
|
||||
config {
|
||||
# image = "vaultwarden/server:latest"
|
||||
image = "vaultwarden/server:1.32.7"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
ports = ["http"]
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/data",
|
||||
]
|
||||
}
|
||||
env {
|
||||
// vaultwarden_SCAN_INTERVAL = "120"
|
||||
// vaultwarden_MUSIC_PATH = "/music"
|
||||
// vaultwarden_PODCAST_PATH = "/podcasts"
|
||||
ADMIN_TOKEN = "VReYRX0RuSw3mxmGFG4+2ECY71l/wYmuD52NOWDur6e43z/inbUmJGUr5KU4wtjW"
|
||||
ENABLE_DB_WAL = "false"
|
||||
DATABASE_URL= "postgresql://postgres:postgres@master.postgres.service.dc1.consul:5432/vaultwarden"
|
||||
}
|
||||
resources {
|
||||
cpu = 100 # 100 MHz
|
||||
memory = 128 # 128 MB
|
||||
}
|
||||
service {
|
||||
name = "vaultwarden"
|
||||
tags = [
|
||||
"vaultwarden",
|
||||
"web",
|
||||
"urlprefix-/vaultwarden",
|
||||
"backend",
|
||||
"traefik.http.routers.vaultwardenlan.rule=Host(`vaultwarden.service.dc1.consul`)",
|
||||
"traefik.http.routers.vaultwardenwan.rule=Host(`vault.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.vaultwardenwan-admin.rule=(Host(`vault.fbleagh.duckdns.org`) && PathPrefix(`/admin/`))",
|
||||
"traefik.http.routers.vaultwardenwan.tls=true",
|
||||
// "traefik.http.routers.vaultwardenwan.tls.certresolver=myresolver-int",
|
||||
"traefik.http.middlewares.vaultwardenwan-admin-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.4.0/22",
|
||||
"traefik.http.routers.nginx-admin.middlewares=vaultwardenwan-admin-ipwhitelist",
|
||||
"enable_gocast",
|
||||
"gocast_vip=192.168.1.246/32",
|
||||
"gocast_nat=tcp:8081:8081",
|
||||
"gocast_nat=udp:8081:8081"
|
||||
]
|
||||
// "traefik.http.middlewares.vaultwarden_auth.basicauth.users=admin:$2y$05$cJGONoS0BFTeBUXqmETikeI14QhLDKIDkYuPdA1umIOC129grVMAm",
|
||||
// https://github.com/dani-garcia/vaultwarden/issues/676
|
||||
// labels:
|
||||
// - traefik.enable=true
|
||||
// - traefik.docker.network=traefik
|
||||
// # Define middleware of 'redirect-https', set scheme and set permanent redirect as true
|
||||
// - traefik.http.middlewares.redirect-https.redirectScheme.scheme=https
|
||||
// - traefik.http.middlewares.redirect-https.redirectScheme.permanent=true
|
||||
// # Define service of 'bitwarden' for UI port when using entrypoint websecure (port 443)
|
||||
// - traefik.http.services.bitwarden.loadbalancer.server.port=80
|
||||
// - traefik.http.routers.bitwarden-https.rule=Host(`bitwarden.domain.tld`)
|
||||
// - traefik.http.routers.bitwarden-https.entrypoints=websecure
|
||||
// - traefik.http.routers.bitwarden-https.service=bitwarden
|
||||
// # Define service of 'bitwarden' for UI port when using entrypoint web (port 80)
|
||||
// - traefik.http.routers.bitwarden-http.rule=Host(`bitwarden.domain.tld`)
|
||||
// - traefik.http.routers.bitwarden-http.entrypoints=web
|
||||
// - traefik.http.routers.bitwarden-http.middlewares=redirect-https
|
||||
// - traefik.http.routers.bitwarden-http.service=bitwarden
|
||||
// # Define service of 'bitwarden-websocket' for socket port when using entrypoint websecure (port 443)
|
||||
// - traefik.http.services.bitwarden-websocket.loadbalancer.server.port=3012
|
||||
// - traefik.http.routers.bitwarden-websocket-https.rule=Host(`bitwarden.domain.tld`) && Path(`/notifications/hub`)
|
||||
// - traefik.http.routers.bitwarden-websocket-https.entrypoints=websecure
|
||||
// - traefik.http.routers.bitwarden-websocket-https.service=bitwarden-websocket
|
||||
// # Define service of 'bitwarden-websocket' for socket port when using entrypoint web (port 80)
|
||||
// - traefik.http.routers.bitwarden-websocket-http.rule=Host(`bitwarden.domain.tld`) && Path(`/notifications/hub`)
|
||||
// - traefik.http.routers.bitwarden-websocket-http.entrypoints=web
|
||||
// - traefik.http.routers.bitwarden-websocket-http.middlewares=redirect-https
|
||||
// - traefik.http.routers.bitwarden-websocket-http.service=bitwarden-websocket
|
||||
|
||||
|
||||
|
||||
port = "http"
|
||||
meta {
|
||||
ALLOC = "${NOMAD_ALLOC_ID}"
|
||||
}
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
} #end vaultwarden
|
||||
|
||||
task "init" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-avz", "--exclude='logs'", "--exclude='/run/*.sock'", "/configbackup/", "/config/", "--delete-before"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end init task
|
||||
|
||||
task "finalsync" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "pebalk/rsync"
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-av", "--exclude='logs'", "--exclude='/run/*.sock'", "/config/", "/configbackup/", "--remove-source-files"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end finalsync task
|
||||
task "sync" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart"
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}/data:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
]
|
||||
args = ["client"]
|
||||
}
|
||||
env {
|
||||
CRON_TASK_1 = "50 * * * * rsync -av --exclude='*.db' --exclude='*.db' --exclude='.*.db-litestream' --exclude='generations' /config/ /configbackup/;"
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
network {
|
||||
// mbits = 100
|
||||
|
||||
port "http" {
|
||||
static = 8081
|
||||
to = 80
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Restore
|
||||
// There is no automated restore process to prevent accidential data loss. So if you need to restore a backup you need to do this manually by following the steps below (assuming your backups are located at ./backup/ and your vaultwarden data ist located at /var/lib/docker/volumes/vaultwarden/_data/)
|
||||
|
||||
// # Delete any existing sqlite3 files
|
||||
// rm /var/lib/docker/volumes/vaultwarden/_data/db.sqlite3*
|
||||
|
||||
// # Copy the database to the vaultwarden folder
|
||||
// cp ./backup/db.sqlite3 /var/lib/docker/volumes/vaultwarden/_data/db.sqlite3
|
||||
|
||||
// # Extract the additional folder from the archive
|
||||
// tar -xzvf ./backup/data.tar.gz -C /var/lib/docker/volumes/vaultwarden/_data/
|
||||
|
||||
|
||||
|
||||
// ENV Description
|
||||
// BACKUP_ADD_DATABASE 1 Set to true to include the database itself in the backup
|
||||
// BACKUP_ADD_ATTACHMENTS 1 Set to true to include the attachments folder in the backup
|
||||
// BACKUP_ADD_CONFIG_JSON 1 Set to true to include config.json in the backup
|
||||
// BACKUP_ADD_ICON_CACHE 1 Set to true to include the icon cache folder in the backup
|
||||
// BACKUP_ADD_RSA_KEY 1 Set to true to include the RSA keys in the backup
|
||||
// BACKUP_ADD_SENDS 1 Set to true to include the sends folder in the backup
|
||||
// BACKUP_DIR Seths the path of the backup folder inside the container
|
||||
// BACKUP_DIR_PERMISSIONS Sets the permissions of the backup folder (CAUTION 2). Set to -1 to disable.
|
||||
// CRONFILE Path to the cron file inside the container
|
||||
// CRON_TIME Cronjob format "Minute Hour Day_of_month Month_of_year Day_of_week Year"
|
||||
// DELETE_AFTER Delete old backups after X many days. Set to 0 to disable
|
||||
// TIMESTAMP Set to true to append timestamp to the backup file
|
||||
// GID Group ID to run the cron job with
|
||||
// HEALTHCHECK_URL Set a healthcheck url like https://hc-ping.com/xyz
|
||||
// LOG_LEVEL DEBUG, INFO, WARNING, ERROR, CRITICAL are supported
|
||||
// LOG_DIR Path to the logfile folder inside the container
|
||||
// LOG_DIR_PERMISSIONS Sets the permissions of the backup folder. Set to -1 to disable.
|
||||
// TZ Set the timezone inside the container 3
|
||||
// UID User ID to run the cron job with
|
||||
// VW_DATA_FOLDER 4 Set the location of the vaultwarden data folder inside the container
|
||||
// VW_DATABASE_URL 4 Set the location of the vaultwarden database file inside the container
|
||||
// VW_ATTACHMENTS_FOLDER 4 Set the location of the vaultwarden attachments folder inside the container
|
||||
// VW_ICON_CACHE_FOLDER 4 Set the location of the vaultwarden icon cache folder inside the container
|
||||
@@ -1,85 +0,0 @@
|
||||
job "wallabag" {
|
||||
datacenters = ["dc1"]
|
||||
|
||||
group "wallabag" {
|
||||
count = 1
|
||||
|
||||
task "wallabag" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "wallabag/wallabag:latest"
|
||||
ports = ["http"]
|
||||
memory_hard_limit = 2048
|
||||
|
||||
#health_check {
|
||||
# test = ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
||||
# interval = "10s"
|
||||
# timeout = "5s"
|
||||
#}
|
||||
}
|
||||
|
||||
env {
|
||||
POSTGRES_PASSWORD="postgres"
|
||||
POSTGRES_USER="postgres"
|
||||
SYMFONY__ENV__DATABASE_DRIVER="pdo_pgsql"
|
||||
SYMFONY__ENV__DATABASE_HOST="master.postgres.service.dc1.consul"
|
||||
SYMFONY__ENV__DATABASE_NAME="wallabag"
|
||||
SYMFONY__ENV__DATABASE_USER="wallabag"
|
||||
SYMFONY__ENV__DATABASE_PASSWORD="wallabag"
|
||||
SYMFONY__ENV__DOMAIN_NAME="https://wallabag.fbleagh.duckdns.org"
|
||||
SYMFONY__ENV__DATABASE_PORT="5432"
|
||||
POPULATE_DATABASE="False"
|
||||
SYMFONY__ENV__MAILER_DSN= "gmail+smtp://stuart.stent@gmail.com:lsrhrzfembksmvgc@default"
|
||||
SYMFONY__ENV__FROM_EMAIL="wallabag@wallabag.fbleagh.duckdns.org"
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["wallabag", "tools",
|
||||
"traefik.http.routers.wallabaglan.rule=Host(`wallabag.service.dc1.consul`)",
|
||||
"traefik.http.routers.wallabagwan.rule=Host(`wallabag.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.wallabagwan.tls=true",
|
||||
// "traefik.http.routers.vaultwardenwan.tls.certresolver=myresolver-int",
|
||||
"traefik.http.middlewares.vaultwardenwan-admin-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.0/24",
|
||||
"traefik.http.routers.nginx-admin.middlewares=vaultwardenwan-admin-ipwhitelist",
|
||||
]
|
||||
port = "http"
|
||||
|
||||
#check {
|
||||
# type = "script"
|
||||
# name = "check_up"
|
||||
# command = "/local/healthcheck.sh"
|
||||
# interval = "60s"
|
||||
# timeout = "5s"
|
||||
|
||||
# check_restart {
|
||||
# limit = 3
|
||||
# grace = "90s"
|
||||
# ignore_warnings = false
|
||||
# }
|
||||
#}
|
||||
}
|
||||
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 256
|
||||
}
|
||||
|
||||
}
|
||||
network {
|
||||
// mbits = 100
|
||||
|
||||
port "http" {
|
||||
to = 80
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
job "wireguard" {
|
||||
region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.cpu.arch}"
|
||||
operator = "regexp"
|
||||
value = "amd64"
|
||||
}
|
||||
|
||||
group "wireguard" {
|
||||
count = 1
|
||||
task "wireguard" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/wg-easy/wg-easy"
|
||||
ports = ["vpn","vpn_ui"]
|
||||
volumes = [
|
||||
"/mnt/Public/config/wireguard:/etc/wireguard",
|
||||
]
|
||||
cap_add = ["NET_ADMIN","SYS_MODULE"]
|
||||
sysctl = {
|
||||
"net.ipv4.conf.all.src_valid_mark"="1"
|
||||
"net.ipv4.ip_forward"="1"
|
||||
}
|
||||
|
||||
}
|
||||
env {
|
||||
TZ = "EST5EDT"
|
||||
PUID = 1000
|
||||
PGID = 1000
|
||||
WG_HOST="wireguard.fbleagh.duckdns.org"
|
||||
WG_PORT=51820
|
||||
PORT=51821
|
||||
WEBUI_HOST="0.0.0.0"
|
||||
WG_ALLOWED_IPS="0.0.0.0/0"
|
||||
UI_TRAFFIC_STATS="true"
|
||||
UI_CHART_TYPE=1
|
||||
WG_DEFAULT_DNS="192.168.4.36, 8.8.8.8"
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
port = "vpn"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 50
|
||||
memory = 100
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "vpn" {
|
||||
static = 51820
|
||||
to = 51820
|
||||
}
|
||||
port "vpn_ui" {
|
||||
static = 51821
|
||||
to = 51821
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
job "acme" {
|
||||
datacenters = ["dc1"]
|
||||
type = "batch"
|
||||
|
||||
periodic {
|
||||
cron = "@weekly"
|
||||
prohibit_overlap = true
|
||||
}
|
||||
|
||||
group "acme" {
|
||||
restart {
|
||||
attempts = 1
|
||||
delay = "30s"
|
||||
}
|
||||
task "acme" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "neilpang/acme.sh"
|
||||
entrypoint = ["/local/acme_wrapper.sh"]
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/acme.sh",
|
||||
]
|
||||
}
|
||||
env {
|
||||
DEDYN_TOKEN="JPwQpUiWGkKHSkmGEC4YAeGiGFki"
|
||||
DuckDNS_Token="e4b5ca33-1f4d-494b-b06d-6dd4600df662"
|
||||
CONSUL_URL="${attr.unique.network.ip-address}"
|
||||
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "noop"
|
||||
data = "{{ key \"scripts/acme.sh\" }}"
|
||||
destination = "local/acme_wrapper.sh"
|
||||
perms = 0777
|
||||
}
|
||||
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 256
|
||||
memory = 64
|
||||
}
|
||||
}
|
||||
|
||||
task "init" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-avz","--delete-excluded","--exclude=renewal","--exclude='live'","--exclude='archive'","--exclude='keys'","--exclude='csr'", "/configbackup/", "/config/", "--delete-before"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end init task
|
||||
|
||||
task "finalsync" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "pebalk/rsync"
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
memory_hard_limit = 2048
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-av","--delete-excluded","--exclude=renewal","--exclude='live'","--exclude='archive'","--exclude='keys'","--exclude='csr'", "/config/", "/configbackup/","--remove-source-files"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end finalsync task
|
||||
}
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
job "auth" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
group "auth" {
|
||||
count = 1
|
||||
|
||||
task "fwdauth" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
// image = "npawelek/traefik-forward-auth"
|
||||
image = "thomseddon/traefik-forward-auth:2-arm"
|
||||
|
||||
port_map {
|
||||
auth = 4181
|
||||
}
|
||||
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime:ro",
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
PROVIDERS_GOOGLE_CLIENT_ID = "807888907647-uog95jmiolsuh6ql1t8jm53l1jvuajck.apps.googleusercontent.com"
|
||||
PROVIDERS_GOOGLE_CLIENT_SECRET = "B8bDri5mFvGv-Ghzbt8fLj4W"
|
||||
SECRET = "ladskfdjmqwermnnbasfnmldas"
|
||||
CONFIG = "/local/config.ini"
|
||||
LIFETIME = "31536000"
|
||||
WHITELIST = "stuart.stent@gmail.com,stephen.bunt@gmail.com"
|
||||
|
||||
// AUTH_HOST = "fwdauth.fbleagh.duckdns.org"
|
||||
COOKIE_DOMAIN = "fbleagh.duckdns.org"
|
||||
}
|
||||
|
||||
template {
|
||||
data = "{{ key \"Dex\" }}"
|
||||
destination = "local/config.ini"
|
||||
change_mode = "restart"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 100 # 100 MHz
|
||||
memory = 64 # 128 MB
|
||||
|
||||
network {
|
||||
port "auth" {
|
||||
static = 4181
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "dex"
|
||||
|
||||
tags = [
|
||||
"fwdauth",
|
||||
"web",
|
||||
"traefik.http.routers.dex.rule=Host(`fwdauth.fbleagh.duckdns.org`,`fwdauth.fbleagh.dedyn.io`)",
|
||||
"traefik.http.routers.dex.entrypoints=websecure",
|
||||
"traefik.http.routers.dex.tls=true",
|
||||
// "traefik.http.routers.dex.tls.certresolver=myresolver",
|
||||
"traefik.http.middlewares.dex.forwardauth.address=http://dex.service.dc1.consul:4181",
|
||||
"traefik.http.middlewares.dex.forwardauth.trustForwardHeader=true",
|
||||
"traefik.http.middlewares.dex.forwardauth.authResponseHeaders=X-Forwarded-User",
|
||||
"traefik.http.routers.auth.middlewares=dex",
|
||||
"traefik.http.routers.traefik-forward-auth.middlewares=dex",
|
||||
]
|
||||
|
||||
port = "auth"
|
||||
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
} #end Dex
|
||||
}
|
||||
}
|
||||
@@ -1,228 +0,0 @@
|
||||
job "calendar-proxy" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
group "web" {
|
||||
count = 1
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 80
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "calendar-proxy"
|
||||
port = "http"
|
||||
|
||||
tags = [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.calendar-proxy.rule=Host(`mail.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.calendar-proxy.entrypoints=web",
|
||||
]
|
||||
|
||||
check {
|
||||
type = "http"
|
||||
path = "/health"
|
||||
interval = "10s"
|
||||
timeout = "3s"
|
||||
}
|
||||
}
|
||||
|
||||
# Nginx container
|
||||
task "nginx" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = true
|
||||
}
|
||||
|
||||
config {
|
||||
image = "nginx:alpine"
|
||||
ports = ["http"]
|
||||
|
||||
volumes = [
|
||||
"local/nginx.conf:/etc/nginx/nginx.conf",
|
||||
"local/app:/var/www/html",
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
|
||||
upstream php-fpm {
|
||||
server 127.0.0.1:9000;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name mail.fbleagh.duckdns.org;
|
||||
root /var/www/html;
|
||||
index ics.php;
|
||||
|
||||
location /health {
|
||||
access_log off;
|
||||
return 200 "healthy\n";
|
||||
add_header Content-Type text/plain;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /ics.php?$query_string;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass php-fpm;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
# Security headers
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
|
||||
# Hide nginx version
|
||||
server_tokens off;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
destination = "local/nginx.conf"
|
||||
}
|
||||
template {
|
||||
data = <<EOF
|
||||
<?php
|
||||
$url = $_GET['url'];
|
||||
// Accept ICS calendar links only
|
||||
$url_arr = explode('/', $url);
|
||||
if ($url_arr[2] !== 'outlook.office365.com'
|
||||
|| $url_arr[3] !== 'owa'
|
||||
|| $url_arr[4] !== 'calendar'
|
||||
|| end($url_arr) !== 'calendar.ics'
|
||||
) {
|
||||
http_response_code(500);
|
||||
print "Error";
|
||||
exit;
|
||||
}
|
||||
$context = stream_context_create([
|
||||
"http" => [
|
||||
"header" => "User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
|
||||
]
|
||||
]);
|
||||
if (($data = @file_get_contents($url, false, $context)) === false) {
|
||||
$error = error_get_last();
|
||||
http_response_code(500);
|
||||
print "HTTP request failed: " . $error['message'];
|
||||
exit;
|
||||
}
|
||||
header('Content-Type: text/calendar; charset=utf-8');
|
||||
print $data;
|
||||
?>
|
||||
EOF
|
||||
destination = "local/app/ics.php"
|
||||
}
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 100
|
||||
memory = 128
|
||||
}
|
||||
}
|
||||
|
||||
# PHP-FPM container
|
||||
task "php-fpm" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "php:8.2-fpm-alpine"
|
||||
network_mode = "container:nginx-${NOMAD_ALLOC_ID}"
|
||||
|
||||
volumes = [
|
||||
"local/app:/var/www/html",
|
||||
"local/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf",
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
[www]
|
||||
user = www-data
|
||||
group = www-data
|
||||
listen = 127.0.0.1:9000
|
||||
listen.owner = www-data
|
||||
listen.group = www-data
|
||||
pm = dynamic
|
||||
pm.max_children = 5
|
||||
pm.start_servers = 2
|
||||
pm.min_spare_servers = 1
|
||||
pm.max_spare_servers = 3
|
||||
EOF
|
||||
destination = "local/php-fpm.conf"
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOF
|
||||
<?php
|
||||
$url = $_GET['url'];
|
||||
# // Accept ICS calendar links only
|
||||
# $url_arr = explode('/', $url);
|
||||
# if ($url_arr[2] !== 'outlook.office365.com'
|
||||
# || $url_arr[3] !== 'owa'
|
||||
# || $url_arr[4] !== 'calendar'
|
||||
# || end($url_arr) !== 'calendar.ics'
|
||||
# ) {
|
||||
# http_response_code(500);
|
||||
# print "Error";
|
||||
# exit;
|
||||
# }
|
||||
$context = stream_context_create([
|
||||
"http" => [
|
||||
"header" => "User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
|
||||
]
|
||||
]);
|
||||
if (($data = @file_get_contents($url, false, $context)) === false) {
|
||||
$error = error_get_last();
|
||||
http_response_code(500);
|
||||
print "HTTP request failed: " . $error['message'];
|
||||
exit;
|
||||
}
|
||||
header('Content-Type: text/calendar; charset=utf-8');
|
||||
print $data;
|
||||
?>
|
||||
EOF
|
||||
destination = "local/app/ics.php"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 200
|
||||
memory = 256
|
||||
}
|
||||
}
|
||||
|
||||
# Restart policy
|
||||
restart {
|
||||
attempts = 3
|
||||
interval = "5m"
|
||||
delay = "25s"
|
||||
mode = "fail"
|
||||
}
|
||||
|
||||
# Update strategy
|
||||
update {
|
||||
max_parallel = 1
|
||||
min_healthy_time = "10s"
|
||||
healthy_deadline = "3m"
|
||||
auto_revert = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
job "democratic-csi-local" {
|
||||
datacenters = ["dc1"]
|
||||
type = "system"
|
||||
|
||||
group "controller" {
|
||||
count = 1
|
||||
|
||||
task "controller" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "democraticcsi/democratic-csi:latest"
|
||||
|
||||
args = [
|
||||
"--csi-version=1.5.0",
|
||||
"--csi-name=org.democratic-csi.local-hostpath",
|
||||
"--driver-config-file=/config/driver-config-file.yaml",
|
||||
"--log-level=info",
|
||||
"--csi-mode=controller",
|
||||
"--server-socket=/csi/csi.sock",
|
||||
]
|
||||
|
||||
volumes = [
|
||||
"local/config:/config:ro"
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<-EOH
|
||||
driver: local-hostpath
|
||||
instance_id: {{ env "node.unique.id" }}
|
||||
local-hostpath:
|
||||
shareBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
controllerBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
dirPermissionsMode: "0755"
|
||||
dirPermissionsUser: 0
|
||||
dirPermissionsGroup: 0
|
||||
EOH
|
||||
destination = "local/config/driver-config-file.yaml"
|
||||
}
|
||||
|
||||
csi_plugin {
|
||||
id = "org.democratic-csi.local-hostpath"
|
||||
type = "controller"
|
||||
mount_dir = "/csi"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 256
|
||||
memory = 128
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group "nodes" {
|
||||
task "node" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "democraticcsi/democratic-csi:latest"
|
||||
|
||||
args = [
|
||||
"--csi-version=1.5.0",
|
||||
"--csi-name=org.democratic-csi.local-hostpath",
|
||||
"--driver-config-file=/config/driver-config-file.yaml",
|
||||
"--log-level=info",
|
||||
"--csi-mode=node",
|
||||
"--server-socket=/csi/csi.sock",
|
||||
]
|
||||
|
||||
privileged = true
|
||||
|
||||
volumes = [
|
||||
"local/config:/config:ro",
|
||||
"/tmp/democratic-csi-local-hostpath:/tmp/democratic-csi-local-hostpath:rshared"
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<-EOH
|
||||
driver: local-hostpath
|
||||
instance_id: {{ env "node.unique.id" }}
|
||||
local-hostpath:
|
||||
shareBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
controllerBasePath: "/tmp/democratic-csi-local-hostpath"
|
||||
dirPermissionsMode: "0755"
|
||||
dirPermissionsUser: 0
|
||||
dirPermissionsGroup: 0
|
||||
EOH
|
||||
destination = "local/config/driver-config-file.yaml"
|
||||
}
|
||||
|
||||
csi_plugin {
|
||||
id = "org.democratic-csi.local-hostpath"
|
||||
type = "node"
|
||||
mount_dir = "/csi"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 256
|
||||
memory = 128
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
job "foodplanner" {
|
||||
datacenters = ["dc1"]
|
||||
|
||||
type = "service"
|
||||
|
||||
group "app" {
|
||||
count = 1
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 8999
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "foodplanner"
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
type = "http"
|
||||
path = "/"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
|
||||
# Prestart restore task
|
||||
task "restore" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
# image = "litestream/litestream:latest"
|
||||
image = "litestream/litestream:0.3"
|
||||
args = [
|
||||
"restore",
|
||||
# "-if-replica-exists",
|
||||
#"-if-db-not-exists",
|
||||
"-o", "/alloc/tmp/meal_planner.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db"
|
||||
]
|
||||
volumes = [
|
||||
"/opt/nomad/data:/data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
task "app" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/foodplanner:main"
|
||||
ports = ["http"]
|
||||
|
||||
# Mount the SQLite database file to persist data
|
||||
# Adjust the source path as needed for your environment
|
||||
volumes = [
|
||||
"/mnt/Public/configs/FoodPlanner_backups:/app/backups/",
|
||||
]
|
||||
}
|
||||
env {
|
||||
DATABASE_PATH = "/alloc/tmp"
|
||||
DATABASE_URL = "sqlite:////alloc/tmp/meal_planner.db"
|
||||
}
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 1024
|
||||
}
|
||||
|
||||
# Restart policy
|
||||
restart {
|
||||
attempts = 3
|
||||
interval = "10m"
|
||||
delay = "15s"
|
||||
mode = "fail"
|
||||
}
|
||||
}
|
||||
|
||||
# Litestream sidecar for continuous replication
|
||||
task "litestream" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart" # runs after main task starts
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
# image = "litestream/litestream:0.5.0-test.10"
|
||||
image = "litestream/litestream:0.3"
|
||||
args = [
|
||||
"replicate",
|
||||
"/alloc/tmp/meal_planner.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/foodplanner.db"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
job "gonic" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
|
||||
|
||||
group "gonic" {
|
||||
count = 1
|
||||
task "gonic" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "sentriz/gonic"
|
||||
port_map {
|
||||
http = 80
|
||||
}
|
||||
volumes = [
|
||||
"/mnt/configs/gonic/data:/data",
|
||||
"/mnt/configs/gonic/cache:/cache",
|
||||
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
|
||||
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
|
||||
"/mnt/Public/Downloads/podcasts:/podcasts",
|
||||
"/mnt/Public/Downloads/musicplaylists:/musicplaylists",
|
||||
|
||||
]
|
||||
}
|
||||
env{
|
||||
GONIC_SCAN_INTERVAL = "120"
|
||||
GONIC_MUSIC_PATH = "/music"
|
||||
GONIC_PODCAST_PATH = "/podcasts"
|
||||
GONIC_PLAYLISTS_PATH = "/musicplaylists"
|
||||
}
|
||||
resources {
|
||||
cpu = 100 # 100 MHz
|
||||
memory = 256 # 128 MB
|
||||
network {
|
||||
port "http" {
|
||||
static = "4747"
|
||||
}
|
||||
}
|
||||
}
|
||||
service {
|
||||
name = "gonic"
|
||||
tags = [
|
||||
"gonic",
|
||||
"web",
|
||||
"urlprefix-/gonic",
|
||||
"backend",
|
||||
"traefik.http.routers.goniclan.rule=Host(`gonic.service.dc1.consul`)",
|
||||
"traefik.http.routers.gonicwan.rule=Host(`mg.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.gonicwan.tls=true",
|
||||
"traefik.http.routers.gonicwan.tls.certresolver=myresolver"
|
||||
|
||||
]
|
||||
// "traefik.http.middlewares.gonic_auth.basicauth.users=admin:$2y$05$cJGONoS0BFTeBUXqmETikeI14QhLDKIDkYuPdA1umIOC129grVMAm",
|
||||
port = "http"
|
||||
meta {
|
||||
ALLOC = "${NOMAD_ALLOC_ID}"
|
||||
}
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
} #end gonic
|
||||
|
||||
task "init-manual" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
args = ["flock", "-x","/locks/${NOMAD_GROUP_NAME}_rsync.lock","rsync","-av","--exclude=Backups","/configbackup/","/config/","--delete-before"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task "finalsync-manual" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
args = ["flock", "-x","/locks/${NOMAD_GROUP_NAME}_rsync.lock","rsync","-av","/config/","/configbackup/"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
task "db-sync" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart"
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
]
|
||||
|
||||
// args = ["/usr/local/bin/litestream", "replicate", "-config","/local/litestream.yml"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
dbs:
|
||||
- path: /data/gonic.db
|
||||
replicas:
|
||||
- path: /configbackup
|
||||
EOH
|
||||
|
||||
destination = "local/litestream.yml"
|
||||
}
|
||||
|
||||
} #####
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,285 +0,0 @@
|
||||
job "hass" {
|
||||
# region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
# priority = 50
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
// constraint {
|
||||
// operator = "distinct_hosts"
|
||||
// value = "true"
|
||||
// }
|
||||
|
||||
affinity {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
value = "odroid2"
|
||||
weight = 80
|
||||
}
|
||||
update {
|
||||
# Stagger updates every 60 seconds
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
}
|
||||
group "hass" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 99
|
||||
interval = "1h"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
task "init" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
image_pull_timeout = "10m"
|
||||
force_pull = false
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
}
|
||||
env {
|
||||
DB_NAME = "home-assistant_v2.db"
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
// template {
|
||||
// data = <<EOH
|
||||
// dbs:
|
||||
// - path: /config/radarr.db
|
||||
// replicas:
|
||||
// - path: /configbackup
|
||||
// EOH
|
||||
|
||||
// destination = "local/litestream.yml"
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
task "finalsync" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks"
|
||||
]
|
||||
|
||||
// args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-av","--exclude='8-20 * * *.db8-20 * * *'","--exclude='8-20 * * *.db'","--exclude='8-20 * * *.db-litestream'","--exclude='generations'","/config/","/configbackup/"]
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 128 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task "sync" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart"
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
image = "ghcr.io/sstent/rsync"
|
||||
volumes = [
|
||||
"/mnt/configs/:/configs",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
]
|
||||
args = ["client"]
|
||||
}
|
||||
env {
|
||||
CRON_TASK_1 = "50 8-20 * * *rsync -av --exclude='*.db*' --exclude='*.db' --exclude='.db-litestream' --exclude='generations' /configs/${NOMAD_GROUP_NAME}/ /configbackup/;"
|
||||
}
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
task "hass" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
// image = "homeassistant/armhf-homeassistant:latest"
|
||||
image = "ghcr.io/home-assistant/home-assistant:stable"
|
||||
ports = ["http","http_8989"]
|
||||
memory_hard_limit = "2048"
|
||||
network_mode = "host"
|
||||
cap_add = ["NET_ADMIN"]
|
||||
force_pull = false
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
"local/configuration.yaml:/config/configuration.yaml",
|
||||
"local/ui-lovelace.yaml:/config/ui-lovelace.yaml",
|
||||
"/mnt/configs/hass:/config",
|
||||
]
|
||||
// "local/auth_provider.homeassistant:/config/.storage/auth_provider.homeassistant"
|
||||
|
||||
|
||||
|
||||
}
|
||||
env {
|
||||
JEMALLOC_DISABLE=true
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["global", "homeassistant", "tools","logo=home-assistant"]
|
||||
port = "http"
|
||||
|
||||
// check {
|
||||
// name = "hass-alive"
|
||||
// type = "http"
|
||||
// type = "script"
|
||||
// command = "curl -sS http://localhost:8123"
|
||||
// interval = "120s"
|
||||
// timeout = "15s"
|
||||
// path = "/api/"
|
||||
// port = "http"
|
||||
|
||||
// check_restart {
|
||||
// limit = 10
|
||||
// grace = "90s"
|
||||
// ignore_warnings = false
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
// template {
|
||||
// data = <<EOH
|
||||
// homeassistant:
|
||||
// name: Our_House
|
||||
// latitude: 40.7654
|
||||
// longitude: -73.8175
|
||||
// elevation: 26
|
||||
// unit_system: metric
|
||||
// time_zone: America/New_York
|
||||
// auth_providers:
|
||||
// - type: trusted_networks
|
||||
// trusted_networks:
|
||||
// - 127.0.0.1
|
||||
// - ::1
|
||||
// - 192.168.1.0/24
|
||||
// allow_bypass_login: true
|
||||
// - type: homeassistant
|
||||
// frontend:
|
||||
// lovelace:
|
||||
// mode: yaml
|
||||
// config:
|
||||
// http:
|
||||
// sun:
|
||||
// automation:
|
||||
// - alias: LightsAtSunset
|
||||
// trigger:
|
||||
// platform: sun
|
||||
// event: sunset
|
||||
// action:
|
||||
// service: switch.turn_on
|
||||
// entity_id: switch.lampdrawers
|
||||
// wemo:
|
||||
// static:
|
||||
// - 192.168.99.200 # StuBed
|
||||
// - 192.168.99.201 # LampDrawers
|
||||
// - 192.168.99.202 # BigLamp
|
||||
// - 192.168.99.203 # TallTree
|
||||
// - 192.168.99.204 # ShortTree
|
||||
// - 192.168.99.205 # TallTree
|
||||
// switch:
|
||||
// - platform: template
|
||||
// switches:
|
||||
// living_room_screen_off:
|
||||
// friendly_name: 'living_room_screen_off'
|
||||
// turn_on:
|
||||
// - service: input_boolean.turn_on
|
||||
// entity_id: input_boolean.living_room_screen_off
|
||||
// - service: webostv.command
|
||||
// data:
|
||||
// {
|
||||
// "entity_id": "media_player.lg_webos_smart_tv",
|
||||
// "command": "com.webos.service.tvpower/power/turnOffScreen"
|
||||
// }
|
||||
// turn_off:
|
||||
// - service: input_boolean.turn_off
|
||||
// entity_id: input_boolean.living_room_screen_off
|
||||
// - service: webostv.command
|
||||
// data:
|
||||
// {
|
||||
// "entity_id": "media_player.lg_webos_smart_tv",
|
||||
// "command": "com.webos.service.tvpower/power/turnOnScreen"
|
||||
// }
|
||||
// EOH
|
||||
|
||||
// destination = "local/configuration.yaml"
|
||||
// }
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"homeassistant/configuration.yml\" }}"
|
||||
destination = "local/configuration.yaml"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"homeassistant/lovelace.yml\" }}"
|
||||
destination = "local/ui-lovelace.yaml"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 256 # 500 MHz
|
||||
memory = 128 # 128MB
|
||||
}
|
||||
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
|
||||
kill_timeout = "10s"
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 8123
|
||||
to = 8123
|
||||
}
|
||||
port "http_8989" {
|
||||
static = 8989
|
||||
to = 8989
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
job "immich" {
|
||||
datacenters = ["dc1"] # Specify your datacenter
|
||||
type = "service"
|
||||
|
||||
group "immich" {
|
||||
count = 1
|
||||
|
||||
task "immich" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/imagegenius/immich:2.2.3-noml"
|
||||
memory_hard_limit = "2048"
|
||||
ports = ["http"]
|
||||
volumes = [
|
||||
"/mnt/Public/configs/Immich:/config",
|
||||
"/mnt/Public/Immich/Photos:/photos",
|
||||
"/mnt/Public/Immich/libraries:/libraries" # optional
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
PUID = "1000"
|
||||
PGID = "1000"
|
||||
TZ = "Etc/UTC"
|
||||
DB_HOSTNAME = "master.postgres.service.dc1.consul"
|
||||
DB_USERNAME = "postgres"
|
||||
DB_PASSWORD = "postgres"
|
||||
DB_DATABASE_NAME = "immich"
|
||||
DB_PORT = "5432" # optional
|
||||
REDIS_HOSTNAME = "redis.service.dc1.consul"
|
||||
REDIS_PORT = "6379" # optional
|
||||
REDIS_PASSWORD = "" # optional
|
||||
MACHINE_LEARNING_HOST = "0.0.0.0" # optional
|
||||
MACHINE_LEARNING_PORT = "3003" # optional
|
||||
MACHINE_LEARNING_WORKERS = "1" # optional
|
||||
MACHINE_LEARNING_WORKER_TIMEOUT = "120" # optional
|
||||
DB_VECTOR_EXTENSION= "pgvector"
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["immich", "tools",
|
||||
"traefik.http.routers.immichlan.rule=Host(`immich.service.dc1.consul`)",
|
||||
"traefik.http.routers.immichwan.rule=Host(`immich.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.immichwan.tls=true",
|
||||
]
|
||||
port = "http"
|
||||
|
||||
}
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 512
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 8088
|
||||
to = 8080
|
||||
}
|
||||
}
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "5m"
|
||||
delay = "30s"
|
||||
mode = "delay"
|
||||
}
|
||||
}
|
||||
|
||||
# group "immichpg" {
|
||||
# count = 1
|
||||
|
||||
# task "immichpg" {
|
||||
# driver = "docker"
|
||||
|
||||
# config {
|
||||
# image = "tensorchord/pgvecto-rs:pg14-v0.2.0"
|
||||
# ports = ["pg"]
|
||||
# }
|
||||
# env {
|
||||
# POSTGRES_USER="postgres"
|
||||
# POSTGRES_PASSWORD = "postgres"
|
||||
# POSTGRES_DB = "immich"
|
||||
# }
|
||||
|
||||
# service {
|
||||
# name = "${TASKGROUP}"
|
||||
# tags = ["immich", "tools"]
|
||||
# port = "pg"
|
||||
|
||||
# }
|
||||
# resources {
|
||||
# cpu = 500
|
||||
# memory = 500
|
||||
# }
|
||||
# }
|
||||
|
||||
# network {
|
||||
# port "pg" {
|
||||
# static = 5433
|
||||
# to = 5432
|
||||
# }
|
||||
# }
|
||||
|
||||
# restart {
|
||||
# attempts = 2
|
||||
# interval = "5m"
|
||||
# delay = "30s"
|
||||
# mode = "delay"
|
||||
# }
|
||||
|
||||
|
||||
# }
|
||||
|
||||
group "redis" {
|
||||
count = 1
|
||||
|
||||
task "redis" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "redis"
|
||||
ports = ["redis"]
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["wallabag", "tools"]
|
||||
port = "redis"
|
||||
|
||||
}
|
||||
resources {
|
||||
cpu = 250
|
||||
memory = 256
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "redis" {
|
||||
static = 6379
|
||||
}
|
||||
}
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "5m"
|
||||
delay = "30s"
|
||||
mode = "delay"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
job "minihass" {
|
||||
datacenters = ["dc1"]
|
||||
|
||||
group "smart-home" {
|
||||
network {
|
||||
mode = "host"
|
||||
port "http" {
|
||||
to = 5000
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "minihass"
|
||||
port = "http"
|
||||
tags = [
|
||||
"traefik.http.routers.minihasslan.rule=Host(`minihass.service.dc1.consul`)",
|
||||
"traefik.http.routers.minihasswan.rule=Host(`mh.fbleagh.duckdns.org`)",
|
||||
"traefik.http.routers.minihasswan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.minihasswan.tls=true",
|
||||
]
|
||||
check {
|
||||
type = "http"
|
||||
path = "/health"
|
||||
interval = "30s"
|
||||
timeout = "7s"
|
||||
}
|
||||
}
|
||||
|
||||
task "app" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/minihass"
|
||||
ports = ["http"]
|
||||
}
|
||||
|
||||
env {
|
||||
CONSUL_HOST = "consul.service.dc1.consul"
|
||||
CONSUL_PORT = "8500"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 500
|
||||
memory = 256
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,118 +0,0 @@
|
||||
job "navidrome" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
|
||||
group "navidrome" {
|
||||
count = 1
|
||||
|
||||
# Prestart restore task
|
||||
task "restore" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
config {
|
||||
image = "litestream/litestream:latest"
|
||||
args = [
|
||||
"restore",
|
||||
"-if-replica-exists",
|
||||
"-if-db-not-exists",
|
||||
"-o", "/alloc/tmp/navidrome.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
|
||||
|
||||
]
|
||||
volumes = [
|
||||
"/mnt/configs/navidrome:/data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
# Main Navidrome task
|
||||
task "navidrome" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/navidrome/navidrome:latest"
|
||||
memory_hard_limit = "2048"
|
||||
ports = ["http"]
|
||||
volumes = [
|
||||
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
|
||||
"/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro",
|
||||
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
|
||||
"/mnt/configs/navidrome:/data"
|
||||
|
||||
]
|
||||
}
|
||||
env {
|
||||
ND_DATAFOLDER = "/alloc/tmp/"
|
||||
ND_CACHEFOLDER = "./data/cache"
|
||||
ND_SCANSCHEDULE = "32 8-20 * * *"
|
||||
ND_LOGLEVEL = "debug"
|
||||
ND_REVERSEPROXYWHITELIST = "0.0.0.0/0"
|
||||
ND_REVERSEPROXYUSERHEADER = "X-Forwarded-User"
|
||||
ND_SCANNER_GROUPALBUMRELEASES = "False"
|
||||
ND_BACKUP_PATH = "/data"
|
||||
ND_BACKUP_SCHEDULE = "0 0 * * *"
|
||||
ND_BACKUP_COUNT = "7"
|
||||
}
|
||||
resources {
|
||||
cpu = 100
|
||||
memory = 128
|
||||
}
|
||||
service {
|
||||
name = "navidrome"
|
||||
tags = [
|
||||
"navidrome",
|
||||
"web",
|
||||
"urlprefix-/navidrome",
|
||||
"tools",
|
||||
"traefik.http.routers.navidromelan.rule=Host(`navidrome.service.dc1.consul`)",
|
||||
"traefik.http.routers.navidromewan.rule=Host(`fbleagh-m.ignorelist.com`)",
|
||||
"traefik.http.routers.navidromewan.rule=Host(`m.fbleagh.duckdns.org`,`m.fbleagh.dedyn.io`)",
|
||||
"traefik.http.routers.navidromewan.middlewares=dex@consulcatalog",
|
||||
"traefik.http.routers.navidromewan.tls=true",
|
||||
]
|
||||
port = "http"
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Litestream sidecar for continuous replication
|
||||
task "litestream" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "poststart" # runs after main task starts
|
||||
sidecar = true
|
||||
}
|
||||
config {
|
||||
image = "litestream/litestream:latest"
|
||||
args = [
|
||||
"replicate",
|
||||
"/alloc/tmp/navidrome.db",
|
||||
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
|
||||
]
|
||||
volumes = [
|
||||
"/mnt/configs/navidrome:/data"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 4533
|
||||
to = 4533
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
job "nginx" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
group "nginx" {
|
||||
count = 1
|
||||
|
||||
task "nginx" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "nginx"
|
||||
ports = ["http"]
|
||||
|
||||
volumes = [
|
||||
"custom/default.conf:/etc/nginx/conf.d/default.conf",
|
||||
]
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
server {
|
||||
listen 8080;
|
||||
server_name nginx.service.dc1.consul;
|
||||
location / {
|
||||
root /local/data;
|
||||
}
|
||||
}
|
||||
EOH
|
||||
|
||||
destination = "custom/default.conf"
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
<p>Local Services - HTTP/HTTPS</p>
|
||||
<table style="width:100%">
|
||||
<tr>
|
||||
<th>Service Name</th>
|
||||
<th>Traefik</th>
|
||||
<th>Direct</th>
|
||||
</tr>
|
||||
{{range services}}
|
||||
{{range $i, $s :=service .Name}}
|
||||
{{ if eq $i 0 }}
|
||||
|
||||
<tr>
|
||||
<td>{{.Name}}</td>
|
||||
<td><a href="{{ if eq .Name "unifi" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul" target="_blank">{{.Name}}.service.dc1.consul</a></td>
|
||||
<td><a href="{{ if eq .Name "unifi" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}" target="_blank">{{ if eq .Name "unifi" }}https{{else}}http{{end}}://{{.Name}}.service.dc1.consul:{{.Port}}</a></td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
</table>
|
||||
<p>
|
||||
Node Environment Information: <br />
|
||||
node_id: {{ env "node.unique.id" }} <br/>
|
||||
datacenter: {{ env "NOMAD_DC" }}
|
||||
</p>
|
||||
EOH
|
||||
|
||||
destination = "local/data/index.html"
|
||||
change_mode = "noop"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 100 # 100 MHz
|
||||
memory = 64 # 128 MB
|
||||
}
|
||||
service {
|
||||
name = "nginx"
|
||||
tags = ["nginx", "web", "urlprefix-/nginx", "backend"]
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 8080
|
||||
}
|
||||
|
||||
// port "https" {
|
||||
// to = 443
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,305 +0,0 @@
|
||||
job "nzbget" {
|
||||
# region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
# priority = 50
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
update {
|
||||
# Stagger updates every 60 seconds
|
||||
stagger = "90s"
|
||||
max_parallel = 1
|
||||
healthy_deadline = "5m"
|
||||
}
|
||||
group "nzbget" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 8
|
||||
interval = "20m"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
// task "init-trigger" {
|
||||
// driver = "docker"
|
||||
|
||||
// lifecycle {
|
||||
// hook = "prestart"
|
||||
// }
|
||||
|
||||
// config {
|
||||
// image = "curlimages/curl"
|
||||
// args = ["--request", "PUT", "--data", "${NOMAD_ALLOC_ID}", "http://${attr.unique.network.ip-address}:8500/v1/kv/${NOMAD_GROUP_NAME}"]
|
||||
// }
|
||||
// resources {
|
||||
// cpu = 20 # 500 MHz
|
||||
// memory = 20 # 128MB
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
task "ovpn-client" {
|
||||
driver = "docker"
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = true
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "registry.service.dc1.consul:5000/openpyn:latest"
|
||||
image = "qmcgaw/gluetun"
|
||||
memory_hard_limit = "1024"
|
||||
|
||||
ports = [
|
||||
"shadowsocks",
|
||||
"nzbget",
|
||||
"http_proxy",
|
||||
"http_admin",
|
||||
"sabnzb_admin",
|
||||
"socks",
|
||||
]
|
||||
|
||||
cap_add = [
|
||||
"NET_ADMIN",
|
||||
"NET_BIND_SERVICE",
|
||||
]
|
||||
|
||||
#network_mode = "host"
|
||||
#network_mode = "vpn"
|
||||
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime",
|
||||
]
|
||||
devices = [
|
||||
{
|
||||
host_path = "/dev/net/tun"
|
||||
container_path = "/dev/net/tun"
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
// VPNFLAGS = "us --max-load 70 --top-servers 10 --pings 5"
|
||||
// VPNFLAGS = "nl --max-load 70 --top-servers 10 --pings 5"
|
||||
// VPNSP = "nordvpn"
|
||||
// OPENVPN_USER = "yvPLaZ3xkXtnJKsyXDNQf9Ft"
|
||||
// OPENVPN_PASSWORD = "SW8XvhGkSVuQitjuFrbH9WPA"
|
||||
// REGION = "Netherlands"
|
||||
##Mullvad
|
||||
VPNSP = "mullvad"
|
||||
VPN_TYPE = "wireguard"
|
||||
COUNTRY = "Canada"
|
||||
CITY = "Toronto"
|
||||
FIREWALL_VPN_INPUT_PORTS = "56987"
|
||||
WIREGUARD_PRIVATE_KEY = "2FHwQX1jxk+qeMmXUtSGRc2kKF1WHeSCyIgHNW+7akA=" #ActiveLynx
|
||||
WIREGUARD_ADDRESS = "10.66.246.4/32"
|
||||
|
||||
|
||||
|
||||
HTTPPROXY = "on"
|
||||
UPDATER_PERIOD= "24h"
|
||||
SHADOWSOCKS_PASSWORD = "farscape5"
|
||||
SHADOWSOCKS = "off"
|
||||
DOT_PROVIDERS = "cloudflare,google,quad9,quadrant"
|
||||
DOT = "off"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}-admin"
|
||||
tags = ["global", "ovpn-openpyn"]
|
||||
port = "http_admin"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["global", "ovpn-openpyn"]
|
||||
port = "shadowsocks"
|
||||
}
|
||||
|
||||
service {
|
||||
name = "nzbget"
|
||||
tags = ["global", "ovpn-openpyn"]
|
||||
port = "nzbget"
|
||||
}
|
||||
service {
|
||||
name = "sabnzb"
|
||||
tags = ["global", "ovpn-openpyn", "enable_gocast",
|
||||
"gocast_vip=192.168.1.247/32",
|
||||
"gocast_nat=tcp:8080:8080",
|
||||
"gocast_nat=udp:8080:8080",]
|
||||
port = "sabnzb_admin"
|
||||
}
|
||||
service {
|
||||
name = "socks-nord"
|
||||
tags = ["global", "ovpn-openpyn", "enable_gocast",
|
||||
"gocast_vip=192.168.1.243/32",
|
||||
"gocast_nat=tcp:1080:1080",
|
||||
"gocast_nat=udp:1080:1080",]
|
||||
port = "socks"
|
||||
|
||||
}
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 100 # 500 MHz
|
||||
memory = 100 # 128MB
|
||||
}
|
||||
} #task ovpn
|
||||
|
||||
|
||||
task "dante" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "serjs/go-socks5-proxy"
|
||||
// image = "ghcr.io/sstent/dante:latest"
|
||||
network_mode = "container:ovpn-client-${NOMAD_ALLOC_ID}"
|
||||
memory_hard_limit = 256
|
||||
|
||||
devices = [
|
||||
{
|
||||
host_path = "/dev/net/tun"
|
||||
container_path = "/dev/net/tun"
|
||||
},
|
||||
]
|
||||
}
|
||||
env {
|
||||
REQUIRE_AUTH = "false"
|
||||
}
|
||||
|
||||
|
||||
resources {
|
||||
cpu = 64 # 500 MHz
|
||||
memory = 128 # 128MB
|
||||
}
|
||||
}
|
||||
######################################################################
|
||||
######################################################################
|
||||
######################################################################
|
||||
|
||||
task "init" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
sidecar = false
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/rsync:v0.3.5"
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-avz", "--exclude=Backups", "/configbackup/", "/config/", "--delete-before"]
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end init task
|
||||
task "finalsync" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "poststop"
|
||||
}
|
||||
|
||||
config {
|
||||
// image = "pebalk/rsync"
|
||||
image = "ghcr.io/sstent/rsync:v0.3.5"
|
||||
memory_hard_limit = "2048"
|
||||
|
||||
volumes = [
|
||||
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
|
||||
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
"/mnt/Public/config/locks:/locks",
|
||||
]
|
||||
|
||||
args = ["flock", "-x", "/locks/${NOMAD_GROUP_NAME}_rsync.lock", "rsync", "-avz", "/config/", "/configbackup/"]
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 20 # 500 MHz
|
||||
memory = 20 # 128MB
|
||||
}
|
||||
} #end finalsync task
|
||||
// task "sync" {
|
||||
// driver = "docker"
|
||||
|
||||
// lifecycle {
|
||||
// hook = "poststart"
|
||||
// sidecar = true
|
||||
// }
|
||||
|
||||
// config {
|
||||
// image = "ghcr.io/sstent/rsync:v0.3.5"
|
||||
// memory_hard_limit = "2048"
|
||||
|
||||
// volumes = [
|
||||
// "/mnt/configs/:/configs",
|
||||
// "/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
|
||||
// ]
|
||||
|
||||
// args = ["client"]
|
||||
// }
|
||||
// resources {
|
||||
// cpu = 20 # 500 MHz
|
||||
// memory = 20 # 128MB
|
||||
// }
|
||||
// env {
|
||||
// CRON_TASK_1 = "*/20 8-20 * * * chmod a-w /configs/${NOMAD_GROUP_NAME}/ ; rsync -avz /configs/${NOMAD_GROUP_NAME}/ /configbackup/; chmod a+w /configs/${NOMAD_GROUP_NAME}/;"
|
||||
// }
|
||||
// } #end sync task
|
||||
|
||||
######################################################################
|
||||
######################################################################
|
||||
######################################################################
|
||||
|
||||
network {
|
||||
port "shadowsocks" {
|
||||
static = "8338"
|
||||
to = "8388"
|
||||
}
|
||||
|
||||
port "http_proxy" {
|
||||
static = "8888"
|
||||
to = "8888"
|
||||
}
|
||||
port "http_admin" {
|
||||
static = "8000"
|
||||
to = "8000"
|
||||
}
|
||||
|
||||
port "sabnzb_admin" {
|
||||
static = "8080"
|
||||
to = "8080"
|
||||
}
|
||||
|
||||
|
||||
port "socks" {
|
||||
static = "1080"
|
||||
to = "1080"
|
||||
}
|
||||
port "nzbget" {
|
||||
static = "6789"
|
||||
to = "6789"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,116 +0,0 @@
|
||||
job "postgres-15" {
|
||||
type = "system"
|
||||
datacenters = ["dc1"]
|
||||
|
||||
group "group" {
|
||||
count = 1
|
||||
|
||||
network {
|
||||
|
||||
port api {
|
||||
static = 8008
|
||||
to = 8008
|
||||
}
|
||||
port pg {
|
||||
static = 5432
|
||||
to = 5432
|
||||
}
|
||||
}
|
||||
|
||||
task "db" {
|
||||
driver = "docker"
|
||||
|
||||
template {
|
||||
data = <<EOL
|
||||
scope: postgres
|
||||
name: pg-{{env "node.unique.name"}}
|
||||
namespace: /nomad
|
||||
|
||||
restapi:
|
||||
listen: 0.0.0.0:8008
|
||||
connect_address: {{env "attr.unique.network.ip-address"}}:8008
|
||||
|
||||
consul:
|
||||
scheme: http
|
||||
host: {{env "attr.unique.network.ip-address"}}:8500
|
||||
register_service: True
|
||||
|
||||
bootstrap:
|
||||
dcs:
|
||||
ttl: 30
|
||||
loop_wait: 10
|
||||
retry_timeout: 10
|
||||
maximum_lag_on_failover: 1048576
|
||||
postgresql:
|
||||
use_pg_rewind: true
|
||||
use_slots: true
|
||||
parameters:
|
||||
timezone: 'UTC'
|
||||
max_connections: 100
|
||||
shared_preload_libraries: pg_stat_statements
|
||||
shared_buffers: 64MB
|
||||
work_mem: 16MB
|
||||
effective_cache_size: 512MB
|
||||
tcp_keepalives_idle: 300
|
||||
timescaledb.telemetry_level: off
|
||||
|
||||
method: local
|
||||
local:
|
||||
command: /usr/local/bin/docker-initdb.sh
|
||||
keep_existing_recovery_conf: True
|
||||
|
||||
initdb:
|
||||
- encoding: UTF8
|
||||
|
||||
pg_hba:
|
||||
- host all postgres all md5
|
||||
- host replication repl all md5
|
||||
- host all all all md5
|
||||
|
||||
users:
|
||||
postgres:
|
||||
password: postgres
|
||||
options:
|
||||
- createrole
|
||||
- createdb
|
||||
repl:
|
||||
password: repl
|
||||
options:
|
||||
- replication
|
||||
|
||||
postgresql:
|
||||
listen: 0.0.0.0:5432
|
||||
connect_address: {{env "attr.unique.network.ip-address"}}:5432
|
||||
use_unix_socket: true
|
||||
data_dir: /store/data
|
||||
authentication:
|
||||
replication:
|
||||
username: repl
|
||||
password: repl
|
||||
superuser:
|
||||
username: postgres
|
||||
password: postgres
|
||||
EOL
|
||||
|
||||
destination = "/secrets/patroni.yml"
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/nomad-pgsql-patroni:latest"
|
||||
volumes = [
|
||||
"/mnt/configs/postgres:/store",
|
||||
]
|
||||
ports = ["api", "pg"]
|
||||
|
||||
}
|
||||
env {
|
||||
PGDATA="/store/data"
|
||||
// POSTGRES_USER="root"
|
||||
// POSTGRES_PASSWORD="rootpassword"
|
||||
}
|
||||
resources {
|
||||
memory = 1024
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,195 +0,0 @@
|
||||
job "prometheus" {
|
||||
# region = "global"
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
# priority = 50
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
|
||||
# constraint {
|
||||
# attribute = "${attr.unique.hostname}"
|
||||
# operator = "regexp"
|
||||
# value = "pi.*"
|
||||
# }
|
||||
|
||||
update {
|
||||
# Stagger updates every 60 seconds
|
||||
stagger = "60s"
|
||||
max_parallel = 1
|
||||
}
|
||||
group "prometheus" {
|
||||
count = 2
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "delay"
|
||||
}
|
||||
|
||||
task "prometheus" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "prom/prometheus"
|
||||
args = ["--web.enable-admin-api","--config.file=/etc/prometheus/prometheus.yml"]
|
||||
|
||||
|
||||
ports = ["http"]
|
||||
memory_hard_limit = "512"
|
||||
volumes = [
|
||||
"local/prometheus.yml:/etc/prometheus/prometheus.yml",
|
||||
"local/alerts.yml:/etc/prometheus/alerts.yml",
|
||||
]
|
||||
|
||||
// "/mnt/gv0/prom_data:/data",
|
||||
// "/etc/localtime:/etc/localtime",
|
||||
|
||||
logging {
|
||||
type = "json-file"
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["global", "prometheus"]
|
||||
port = "http"
|
||||
|
||||
check {
|
||||
name = "alive"
|
||||
type = "http"
|
||||
interval = "10s"
|
||||
timeout = "120s"
|
||||
path = "/status"
|
||||
port = "http"
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "signal"
|
||||
change_signal = "SIGHUP"
|
||||
data = "{{ key \"prometheus_yml\" }}"
|
||||
destination = "local/prometheus.yml"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
|
||||
destination = "local/alerts.yml"
|
||||
data = "{{ key \"alerts\" }}"
|
||||
}
|
||||
resources {
|
||||
cpu = 500 # 500 MHz
|
||||
memory = 48 # 128MB
|
||||
}
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
kill_timeout = "10s"
|
||||
} ## end prometheus
|
||||
|
||||
task "alertmanager" {
|
||||
driver = "docker"
|
||||
|
||||
config {
|
||||
image = "prom/alertmanager"
|
||||
|
||||
ports = ["alerthttp"]
|
||||
|
||||
// volumes = [
|
||||
// "local/alertmanager.yml:/etc/prometheus/prometheus.yml",
|
||||
// ]
|
||||
args = ["--config.file=/local/alertmanager.yml"]
|
||||
// "/mnt/gv0/prom_data:/data",
|
||||
// "/etc/localtime:/etc/localtime",
|
||||
|
||||
logging {
|
||||
type = "json-file"
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASK}"
|
||||
tags = ["global", "prometheus"]
|
||||
port = "alerthttp"
|
||||
|
||||
check {
|
||||
name = "alive"
|
||||
type = "http"
|
||||
interval = "60s"
|
||||
timeout = "120s"
|
||||
path = "/status"
|
||||
port = "http"
|
||||
}
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
global:
|
||||
receivers:
|
||||
- name: default-receiver
|
||||
- name: gotify-webhook
|
||||
webhook_configs:
|
||||
- url: "http://prometheus.service.dc1.consul:9094/gotify_webhook"
|
||||
route:
|
||||
group_wait: 10s
|
||||
group_interval: 5m
|
||||
receiver: gotify-webhook
|
||||
repeat_interval: 3h
|
||||
|
||||
EOH
|
||||
|
||||
destination = "local/alertmanager.yml"
|
||||
}
|
||||
resources {
|
||||
cpu = 128 # 500 MHz
|
||||
memory = 48 # 128MB
|
||||
}
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
kill_timeout = "10s"
|
||||
} ## end alertmanager
|
||||
|
||||
task "gotifybridge" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/druggeri/alertmanager_gotify_bridge"
|
||||
ports = ["gotifybridge"]
|
||||
args = ["--debug"]
|
||||
}
|
||||
env {
|
||||
GOTIFY_TOKEN="AQ7l7NVgtylam86"
|
||||
GOTIFY_ENDPOINT="http://gotify.service.dc1.consul/message"
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 9090
|
||||
to = 9090
|
||||
}
|
||||
port "alerthttp" {
|
||||
static = 9093
|
||||
to = 9093
|
||||
}
|
||||
port "gotifybridge" {
|
||||
static = 9094
|
||||
to = 8080
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,138 +0,0 @@
|
||||
# There can only be a single job definition per file.
|
||||
# Create a job with ID and Name 'example'
|
||||
job "prowlarr" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
constraint {
|
||||
attribute = "${attr.kernel.name}"
|
||||
value = "linux"
|
||||
}
|
||||
constraint {
|
||||
attribute = "${attr.unique.hostname}"
|
||||
operator = "regexp"
|
||||
value = "odroid.*"
|
||||
}
|
||||
|
||||
update {
|
||||
stagger = "10s"
|
||||
max_parallel = 1
|
||||
}
|
||||
|
||||
group "prowlarr" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 2
|
||||
interval = "1m"
|
||||
delay = "10s"
|
||||
mode = "fail"
|
||||
}
|
||||
|
||||
|
||||
task "flaresolver" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/flaresolverr/flaresolverr:latest"
|
||||
ports = ["http_flare"]
|
||||
dns_servers = ["192.168.1.1", "1.1.1.1"]
|
||||
memory_hard_limit = "2048"
|
||||
force_pull = false
|
||||
}
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["prowlarr_pg", "tools"]
|
||||
port = "http_flare"
|
||||
}
|
||||
}
|
||||
|
||||
task "prowlarr" {
|
||||
driver = "docker"
|
||||
config {
|
||||
image = "ghcr.io/linuxserver/prowlarr:develop"
|
||||
ports = ["http"]
|
||||
dns_servers = ["192.168.1.1", "1.1.1.1"]
|
||||
memory_hard_limit = "2048"
|
||||
volumes = [
|
||||
"/mnt/Public/configs/prowlarr_pg:/config",
|
||||
]
|
||||
force_pull = false
|
||||
}
|
||||
|
||||
service {
|
||||
name = "${TASKGROUP}"
|
||||
tags = ["prowlarr_pg", "tools"]
|
||||
port = "http"
|
||||
|
||||
// check {
|
||||
// type = "script"
|
||||
// name = "check_up"
|
||||
// command = "/local/healthcheck.sh"
|
||||
|
||||
// interval = "60s"
|
||||
// timeout = "5s"
|
||||
|
||||
// check_restart {
|
||||
// limit = 3
|
||||
// grace = "90s"
|
||||
// ignore_warnings = false
|
||||
// }
|
||||
|
||||
// // export API=$(grep -Po '<ApiKey>\K.8-20 * * *?(?=<.8-20 * * *?>)' /config/config.xml)
|
||||
// // curl -f "http://localhost:9696/api/v1/system/status?apikey=$API"
|
||||
// }
|
||||
}
|
||||
template {
|
||||
data = <<EOH
|
||||
#!/bin/bash
|
||||
/usr/bin/curl -f "http://localhost:${NOMAD_PORT_http}/api/v1/system/status?apikey=$(grep -Po '<ApiKey>\K.*?(?=<.*?>)' /config/config.xml)"
|
||||
EOH
|
||||
|
||||
destination = "local/healthcheck.sh"
|
||||
perms = "0755"
|
||||
}
|
||||
|
||||
env {
|
||||
// SHARE = "Public;/mount/Public;yes;no;yes;all;none;;Public"
|
||||
# GLOBAL = "socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536"
|
||||
# PERMISSIONS = "true"
|
||||
# WORKGROUP = "WORKGROUP"
|
||||
TZ = "EST5EDT"
|
||||
|
||||
PUID = 1000
|
||||
PGID = 1000
|
||||
}
|
||||
|
||||
# We must specify the resources required for
|
||||
# this task to ensure it runs on a machine with
|
||||
# enough capacity.
|
||||
resources {
|
||||
cpu = 500 # 500 MHz
|
||||
memory = 256 # 128MB
|
||||
}
|
||||
|
||||
# Specify configuration related to log rotation
|
||||
logs {
|
||||
max_files = 10
|
||||
max_file_size = 15
|
||||
}
|
||||
|
||||
# Controls the timeout between signalling a task it will be killed
|
||||
# and killing the task. If not set a default is used.
|
||||
kill_timeout = "10s"
|
||||
} #End main task
|
||||
|
||||
network {
|
||||
// mbits = 100
|
||||
|
||||
port "http" {
|
||||
static = 9696
|
||||
to = 9696
|
||||
}
|
||||
port "http_flare" {
|
||||
static = 8191
|
||||
to = 8191
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
job "qautomate" {
|
||||
periodic {
|
||||
cron = "*/30 * * * *"
|
||||
prohibit_overlap = true
|
||||
}
|
||||
datacenters = ["dc1"]
|
||||
|
||||
type = "batch"
|
||||
|
||||
group "app" {
|
||||
count = 1
|
||||
|
||||
task "setup" {
|
||||
driver = "docker"
|
||||
|
||||
lifecycle {
|
||||
hook = "prestart"
|
||||
}
|
||||
|
||||
config {
|
||||
image = "ghcr.io/sstent/ubuntu-python3"
|
||||
// command = "/bin/bash"
|
||||
args = ["-v","-c", "/local/prestart.sh"]
|
||||
|
||||
}
|
||||
|
||||
template {
|
||||
data = <<EOH
|
||||
#!/bin/bash
|
||||
rm /usr/lib/python3.11/EXTERNALLY-MANAGED
|
||||
pip3 install qbittorrent-api --upgrade
|
||||
python3 /local/torrent_tagger.py
|
||||
python3 /local/torrent_tidy.py
|
||||
|
||||
EOH
|
||||
perms = 0777
|
||||
destination = "local/prestart.sh"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"functions/torrent_tagger\" }}"
|
||||
destination = "local/torrent_tagger.py"
|
||||
}
|
||||
|
||||
template {
|
||||
change_mode = "restart"
|
||||
data = "{{ key \"functions/torrent_tidy\" }}"
|
||||
destination = "local/torrent_tidy.py"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user