feat: docker pull througt mirror
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
f0676ec3f7
commit
e0f9190b76
@ -3,3 +3,5 @@ docker_daemon_config:
|
|||||||
- 172.17.0.1
|
- 172.17.0.1
|
||||||
- 192.168.1.5
|
- 192.168.1.5
|
||||||
mtu: 1420
|
mtu: 1420
|
||||||
|
insecure-registries:
|
||||||
|
- 192.168.1.0/24
|
||||||
|
@ -35,7 +35,7 @@ job "MQTT" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "eclipse-mosquitto"
|
image = "docker.service.consul:5000/library/eclipse-mosquitto"
|
||||||
ports = ["mosquittoWS", "mosquittoMQTT"]
|
ports = ["mosquittoWS", "mosquittoMQTT"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/mosquitto:/mosquitto/data",
|
"/mnt/diskstation/nomad/mosquitto:/mosquitto/data",
|
||||||
|
@ -43,7 +43,7 @@ job "actualbudget" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ghcr.io/actualbudget/actual-server:latest"
|
image = "ghcr.service.consul:5000/actualbudget/actual-server:latest"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/actualbudget:/data"
|
"/mnt/diskstation/nomad/actualbudget:/data"
|
||||||
|
@ -45,7 +45,7 @@ job "alertmanager" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "prom/alertmanager"
|
image = "docker.service.consul:5000/prom/alertmanager"
|
||||||
args= ["--log.level=debug", "--config.file=/etc/alertmanager/alertmanager.yml"]
|
args= ["--log.level=debug", "--config.file=/etc/alertmanager/alertmanager.yml"]
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
|
@ -26,7 +26,7 @@ job "backup-consul" {
|
|||||||
task "consul-backup" {
|
task "consul-backup" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/docker-consul-backup:latest"
|
image = "docker.service.consul:5000/ducampsv/docker-consul-backup:latest"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/backup/consul:/backup"
|
"/mnt/diskstation/nomad/backup/consul:/backup"
|
||||||
]
|
]
|
||||||
|
@ -32,7 +32,7 @@ job "backup-postgress" {
|
|||||||
name = "backup-postgress"
|
name = "backup-postgress"
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/docker-backup-postgres:latest"
|
image = "docker.service.consul:5000/ducampsv/docker-backup-postgres:latest"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/backup/postgres:/backup"
|
"/mnt/diskstation/nomad/backup/postgres:/backup"
|
||||||
]
|
]
|
||||||
|
@ -29,7 +29,7 @@ job "backup-vault" {
|
|||||||
task "backup-vault" {
|
task "backup-vault" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/docker-vault-backup:latest"
|
image = "docker.service.consul:5000/ducampsv/docker-vault-backup:latest"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/backup/vault:/backup"
|
"/mnt/diskstation/nomad/backup/vault:/backup"
|
||||||
]
|
]
|
||||||
|
@ -13,7 +13,7 @@ job "batch-rutorrent" {
|
|||||||
task "cleanForwardFolder" {
|
task "cleanForwardFolder" {
|
||||||
driver= "docker"
|
driver= "docker"
|
||||||
config {
|
config {
|
||||||
image = "alpine"
|
image = "docker.service.consul:5000/library/alpine"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/hetzner/storagebox/file/forward:/file"
|
"/mnt/hetzner/storagebox/file/forward:/file"
|
||||||
]
|
]
|
||||||
|
@ -32,7 +32,7 @@ job "batch-seedboxsync" {
|
|||||||
name = "seedboxsync"
|
name = "seedboxsync"
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/rsync:latest"
|
image = "docker.service.consul:5000/ducampsv/rsync:latest"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/download:/media",
|
"/mnt/diskstation/download:/media",
|
||||||
"local/id_rsa:/home/rsyncuser/.ssh/id_rsa"
|
"local/id_rsa:/home/rsyncuser/.ssh/id_rsa"
|
||||||
|
@ -20,7 +20,7 @@ job "borgmatic" {
|
|||||||
task "borgmatic" {
|
task "borgmatic" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "ghcr.io/borgmatic-collective/borgmatic"
|
image = "ghcr.service.consul:5000/borgmatic-collective/borgmatic"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/exports:/exports",
|
"/exports:/exports",
|
||||||
"local/borgmatic.d:/etc/borgmatic.d",
|
"local/borgmatic.d:/etc/borgmatic.d",
|
||||||
|
@ -39,7 +39,7 @@ job "chainetv" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/chainetv:latest"
|
image = "docker.service.consul:5000/ducampsv/chainetv:latest"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
}
|
}
|
||||||
resources {
|
resources {
|
||||||
|
@ -27,7 +27,7 @@ job "crowdsec-agent" {
|
|||||||
}
|
}
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "crowdsecurity/crowdsec"
|
image = "docker.service.consul:5000/crowdsecurity/crowdsec"
|
||||||
ports = ["metric"]
|
ports = ["metric"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/var/run/docker.sock:/var/run/docker.sock",
|
"/var/run/docker.sock:/var/run/docker.sock",
|
||||||
|
@ -41,7 +41,7 @@ job "crowdsec-api" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "crowdsecurity/crowdsec"
|
image = "docker.service.consul:5000/crowdsecurity/crowdsec"
|
||||||
ports = ["http", "metric"]
|
ports = ["http", "metric"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/crowdsec/db:/var/lib/crowdsec/data",
|
"/mnt/diskstation/nomad/crowdsec/db:/var/lib/crowdsec/data",
|
||||||
|
@ -33,7 +33,7 @@ job "dashboard" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "b4bz/homer"
|
image = "docker.service.consul:5000/b4bz/homer"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/homer:/www/assets"
|
"/mnt/diskstation/nomad/homer:/www/assets"
|
||||||
|
@ -119,7 +119,7 @@ job "dockermailserver" {
|
|||||||
task "docker-mailserver" {
|
task "docker-mailserver" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "ghcr.io/docker-mailserver/docker-mailserver:latest"
|
image = "ghcr.service.consul:5000/docker-mailserver/docker-mailserver:latest"
|
||||||
ports = ["smtp", "esmtp", "imap","rspamd"]
|
ports = ["smtp", "esmtp", "imap","rspamd"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/dms/mail-data:/var/mail",
|
"/mnt/diskstation/nomad/dms/mail-data:/var/mail",
|
||||||
|
@ -16,7 +16,7 @@ job "drone-runner" {
|
|||||||
task "drone-runner" {
|
task "drone-runner" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "drone/drone-runner-docker:latest"
|
image = "docker.service.consul:5000/drone/drone-runner-docker:latest"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/var/run/docker.sock:/var/run/docker.sock",
|
"/var/run/docker.sock:/var/run/docker.sock",
|
||||||
]
|
]
|
||||||
|
@ -45,7 +45,7 @@ job "drone" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "drone/drone:latest"
|
image = "docker.service.consul:5000/drone/drone:latest"
|
||||||
ports = [
|
ports = [
|
||||||
"http"
|
"http"
|
||||||
]
|
]
|
||||||
|
@ -48,7 +48,7 @@ job "filestash" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "machines/filestash"
|
image = "docker.service.consul:5000/machines/filestash"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/filestash:/app/data/state"
|
"/mnt/diskstation/nomad/filestash:/app/data/state"
|
||||||
|
@ -27,7 +27,7 @@ job "ghostfolio" {
|
|||||||
task "redis" {
|
task "redis" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "redis"
|
image = "docker.service.consul:5000/library/redis"
|
||||||
ports = ["redis"]
|
ports = ["redis"]
|
||||||
}
|
}
|
||||||
resources {
|
resources {
|
||||||
@ -51,7 +51,7 @@ job "ghostfolio" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ghostfolio/ghostfolio:latest"
|
image = "docker.service.consul:5000/ghostfolio/ghostfolio:latest"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
]
|
]
|
||||||
|
@ -59,7 +59,7 @@ job "git" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "gitea/gitea:latest"
|
image = "docker.service.consul:5000/gitea/gitea:latest"
|
||||||
ports = [
|
ports = [
|
||||||
"http",
|
"http",
|
||||||
"ssh"
|
"ssh"
|
||||||
|
@ -16,12 +16,6 @@ job "grafana" {
|
|||||||
to = 3000
|
to = 3000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
volume "grafana" {
|
|
||||||
type = "csi"
|
|
||||||
source = "grafana"
|
|
||||||
access_mode = "multi-node-multi-writer"
|
|
||||||
attachment_mode = "file-system"
|
|
||||||
}
|
|
||||||
service {
|
service {
|
||||||
name = "grafana"
|
name = "grafana"
|
||||||
port = "http"
|
port = "http"
|
||||||
@ -44,17 +38,13 @@ job "grafana" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
task "dashboard" {
|
task "dashboard" {
|
||||||
volume_mount {
|
|
||||||
volume = "grafana"
|
|
||||||
destination = "/grafana"
|
|
||||||
}
|
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "grafana/grafana"
|
image = "docker.service.consul:5000/grafana/grafana"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"grafana:/etc/grafana",
|
"/mnt/diskstation/nomad/grafana/config:/etc/grafana",
|
||||||
"grafana:/var/lib/grafana"
|
"/mnt/diskstation/nomad/grafana/lib:/var/lib/grafana"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
resources {
|
resources {
|
||||||
|
@ -57,7 +57,7 @@ job "homeassistant" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "homeassistant/home-assistant:stable"
|
image = "docker.service.consul:5000/homeassistant/home-assistant:stable"
|
||||||
ports = ["http", "coap"]
|
ports = ["http", "coap"]
|
||||||
privileged = "true"
|
privileged = "true"
|
||||||
network_mode = "host"
|
network_mode = "host"
|
||||||
|
@ -43,7 +43,7 @@ job "jellyfin" {
|
|||||||
|
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ghcr.io/jellyfin/jellyfin-vue:unstable"
|
image = "ghcr.service.consul:5000/jellyfin/jellyfin-vue:unstable"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
}
|
}
|
||||||
env {
|
env {
|
||||||
@ -88,7 +88,7 @@ job "jellyfin" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "jellyfin/jellyfin"
|
image = "docker.service.consul:5000/jellyfin/jellyfin"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/jellyfin/config:/config",
|
"/mnt/diskstation/nomad/jellyfin/config:/config",
|
||||||
|
@ -41,7 +41,7 @@ job "lldap" {
|
|||||||
task "lldap" {
|
task "lldap" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/lldap:latest"
|
image = "docker.service.consul:5000/ducampsv/lldap:latest"
|
||||||
ports = ["ldap","http"]
|
ports = ["ldap","http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/lldap:/data"
|
"/mnt/diskstation/nomad/lldap:/data"
|
||||||
|
@ -38,7 +38,7 @@ job "loki" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "grafana/loki"
|
image = "docker.service.consul:5000/grafana/loki"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
args = [
|
args = [
|
||||||
"-config.file",
|
"-config.file",
|
||||||
|
@ -32,7 +32,7 @@ job "node-exporter" {
|
|||||||
task "node-exporter" {
|
task "node-exporter" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "prom/node-exporter"
|
image = "docker.service.consul:5000/prom/node-exporter"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
args = [
|
args = [
|
||||||
"--web.listen-address=:${NOMAD_PORT_http}",
|
"--web.listen-address=:${NOMAD_PORT_http}",
|
||||||
|
@ -29,7 +29,7 @@ job "nut_exporter" {
|
|||||||
task "nut_exporter" {
|
task "nut_exporter" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "ghcr.io/druggeri/nut_exporter"
|
image = "ghcr.service.consul:5000/druggeri/nut_exporter"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
}
|
}
|
||||||
env {
|
env {
|
||||||
|
@ -32,7 +32,7 @@ job "pacoloco" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/pacoloco"
|
image = "docker.service.consul:5000/ducampsv/pacoloco"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/pacoloco:/var/cache/pacoloco",
|
"/mnt/diskstation/nomad/pacoloco:/var/cache/pacoloco",
|
||||||
|
@ -33,7 +33,7 @@ job "paperless-ng" {
|
|||||||
task "redis" {
|
task "redis" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "redis"
|
image = "docker.service.consul:5000/library/redis"
|
||||||
ports = ["redis"]
|
ports = ["redis"]
|
||||||
}
|
}
|
||||||
resources {
|
resources {
|
||||||
@ -67,7 +67,7 @@ job "paperless-ng" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "ghcr.io/paperless-ngx/paperless-ngx"
|
image = "ghcr.service.consul:5000/paperless-ngx/paperless-ngx"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/paperless-ng/media:/usr/src/paperless/media",
|
"/mnt/diskstation/nomad/paperless-ng/media:/usr/src/paperless/media",
|
||||||
|
@ -39,7 +39,7 @@ job "pdns-auth" {
|
|||||||
|
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "powerdns/pdns-auth-master:latest"
|
image = "docker.service.consul:5000/powerdns/pdns-auth-master:latest"
|
||||||
network_mode = "host"
|
network_mode = "host"
|
||||||
privileged=true
|
privileged=true
|
||||||
cap_add= ["net_bind_service"]
|
cap_add= ["net_bind_service"]
|
||||||
@ -102,7 +102,7 @@ include-dir=/etc/powerdns/pdns.d
|
|||||||
}
|
}
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "powerdnsadmin/pda-legacy:latest"
|
image = "docker.service.consul:5000/powerdnsadmin/pda-legacy:latest"
|
||||||
ports= ["pdnsadmin"]
|
ports= ["pdnsadmin"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/pdns-admin/:/data/node_module/",
|
"/mnt/diskstation/nomad/pdns-admin/:/data/node_module/",
|
||||||
@ -131,7 +131,7 @@ SQLALCHEMY_DATABASE_URI=postgresql://pdns-admin:{{ .Data.data.pdnsadmin }}@activ
|
|||||||
|
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "powerdns/pdns-recursor-master:latest"
|
image = "docker.service.consul:5000/powerdns/pdns-recursor-master:latest"
|
||||||
network_mode = "host"
|
network_mode = "host"
|
||||||
volumes = [
|
volumes = [
|
||||||
"local/recursor.conf:/etc/powerdns/recursor.conf",
|
"local/recursor.conf:/etc/powerdns/recursor.conf",
|
||||||
@ -172,7 +172,7 @@ local-address=192.168.1.6
|
|||||||
EOH
|
EOH
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "osixia/keepalived:2.0.20"
|
image = "docker.service.consul:5000/osixia/keepalived:2.0.20"
|
||||||
network_mode = "host"
|
network_mode = "host"
|
||||||
cap_add = [
|
cap_add = [
|
||||||
"NET_ADMIN",
|
"NET_ADMIN",
|
||||||
|
@ -45,7 +45,7 @@ job "pihole" {
|
|||||||
|
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "pihole/pihole:2023.10.0"
|
image = "docker.service.consul:5000/pihole/pihole:2023.10.0"
|
||||||
network_mode = "host"
|
network_mode = "host"
|
||||||
volumes = [
|
volumes = [
|
||||||
"local/dnsmasq.d/02-localresolver.conf:/etc/dnsmasq.d/02-localresolver.conf",
|
"local/dnsmasq.d/02-localresolver.conf:/etc/dnsmasq.d/02-localresolver.conf",
|
||||||
|
@ -250,7 +250,7 @@ EOH
|
|||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "prom/prometheus:latest"
|
image = "docker.service.consul:5000/prom/prometheus:latest"
|
||||||
args = [
|
args = [
|
||||||
"--config.file=/etc/prometheus/prometheus.yml",
|
"--config.file=/etc/prometheus/prometheus.yml",
|
||||||
"--storage.tsdb.path=/prometheus",
|
"--storage.tsdb.path=/prometheus",
|
||||||
|
@ -44,7 +44,7 @@ job "radicale" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "tomsquest/docker-radicale"
|
image = "docker.service.consul:5000/tomsquest/docker-radicale"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"local/config:/config/config",
|
"local/config:/config/config",
|
||||||
|
219
nomad-job/registry.nomad.hcl
Normal file
219
nomad-job/registry.nomad.hcl
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
job "registry" {
|
||||||
|
datacenters = ["homelab"]
|
||||||
|
priority = 100
|
||||||
|
type = "service"
|
||||||
|
meta {
|
||||||
|
forcedeploy = "0"
|
||||||
|
}
|
||||||
|
constraint {
|
||||||
|
attribute = "${attr.cpu.arch}"
|
||||||
|
value = "amd64"
|
||||||
|
}
|
||||||
|
|
||||||
|
group "registry" {
|
||||||
|
network {
|
||||||
|
mode = "host"
|
||||||
|
port "docker_registry" {
|
||||||
|
to = 5000
|
||||||
|
}
|
||||||
|
port "ghcr_registry" {
|
||||||
|
to = 5000
|
||||||
|
}
|
||||||
|
port "traefik" {
|
||||||
|
to = 5000
|
||||||
|
static = 5000
|
||||||
|
}
|
||||||
|
port "redis" {
|
||||||
|
to = 6379
|
||||||
|
}
|
||||||
|
port "admin" {
|
||||||
|
to = 8080
|
||||||
|
}
|
||||||
|
}
|
||||||
|
volume "registry-docker" {
|
||||||
|
type = "csi"
|
||||||
|
source = "registry-docker"
|
||||||
|
access_mode = "multi-node-multi-writer"
|
||||||
|
attachment_mode = "file-system"
|
||||||
|
}
|
||||||
|
volume "registry-ghcr" {
|
||||||
|
type = "csi"
|
||||||
|
source = "registry-ghcr"
|
||||||
|
access_mode = "multi-node-multi-writer"
|
||||||
|
attachment_mode = "file-system"
|
||||||
|
}
|
||||||
|
service {
|
||||||
|
name = "docker"
|
||||||
|
port = "traefik"
|
||||||
|
}
|
||||||
|
service {
|
||||||
|
name = "ghcr"
|
||||||
|
port = "traefik"
|
||||||
|
}
|
||||||
|
task "docker-registry" {
|
||||||
|
driver = "docker"
|
||||||
|
config {
|
||||||
|
image = "registry:2"
|
||||||
|
ports = ["docker_registry"]
|
||||||
|
volumes = [
|
||||||
|
"local/dockerhub.yaml:/etc/docker/registry/config.yml"
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
}
|
||||||
|
volume_mount {
|
||||||
|
volume = "registry-docker"
|
||||||
|
destination = "/var/lib/registry"
|
||||||
|
}
|
||||||
|
template {
|
||||||
|
data = <<EOH
|
||||||
|
http:
|
||||||
|
addr: :5000
|
||||||
|
log:
|
||||||
|
fields:
|
||||||
|
service: registry
|
||||||
|
proxy:
|
||||||
|
remoteurl: https://registry-1.docker.io
|
||||||
|
redis:
|
||||||
|
addr: {{env "NOMAD_ADDR_redis"}}
|
||||||
|
db: 0
|
||||||
|
storage:
|
||||||
|
cache:
|
||||||
|
blobdescriptor: redis
|
||||||
|
filesystem:
|
||||||
|
rootdirectory: /var/lib/registry
|
||||||
|
version: '0.1'
|
||||||
|
|
||||||
|
EOH
|
||||||
|
destination = "local/dockerhub.yaml"
|
||||||
|
}
|
||||||
|
resources {
|
||||||
|
memory = 150
|
||||||
|
max_memory = 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
task "docker-ghcr" {
|
||||||
|
driver = "docker"
|
||||||
|
config {
|
||||||
|
image = "registry:2"
|
||||||
|
ports = ["ghcr_registry"]
|
||||||
|
volumes = [
|
||||||
|
"local/ghcr.yaml:/etc/docker/registry/config.yml"
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
}
|
||||||
|
volume_mount {
|
||||||
|
volume = "registry-ghcr"
|
||||||
|
destination = "/var/lib/registry"
|
||||||
|
}
|
||||||
|
template {
|
||||||
|
data = <<EOH
|
||||||
|
http:
|
||||||
|
addr: :5000
|
||||||
|
log:
|
||||||
|
fields:
|
||||||
|
service: registry
|
||||||
|
proxy:
|
||||||
|
remoteurl: https://ghcr.io
|
||||||
|
redis:
|
||||||
|
addr: {{env "NOMAD_ADDR_redis"}}
|
||||||
|
db: 1
|
||||||
|
storage:
|
||||||
|
cache:
|
||||||
|
blobdescriptor: redis
|
||||||
|
filesystem:
|
||||||
|
rootdirectory: /var/lib/registry
|
||||||
|
version: '0.1'
|
||||||
|
|
||||||
|
EOH
|
||||||
|
destination = "local/ghcr.yaml"
|
||||||
|
}
|
||||||
|
resources {
|
||||||
|
memory = 150
|
||||||
|
max_memory = 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task "redis" {
|
||||||
|
driver = "docker"
|
||||||
|
config {
|
||||||
|
command = "redis-server"
|
||||||
|
args = ["/usr/local/etc/redis/redis.conf"]
|
||||||
|
image = "redis"
|
||||||
|
ports = ["redis"]
|
||||||
|
volumes = [
|
||||||
|
"local/redis.conf:/usr/local/etc/redis/redis.conf"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
template {
|
||||||
|
data = <<EOH
|
||||||
|
databases 2
|
||||||
|
|
||||||
|
EOH
|
||||||
|
destination = "local/redis.conf"
|
||||||
|
}
|
||||||
|
resources {
|
||||||
|
memory = 25
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task "traefik" {
|
||||||
|
driver = "docker"
|
||||||
|
config {
|
||||||
|
image = "traefik"
|
||||||
|
ports = ["traefik","admin"]
|
||||||
|
volumes = [
|
||||||
|
"local/traefik.toml:/etc/traefik/traefik.toml"
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
template {
|
||||||
|
data = <<EOH
|
||||||
|
[accessLog]
|
||||||
|
[api]
|
||||||
|
dashboard = true
|
||||||
|
insecure = true
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.docker]
|
||||||
|
address = ":5000"
|
||||||
|
[http]
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.dockerhub]
|
||||||
|
entryPoints = ["docker"]
|
||||||
|
rule = "Host(`docker.service.consul`)"
|
||||||
|
service = "dockerhub"
|
||||||
|
[http.routers.dockerhub.tls]
|
||||||
|
|
||||||
|
[http.routers.ghcr]
|
||||||
|
entryPoints = ["docker"]
|
||||||
|
rule ="host(`ghcr.service.consul`)"
|
||||||
|
service = "ghcr"
|
||||||
|
[http.routers.ghcr.tls]
|
||||||
|
[http.services]
|
||||||
|
[http.services.dockerhub]
|
||||||
|
[[http.services.dockerhub.loadbalancer.servers]]
|
||||||
|
url = "http://{{env "NOMAD_ADDR_docker_registry" }}"
|
||||||
|
[http.services.ghcr]
|
||||||
|
[[http.services.ghcr.loadbalancer.servers]]
|
||||||
|
url = "http://{{ env "NOMAD_ADDR_ghcr_registry" }}"
|
||||||
|
[providers]
|
||||||
|
[providers.file]
|
||||||
|
filename= "/etc/traefik/traefik.toml"
|
||||||
|
|
||||||
|
[log]
|
||||||
|
level = "DEBUG"
|
||||||
|
EOH
|
||||||
|
destination = "local/traefik.toml"
|
||||||
|
}
|
||||||
|
resources {
|
||||||
|
memory = 75
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -57,7 +57,7 @@ job "torrent" {
|
|||||||
user = "root"
|
user = "root"
|
||||||
config {
|
config {
|
||||||
|
|
||||||
image = "docker.io/crazymax/rtorrent-rutorrent:edge"
|
image = "docker.service.consul:5000/crazymax/rtorrent-rutorrent:edge"
|
||||||
privileged = "true"
|
privileged = "true"
|
||||||
ports = [
|
ports = [
|
||||||
"http",
|
"http",
|
||||||
|
@ -53,7 +53,7 @@ job "supysonic" {
|
|||||||
task "supysonic-frontend" {
|
task "supysonic-frontend" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "nginx:alpine"
|
image = "docker.service.consul:5000/library/nginx:alpine"
|
||||||
ports = [
|
ports = [
|
||||||
"http"
|
"http"
|
||||||
]
|
]
|
||||||
@ -96,7 +96,7 @@ http {
|
|||||||
task "supysonic-server" {
|
task "supysonic-server" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "ducampsv/supysonic:latest"
|
image = "docker.service.consul:5000/ducampsv/supysonic:latest"
|
||||||
ports = ["fcgi"]
|
ports = ["fcgi"]
|
||||||
force_pull = true
|
force_pull = true
|
||||||
volumes = [
|
volumes = [
|
||||||
|
@ -44,7 +44,7 @@ job "syncthing" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "linuxserver/syncthing"
|
image = "docker.service.consul:5000/linuxserver/syncthing"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/syncthing/config:/config",
|
"/mnt/diskstation/nomad/syncthing/config:/config",
|
||||||
|
@ -67,7 +67,7 @@ job "traefik-ingress" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "traefik"
|
image = "docker.service.consul:5000/library/traefik"
|
||||||
ports = [
|
ports = [
|
||||||
"http",
|
"http",
|
||||||
"https",
|
"https",
|
||||||
|
@ -29,7 +29,7 @@ job "traefik-local" {
|
|||||||
static= 993
|
static= 993
|
||||||
}
|
}
|
||||||
port "admin" {
|
port "admin" {
|
||||||
static = 9080
|
static = 8080
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vault {
|
vault {
|
||||||
@ -62,7 +62,7 @@ job "traefik-local" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "traefik"
|
image = "docker.service.consul:5000/library/traefik"
|
||||||
ports = [
|
ports = [
|
||||||
"http",
|
"http",
|
||||||
"https",
|
"https",
|
||||||
|
@ -50,7 +50,7 @@ job "tt-rss" {
|
|||||||
task "ttrss-app" {
|
task "ttrss-app" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "cthulhoo/ttrss-fpm-pgsql-static"
|
image = "docker.service.consul:5000/cthulhoo/ttrss-fpm-pgsql-static"
|
||||||
ports = [
|
ports = [
|
||||||
"appPort"
|
"appPort"
|
||||||
]
|
]
|
||||||
@ -83,7 +83,7 @@ job "tt-rss" {
|
|||||||
task "ttrss-updater" {
|
task "ttrss-updater" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "cthulhoo/ttrss-fpm-pgsql-static"
|
image = "docker.service.consul:5000/cthulhoo/ttrss-fpm-pgsql-static"
|
||||||
volumes = [
|
volumes = [
|
||||||
"${NOMAD_ALLOC_DIR}/data:/var/www/html"
|
"${NOMAD_ALLOC_DIR}/data:/var/www/html"
|
||||||
]
|
]
|
||||||
@ -115,7 +115,7 @@ job "tt-rss" {
|
|||||||
task "ttrss-frontend" {
|
task "ttrss-frontend" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "nginx:alpine"
|
image = "docker.service.consul:5000/library/nginx:alpine"
|
||||||
ports = [
|
ports = [
|
||||||
"http"
|
"http"
|
||||||
]
|
]
|
||||||
|
@ -54,7 +54,7 @@ job "vaultwarden" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "vaultwarden/server"
|
image = "docker.service.consul:5000/vaultwarden/server"
|
||||||
ports = ["http"]
|
ports = ["http"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/diskstation/nomad/vaultwarden:/data"
|
"/mnt/diskstation/nomad/vaultwarden:/data"
|
||||||
|
@ -15,7 +15,7 @@ job "vector" {
|
|||||||
task "vector" {
|
task "vector" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "timberio/vector:0.34.1-alpine"
|
image = "docker.service.consul:5000/timberio/vector:0.34.1-alpine"
|
||||||
ports = ["api"]
|
ports = ["api"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/var/run/docker.sock:/var/run/docker.sock",
|
"/var/run/docker.sock:/var/run/docker.sock",
|
||||||
|
@ -41,7 +41,7 @@ job "vikunja" {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
config {
|
config {
|
||||||
image = "vikunja/vikunja"
|
image = "docker.service.consul:5000/vikunja/vikunja"
|
||||||
ports = ["api","front"]
|
ports = ["api","front"]
|
||||||
}
|
}
|
||||||
env {
|
env {
|
||||||
|
17
nomad-job/volume/registry-docker.hcl
Normal file
17
nomad-job/volume/registry-docker.hcl
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
type = "csi"
|
||||||
|
id = "registry-docker"
|
||||||
|
name = "registry-docker"
|
||||||
|
plugin_id = "nfs"
|
||||||
|
capability {
|
||||||
|
access_mode = "multi-node-multi-writer"
|
||||||
|
attachment_mode = "file-system"
|
||||||
|
}
|
||||||
|
context {
|
||||||
|
server = "nfs.service.consul"
|
||||||
|
share = "/exports/nomad/registry/docker"
|
||||||
|
mountPermissions = "0"
|
||||||
|
}
|
||||||
|
mount_options {
|
||||||
|
fs_type = "nfs"
|
||||||
|
mount_flags = [ "timeo=30", "intr", "vers=3", "_netdev" , "nolock" ]
|
||||||
|
}
|
17
nomad-job/volume/registry-ghcr.hcl
Normal file
17
nomad-job/volume/registry-ghcr.hcl
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
type = "csi"
|
||||||
|
id = "registry-ghcr"
|
||||||
|
name = "registry-ghcr"
|
||||||
|
plugin_id = "nfs"
|
||||||
|
capability {
|
||||||
|
access_mode = "multi-node-multi-writer"
|
||||||
|
attachment_mode = "file-system"
|
||||||
|
}
|
||||||
|
context {
|
||||||
|
server = "nfs.service.consul"
|
||||||
|
share = "/exports/nomad/registry/ghcr"
|
||||||
|
mountPermissions = "0"
|
||||||
|
}
|
||||||
|
mount_options {
|
||||||
|
fs_type = "nfs"
|
||||||
|
mount_flags = [ "timeo=30", "intr", "vers=3", "_netdev" , "nolock" ]
|
||||||
|
}
|
@ -36,7 +36,7 @@ job "www" {
|
|||||||
task "server" {
|
task "server" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "nginx"
|
image = "docker.service.consul:5000/library/nginx"
|
||||||
ports = [
|
ports = [
|
||||||
"http"
|
"http"
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user