feat: docker pull througt mirror
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
vincent 2024-03-17 18:58:24 +01:00
parent f0676ec3f7
commit e0f9190b76
46 changed files with 309 additions and 64 deletions

View File

@ -3,3 +3,5 @@ docker_daemon_config:
- 172.17.0.1
- 192.168.1.5
mtu: 1420
insecure-registries:
- 192.168.1.0/24

View File

@ -35,7 +35,7 @@ job "MQTT" {
]
}
config {
image = "eclipse-mosquitto"
image = "docker.service.consul:5000/library/eclipse-mosquitto"
ports = ["mosquittoWS", "mosquittoMQTT"]
volumes = [
"/mnt/diskstation/nomad/mosquitto:/mosquitto/data",

View File

@ -43,7 +43,7 @@ job "actualbudget" {
]
}
config {
image = "ghcr.io/actualbudget/actual-server:latest"
image = "ghcr.service.consul:5000/actualbudget/actual-server:latest"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/actualbudget:/data"

View File

@ -45,7 +45,7 @@ job "alertmanager" {
}
config {
image = "prom/alertmanager"
image = "docker.service.consul:5000/prom/alertmanager"
args= ["--log.level=debug", "--config.file=/etc/alertmanager/alertmanager.yml"]
ports = ["http"]
volumes = [

View File

@ -26,7 +26,7 @@ job "backup-consul" {
task "consul-backup" {
driver = "docker"
config {
image = "ducampsv/docker-consul-backup:latest"
image = "docker.service.consul:5000/ducampsv/docker-consul-backup:latest"
volumes = [
"/mnt/diskstation/nomad/backup/consul:/backup"
]

View File

@ -32,7 +32,7 @@ job "backup-postgress" {
name = "backup-postgress"
}
config {
image = "ducampsv/docker-backup-postgres:latest"
image = "docker.service.consul:5000/ducampsv/docker-backup-postgres:latest"
volumes = [
"/mnt/diskstation/nomad/backup/postgres:/backup"
]

View File

@ -29,7 +29,7 @@ job "backup-vault" {
task "backup-vault" {
driver = "docker"
config {
image = "ducampsv/docker-vault-backup:latest"
image = "docker.service.consul:5000/ducampsv/docker-vault-backup:latest"
volumes = [
"/mnt/diskstation/nomad/backup/vault:/backup"
]

View File

@ -13,7 +13,7 @@ job "batch-rutorrent" {
task "cleanForwardFolder" {
driver= "docker"
config {
image = "alpine"
image = "docker.service.consul:5000/library/alpine"
volumes = [
"/mnt/hetzner/storagebox/file/forward:/file"
]

View File

@ -32,7 +32,7 @@ job "batch-seedboxsync" {
name = "seedboxsync"
}
config {
image = "ducampsv/rsync:latest"
image = "docker.service.consul:5000/ducampsv/rsync:latest"
volumes = [
"/mnt/diskstation/download:/media",
"local/id_rsa:/home/rsyncuser/.ssh/id_rsa"

View File

@ -20,7 +20,7 @@ job "borgmatic" {
task "borgmatic" {
driver = "docker"
config {
image = "ghcr.io/borgmatic-collective/borgmatic"
image = "ghcr.service.consul:5000/borgmatic-collective/borgmatic"
volumes = [
"/exports:/exports",
"local/borgmatic.d:/etc/borgmatic.d",

View File

@ -39,7 +39,7 @@ job "chainetv" {
]
}
config {
image = "ducampsv/chainetv:latest"
image = "docker.service.consul:5000/ducampsv/chainetv:latest"
ports = ["http"]
}
resources {

View File

@ -27,7 +27,7 @@ job "crowdsec-agent" {
}
driver = "docker"
config {
image = "crowdsecurity/crowdsec"
image = "docker.service.consul:5000/crowdsecurity/crowdsec"
ports = ["metric"]
volumes = [
"/var/run/docker.sock:/var/run/docker.sock",

View File

@ -41,7 +41,7 @@ job "crowdsec-api" {
]
}
config {
image = "crowdsecurity/crowdsec"
image = "docker.service.consul:5000/crowdsecurity/crowdsec"
ports = ["http", "metric"]
volumes = [
"/mnt/diskstation/nomad/crowdsec/db:/var/lib/crowdsec/data",

View File

@ -33,7 +33,7 @@ job "dashboard" {
]
}
config {
image = "b4bz/homer"
image = "docker.service.consul:5000/b4bz/homer"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/homer:/www/assets"

View File

@ -119,7 +119,7 @@ job "dockermailserver" {
task "docker-mailserver" {
driver = "docker"
config {
image = "ghcr.io/docker-mailserver/docker-mailserver:latest"
image = "ghcr.service.consul:5000/docker-mailserver/docker-mailserver:latest"
ports = ["smtp", "esmtp", "imap","rspamd"]
volumes = [
"/mnt/diskstation/nomad/dms/mail-data:/var/mail",

View File

@ -16,7 +16,7 @@ job "drone-runner" {
task "drone-runner" {
driver = "docker"
config {
image = "drone/drone-runner-docker:latest"
image = "docker.service.consul:5000/drone/drone-runner-docker:latest"
volumes = [
"/var/run/docker.sock:/var/run/docker.sock",
]

View File

@ -45,7 +45,7 @@ job "drone" {
]
}
config {
image = "drone/drone:latest"
image = "docker.service.consul:5000/drone/drone:latest"
ports = [
"http"
]

View File

@ -48,7 +48,7 @@ job "filestash" {
]
}
config {
image = "machines/filestash"
image = "docker.service.consul:5000/machines/filestash"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/filestash:/app/data/state"

View File

@ -27,7 +27,7 @@ job "ghostfolio" {
task "redis" {
driver = "docker"
config {
image = "redis"
image = "docker.service.consul:5000/library/redis"
ports = ["redis"]
}
resources {
@ -51,7 +51,7 @@ job "ghostfolio" {
]
}
config {
image = "ghostfolio/ghostfolio:latest"
image = "docker.service.consul:5000/ghostfolio/ghostfolio:latest"
ports = ["http"]
volumes = [
]

View File

@ -59,7 +59,7 @@ job "git" {
]
}
config {
image = "gitea/gitea:latest"
image = "docker.service.consul:5000/gitea/gitea:latest"
ports = [
"http",
"ssh"

View File

@ -16,12 +16,6 @@ job "grafana" {
to = 3000
}
}
volume "grafana" {
type = "csi"
source = "grafana"
access_mode = "multi-node-multi-writer"
attachment_mode = "file-system"
}
service {
name = "grafana"
port = "http"
@ -44,17 +38,13 @@ job "grafana" {
}
task "dashboard" {
volume_mount {
volume = "grafana"
destination = "/grafana"
}
driver = "docker"
config {
image = "grafana/grafana"
image = "docker.service.consul:5000/grafana/grafana"
ports = ["http"]
volumes = [
"grafana:/etc/grafana",
"grafana:/var/lib/grafana"
"/mnt/diskstation/nomad/grafana/config:/etc/grafana",
"/mnt/diskstation/nomad/grafana/lib:/var/lib/grafana"
]
}
resources {

View File

@ -57,7 +57,7 @@ job "homeassistant" {
}
}
config {
image = "homeassistant/home-assistant:stable"
image = "docker.service.consul:5000/homeassistant/home-assistant:stable"
ports = ["http", "coap"]
privileged = "true"
network_mode = "host"

View File

@ -43,7 +43,7 @@ job "jellyfin" {
}
config {
image = "ghcr.io/jellyfin/jellyfin-vue:unstable"
image = "ghcr.service.consul:5000/jellyfin/jellyfin-vue:unstable"
ports = ["http"]
}
env {
@ -88,7 +88,7 @@ job "jellyfin" {
]
}
config {
image = "jellyfin/jellyfin"
image = "docker.service.consul:5000/jellyfin/jellyfin"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/jellyfin/config:/config",

View File

@ -41,7 +41,7 @@ job "lldap" {
task "lldap" {
driver = "docker"
config {
image = "ducampsv/lldap:latest"
image = "docker.service.consul:5000/ducampsv/lldap:latest"
ports = ["ldap","http"]
volumes = [
"/mnt/diskstation/nomad/lldap:/data"

View File

@ -38,7 +38,7 @@ job "loki" {
}
}
config {
image = "grafana/loki"
image = "docker.service.consul:5000/grafana/loki"
ports = ["http"]
args = [
"-config.file",

View File

@ -32,7 +32,7 @@ job "node-exporter" {
task "node-exporter" {
driver = "docker"
config {
image = "prom/node-exporter"
image = "docker.service.consul:5000/prom/node-exporter"
ports = ["http"]
args = [
"--web.listen-address=:${NOMAD_PORT_http}",

View File

@ -29,7 +29,7 @@ job "nut_exporter" {
task "nut_exporter" {
driver = "docker"
config {
image = "ghcr.io/druggeri/nut_exporter"
image = "ghcr.service.consul:5000/druggeri/nut_exporter"
ports = ["http"]
}
env {

View File

@ -32,7 +32,7 @@ job "pacoloco" {
]
}
config {
image = "ducampsv/pacoloco"
image = "docker.service.consul:5000/ducampsv/pacoloco"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/pacoloco:/var/cache/pacoloco",

View File

@ -33,7 +33,7 @@ job "paperless-ng" {
task "redis" {
driver = "docker"
config {
image = "redis"
image = "docker.service.consul:5000/library/redis"
ports = ["redis"]
}
resources {
@ -67,7 +67,7 @@ job "paperless-ng" {
}
}
config {
image = "ghcr.io/paperless-ngx/paperless-ngx"
image = "ghcr.service.consul:5000/paperless-ngx/paperless-ngx"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/paperless-ng/media:/usr/src/paperless/media",

View File

@ -39,7 +39,7 @@ job "pdns-auth" {
}
config {
image = "powerdns/pdns-auth-master:latest"
image = "docker.service.consul:5000/powerdns/pdns-auth-master:latest"
network_mode = "host"
privileged=true
cap_add= ["net_bind_service"]
@ -102,7 +102,7 @@ include-dir=/etc/powerdns/pdns.d
}
driver = "docker"
config {
image = "powerdnsadmin/pda-legacy:latest"
image = "docker.service.consul:5000/powerdnsadmin/pda-legacy:latest"
ports= ["pdnsadmin"]
volumes = [
"/mnt/diskstation/nomad/pdns-admin/:/data/node_module/",
@ -131,7 +131,7 @@ SQLALCHEMY_DATABASE_URI=postgresql://pdns-admin:{{ .Data.data.pdnsadmin }}@activ
driver = "docker"
config {
image = "powerdns/pdns-recursor-master:latest"
image = "docker.service.consul:5000/powerdns/pdns-recursor-master:latest"
network_mode = "host"
volumes = [
"local/recursor.conf:/etc/powerdns/recursor.conf",
@ -172,7 +172,7 @@ local-address=192.168.1.6
EOH
}
config {
image = "osixia/keepalived:2.0.20"
image = "docker.service.consul:5000/osixia/keepalived:2.0.20"
network_mode = "host"
cap_add = [
"NET_ADMIN",

View File

@ -45,7 +45,7 @@ job "pihole" {
}
config {
image = "pihole/pihole:2023.10.0"
image = "docker.service.consul:5000/pihole/pihole:2023.10.0"
network_mode = "host"
volumes = [
"local/dnsmasq.d/02-localresolver.conf:/etc/dnsmasq.d/02-localresolver.conf",

View File

@ -250,7 +250,7 @@ EOH
driver = "docker"
config {
image = "prom/prometheus:latest"
image = "docker.service.consul:5000/prom/prometheus:latest"
args = [
"--config.file=/etc/prometheus/prometheus.yml",
"--storage.tsdb.path=/prometheus",

View File

@ -44,7 +44,7 @@ job "radicale" {
]
}
config {
image = "tomsquest/docker-radicale"
image = "docker.service.consul:5000/tomsquest/docker-radicale"
ports = ["http"]
volumes = [
"local/config:/config/config",

View 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
}
}
}
}

View File

@ -57,7 +57,7 @@ job "torrent" {
user = "root"
config {
image = "docker.io/crazymax/rtorrent-rutorrent:edge"
image = "docker.service.consul:5000/crazymax/rtorrent-rutorrent:edge"
privileged = "true"
ports = [
"http",

View File

@ -53,7 +53,7 @@ job "supysonic" {
task "supysonic-frontend" {
driver = "docker"
config {
image = "nginx:alpine"
image = "docker.service.consul:5000/library/nginx:alpine"
ports = [
"http"
]
@ -96,7 +96,7 @@ http {
task "supysonic-server" {
driver = "docker"
config {
image = "ducampsv/supysonic:latest"
image = "docker.service.consul:5000/ducampsv/supysonic:latest"
ports = ["fcgi"]
force_pull = true
volumes = [

View File

@ -44,7 +44,7 @@ job "syncthing" {
]
}
config {
image = "linuxserver/syncthing"
image = "docker.service.consul:5000/linuxserver/syncthing"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/syncthing/config:/config",

View File

@ -67,7 +67,7 @@ job "traefik-ingress" {
}
config {
image = "traefik"
image = "docker.service.consul:5000/library/traefik"
ports = [
"http",
"https",

View File

@ -29,7 +29,7 @@ job "traefik-local" {
static= 993
}
port "admin" {
static = 9080
static = 8080
}
}
vault {
@ -62,7 +62,7 @@ job "traefik-local" {
}
config {
image = "traefik"
image = "docker.service.consul:5000/library/traefik"
ports = [
"http",
"https",

View File

@ -50,7 +50,7 @@ job "tt-rss" {
task "ttrss-app" {
driver = "docker"
config {
image = "cthulhoo/ttrss-fpm-pgsql-static"
image = "docker.service.consul:5000/cthulhoo/ttrss-fpm-pgsql-static"
ports = [
"appPort"
]
@ -83,7 +83,7 @@ job "tt-rss" {
task "ttrss-updater" {
driver = "docker"
config {
image = "cthulhoo/ttrss-fpm-pgsql-static"
image = "docker.service.consul:5000/cthulhoo/ttrss-fpm-pgsql-static"
volumes = [
"${NOMAD_ALLOC_DIR}/data:/var/www/html"
]
@ -115,7 +115,7 @@ job "tt-rss" {
task "ttrss-frontend" {
driver = "docker"
config {
image = "nginx:alpine"
image = "docker.service.consul:5000/library/nginx:alpine"
ports = [
"http"
]

View File

@ -54,7 +54,7 @@ job "vaultwarden" {
}
}
config {
image = "vaultwarden/server"
image = "docker.service.consul:5000/vaultwarden/server"
ports = ["http"]
volumes = [
"/mnt/diskstation/nomad/vaultwarden:/data"

View File

@ -15,7 +15,7 @@ job "vector" {
task "vector" {
driver = "docker"
config {
image = "timberio/vector:0.34.1-alpine"
image = "docker.service.consul:5000/timberio/vector:0.34.1-alpine"
ports = ["api"]
volumes = [
"/var/run/docker.sock:/var/run/docker.sock",

View File

@ -41,7 +41,7 @@ job "vikunja" {
]
}
config {
image = "vikunja/vikunja"
image = "docker.service.consul:5000/vikunja/vikunja"
ports = ["api","front"]
}
env {

View 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" ]
}

View 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" ]
}

View File

@ -36,7 +36,7 @@ job "www" {
task "server" {
driver = "docker"
config {
image = "nginx"
image = "docker.service.consul:5000/library/nginx"
ports = [
"http"
]