Merge branch 'main' into main

This commit is contained in:
Christian Lempa
2025-06-03 14:57:34 +02:00
committed by GitHub
75 changed files with 699 additions and 226 deletions
+65
View File
@@ -0,0 +1,65 @@
# https://editorconfig.org/
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[/docker-compose/nginx/**/*.conf]
indent_size = 2
[/docker-compose/wazuh/**/*.conf]
indent_size = 2
[*.css]
indent_size = 2
[{*.go,go.mod}]
indent_style = tab
indent_size = unset
[*.hcl]
indent_size = unset
[*{.min,.min.*,-min}.js]
charset = unset
indent_size = unset
indent_style = unset
insert_final_newline = unset
max_line_length = off
[*.json]
indent_size = 2
[*.md]
indent_size = unset
trim_trailing_whitespace = false
[*.nix]
indent_size = 2
[*.py]
indent_size = 4
[*.tf]
indent_size = unset
[/packer/**/http/user-data]
indent_size = 2
[{*.{yaml,yml},.yamllint}]
indent_size = 2
[*.xml]
indent_size = 2
[Makefile]
indent_style = tab
indent_size = unset
[Vagrantfile]
indent_size = 2
+1 -1
View File
@@ -16,7 +16,7 @@ services:
restart: unless-stopped
semaphore:
container_name: ansiblesemaphore
image: docker.io/semaphoreui/semaphore:v2.11.2
image: docker.io/semaphoreui/semaphore:v2.14.12
user: "${UID}:${GID}"
ports:
- 3000:3000
+4 -4
View File
@@ -1,7 +1,7 @@
---
services:
server:
image: ghcr.io/goauthentik/server:2024.12.2
image: ghcr.io/goauthentik/server:2025.4.1
container_name: authentik-server
command: server
environment:
@@ -50,7 +50,7 @@ services:
restart: unless-stopped
worker:
image: ghcr.io/goauthentik/server:2024.12.2
image: ghcr.io/goauthentik/server:2025.4.1
container_name: authentik-worker
command: worker
environment:
@@ -88,7 +88,7 @@ services:
restart: unless-stopped
redis:
image: docker.io/library/redis:7.4.2
image: docker.io/library/redis:8.0.2
container_name: authentik-redis
command: --save 60 1 --loglevel warning
healthcheck:
@@ -106,7 +106,7 @@ services:
# Alternatively, you can host your PostgreSQL database externally, and
# change the connection settings in the `authentik-server` and
# `authentik-worker`.
image: docker.io/library/postgres:17.2
image: docker.io/library/postgres:17.5
container_name: authentik-db
environment:
- POSTGRES_USER=${POSTGRES_USER:-authentik}
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
bind9:
image: docker.io/ubuntu/bind9:9.18-23.10_edge
image: docker.io/ubuntu/bind9:9.20-24.10_edge
container_name: bind9
ports:
- "53:53"
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.51.0
image: gcr.io/cadvisor/cadvisor:v0.52.1
container_name: cadvisor
ports:
- 8080:8080
+38
View File
@@ -0,0 +1,38 @@
---
services:
monitoring:
image: checkmk/check-mk-raw:2.4.0-latest
container_name: checkmk
ports:
- "8000:8000"
- "5000:5000"
- "162:162/udp"
environment:
- TZ=Europe/Berlin
- CMK_PASSWORD=${CMK_PASSWORD:?no password set}
- CMK_SITE_ID=${CMK_SITE_ID:-cmk}
tmpfs:
- /opt/omd/sites/cmk/tmp:uid=1000,gid=1000
volumes:
- /etc/localtime:/etc/localtime:ro
- data:/omd/sites:rw
networks:
- frontend
labels:
- traefik.enable=true
- traefik.http.services.checkmk.loadbalancer.server.port=5000
- traefik.http.services.checkmk.loadbalancer.server.scheme=http
- traefik.http.routers.checkmk.service=checkmk
- traefik.http.routers.checkmk.rule=Host(`checkmk.home.arpa`)
- traefik.http.routers.checkmk.entrypoints=websecure
- traefik.http.routers.checkmk.tls=true
- traefik.http.routers.checkmk.tls.certresolver=cloudflare
restart: unless-stopped
volumes:
data:
driver: local
networks:
frontend:
external: true
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
clamav:
image: docker.io/clamav/clamav:1.4.1
image: docker.io/clamav/clamav:1.4.2
container_name: clamav
volumes:
- ./config/clamd.conf:/etc/clamav/clamd.conf:ro
+1 -1
View File
@@ -2,7 +2,7 @@
services:
dockge:
container_name: dockge
image: docker.io/louislam/dockge:1.4.2
image: docker.io/louislam/dockge:1.5.0
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- dockge-data:/app/data
@@ -2,7 +2,7 @@
services:
refactr-runner:
container_name: factory-runnerpool-prod-1
image: docker.io/refactr/runner-pool:v0.153.0
image: docker.io/refactr/runner-pool:v0.153.4
user: root
volumes:
- /run/docker.sock:/run/docker.sock
+1 -1
View File
@@ -3,6 +3,6 @@
# Add internal database credentials here...
# POSTGRES_HOST = "your-database-host"
# POSTGRES_PORT = "your-database-port"
POSTGRES_DB = "your-database-name"
POSTGRES_DB = "your-database-name"
POSTGRES_USER = "your-database-user"
POSTGRES_PASSWORD = "your-database-password"
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
server:
image: gitea/gitea:1.23.1
image: gitea/gitea:1.23.8
container_name: gitea-server
environment:
- USER_UID=1000
@@ -0,0 +1,9 @@
---
services:
gitlab-runner:
image: docker.io/gitlab/gitlab-runner:alpine-v17.9.1
container_name: gitlab-runner-1
volumes:
- ./config/config.toml:/etc/gitlab-runner/config.toml:ro
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
@@ -0,0 +1,25 @@
concurrent = 10
log_level = "warning"
log_format = "json"
check_interval = 5
[[runners]]
name = "gitlab-runner-1"
url = "gitlab.example.com" # FIXME Change to your GitLab instance URL
executor = "docker"
token = "" # FIXME Add your registration token here
limit = 0
# FIXME To increase rate limits, when pulling down images from the Docker Hub you might want to authenticate:
# 1. Create a Docker Hub account and generate a personal access token
# 2. Encode the username and token in base64
# Example: echo -n 'username:token' | base64
# 3. Replace the <BASE64_ENCODED_AUTH> with the base64 encoded string
environment = ["DOCKER_AUTH_CONFIG={\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"<BASE64_ENCODED_AUTH>\"}}}"]
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = true
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
[runners.cache]
Insecure = false
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
gitlab:
image: gitlab/gitlab-ce:17.8.1-ce.0
image: docker.io/gitlab/gitlab-ce:18.0.1-ce.0
container_name: gitlab
shm_size: '256m'
environment: {}
+1 -1
View File
@@ -4,7 +4,7 @@ volumes:
driver: local
services:
grafana:
image: docker.io/grafana/grafana-oss:11.4.0
image: docker.io/grafana/grafana-oss:12.0.1
container_name: grafana
ports:
- "3000:3000"
+1 -1
View File
@@ -2,7 +2,7 @@
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:2025.1.3
image: ghcr.io/home-assistant/home-assistant:2025.5.3
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
+3 -1
View File
@@ -1,9 +1,11 @@
---
services:
homepage:
image: ghcr.io/gethomepage/homepage:v0.10.9
image: ghcr.io/gethomepage/homepage:v1.3.2
container_name: homepage
environment:
# (Required) See https://gethomepage.dev/installation/#homepage_allowed_hosts
- HOMEPAGE_ALLOWED_HOSTS=${HOMEPAGE_ALLOWED_HOSTS:?HOMEPAGE_ALLOWED_HOSTS not set}
- LOG_LEVEL=info
# (Optional) Run as a specific user
# - PUID=your-user-id
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
homer:
image: docker.io/b4bz/homer:v24.12.1
image: docker.io/b4bz/homer:v25.05.2
container_name: homer
ports:
- "8080:8080"
+40
View File
@@ -0,0 +1,40 @@
---
services:
loki:
container_name: loki
image: docker.io/grafana/loki:3.5.1
command: "-config.file=/etc/loki/config.yaml"
ports:
# --> (Optional) Remove when using traefik...
- "3100:3100"
# <--
volumes:
- ./config/config.yaml:/etc/loki/config.yaml:ro
- data_loki:/loki:rw
# --> (Optional) When using traefik...
# labels:
# - traefik.enable=true
# # -- Traefik Services
# - traefik.http.services.loki.loadbalancer.server.port=3100
# # -- Traefik Routers
# - traefik.http.routers.loki.entrypoints=websecure
# - traefik.http.routers.loki.rule=Host(`loki-fqdn`)
# - traefik.http.routers.loki.tls=true
# - traefik.http.routers.loki.tls.certresolver=cloudflare
# - traefik.http.routers.loki.service=loki
# # -- (Optional) Authentication
# # - traefik.http.routers.loki.middlewares=authentik-middleware@file
# networks:
# - frontend
# <--
restart: unless-stopped
volumes:
data_loki:
driver: local
# --> (Optional) When using traefik...
# networks:
# frontend:
# external: true
# <--
+30
View File
@@ -0,0 +1,30 @@
---
auth_enabled: false
server:
http_listen_port: 3100
common:
instance_addr: 127.0.0.1
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093
+1 -1
View File
@@ -7,7 +7,7 @@ volumes:
mariadb-data:
services:
mariadb:
image: docker.io/library/mariadb:11.6.2
image: docker.io/library/mariadb:11.7.2
# (Optional) remove this section when you don't want to expose
ports:
- 3306:3306
+4 -4
View File
@@ -4,7 +4,7 @@ volumes:
nextcloud-db:
services:
nextcloud-app:
image: docker.io/library/nextcloud:30.0.5-apache
image: docker.io/library/nextcloud:31.0.5-apache
container_name: nextcloud-app
ports:
- 80:80
@@ -17,9 +17,9 @@ services:
- MYSQL_HOST=nextcloud-db
restart: unless-stopped
nextcloud-db:
# See compatibility matrix for Nextcloud 30
# https://docs.nextcloud.com/server/30/admin_manual/installation/system_requirements.html
image: docker.io/library/mariadb:10.11.10
# See compatibility matrix for Nextcloud 31
# https://docs.nextcloud.com/server/31/admin_manual/installation/system_requirements.html
image: docker.io/library/mariadb:10.11.13
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
+16 -3
View File
@@ -1,13 +1,26 @@
---
services:
nginx:
image: docker.io/library/nginx:1.26.2-alpine
image: docker.io/library/nginx:1.28.0-alpine
container_name: nginx
ports:
- 80:80
# (optional) uncomment the line below to enable HTTPS
# - 443:443
- 443:443
volumes:
- ./config/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./data:/usr/share/nginx/html:ro
labels:
- traefik.enable=true
- traefik.http.services.nginx.loadbalancer.server.port=80
- traefik.http.routers.nginx.entrypoints=websecure
- traefik.http.routers.nginx.rule=Host(`example.com`)
- traefik.http.routers.nginx.tls=true
- traefik.http.routers.nginx.tls.certresolver=cloudflare
- traefik.http.routers.nginx.service=nginx
networks:
- frontend
restart: unless-stopped
networks:
frontend:
external: true
+1
View File
@@ -4,5 +4,6 @@ server {
location / {
root /usr/share/nginx/html;
index index.html;
access_log on;
}
}
@@ -5,7 +5,7 @@ volumes:
nginxproxymanager-db:
services:
nginxproxymanager:
image: docker.io/jc21/nginx-proxy-manager:2.12.2
image: docker.io/jc21/nginx-proxy-manager:2.12.3
ports:
- 80:80
- 81:81
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
node_exporter:
image: quay.io/prometheus/node-exporter:v1.8.2
image: quay.io/prometheus/node-exporter:v1.9.1
container_name: node_exporter
command: "--path.rootfs=/host"
pid: host
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
nvidia_smi_exporter:
image: docker.io/utkuozdemir/nvidia_gpu_exporter:1.3.0
image: docker.io/utkuozdemir/nvidia_gpu_exporter:1.3.2
container_name: nvidia_smi_exporter
runtime: nvidia
environment:
+40
View File
@@ -0,0 +1,40 @@
---
services:
openwebui:
image: ghcr.io/open-webui/open-webui:0.6.13
container_name: openwebui
ports:
- "8080:8080"
environment:
# Ollama Config
- OLLAMA_BASE_URL=http://ollama.example.com:11434
# Authentik SSO Config
- ENABLE_OAUTH_SIGNUP=true
- OAUTH_MERGE_ACCOUNTS_BY_EMAIL=false
- OAUTH_PROVIDER_NAME=authentik
- OPENID_PROVIDER_URL=https://authentik.example.com/application/o/openwebui-slug/.well-known/openid-configuration
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}
- OAUTH_SCOPES=openid email profile
- OPENID_REDIRECT_URI=https://openwebui.example.com/oauth/oidc/callback
volumes:
- data:/app/backend/data:rw
networks:
- frontend
labels:
- traefik.enable=true
- traefik.http.routers.openwebui.rule=Host(`openwebui.example.com`)
- traefik.http.routers.openwebui.entrypoints=websecure
- traefik.http.routers.openwebui.tls=true
- traefik.http.routers.openwebui.tls.certresolver=cloudflare
- traefik.http.routers.openwebui.service=openwebui
- traefik.http.services.openwebui.loadBalancer.server.port=8080
restart: unless-stopped
volumes:
data:
driver: local
networks:
frontend:
external: true
+1 -1
View File
@@ -17,7 +17,7 @@ services:
restart: unless-stopped
passbolt:
container_name: passbolt-app
image: docker.io/passbolt/passbolt:4.10.1-1-ce
image: docker.io/passbolt/passbolt:5.1.1-1-ce
depends_on:
- passbolt-db
environment:
+28 -14
View File
@@ -1,26 +1,40 @@
---
version: '3'
volumes:
dnsmasq:
driver: local
etcd:
driver: local
services:
pihole:
container_name: pihole
image: docker.io/pihole/pihole:2024.07.0
image: docker.io/pihole/pihole:2025.05.1
ports:
- 53:53/tcp
- 53:53/udp
- 67:67/udp
- 80:80/tcp
- 443:443/tcp
- 8081:80/tcp
- 8443:443/tcp
environment:
- TZ=Europe/Berlin
- WEBPASSWORD=your-secret-password
- FTLCONF_webserver_api_password=${FTLCONF_webserver_api_password}
- FTLCONF_dns_upstreams=${FTLCONF_dns_upstreams:-8.8.8.8;8.8.4.4}
volumes:
- dnsmasq:/etc/dnsmasq.d
- etcd:/etc/pihole
- config_dnsmasq:/etc/dnsmasq.d
- config_pihole:/etc/pihole
networks:
- frontend
labels:
- traefik.enable=true
# Pihole Web Interface
- traefik.http.routers.pihole.rule=Host(`example.com`)
- traefik.http.routers.pihole.entrypoints=websecure
- traefik.http.routers.pihole.tls=true
- traefik.http.routers.pihole.tls.certresolver=cloudflare
- traefik.http.routers.pihole.service=pihole
- traefik.http.services.pihole.loadBalancer.server.port=80
restart: unless-stopped
volumes:
config_dnsmasq:
driver: local
config_pihole:
driver: local
networks:
frontend:
external: true
+1 -1
View File
@@ -2,7 +2,7 @@
services:
app:
container_name: portainer
image: docker.io/portainer/portainer-ce:2.26.1-alpine
image: docker.io/portainer/portainer-ce:2.30.1-alpine
ports:
# --> (Optional) Remove when using traefik...
- 9000:9000
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
postgres:
image: docker.io/library/postgres:17.2
image: docker.io/library/postgres:17.5
container_name: postgres
environment:
- POSTGRES_INITDB_ARGS=${POSTGRES_INITDB_ARGS---data-checksums}
+1 -1
View File
@@ -4,7 +4,7 @@ volumes:
driver: local
services:
prometheus:
image: docker.io/prom/prometheus:v3.1.0
image: docker.io/prom/prometheus:v3.4.1
container_name: prometheus
ports:
- 9090:9090
+9
View File
@@ -0,0 +1,9 @@
---
services:
promtail:
image: docker.io/grafana/promtail:3.5.1
command: "-config.file=/mnt/config/config.yaml"
volumes:
- ./config/config.yaml:/mnt/config/config.yaml:ro
- /var/log:/var/log:ro
restart: unless-stopped
@@ -0,0 +1,19 @@
---
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: https://<USERNAME>:<PASSWORD>@<LOKI-FQDN>/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
+1 -1
View File
@@ -15,7 +15,7 @@ services:
- /opt/webserver_swag/config/mariadb:/config
restart: unless-stopped
swag:
image: docker.io/linuxserver/swag:3.1.0
image: docker.io/linuxserver/swag:3.3.0
container_name: swag
cap_add:
- NET_ADMIN
+1 -1
View File
@@ -5,7 +5,7 @@
# external: true
services:
teleport:
image: public.ecr.aws/gravitational/teleport-distroless:17.2.0
image: public.ecr.aws/gravitational/teleport-distroless:17.4.10
container_name: teleport
ports:
# -- (Optional) Remove this section, when using Traefik
+1 -1
View File
@@ -1,7 +1,7 @@
---
services:
traefik:
image: docker.io/library/traefik:v3.3.2
image: docker.io/library/traefik:v3.4.1
container_name: traefik
ports:
- 80:80
@@ -1,24 +0,0 @@
---
# -- (Optional) When using a custom network
# networks:
# your-custom-network:
# -- (Optional) When attaching an external network
# external: true
services:
twingate_connector:
container_name: twingate_connector
image: docker.io/twingate/connector:1.73.0
environment:
- TWINGATE_NETWORK=your-twingate-network
- TWINGATE_ACCESS_TOKEN=${TWINGATE_ACCESS_TOKEN}
- TWINGATE_REFRESH_TOKEN=${TWINGATE_REFRESH_TOKEN}
# -- (Optional) Change loglevel
# - TWINGATE_LOG_LEVEL=3
# -- (Optional) Add custom DNS Server
# - TWINGATE_DNS=10.20.0.1
sysctls:
net.ipv4.ping_group_range: "0 2147483647"
# -- (Optional) When using a custom network
# networks:
# - your-custom-network
restart: unless-stopped
@@ -0,0 +1,23 @@
---
services:
twingate_connector:
container_name: twingate_connector
image: docker.io/twingate/connector:1.76.0
environment:
- TWINGATE_NETWORK= # FIXME Add your Twingate network name here
- TWINGATE_ACCESS_TOKEN=${TWINGATE_ACCESS_TOKEN:?error}
- TWINGATE_REFRESH_TOKEN=${TWINGATE_REFRESH_TOKEN:?error}
- TWINGATE_LOG_LEVEL=1
- TWINGATE_DNS= # FIXME Add your local DNS server here, if needed (e.g. 10.0.0.1), otherwise remove this line
sysctls:
net.ipv4.ping_group_range: "0 2147483647"
networks:
- frontend
- backend
restart: unless-stopped
networks:
frontend:
external: true
backend:
external: true
+3 -3
View File
@@ -1,7 +1,7 @@
---
services:
wazuh.manager:
image: docker.io/wazuh/wazuh-manager:4.10.1
image: docker.io/wazuh/wazuh-manager:4.12.0
container_name: wazuh-prod-1-manager
hostname: wazuh.manager
ulimits:
@@ -55,7 +55,7 @@ services:
restart: unless-stopped
wazuh.indexer:
image: docker.io/wazuh/wazuh-indexer:4.10.1
image: docker.io/wazuh/wazuh-indexer:4.12.0
container_name: wazuh-prod-1-indexer
hostname: wazuh.indexer
ports:
@@ -88,7 +88,7 @@ services:
restart: unless-stopped
wazuh.dashboard:
image: docker.io/wazuh/wazuh-dashboard:4.10.1
image: docker.io/wazuh/wazuh-dashboard:4.12.0
container_name: wazuh-prod-1-dashboard
hostname: wazuh.dashboard
# --> (Optional) Remove the port mapping when using traefik
+1 -1
View File
@@ -2,7 +2,7 @@
global:
image:
repository: "ghcr.io/goauthentik/server"
tag: "2024.12.2"
tag: "2025.4.1"
pullPolicy: IfNotPresent
authentik:
# (Required) To generate a secret key run the following command:
+3 -3
View File
@@ -1,15 +1,15 @@
---
image:
repository: quay.io/jetstack/cert-manager-controller
tag: v1.16.3
tag: v1.17.2
webhook:
image:
repository: quay.io/jetstack/cert-manager-webhook
tag: v1.16.3
tag: v1.17.2
cainjector:
image:
repository: quay.io/jetstack/cert-manager-cainjector
tag: v1.16.3
tag: v1.17.2
crds:
enabled: true
+11 -11
View File
@@ -3,38 +3,38 @@ image:
longhorn:
engine:
repository: "longhornio/longhorn-engine"
tag: "v1.8.0"
tag: "v1.9.0"
manager:
repository: "longhornio/longhorn-manager"
tag: "v1.8.0"
tag: "v1.9.0"
ui:
repository: "longhornio/longhorn-ui"
tag: "v1.7.2"
tag: "v1.9.0"
instanceManager:
repository: "longhornio/longhorn-instance-manager"
tag: "v1.8.0"
tag: "v1.9.0"
shareManager:
repository: "longhornio/longhorn-share-manager"
tag: "v1.7.2"
tag: "v1.9.0"
backingImageManager:
repository: "longhornio/backing-image-manager"
tag: "v1.8.0"
tag: "v1.9.0"
supportBundleKit:
repository: "longhornio/support-bundle-kit"
tag: "v0.0.49"
tag: "v0.0.55"
csi:
attacher:
repository: "longhornio/csi-attacher"
tag: "v4.8.0"
tag: "v4.8.1"
provisioner:
repository: "longhornio/csi-provisioner"
tag: "v5.1.0"
tag: "v5.2.0"
nodeDriverRegistrar:
repository: "longhornio/csi-node-driver-registrar"
tag: "v2.13.0"
resizer:
repository: "longhornio/csi-resizer"
tag: "v1.13.1"
tag: "v1.13.2"
snapshotter:
repository: "longhornio/csi-snapshotter"
tag: "v8.2.0"
@@ -48,6 +48,6 @@ image:
# <--
# --> (Optional) Change the default settings, like Backup Target here...
# defaultSettings:
# defaultBackupStore:
# backupTarget: "your-backup-target" # <-- Replace with your backup target
# <--
+1 -1
View File
@@ -1,7 +1,7 @@
---
image:
repository: portainer/portainer-ce
tag: 2.26.1
tag: 2.30.1
pullPolicy: IfNotPresent
service:
+1 -1
View File
@@ -1,7 +1,7 @@
---
image:
repository: traefik
tag: v3.3.2
tag: v3.4.1
pullPolicy: IfNotPresent
# --> Change redirect HTTP to HTTPs by default here...
@@ -0,0 +1,12 @@
---
apiVersion: twingate.com/v1beta
kind: TwingateConnector # NOTE This requires the Twingate Kubernetes Operator to be installed in your Kubernetes cluster.
metadata:
name: twingate_connector
namespace: twingate
spec:
image:
repository: "twingate/connector"
tag: "1.74.0"
name: twingate_connector
hasStatusNotificationsEnabled: false
@@ -0,0 +1,10 @@
---
image:
repository: twingate/kubernetes-operator
pullPolicy: IfNotPresent
tag: "0.22.1"
twingateOperator:
network: "" # FIXME Add your Twingate network name here
remoteNetworkId: "" # FIXME Add your Twingate remote network ID here
logFormat: "plain"
logVerbosity: "quiet"
@@ -22,14 +22,14 @@ locals {
# Resource Definiation for the VM Template
source "proxmox" "ubuntu-server-focal-docker" {
# Proxmox Connection Settings
proxmox_url = "${var.proxmox_api_url}"
username = "${var.proxmox_api_token_id}"
token = "${var.proxmox_api_token_secret}"
# (Optional) Skip TLS Verification
# insecure_skip_tls_verify = true
# VM General Settings
node = "your-proxmox-node"
vm_id = "100"
@@ -68,16 +68,16 @@ source "proxmox" "ubuntu-server-focal-docker" {
# VM CPU Settings
cores = "1"
# VM Memory Settings
memory = "2048"
memory = "2048"
# VM Network Settings
network_adapters {
model = "virtio"
bridge = "vmbr0"
firewall = "false"
}
}
# VM Cloud-Init Settings
cloud_init = true
@@ -98,7 +98,7 @@ source "proxmox" "ubuntu-server-focal-docker" {
# boot_key_interval = "500ms"
# PACKER Autoinstall Settings
http_directory = "http"
http_directory = "http"
# (Optional) Bind IP Address and Port
# http_bind_address = "0.0.0.0"
# http_port_min = 8802
@@ -22,14 +22,14 @@ locals {
# Resource Definiation for the VM Template
source "proxmox" "ubuntu-server-focal" {
# Proxmox Connection Settings
proxmox_url = "${var.proxmox_api_url}"
username = "${var.proxmox_api_token_id}"
token = "${var.proxmox_api_token_secret}"
# (Optional) Skip TLS Verification
# insecure_skip_tls_verify = true
# VM General Settings
node = "your-proxmox-node"
vm_id = "100"
@@ -68,16 +68,16 @@ source "proxmox" "ubuntu-server-focal" {
# VM CPU Settings
cores = "1"
# VM Memory Settings
memory = "2048"
memory = "2048"
# VM Network Settings
network_adapters {
model = "virtio"
bridge = "vmbr0"
firewall = "false"
}
}
# VM Cloud-Init Settings
cloud_init = true
@@ -98,7 +98,7 @@ source "proxmox" "ubuntu-server-focal" {
# boot_key_interval = "500ms"
# PACKER Autoinstall Settings
http_directory = "http"
http_directory = "http"
# (Optional) Bind IP Address and Port
# http_bind_address = "0.0.0.0"
# http_port_min = 8802
@@ -22,14 +22,14 @@ locals {
# Resource Definiation for the VM Template
source "proxmox" "ubuntu-server-jammy" {
# Proxmox Connection Settings
proxmox_url = "${var.proxmox_api_url}"
username = "${var.proxmox_api_token_id}"
token = "${var.proxmox_api_token_secret}"
# (Optional) Skip TLS Verification
# insecure_skip_tls_verify = true
# VM General Settings
node = "your-proxmox-node"
vm_id = "100"
@@ -68,16 +68,16 @@ source "proxmox" "ubuntu-server-jammy" {
# VM CPU Settings
cores = "1"
# VM Memory Settings
memory = "2048"
memory = "2048"
# VM Network Settings
network_adapters {
model = "virtio"
bridge = "vmbr0"
firewall = "false"
}
}
# VM Cloud-Init Settings
cloud_init = true
@@ -99,7 +99,7 @@ source "proxmox" "ubuntu-server-jammy" {
# boot_key_interval = "500ms"
# PACKER Autoinstall Settings
http_directory = "http"
http_directory = "http"
# (Optional) Bind IP Address and Port
# http_bind_address = "0.0.0.0"
# http_port_min = 8802
@@ -22,14 +22,14 @@ locals {
# Resource Definiation for the VM Template
source "proxmox-iso" "ubuntu-server-jammy" {
# Proxmox Connection Settings
proxmox_url = "${var.proxmox_api_url}"
username = "${var.proxmox_api_token_id}"
token = "${var.proxmox_api_token_secret}"
# (Optional) Skip TLS Verification
# insecure_skip_tls_verify = true
# VM General Settings
node = "your-proxmox-node"
vm_id = "100"
@@ -68,16 +68,16 @@ source "proxmox-iso" "ubuntu-server-jammy" {
# VM CPU Settings
cores = "1"
# VM Memory Settings
memory = "2048"
memory = "2048"
# VM Network Settings
network_adapters {
model = "virtio"
bridge = "vmbr0"
firewall = "false"
}
}
# VM Cloud-Init Settings
cloud_init = true
@@ -99,7 +99,7 @@ source "proxmox-iso" "ubuntu-server-jammy" {
# boot_key_interval = "500ms"
# PACKER Autoinstall Settings
http_directory = "http"
http_directory = "http"
# (Optional) Bind IP Address and Port
# http_bind_address = "0.0.0.0"
# http_port_min = 8802
@@ -22,14 +22,14 @@ locals {
# Resource Definiation for the VM Template
source "proxmox-iso" "ubuntu-server-noble" {
# Proxmox Connection Settings
proxmox_url = "${var.proxmox_api_url}"
username = "${var.proxmox_api_token_id}"
token = "${var.proxmox_api_token_secret}"
# (Optional) Skip TLS Verification
# insecure_skip_tls_verify = true
# VM General Settings
node = "your-proxmox-node"
vm_id = "100"
@@ -68,16 +68,16 @@ source "proxmox-iso" "ubuntu-server-noble" {
# VM CPU Settings
cores = "1"
# VM Memory Settings
memory = "2048"
memory = "2048"
# VM Network Settings
network_adapters {
model = "virtio"
bridge = "vmbr0"
firewall = "false"
}
}
# VM Cloud-Init Settings
cloud_init = true
@@ -101,7 +101,8 @@ source "proxmox-iso" "ubuntu-server-noble" {
# PACKER Autoinstall Settings
http_directory = "http"
http_directory = "http"
# (Optional) Bind IP Address and Port
# http_bind_address = "0.0.0.0"
# http_port_min = 8802
+26 -4
View File
@@ -12,8 +12,8 @@
"renovate"
],
"kubernetes": {
"fileMatch": [
"(^|/)kubernetes/.+/[^/]+\\.ya?ml$"
"managerFilePatterns": [
"/(^|/)kubernetes/.+/[^/]+\\.ya?ml$/"
]
},
"packageRules": [
@@ -78,6 +78,28 @@
"/^([^/]+\\/)*(mariadb|postgres)(:.+)?$/"
]
},
{
"description": "Do not match Canonical's Ubuntu version suffix as a compatibility hint",
"matchManagers": [
"docker-compose",
"dockerfile"
],
"versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)(\\.(?<patch>\\d+))?(?:-\\d+(?:\\.\\d+)+_edge)?$",
"matchPackageNames": [
"/^([^/]+\\/)*ubuntu/bind9(:.+)?$/"
]
},
{
"description": "Catch a potential `security` suffix as part of the patch release as Grafana does not follow semver for security releases",
"matchManagers": [
"docker-compose",
"dockerfile"
],
"versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+(?:-security-\\d+)?)$",
"matchPackageNames": [
"/^([^/]+\\/)*grafana/grafana-oss(:.+)?$/"
]
},
{
"description": "Over time Heimdall changed its versioning schema several times, ensure we only consider the current style",
"matchManagers": [
@@ -116,8 +138,8 @@
{
"customType": "regex",
"description": "Update Longhorn images in Helm",
"fileMatch": [
"(^|/)kubernetes/longhorn/helm/values.yaml$"
"managerFilePatterns": [
"/(^|/)kubernetes/longhorn/helm/values.yaml$/"
],
"matchStrings": [
"engine:\\s*repository:\\s*\"?(?<depName>[^\"]+)\"?\\s*tag:\\s*\"?(?<currentValue>[^\"]+)\"?",
+1 -1
View File
@@ -2,7 +2,7 @@
# ---
# Query commonly used cloud resources from CIVO API
# CIVO Instance Sizes
# CIVO Instance Sizes
data "civo_size" "instance_xsmall" {
filter {
key = "name"
+3 -3
View File
@@ -6,7 +6,7 @@ resource "kubernetes_namespace" "certmanager" {
}
resource "helm_release" "certmanager" {
depends_on = [kubernetes_namespace.certmanager]
name = "certmanager"
@@ -24,8 +24,8 @@ resource "helm_release" "certmanager" {
# (Optional) Create a Time-Sleep for Certificates and Issuer Manifests to deploy later
# resource "time_sleep" "wait_for_certmanager" {
#
#
# depends_on = [helm_release.certmanager]
#
#
# create_duration = "10s"
# }
+4 -4
View File
@@ -1,5 +1,5 @@
resource "kubernetes_namespace" "traefik" {
metadata {
name = "traefik"
}
@@ -7,7 +7,7 @@ resource "kubernetes_namespace" "traefik" {
}
resource "helm_release" "traefik" {
depends_on = [kubernetes_namespace.traefik]
name = "traefik"
@@ -25,7 +25,7 @@ resource "helm_release" "traefik" {
name = "ingressClass.isDefaultClass"
value = "true"
}
# Default Redirect
set {
name = "ports.web.redirectTo"
@@ -42,5 +42,5 @@ resource "helm_release" "traefik" {
set {
name = "tlsOptions.default.minVersion"
value = "VersionTLS12"
}
}
}
+1 -1
View File
@@ -9,7 +9,7 @@ terraform {
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "2.35.1"
version = "2.37.1"
}
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
resource "kubernetes_secret" "cloudflare_api_key_secret" {
depends_on = [kubernetes_namespace.your-namespace-object]
metadata {
name = "cloudflare-api-key-secret"
namespace = "your-namespace"
-3
View File
@@ -1,3 +0,0 @@
# Terraform Proxmox
You can add an additional description here.
@@ -1,3 +0,0 @@
proxmox_api_url = "https://0.0.0.0:8006/api2/json" # Your Proxmox IP Address
proxmox_api_token_id = "terraform@pam!terraform" # API Token ID
proxmox_api_token_secret = "your-api-token-secret"
-49
View File
@@ -1,49 +0,0 @@
# Proxmox Full-Clone
# ---
# Create a new VM from a clone
resource "proxmox_vm_qemu" "your-vm" {
# VM General Settings
target_node = "your-proxmox-node"
vmid = "100"
name = "vm-name"
desc = "Description"
# VM Advanced General Settings
onboot = true
# VM OS Settings
clone = "your-clone"
# VM System Settings
agent = 1
# VM CPU Settings
cores = 1
sockets = 1
cpu = "host"
# VM Memory Settings
memory = 1024
# VM Network Settings
network {
bridge = "vmbr0"
model = "virtio"
}
# VM Cloud-Init Settings
os_type = "cloud-init"
# (Optional) IP Address and Gateway
# ipconfig0 = "ip=0.0.0.0/0,gw=0.0.0.0"
# (Optional) Default User
# ciuser = "your-username"
# (Optional) Add your SSH KEY
# sshkeys = <<EOF
# #YOUR-PUBLIC-SSH-KEY
# EOF
}
+27 -25
View File
@@ -1,38 +1,40 @@
# Proxmox Provider
# ---
# Initial Provider Configuration for Proxmox
terraform {
required_version = ">= 0.13.0"
required_version = ">= 0.13.0"
required_providers {
proxmox = {
source = "telmate/proxmox"
version = ">= 2.9.14"
}
required_providers {
proxmox = {
# LINK https://github.com/Telmate/terraform-provider-proxmox
source = "telmate/proxmox"
version = "3.0.1-rc8"
}
}
}
variable "proxmox_api_url" {
type = string
variable "PROXMOX_URL" {
type = string
}
variable "proxmox_api_token_id" {
type = string
variable "PROXMOX_USER" {
type = string
sensitive = true
}
variable "proxmox_api_token_secret" {
type = string
variable "PROXMOX_TOKEN" {
type = string
sensitive = true
}
variable "PUBLIC_SSH_KEY" {
# NOTE This is the publich SSH key, you want to upload to VMs and LXC containers.
type = string
sensitive = true
}
provider "proxmox" {
pm_api_url = var.proxmox_api_url
pm_api_token_id = var.proxmox_api_token_id
pm_api_token_secret = var.proxmox_api_token_secret
# (Optional) Skip TLS Verification
# pm_tls_insecure = true
pm_api_url = var.PROXMOX_URL
pm_api_token_id = var.PROXMOX_USER
pm_api_token_secret = var.PROXMOX_TOKEN
# NOTE Optional, but recommended to set to true if you are using self-signed certificates.
pm_tls_insecure = false
}
+102
View File
@@ -0,0 +1,102 @@
resource "proxmox_vm_qemu" "your-vm" {
# SECTION General Settings
name = "vm-name"
desc = "description"
agent = 1 # <-- (Optional) Enable QEMU Guest Agent
# FIXME Before deployment, set the correct target node name
target_node = "your-proxmox-node"
# FIXME Before deployment, set the desired VM ID (must be unique on the target node)
vmid = "100"
# !SECTION
# SECTION Template Settings
# FIXME Before deployment, set the correct template or VM name in the clone field
# or set full_clone to false, and remote "clone" to manage existing (imported) VMs
clone = "your-clone-name"
full_clone = true
# !SECTION
# SECTION Boot Process
onboot = true
# NOTE Change startup, shutdown and auto reboot behavior
startup = ""
automatic_reboot = false
# !SECTION
# SECTION Hardware Settings
qemu_os = "other"
bios = "seabios"
cores = 2
sockets = 1
cpu_type = "host"
memory = 2048
# NOTE Minimum memory of the balloon device, set to 0 to disable ballooning
balloon = 2048
# !SECTION
# SECTION Network Settings
network {
id = 0 # NOTE Required since 3.x.x
bridge = "vmbr1"
model = "virtio"
}
# !SECTION
# SECTION Disk Settings
# NOTE Change the SCSI controller type, since Proxmox 7.3, virtio-scsi-single is the default one
scsihw = "virtio-scsi-single"
# NOTE New disk layout (changed in 3.x.x)
disks {
ide {
ide0 {
cloudinit {
storage = "local-lvm"
}
}
}
virtio {
virtio0 {
disk {
storage = "local-lvm"
# NOTE Since 3.x.x size change disk size will trigger a disk resize
size = "20G"
# NOTE Enable IOThread for better disk performance in virtio-scsi-single
# and enable disk replication
iothread = true
replicate = false
}
}
}
}
# !SECTION
# SECTION Cloud Init Settings
# FIXME Before deployment, adjust according to your network configuration
ipconfig0 = "ip=0.0.0.0/0,gw=0.0.0.0"
nameserver = "0.0.0.0"
ciuser = "your-username"
sshkeys = var.PUBLIC_SSH_KEY
# !SECTION
}
@@ -7,7 +7,6 @@ resource "kubernetes_namespace" "certmanager" {
metadata {
name = "certmanager"
}
}
resource "helm_release" "certmanager" {
@@ -26,7 +25,7 @@ resource "helm_release" "certmanager" {
set {
name = "installCRDs"
value = "true"
}
}
}
resource "time_sleep" "wait_for_certmanager" {
@@ -100,7 +100,7 @@ spec:
name: cloudflare-prod
kind: ClusterIssuer
dnsNames:
- 'your-domain'
- 'your-domain'
YAML
}
@@ -13,7 +13,7 @@ terraform {
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "2.35.1"
version = "2.37.1"
}
kubectl = {
source = "gavinbunney/kubectl"
@@ -40,7 +40,7 @@ variable "cloudflare_api_key" {
provider "civo" {
token = var.civo_token
# TODO: (optional) change region to your desired datacenter location
# ---
# region = "FRA1"
@@ -1,7 +1,7 @@
# Traefik Deployment
resource "kubernetes_namespace" "traefik" {
depends_on = [
time_sleep.wait_for_kubernetes
]
@@ -31,7 +31,7 @@ resource "helm_release" "traefik" {
name = "ingressClass.isDefaultClass"
value = "true"
}
# Default Redirect
set {
name = "ports.web.redirectTo"
@@ -2,7 +2,7 @@ terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0.0"
version = "~> 3.6.0"
}
}
}
+20
View File
@@ -0,0 +1,20 @@
terraform {
required_version = ">= 0.13.0"
required_providers {
twingate = {
source = "Twingate/twingate"
version = "3.3.1"
}
}
}
variable "TWINGATE_TOKEN" {
type = string
description = "Twingate API Token"
sensitive = true
}
provider "twingate" {
api_token = var.TWINGATE_TOKEN
network = "" # FIXME Add your Twingate network name here
}
+7
View File
@@ -0,0 +1,7 @@
resource "twingate_group" "administrators" {
name = "Administrators"
user_ids = [
data.twingate_user.admin.id
]
}
@@ -0,0 +1,7 @@
data "twingate_remote_network" "default_network" {
name = "default_network"
}
resource "twingate_remote_network" "new_network" {
name = "new_network"
}
+28
View File
@@ -0,0 +1,28 @@
resource "twingate_resource" "new_resource" {
name = "new_resource"
address = "new_resource.home.arpa"
remote_network_id = data.twingate_remote_network.default_network.id
security_policy_id = data.twingate_security_policy.default_policy.id
protocols = {
allow_icmp = true
tcp = {
policy = "ALLOW_ALL"
}
udp = {
policy = "ALLOW_ALL"
}
}
dynamic "access_group" {
for_each = [
twingate_group.administrators.id
]
content {
group_id = access_group.value
security_policy_id = data.twingate_security_policy.default_policy.id
}
}
is_active = true
}
@@ -0,0 +1,3 @@
data "twingate_security_policy" "default_policy" {
name = "Default Policy"
}
+11
View File
@@ -0,0 +1,11 @@
data "twingate_user" "admin" {
id = "" # FIXME Replace with actual user ID
}
resource "twingate_user" "new_user" {
email = "new.user@example.com"
first_name = "New"
last_name = "User"
role = "DEVOPS" # NOTE Defines the role, either ADMIN, DEVOPS, SUPPORT or MEMBER
send_invite = true
}