Compare commits

...
Sign in to create a new pull request.

85 commits

Author SHA1 Message Date
dc2c619e19 update 2026-05-12 06:26:13 -05:00
fa564e4d8c update 2026-05-12 06:24:19 -05:00
dc09d0109e update 2026-05-10 08:03:18 -05:00
ce51ae2f8d update 2026-05-09 13:39:43 -05:00
e66526b176 update 2026-05-09 13:37:02 -05:00
2d1916de2b add images 2026-05-09 13:32:48 -05:00
b968cd024f update 2026-05-09 12:14:16 -05:00
d7effa4eac update 2026-05-09 08:23:10 -05:00
d50b776fef update 2026-05-02 06:15:04 -05:00
1ddfd948a5 add gotify and kuma 2026-05-02 06:08:39 -05:00
f457e7f1d9 update 2026-03-30 05:34:35 -05:00
ecf16c0717 update 2026-03-29 07:23:32 -05:00
224450c70c update 2026-03-28 12:13:07 -05:00
e47f51426a update 2026-03-28 12:09:41 -05:00
c38262a51b update 2026-03-28 11:37:45 -05:00
57ea463e19 update 2026-03-28 08:12:43 -05:00
ab36649642 update 2026-03-28 08:11:26 -05:00
ea54a2601d update 2026-03-28 08:10:07 -05:00
8343867aee update 2026-03-28 07:59:24 -05:00
1c0c8bab82 update 2026-03-28 07:57:02 -05:00
e6aafbcf81 update 2026-03-27 06:04:54 -05:00
6cdffc48f3 update 2026-03-25 06:07:43 -05:00
2afdded109 add freshrss 2026-03-25 05:48:28 -05:00
7f8883c2bc update 2026-03-08 10:06:50 -05:00
f1b27dc366 update 2026-03-08 10:03:59 -05:00
5974e6450c update gitea to forgejo 2026-03-08 08:12:00 -05:00
160424525a Merge branch 'renovate/base-1.x' into 'main'
Update Helm release base to v1.29.0

See merge request durfy/homelab/gitops!6
2026-03-08 12:20:21 +00:00
RenovateBot
059d35af3e Update Helm release base to v1.29.0 2026-03-08 07:02:03 +00:00
a1bf4cfff8 update vaultwarden 2026-03-07 07:19:43 -06:00
fe23c8a706 remove public gitlab renovate bot 2026-03-07 06:34:41 -06:00
d23eb0f603 Merge branch 'renovate/docker.io-aquasec-trivy-0.x' into 'main'
Update docker.io/aquasec/trivy Docker tag to v0.69.3

See merge request durfy/homelab/gitops!5
2026-03-07 12:32:05 +00:00
RenovateBot
4cb432f2ce Update docker.io/aquasec/trivy Docker tag to v0.69.3 2026-03-07 07:02:04 +00:00
33efd5915f remove public gitlab runner 2026-03-06 05:42:22 -06:00
64ccf3bce1 Merge branch 'renovate/argo-cd-8.x' into 'main'
Update Helm release argo-cd to v8.6.4

See merge request durfy/homelab/gitops!4
2026-03-06 11:32:18 +00:00
RenovateBot
746e7f4d86 Update Helm release argo-cd to v8.6.4 2026-03-01 07:02:06 +00:00
357cca51f6 Merge branch 'renovate/docker.io-aquasec-trivy-0.x' into 'main'
Update docker.io/aquasec/trivy Docker tag to v0.69.1

See merge request durfy/homelab/gitops!3
2026-02-28 11:53:10 +00:00
68d068300a update 2026-02-19 05:08:15 -06:00
d6d965595c update 2026-02-18 06:30:33 -06:00
749974197e update 2026-02-18 06:25:44 -06:00
9d5ffd8a8a update 2026-02-18 06:22:18 -06:00
f75d5d5be4 update 2026-02-18 06:21:02 -06:00
ed66676f2e update 2026-02-18 06:18:52 -06:00
975dbd1c6d update 2026-02-18 06:11:48 -06:00
53acab0ece add nextcloud 2026-02-18 06:09:02 -06:00
b328e106df update 2026-02-16 04:51:57 -06:00
f7029a6329 add matrix server 2026-02-16 04:48:04 -06:00
0e20657811 update 2026-02-14 04:57:57 -06:00
0af5e1f9c1 update 2026-02-06 05:37:36 -06:00
RenovateBot
268e8b7af5 Update docker.io/aquasec/trivy Docker tag to v0.69.1 2026-02-06 07:01:19 +00:00
1b37247b52 update to personal gitlab 2026-02-05 05:37:33 -06:00
8219bbc713 Merge branch 'renovate/portainer-2.x' into 'main'
Update Helm release portainer to v2.33.6

See merge request durfy/homelab/gitops!2
2026-02-05 11:29:15 +00:00
38475db228 update 2026-02-05 05:26:47 -06:00
RenovateBot
3907301d13 Update Helm release portainer to v2.33.6 2026-02-05 11:21:01 +00:00
2319a2eecd update 2026-02-05 05:20:20 -06:00
8173a53e53 update 2026-02-05 05:19:20 -06:00
cc7ed8c81a update 2026-02-05 05:15:16 -06:00
e3547898ec update 2026-02-05 05:11:50 -06:00
50138f25e6 update 2026-02-05 04:53:32 -06:00
3f40dcb38c update 2026-02-04 05:35:30 -06:00
f35949a328 update 2026-02-04 05:32:52 -06:00
bbd94d3f22 update 2026-02-04 05:30:09 -06:00
30b6c8ebc8 remove ansible 2026-02-02 05:24:41 -06:00
6912ca701a remove terraform 2026-02-02 05:18:06 -06:00
5e39fb1a1d update 2026-01-18 06:58:20 -06:00
6799a84f65 update 2026-01-18 06:53:36 -06:00
5a0664e1ef update 2026-01-18 06:52:57 -06:00
3e062cea4c update 2026-01-18 06:51:06 -06:00
a6437bb109 add searxng 2026-01-18 06:46:37 -06:00
04b638b8f9 fix gitlab pipeline 2026-01-14 06:13:42 -06:00
6bd445af5b add openvpn server 2026-01-14 06:09:21 -06:00
DeveloperDurp
8b892fe6b1 update 2025-12-29 12:12:31 -06:00
DeveloperDurp
db506ef032 update 2025-12-29 12:10:22 -06:00
DeveloperDurp
121bd8a421 update 2025-12-29 12:08:25 -06:00
DeveloperDurp
6b027f04b4 update 2025-12-29 12:06:37 -06:00
DeveloperDurp
443c5b30bd update 2025-12-29 12:00:30 -06:00
DeveloperDurp
f021aae87e update 2025-12-29 11:52:01 -06:00
DeveloperDurp
c670446551 update 2025-12-29 11:30:20 -06:00
DeveloperDurp
f90b412149 update 2025-12-29 11:26:44 -06:00
DeveloperDurp
e427f19c29 update 2025-12-29 11:21:37 -06:00
DeveloperDurp
e2348f012b update 2025-12-29 10:53:24 -06:00
DeveloperDurp
63fe8a5a33 update 2025-12-29 10:50:13 -06:00
DeveloperDurp
e401910bee update 2025-12-29 10:44:59 -06:00
DeveloperDurp
2036374917 update 2025-12-20 12:41:47 -06:00
DeveloperDurp
fa6036b05a update 2025-12-20 12:40:56 -06:00
DeveloperDurp
cb37d0211e update 2025-12-20 12:33:58 -06:00
250 changed files with 1163 additions and 10839 deletions

4
.gitignore vendored
View file

@ -1,3 +1,3 @@
*/.terraform
*/.terraform.lock.hcl
.idea .idea
infra/terraform/.terraform
infra/terraform/.terraform.lock.hcl

View file

@ -1,34 +0,0 @@
stages:
- triggers
build_dmz:
stage: triggers
trigger:
include: infra/.gitlab/.gitlab-ci.yml
rules:
- changes:
- "dmz/terraform/*.tf"
build_infra:
stage: triggers
trigger:
include: infra/.gitlab/.gitlab-ci.yml
rules:
- changes:
- "infra/terraform/*.tf"
build_dev:
stage: triggers
trigger:
include: dev/.gitlab/.gitlab-ci.yml
rules:
- changes:
- "dev/terraform/*.tf"
build_prd:
stage: triggers
trigger:
include: prd/.gitlab/.gitlab-ci.yml
rules:
- changes:
- "prd/terraform/*.tf"

View file

@ -1,5 +0,0 @@
- hosts: all
gather_facts: yes
become: yes
roles:
- base

View file

@ -1,2 +0,0 @@
argocd login --insecure
argocd cluster add default --name prd --yes --kubeconfig ~/Documents/config-prd

View file

@ -1 +0,0 @@
Acquire::http::Proxy "http://192.168.21.200:3142";

View file

@ -1,4 +0,0 @@
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

View file

@ -1,2 +0,0 @@
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIGilcndatMrXg06VxtNKuIo3scoyyXbYX8Z7cOjeA102AAAABHNzaDo= desktop-arch-09-08-2025-yubikey
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAINsbNSZ5Wr+50Ahz+IeZxt6F7gZ6wm1J8uKXQLbdbKFaAAAABHNzaDo= desktop-arch-09-08-2025-yubikeyNano

View file

@ -1,4 +0,0 @@
Use of this system is restricted to authorized users only, and all use is subjected to an acceptable use policy.
IF YOU ARE NOT AUTHORIZED TO USE THIS SYSTEM, DISCONNECT NOW.

View file

@ -1,4 +0,0 @@
THIS SYSTEM IS FOR AUTHORIZED USE ONLY
All activities are logged and monitored.

View file

@ -1,95 +0,0 @@
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
ClientAliveInterval 300
#enable remote powershell
#Subsystem powershell /usr/bin/pwsh -sshs -NoLogo

View file

@ -1,155 +0,0 @@
- name: Copy apt proxy
copy:
src: files/01proxy
dest: /etc/apt/apt.conf.d/01proxy
owner: root
group: root
mode: "0644"
force: yes
when:
- ansible_os_family == "Debian"
- inventory_hostname not in hosts_deny
- name: Update packages
apt:
name: '*'
state: latest
update_cache: yes
only_upgrade: yes
retries: 300
delay: 10
- name: Remove packages not needed anymore
apt:
autoremove: yes
retries: 300
delay: 10
- name: Install required packages Debian
apt:
state: latest
pkg: "{{ item }}"
with_items: "{{ required_packages }}"
retries: 300
delay: 10
- name: Create user account
user:
name: "user"
shell: /bin/bash
state: present
createhome: yes
- name: ensure ssh folder exists for user
file:
path: /home/user/.ssh
owner: user
group: user
mode: "0700"
state: directory
- name: Deploy SSH Key (user)
copy:
dest: /home/user/.ssh/authorized_keys
src: files/authorized_keys_user
owner: user
group: user
force: true
- name: Remove Root SSH Configuration
file:
path: /root/.ssh
state: absent
- name: Copy Secured SSHD Configuration
copy:
src: files/sshd_config_secured
dest: /etc/ssh/sshd_config
owner: root
group: root
mode: "0644"
when: ansible_os_family == "Debian"
- name: Copy Secured SSHD Configuration
copy:
src: files/sshd_config_secured_redhat
dest: /etc/ssh/sshd_config
owner: root
group: root
mode: "0644"
when: ansible_os_family == "RedHat"
- name: Restart SSHD
systemd:
name: sshd
daemon_reload: yes
state: restarted
enabled: yes
ignore_errors: yes
- name: Copy unattended-upgrades file
copy:
src: files/10periodic
dest: /etc/apt/apt.conf.d/10periodic
owner: root
group: root
mode: "0644"
force: yes
when: ansible_os_family == "Debian"
- name: Remove undesirable packages
package:
name: "{{ unnecessary_software }}"
state: absent
when: ansible_os_family == "Debian"
- name: Stop and disable unnecessary services
service:
name: "{{ item }}"
state: stopped
enabled: no
with_items: "{{ unnecessary_services }}"
ignore_errors: yes
- name: Set a message of the day
copy:
dest: /etc/motd
src: files/motd
owner: root
group: root
mode: 0644
- name: Set a login banner
copy:
dest: "{{ item }}"
src: files/issue
owner: root
group: root
mode: 0644
with_items:
- /etc/issue
- /etc/issue.net
- name: set timezone
shell: timedatectl set-timezone America/Chicago
- name: Enable cockpit
systemd:
name: cockpit
daemon_reload: yes
state: restarted
enabled: yes
- name: change password
ansible.builtin.user:
name: "user"
state: present
password: "{{ lookup('ansible.builtin.env', 'USER_PASSWORD') | password_hash('sha512') }}"
- name: add user to sudoers
community.general.sudoers:
name: user
state: present
user: user
commands: ALL

View file

@ -1,17 +0,0 @@
required_packages:
- ufw
- qemu-guest-agent
- fail2ban
- unattended-upgrades
- cockpit
- nfs-common
- open-iscsi
unnecessary_services:
- postfix
- telnet
unnecessary_software:
- tcpdump
- nmap-ncat
- wpa_supplicant

View file

@ -1,115 +0,0 @@
resource "proxmox_vm_qemu" "k3smaster" {
count = local.k3smaster.count
ciuser = "administrator"
vmid = "${local.vlan}${local.k3smaster.ip[count.index]}"
name = local.k3smaster.name[count.index]
target_node = local.k3smaster.node[count.index]
clone = local.template
tags = local.k3smaster.tags
qemu_os = "l26"
full_clone = true
os_type = "cloud-init"
agent = 1
cores = local.k3smaster.cores
sockets = 1
cpu_type = "host"
memory = local.k3smaster.memory
scsihw = "virtio-scsi-pci"
#bootdisk = "scsi0"
boot = "order=virtio0"
onboot = true
sshkeys = local.sshkeys
vga {
type = "serial0"
}
serial {
id = 0
type = "socket"
}
disks {
ide {
ide2 {
cloudinit {
storage = local.k3smaster.storage
}
}
}
virtio {
virtio0 {
disk {
size = local.k3smaster.drive
format = local.format
storage = local.k3smaster.storage
}
}
}
}
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = local.vlan
}
#Cloud Init Settings
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3smaster.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
searchdomain = "durp.loc"
nameserver = local.dnsserver
}
resource "proxmox_vm_qemu" "k3sserver" {
count = local.k3sserver.count
ciuser = "administrator"
vmid = "${local.vlan}${local.k3sserver.ip[count.index]}"
name = local.k3sserver.name[count.index]
target_node = local.k3sserver.node[count.index]
clone = local.template
tags = local.k3sserver.tags
qemu_os = "l26"
full_clone = true
os_type = "cloud-init"
agent = 1
cores = local.k3sserver.cores
sockets = 1
cpu_type = "host"
memory = local.k3sserver.memory
scsihw = "virtio-scsi-pci"
#bootdisk = "scsi0"
boot = "order=virtio0"
onboot = true
sshkeys = local.sshkeys
vga {
type = "serial0"
}
serial {
id = 0
type = "socket"
}
disks {
ide {
ide2 {
cloudinit {
storage = local.k3sserver.storage
}
}
}
virtio {
virtio0 {
disk {
size = local.k3sserver.drive
format = local.format
storage = local.k3sserver.storage
}
}
}
}
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = local.vlan
}
#Cloud Init Settings
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3sserver.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
searchdomain = "durp.loc"
nameserver = local.dnsserver
}

View file

@ -1,48 +0,0 @@
terraform {
backend "http" {}
required_providers {
proxmox = {
source = "Telmate/proxmox"
version = "3.0.1-rc9"
}
}
}
provider "proxmox" {
pm_parallel = 1
pm_tls_insecure = true
pm_api_url = var.pm_api_url
pm_user = var.pm_user
pm_password = var.pm_password
pm_debug = false
}
locals {
sshkeys = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEphzWgwUZnvL6E5luKLt3WO0HK7Kh63arSMoNl5gmjzXyhG1DDW0OKfoIl0T+JZw/ZjQ7iii6tmSLFRk6nuYCldqe5GVcFxvTzX4/xGEioAyG0IiUGKy6s+9xzO8QXF0EtSNPH0nfHNKcCjgwWAzM+Lt6gW0Vqs+aU5ICuDiEchmvYPz+rBaVldJVTG7m3ogKJ2aIF7HU/pCPp5l0E9gMOw7s0ABijuc3KXLEWCYgL39jIST6pFH9ceRLmu8Xy5zXHAkkEEauY/e6ld0hlzLadiUD7zYJMdDcm0oRvenYcUlaUl9gS0569IpfsJsjCejuqOxCKzTHPJDOT0f9TbIqPXkGq3s9oEJGpQW+Z8g41BqRpjBCdBk+yv39bzKxlwlumDwqgx1WP8xxKavAWYNqNRG7sBhoWwtxYEOhKXoLNjBaeDRnO5OY5AQJvONWpuByyz0R/gTh4bOFVD+Y8WWlKbT4zfhnN70XvapRsbZiaGhJBPwByAMGg6XxSbC6xtbyligVGCEjCXbTLkeKq1w0DuItY+FBGO3J2k90OiciTVSeyiVz9J/Y03UB0gHdsMCoVNrj+9QWfrTLDhM7D5YrXUt5nj2LQTcbtf49zoQXWxUhozlg42E/FJU/Yla7y55qWizAEVyP2/Ks/PHrF679k59HNd2IJ/aicA9QnmWtLQ== ansible"
template = "Debian12-Template"
format = "raw"
dnsserver = "192.168.10.1"
vlan = 10
k3smaster = {
tags = "k3s_dev"
count = 3
name = ["master01-dev", "master02-dev", "master03-dev"]
cores = 2
memory = "4096"
drive = 20
storage = "cache-domains"
node = ["mothership", "overlord", "vanguard"]
ip = ["11", "12", "13"]
}
k3sserver = {
tags = "k3s_dev"
count = 3
name = ["node01-dev", "node02-dev", "node03-dev"]
cores = 4
memory = "8192"
drive = 120
storage = "cache-domains"
node = ["mothership", "overlord", "vanguard"]
ip = ["21", "22", "23"]
}
}

View file

@ -1,14 +0,0 @@
variable "pm_api_url" {
description = "API URL to Proxmox provider"
type = string
}
variable "pm_password" {
description = "Passowrd to Proxmox provider"
type = string
}
variable "pm_user" {
description = "Username to Proxmox provider"
type = string
}

View file

@ -1,62 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: authentik-tls
spec:
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
secretName: authentik-tls
commonName: "authentik.durp.info"
dnsNames:
- "authentik.durp.info"
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: authentik-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`authentik.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: infra-cluster
port: 443
tls:
secretName: authentik-tls
---
kind: Service
apiVersion: v1
metadata:
name: authentik-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: authentik.durp.info
spec:
type: ExternalName
externalName: durp.info
---
apiVersion: v1
kind: Endpoints
metadata:
name: infra-cluster
subsets:
- addresses:
- ip: 192.168.12.130
ports:
- port: 443
---
apiVersion: v1
kind: Service
metadata:
name: infra-cluster
spec:
ports:
- protocol: TCP
port: 443
targetPort: 443

View file

@ -6,9 +6,6 @@ version: 0.0.1
appVersion: 0.0.1 appVersion: 0.0.1
dependencies: dependencies:
- name: gitlab-runner
repository: https://charts.gitlab.io/
version: 0.77.2
- name: gitlab-runner - name: gitlab-runner
repository: https://charts.gitlab.io/ repository: https://charts.gitlab.io/
version: 0.77.2 version: 0.77.2

View file

@ -1,75 +1,3 @@
gitlab-runner:
image:
registry: registry.durp.info
image: gitlab-org/gitlab-runner
imagePullPolicy: Always
gitlabUrl: https://gitlab.com/
unregisterRunner: false
terminationGracePeriodSeconds: 3600
concurrent: 10
checkInterval: 30
rbac:
create: true
rules: []
clusterWideAccess: false
podSecurityPolicy:
enabled: false
resourceNames:
- gitlab-runner
metrics:
enabled: true
serviceMonitor:
enabled: true
service:
enabled: true
annotations: {}
runners:
config: |
[[runners]]
[runners.kubernetes]
namespace = "{{.Release.Namespace}}"
image = "ubuntu:22.04"
privileged = true
executor: kubernetes
name: "k3s"
runUntagged: true
privileged: true
secret: gitlab-secret
#builds:
#cpuLimit: 200m
#cpuLimitOverwriteMaxAllowed: 400m
#memoryLimit: 256Mi
#memoryLimitOverwriteMaxAllowed: 512Mi
#cpuRequests: 100m
#cpuRequestsOverwriteMaxAllowed: 200m
#memoryRequests: 128Mi
#memoryRequestsOverwriteMaxAllowed: 256Mi
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: false
runAsNonRoot: true
privileged: false
capabilities:
drop: ["ALL"]
podSecurityContext:
runAsUser: 100
fsGroup: 65533
resources:
limits:
memory: 2Gi
requests:
memory: 128Mi
cpu: 500m
personal: personal:
image: image:
@ -77,7 +5,7 @@ personal:
image: gitlab-org/gitlab-runner image: gitlab-org/gitlab-runner
imagePullPolicy: Always imagePullPolicy: Always
gitlabUrl: https://gitlab.com/ gitlabUrl: https://gitlab.durp.info/
unregisterRunner: false unregisterRunner: false
terminationGracePeriodSeconds: 3600 terminationGracePeriodSeconds: 3600
concurrent: 10 concurrent: 10
@ -90,15 +18,15 @@ personal:
podSecurityPolicy: podSecurityPolicy:
enabled: false enabled: false
resourceNames: resourceNames:
- gitlab-runner - gitlab-runner
metrics: metrics:
enabled: true enabled: true
serviceMonitor: serviceMonitor:
enabled: true enabled: true
service: service:
enabled: true enabled: true
annotations: {} annotations: {}
runners: runners:
config: | config: |
@ -113,15 +41,15 @@ personal:
runUntagged: true runUntagged: true
privileged: true privileged: true
secret: gitlab-secret-personal secret: gitlab-secret-personal
#builds: builds:
#cpuLimit: 200m cpuLimit: 200m
#cpuLimitOverwriteMaxAllowed: 400m cpuLimitOverwriteMaxAllowed: 400m
#memoryLimit: 256Mi memoryLimit: 256Mi
#memoryLimitOverwriteMaxAllowed: 512Mi memoryLimitOverwriteMaxAllowed: 512Mi
#cpuRequests: 100m cpuRequests: 100m
#cpuRequestsOverwriteMaxAllowed: 200m cpuRequestsOverwriteMaxAllowed: 200m
#memoryRequests: 128Mi memoryRequests: 128Mi
#memoryRequestsOverwriteMaxAllowed: 256Mi memoryRequestsOverwriteMaxAllowed: 256Mi
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
@ -135,9 +63,9 @@ personal:
runAsUser: 100 runAsUser: 100
fsGroup: 65533 fsGroup: 65533
resources: resources:
limits: limits:
memory: 2Gi memory: 2Gi
requests: requests:
memory: 128Mi memory: 128Mi
cpu: 500m cpu: 50m

View file

@ -0,0 +1,34 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: argocd-infra-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`argocd.infra.durp.info`)
middlewares:
- name: whitelist
namespace: traefik
kind: Rule
services:
- name: infra-cluster
port: 443
scheme: https
tls:
secretName: argocd-infra-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: argocd-infra-tls
spec:
secretName: argocd-infra-tls
issuerRef:
name: vault-issuer
kind: ClusterIssuer
commonName: "argocd.infra.durp.info"
dnsNames:
- "argocd.infra.durp.info"

View file

@ -1,40 +1,40 @@
#apiVersion: traefik.io/v1alpha1 apiVersion: cert-manager.io/v1
#kind: IngressRoute kind: Certificate
#metadata: metadata:
# name: authentik-ingress name: authentik-tls
#spec: spec:
# entryPoints: issuerRef:
# - websecure name: letsencrypt-production
# routes: kind: ClusterIssuer
# - match: Host(`authentik.durp.info`) && PathPrefix(`/`) secretName: authentik-tls
# kind: Rule commonName: "authentik.durp.info"
# services: dnsNames:
# - name: infra-cluster - "authentik.durp.info"
# port: 443
# tls: ---
# secretName: authentik-tls apiVersion: traefik.io/v1alpha1
# kind: IngressRoute
#--- metadata:
#apiVersion: cert-manager.io/v1 name: authentik-ingress
#kind: Certificate spec:
#metadata: entryPoints:
# name: authentik-tls - websecure
#spec: routes:
# issuerRef: - match: Host(`authentik.durp.info`) && PathPrefix(`/`)
# name: letsencrypt-production kind: Rule
# kind: ClusterIssuer services:
# secretName: authentik-tls - name: infra-cluster
# commonName: "authentik.durp.info" port: 443
# dnsNames: tls:
# - "authentik.durp.info" secretName: authentik-tls
#
#--- ---
#kind: Service kind: Service
#apiVersion: v1 apiVersion: v1
#metadata: metadata:
# name: authentik-external-dns name: authentik-external-dns
# annotations: annotations:
# external-dns.alpha.kubernetes.io/hostname: authentik.durp.info external-dns.alpha.kubernetes.io/hostname: authentik.durp.info
#spec: spec:
# type: ExternalName type: ExternalName
# externalName: durp.info externalName: durp.info

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: duplicati
spec:
ports:
- name: app
port: 8200
protocol: TCP
targetPort: 8200
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: duplicati
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 8200
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -43,7 +14,7 @@ spec:
namespace: traefik namespace: traefik
kind: Rule kind: Rule
services: services:
- name: duplicati - name: unraid
port: 8200 port: 8200
tls: tls:
secretName: duplicati-tls secretName: duplicati-tls

View file

@ -9,7 +9,6 @@ subsets:
- port: 443 - port: 443
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
@ -21,7 +20,6 @@ spec:
targetPort: 443 targetPort: 443
--- ---
apiVersion: v1 apiVersion: v1
kind: Endpoints kind: Endpoints
metadata: metadata:
@ -33,7 +31,6 @@ subsets:
- port: 443 - port: 443
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
@ -43,3 +40,191 @@ spec:
- protocol: TCP - protocol: TCP
port: 443 port: 443
targetPort: 443 targetPort: 443
---
apiVersion: v1
kind: Service
metadata:
name: unraid
spec:
ports:
- name: https
protocol: TCP
port: 443
targetPort: 443
- name: tdarr
port: 8267
protocol: TCP
targetPort: 8267
- name: duplicati
port: 8200
protocol: TCP
targetPort: 8200
- name: forgejo
port: 3000
protocol: TCP
- name: kuma
port: 3001
protocol: TCP
targetPort: 3000
- name: freshrss
port: 8085
protocol: TCP
targetPort: 8085
- name: gitlab-ssh
port: 9022
protocol: TCP
targetPort: 9022
- name: gitlab
port: 9443
protocol: TCP
targetPort: 9443
- name: minio
port: 9769
protocol: TCP
targetPort: 9769
- name: nextcloud
port: 11000
protocol: TCP
targetPort: 11000
- name: nexus
port: 8081
protocol: TCP
targetPort: 8081
- name: openweb-ui
port: 8089
protocol: TCP
targetPort: 8089
- name: plex
port: 32400
protocol: TCP
targetPort: 32400
- name: registry
port: 5000
protocol: TCP
targetPort: 5000
- name: gitlab-registry
port: 5002
protocol: TCP
targetPort: 5002
- name: root-vault
port: 8201
protocol: TCP
targetPort: 8201
- name: s3
port: 9768
protocol: TCP
targetPort: 9768
- name: smokeping
port: 81
protocol: TCP
targetPort: 81
- name: gotify
port: 8070
protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
name: unraid
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: https
port: 443
protocol: TCP
- name: tdarr
port: 8267
protocol: TCP
- name: duplicati
port: 8200
protocol: TCP
- name: forgejo
port: 3000
protocol: TCP
- name: kuma
port: 3001
protocol: TCP
- name: freshrss
port: 8085
protocol: TCP
- name: gitlab-ssh
port: 9022
protocol: TCP
- name: gitlab
port: 9443
protocol: TCP
- name: minio
port: 9769
protocol: TCP
- name: nextcloud
port: 11000
protocol: TCP
- name: nexus
port: 8081
protocol: TCP
- name: openweb-ui
port: 8089
protocol: TCP
- name: plex
port: 32400
protocol: TCP
- name: registry
port: 5000
protocol: TCP
- name: gitlab-registry
port: 5002
protocol: TCP
- name: root-vault
port: 8201
protocol: TCP
- name: s3
port: 9768
protocol: TCP
- name: smokeping
port: 81
protocol: TCP
- name: gotify
port: 8070
protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
name: ubuntu
subsets:
- addresses:
- ip: 192.168.20.104
ports:
- name: https
port: 443
protocol: TCP
- name: litellm
port: 4000
protocol: TCP
- name: ollama
port: 11435
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: ubuntu
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
- name: litellm
port: 4000
protocol: TCP
targetPort: 4000
- name: ollama
port: 11435
protocol: TCP
targetPort: 11435

View file

@ -0,0 +1,43 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: forgejo-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`forgejo.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
port: 3000
scheme: http
tls:
secretName: forgejo-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: forgejo-tls
spec:
secretName: forgejo-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "forgejo.durp.info"
dnsNames:
- "forgejo.durp.info"
---
kind: Service
apiVersion: v1
metadata:
name: forgejo-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: forgejo.durp.info
spec:
type: ExternalName
externalName: durp.info

View file

@ -0,0 +1,30 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: freshrss-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`freshrss.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
port: 8085
tls:
secretName: freshrss-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: freshrss-tls
spec:
secretName: freshrss-tls
issuerRef:
name: vault-issuer
kind: ClusterIssuer
commonName: "freshrss.durp.info"
dnsNames:
- "freshrss.durp.info"

View file

@ -1,72 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: gitea
spec:
ports:
- name: app
port: 3000
protocol: TCP
targetPort: 3000
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: gitea
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 3000
protocol: TCP
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: gitea-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`gitea.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: gitea
port: 3000
scheme: http
tls:
secretName: gitea-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: gitea-tls
spec:
secretName: gitea-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "gitea.durp.info"
dnsNames:
- "gitea.durp.info"
---
kind: Service
apiVersion: v1
metadata:
name: gitea-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: gitea.durp.info
spec:
type: ExternalName
externalName: durp.info

View file

@ -1,28 +1,42 @@
apiVersion: v1 #apiVersion: v1
kind: Service #kind: Service
#metadata:
# name: gitlab-ssh
#spec:
# ports:
# - name: app
# port: 9022
# protocol: TCP
# targetPort: 9022
# clusterIP: None
# type: ClusterIP
#
#---
#apiVersion: v1
#kind: Endpoints
#metadata:
# name: gitlab-ssh
#subsets:
# - addresses:
# - ip: 192.168.21.200
# ports:
# - name: app
# port: 9022
# protocol: TCP
#
#---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata: metadata:
name: gitlab name: gitlab-ssh
spec: spec:
ports: entryPoints:
- name: app - gitlab-ssh
port: 9080 routes:
protocol: TCP - match: HostSNI(`*`)
targetPort: 9080 services:
clusterIP: None - name: unraid
type: ClusterIP port: 9022
---
apiVersion: v1
kind: Endpoints
metadata:
name: gitlab
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 9080
protocol: TCP
--- ---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
@ -36,9 +50,9 @@ spec:
- match: Host(`gitlab.durp.info`) && PathPrefix(`/`) - match: Host(`gitlab.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
services: services:
- name: gitlab - name: unraid
port: 9080 port: 9443
scheme: http scheme: https
tls: tls:
secretName: gitlab-tls secretName: gitlab-tls
@ -66,3 +80,46 @@ metadata:
spec: spec:
type: ExternalName type: ExternalName
externalName: durp.info externalName: durp.info
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: gitlab-registry
spec:
entryPoints:
- websecure
routes:
- match: Host(`images.durp.info`)
kind: Rule
services:
- name: unraid
port: 5002
scheme: http
tls:
secretName: gitlab-images-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: gitlab-images-tls
spec:
secretName: gitlab-images-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "images.durp.info"
dnsNames:
- "images.durp.info"
---
kind: Service
apiVersion: v1
metadata:
name: gitlab-images-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: images.durp.info
spec:
type: ExternalName
externalName: durp.info

View file

@ -0,0 +1,41 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: gotify-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`gotify.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
port: 8070
scheme: http
tls:
secretName: gotify-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: gotify-tls
spec:
secretName: gotify-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "gotify.durp.info"
dnsNames:
- "gotify.durp.info"
---
kind: Service
apiVersion: v1
metadata:
name: gotify-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: gotify.durp.info
spec:
type: ExternalName
externalName: durp.info

View file

@ -1,74 +1,75 @@
apiVersion: v1 #apiVersion: v1
kind: Service #kind: Service
metadata: #metadata:
name: invidious # name: invidious
spec: #spec:
ports: # ports:
- name: app # - name: app
port: 3000 # port: 3000
protocol: TCP # protocol: TCP
targetPort: 3000 # targetPort: 3000
clusterIP: None # clusterIP: None
type: ClusterIP # type: ClusterIP
#
--- #---
#
apiVersion: v1 #apiVersion: v1
kind: Endpoints #kind: Endpoints
metadata: #metadata:
name: invidious # name: invidious
subsets: #subsets:
- addresses: #- addresses:
- ip: 192.168.20.104 # - ip: 192.168.20.104
ports: # ports:
- name: app # - name: app
port: 3000 # port: 3000
protocol: TCP # protocol: TCP
#
--- #---
#
apiVersion: traefik.io/v1alpha1 #apiVersion: traefik.io/v1alpha1
kind: IngressRoute #kind: IngressRoute
metadata: #metadata:
name: invidious-ingress # name: invidious-ingress
spec: #spec:
entryPoints: # entryPoints:
- websecure # - websecure
routes: # routes:
- match: Host(`invidious.durp.info`) && PathPrefix(`/`) # - match: Host(`invidious.durp.info`) && PathPrefix(`/`)
middlewares: # middlewares:
- name: authentik-proxy-provider # - name: authentik-proxy-provider
namespace: traefik # namespace: traefik
kind: Rule # kind: Rule
services: # services:
- name: invidious # - name: invidious
port: 3000 # port: 3000
tls: # tls:
secretName: invidious-tls # secretName: invidious-tls
#
--- #---
#
apiVersion: cert-manager.io/v1 #apiVersion: cert-manager.io/v1
kind: Certificate #kind: Certificate
metadata: #metadata:
name: invidious-tls # name: invidious-tls
spec: #spec:
secretName: invidious-tls # secretName: invidious-tls
issuerRef: # issuerRef:
name: letsencrypt-production # name: letsencrypt-production
kind: ClusterIssuer # kind: ClusterIssuer
commonName: "invidious.durp.info" # commonName: "invidious.durp.info"
dnsNames: # dnsNames:
- "invidious.durp.info" # - "invidious.durp.info"
#
--- #---
#
kind: Service #kind: Service
apiVersion: v1 #apiVersion: v1
metadata: #metadata:
name: invidious-external-dns # name: invidious-external-dns
annotations: # annotations:
external-dns.alpha.kubernetes.io/hostname: invidious.durp.info # external-dns.alpha.kubernetes.io/hostname: invidious.durp.info
spec: #spec:
type: ExternalName # type: ExternalName
externalName: durp.info # externalName: durp.info
#

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: kasm
spec:
ports:
- name: app
port: 443
protocol: TCP
targetPort: 443
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: kasm
subsets:
- addresses:
- ip: 192.168.20.104
ports:
- name: app
port: 443
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -38,7 +9,7 @@ spec:
- match: Host(`kasm.durp.info`) && PathPrefix(`/`) - match: Host(`kasm.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
services: services:
- name: kasm - name: ubuntu
port: 443 port: 443
scheme: https scheme: https
tls: tls:

View file

@ -6,34 +6,30 @@ spec:
entryPoints: entryPoints:
- websecure - websecure
routes: routes:
- match: Host(`kuma.durp.info`) && PathPrefix(`/`) - match: Host(`kuma.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
middlewares: services:
- name: authentik-proxy-provider - name: unraid
namespace: traefik port: 3001
services: scheme: http
- name: master-cluster
port: 443
tls: tls:
secretName: kuma-tls secretName: kuma-tls
--- ---
apiVersion: cert-manager.io/v1 apiVersion: cert-manager.io/v1
kind: Certificate kind: Certificate
metadata: metadata:
name: kuma-tls name: kuma-tls
spec: spec:
secretName: kuma-tls
issuerRef: issuerRef:
name: letsencrypt-production name: letsencrypt-production
kind: ClusterIssuer kind: ClusterIssuer
secretName: kuma-tls
commonName: "kuma.durp.info" commonName: "kuma.durp.info"
dnsNames: dnsNames:
- "kuma.durp.info" - "kuma.durp.info"
--- ---
kind: Service kind: Service
apiVersion: v1 apiVersion: v1
metadata: metadata:

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: litellm
spec:
ports:
- name: app
port: 4000
protocol: TCP
targetPort: 4000
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: litellm
subsets:
- addresses:
- ip: 192.168.20.104
ports:
- name: app
port: 4000
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -38,7 +9,7 @@ spec:
- match: Host(`litellm.durp.info`) && PathPrefix(`/`) - match: Host(`litellm.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
services: services:
- name: litellm - name: ubuntu
port: 4000 port: 4000
tls: tls:
secretName: litellm-tls secretName: litellm-tls

View file

@ -0,0 +1,34 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: longhorn-infra-ingress
annotations:
cert-manager.io/cluster-issuer: vault-issuer
spec:
entryPoints:
- websecure
routes:
- match: Host(`longhorn.infra.durp.info`) && PathPrefix(`/`)
kind: Rule
middlewares:
- name: authentik-proxy-provider
namespace: traefik
services:
- name: infra-cluster
port: 443
tls:
secretName: longhorn-infra-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: longhorn-infra-tls
spec:
secretName: longhorn-infra-tls
issuerRef:
name: vault-issuer
kind: ClusterIssuer
commonName: "longhorn.infra.durp.info"
dnsNames:
- "longhorn.infra.durp.info"

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: minio
spec:
ports:
- name: app
port: 9769
protocol: TCP
targetPort: 9769
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: minio
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 9769
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -41,7 +12,7 @@ spec:
namespace: traefik namespace: traefik
kind: Rule kind: Rule
services: services:
- name: minio - name: unraid
port: 9769 port: 9769
scheme: http scheme: http
tls: tls:

View file

@ -1,68 +1,68 @@
apiVersion: v1 #apiVersion: v1
kind: Service #kind: Service
metadata: #metadata:
name: n8n # name: n8n
spec: #spec:
ports: # ports:
- name: app # - name: app
port: 5678 # port: 5678
protocol: TCP # protocol: TCP
targetPort: 5678 # targetPort: 5678
clusterIP: None # clusterIP: None
type: ClusterIP # type: ClusterIP
#
--- #---
apiVersion: v1 #apiVersion: v1
kind: Endpoints #kind: Endpoints
metadata: #metadata:
name: n8n # name: n8n
subsets: #subsets:
- addresses: # - addresses:
- ip: 192.168.21.200 # - ip: 192.168.21.200
ports: # ports:
- name: app # - name: app
port: 5678 # port: 5678
protocol: TCP # protocol: TCP
#
--- #---
apiVersion: traefik.io/v1alpha1 #apiVersion: traefik.io/v1alpha1
kind: IngressRoute #kind: IngressRoute
metadata: #metadata:
name: n8n-ingress # name: n8n-ingress
spec: #spec:
entryPoints: # entryPoints:
- websecure # - websecure
routes: # routes:
- match: Host(`n8n.durp.info`) && PathPrefix(`/`) # - match: Host(`n8n.durp.info`) && PathPrefix(`/`)
kind: Rule # kind: Rule
services: # services:
- name: n8n # - name: n8n
port: 5678 # port: 5678
scheme: http # scheme: http
tls: # tls:
secretName: n8n-tls # secretName: n8n-tls
#
--- #---
apiVersion: cert-manager.io/v1 #apiVersion: cert-manager.io/v1
kind: Certificate #kind: Certificate
metadata: #metadata:
name: n8n-tls # name: n8n-tls
spec: #spec:
secretName: n8n-tls # secretName: n8n-tls
issuerRef: # issuerRef:
name: letsencrypt-production # name: letsencrypt-production
kind: ClusterIssuer # kind: ClusterIssuer
commonName: "n8n.durp.info" # commonName: "n8n.durp.info"
dnsNames: # dnsNames:
- "n8n.durp.info" # - "n8n.durp.info"
#
--- #---
kind: Service #kind: Service
apiVersion: v1 #apiVersion: v1
metadata: #metadata:
name: n8n-dns # name: n8n-dns
annotations: # annotations:
dns.alpha.kubernetes.io/hostname: n8n.durp.info # dns.alpha.kubernetes.io/hostname: n8n.durp.info
spec: #spec:
type: ExternalName # type: ExternalName
externalName: durp.info # externalName: durp.info

View file

@ -0,0 +1,74 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: nextcloud-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`nextcloud.durp.info`) && PathPrefix(`/`)
kind: Rule
middlewares:
- name: nextcloud-chain
services:
- name: unraid
port: 11000
scheme: http
tls:
secretName: nextcloud-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: nextcloud-tls
spec:
secretName: nextcloud-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "nextcloud.durp.info"
dnsNames:
- "nextcloud.durp.info"
---
kind: Service
apiVersion: v1
metadata:
name: nextcloud-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: nextcloud.durp.info
spec:
type: ExternalName
externalName: durp.info
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: nextcloud-secure-headers
spec:
headers:
hostsProxyHeaders:
- "X-Forwarded-Host"
referrerPolicy: "same-origin"
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: https-redirect
spec:
redirectScheme:
scheme: https
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: nextcloud-chain
spec:
chain:
middlewares:
- name: https-redirect
- name: nextcloud-secure-headers

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: nexus
spec:
ports:
- name: app
port: 8081
protocol: TCP
targetPort: 8081
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: nexus
subsets:
- addresses:
- ip: 192.168.20.200
ports:
- name: app
port: 8081
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -38,7 +9,7 @@ spec:
- match: Host(`nexus.durp.info`) && PathPrefix(`/`) - match: Host(`nexus.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
services: services:
- name: nexus - name: unraid
port: 8081 port: 8081
tls: tls:
secretName: nexus-tls secretName: nexus-tls

View file

@ -15,7 +15,6 @@ spec:
property: users property: users
--- ---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: Middleware kind: Middleware
metadata: metadata:
@ -26,36 +25,6 @@ spec:
secret: ollama-secret secret: ollama-secret
--- ---
apiVersion: v1
kind: Service
metadata:
name: ollama
spec:
ports:
- name: app
port: 11435
protocol: TCP
targetPort: 11435
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: ollama
subsets:
- addresses:
- ip: 192.168.20.104
ports:
- name: app
port: 11435
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -69,13 +38,12 @@ spec:
- name: ollama-basic-auth - name: ollama-basic-auth
kind: Rule kind: Rule
services: services:
- name: ollama - name: ubuntu
port: 11435 port: 11435
tls: tls:
secretName: ollama-tls secretName: ollama-tls
--- ---
apiVersion: cert-manager.io/v1 apiVersion: cert-manager.io/v1
kind: Certificate kind: Certificate
metadata: metadata:
@ -90,7 +58,6 @@ spec:
- "ollama.durp.info" - "ollama.durp.info"
--- ---
kind: Service kind: Service
apiVersion: v1 apiVersion: v1
metadata: metadata:
@ -99,4 +66,4 @@ metadata:
external-dns.alpha.kubernetes.io/hostname: ollama.durp.info external-dns.alpha.kubernetes.io/hostname: ollama.durp.info
spec: spec:
type: ExternalName type: ExternalName
externalName: durp.info externalName: durp.info

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: open-webui
spec:
ports:
- name: app
port: 8089
protocol: TCP
targetPort: 8089
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: open-webui
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 8089
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -38,14 +9,13 @@ spec:
- match: Host(`open-webui.durp.info`) && PathPrefix(`/`) - match: Host(`open-webui.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
services: services:
- name: open-webui - name: unraid
port: 8089 port: 8089
scheme: http scheme: http
tls: tls:
secretName: open-webui-tls secretName: open-webui-tls
--- ---
apiVersion: cert-manager.io/v1 apiVersion: cert-manager.io/v1
kind: Certificate kind: Certificate
metadata: metadata:
@ -60,7 +30,6 @@ spec:
- "open-webui.durp.info" - "open-webui.durp.info"
--- ---
kind: Service kind: Service
apiVersion: v1 apiVersion: v1
metadata: metadata:

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: plex
spec:
ports:
- name: app
port: 32400
protocol: TCP
targetPort: 32400
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: plex
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 32400
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -38,14 +9,13 @@ spec:
- match: Host(`plex.durp.info`) && PathPrefix(`/`) - match: Host(`plex.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
services: services:
- name: plex - name: unraid
port: 32400 port: 32400
scheme: https scheme: https
tls: tls:
secretName: plex-tls secretName: plex-tls
--- ---
apiVersion: cert-manager.io/v1 apiVersion: cert-manager.io/v1
kind: Certificate kind: Certificate
metadata: metadata:
@ -60,7 +30,6 @@ spec:
- "plex.durp.info" - "plex.durp.info"
--- ---
kind: Service kind: Service
apiVersion: v1 apiVersion: v1
metadata: metadata:

View file

@ -7,9 +7,9 @@ spec:
- websecure - websecure
routes: routes:
- match: Host(`portainer.internal.durp.info`) && PathPrefix(`/`) - match: Host(`portainer.internal.durp.info`) && PathPrefix(`/`)
#middlewares: middlewares:
#- name: whitelist - name: whitelist
# namespace: traefik namespace: traefik
kind: Rule kind: Rule
services: services:
- name: infra-cluster - name: infra-cluster

View file

@ -1,30 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: registry
spec:
ports:
- name: app
port: 5000
protocol: TCP
targetPort: 5000
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: registry
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 5000
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -39,7 +12,7 @@ spec:
- name: whitelist - name: whitelist
namespace: traefik namespace: traefik
services: services:
- name: registry - name: unraid
port: 5000 port: 5000
tls: tls:
secretName: registry-tls secretName: registry-tls

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: root-vault
spec:
ports:
- name: app
port: 8201
protocol: TCP
targetPort: 8201
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: root-vault
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 8201
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -41,14 +12,13 @@ spec:
namespace: traefik namespace: traefik
kind: Rule kind: Rule
services: services:
- name: root-vault - name: unraid
port: 8201 port: 8201
scheme: https scheme: https
tls: tls:
secretName: root-vault-tls secretName: root-vault-tls
--- ---
apiVersion: cert-manager.io/v1 apiVersion: cert-manager.io/v1
kind: Certificate kind: Certificate
metadata: metadata:

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: s3
spec:
ports:
- name: app
port: 9768
protocol: TCP
targetPort: 9768
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: s3
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 9768
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -41,7 +12,7 @@ spec:
namespace: traefik namespace: traefik
kind: Rule kind: Rule
services: services:
- name: s3 - name: unraid
port: 9768 port: 9768
scheme: http scheme: http
tls: tls:
@ -75,7 +46,7 @@ spec:
- match: Host(`s3.durp.info`) && PathPrefix(`/`) - match: Host(`s3.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
services: services:
- name: s3 - name: unraid
port: 9768 port: 9768
scheme: http scheme: http
tls: tls:

View file

@ -1,64 +1,65 @@
#
apiVersion: v1 #apiVersion: v1
kind: Service #kind: Service
metadata: #metadata:
name: semaphore # name: semaphore
spec: #spec:
ports: # ports:
- name: app # - name: app
port: 3001 # port: 3001
protocol: TCP # protocol: TCP
targetPort: 3001 # targetPort: 3001
clusterIP: None # clusterIP: None
type: ClusterIP # type: ClusterIP
#
--- #---
#
apiVersion: v1 #apiVersion: v1
kind: Endpoints #kind: Endpoints
metadata: #metadata:
name: semaphore # name: semaphore
subsets: #subsets:
- addresses: # - addresses:
- ip: 192.168.21.200 # - ip: 192.168.21.200
ports: # ports:
- name: app # - name: app
port: 3001 # port: 3001
protocol: TCP # protocol: TCP
#
--- #---
#
apiVersion: traefik.io/v1alpha1 #apiVersion: traefik.io/v1alpha1
kind: IngressRoute #kind: IngressRoute
metadata: #metadata:
name: semaphore-ingress # name: semaphore-ingress
spec: #spec:
entryPoints: # entryPoints:
- websecure # - websecure
routes: # routes:
- match: Host(`semaphore.internal.durp.info`) && PathPrefix(`/`) # - match: Host(`semaphore.internal.durp.info`) && PathPrefix(`/`)
middlewares: # middlewares:
- name: whitelist # - name: whitelist
namespace: traefik # namespace: traefik
kind: Rule # kind: Rule
services: # services:
- name: semaphore # - name: semaphore
port: 3001 # port: 3001
scheme: http # scheme: http
tls: # tls:
secretName: semaphore-tls # secretName: semaphore-tls
#
--- #---
#
apiVersion: cert-manager.io/v1 #apiVersion: cert-manager.io/v1
kind: Certificate #kind: Certificate
metadata: #metadata:
name: semaphore-tls # name: semaphore-tls
spec: #spec:
secretName: semaphore-tls # secretName: semaphore-tls
issuerRef: # issuerRef:
name: vault-issuer # name: vault-issuer
kind: ClusterIssuer # kind: ClusterIssuer
commonName: "semaphore.internal.durp.info" # commonName: "semaphore.internal.durp.info"
dnsNames: # dnsNames:
- "semaphore.internal.durp.info" # - "semaphore.internal.durp.info"
#

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: smokeping
spec:
ports:
- name: app
port: 81
protocol: TCP
targetPort: 81
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: smokeping
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 81
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -43,13 +14,12 @@ spec:
namespace: traefik namespace: traefik
kind: Rule kind: Rule
services: services:
- name: smokeping - name: unraid
port: 81 port: 81
tls: tls:
secretName: smokeping-tls secretName: smokeping-tls
--- ---
apiVersion: cert-manager.io/v1 apiVersion: cert-manager.io/v1
kind: Certificate kind: Certificate
metadata: metadata:
@ -64,7 +34,6 @@ spec:
- "smokeping.durp.info" - "smokeping.durp.info"
--- ---
kind: Service kind: Service
apiVersion: v1 apiVersion: v1
metadata: metadata:

View file

@ -1,32 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: tdarr
spec:
ports:
- name: app
port: 8267
protocol: TCP
targetPort: 8267
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: tdarr
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 8267
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
@ -45,7 +16,7 @@ spec:
namespace: traefik namespace: traefik
kind: Rule kind: Rule
services: services:
- name: tdarr - name: unraid
port: 8267 port: 8267
scheme: http scheme: http
tls: tls:

View file

@ -1,33 +1,3 @@
apiVersion: v1
kind: Service
metadata:
name: unraid
spec:
ports:
- name: app
port: 443
protocol: TCP
targetPort: 443
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: unraid
subsets:
- addresses:
- ip: 192.168.21.200
ports:
- name: app
port: 443
protocol: TCP
---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:

View file

@ -8,7 +8,7 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: base - name: base
repository: https://istio-release.storage.googleapis.com/charts repository: https://istio-release.storage.googleapis.com/charts
version: 1.26.2 version: 1.29.0
- name: istiod - name: istiod
repository: https://istio-release.storage.googleapis.com/charts repository: https://istio-release.storage.googleapis.com/charts
version: 1.26.2 version: 1.26.2

View file

@ -9,7 +9,7 @@ spec:
selector: selector:
matchLabels: matchLabels:
app: redlib app: redlib
replicas: 3 replicas: 1
template: template:
metadata: metadata:
labels: labels:

10
dmz/searxng/Chart.yaml Normal file
View file

@ -0,0 +1,10 @@
apiVersion: v2
appVersion: latest
description: SearXNG is a free internet metasearch engine which aggregates results from various search services and databases.
name: searxng
version: 1.0.1
#dependencies:
# - name: common
# repository: https://library-charts.k8s-at-home.com
# version: 4.4.2
#

View file

@ -0,0 +1,11 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: searxng-config
data:
settings.yml: |-
use_default_settings: true
search:
formats:
- html
- json

View file

@ -0,0 +1,40 @@
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: searxng
name: searxng
labels:
app: searxng
spec:
selector:
matchLabels:
app: searxng
replicas: 1
template:
metadata:
labels:
app: searxng
spec:
containers:
- name: searxng
image: registry.durp.info/searxng/searxng:latest
imagePullPolicy: Always
ports:
- name: http
containerPort: 8080
env:
- name: SEARXNG_BASE_URL
value: https://searxng.durp.info
- name: SEARXNG_SECRET
valueFrom:
secretKeyRef:
name: searxng-secret
key: SEARXNG_SECRET
volumeMounts:
- name: searxng-config-volume
mountPath: /etc/searxng/settings.yml
subPath: settings.yml
volumes:
- name: searxng-config-volume
configMap:
name: searxng-config

View file

@ -0,0 +1,76 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: searxng-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`searxng.durp.info`) && PathPrefix(`/`)
kind: Rule
middlewares:
- name: authentik-proxy-provider
namespace: traefik
services:
- name: searxng-service
port: 8080
tls:
secretName: searxng-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: searxng-tls
spec:
secretName: searxng-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "searxng.durp.info"
dnsNames:
- "searxng.durp.info"
---
kind: Service
apiVersion: v1
metadata:
name: searxng-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: searxng.durp.info
spec:
type: ExternalName
externalName: durp.info
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: searxng-internal-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`searxng.internal.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: searxng-service
port: 8080
tls:
secretName: searxng-internal-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: searxng-internal-tls
spec:
secretName: searxng-internal-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "searxng.internal.durp.info"
dnsNames:
- "searxng.internal.durp.info"

View file

@ -0,0 +1,23 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: searxng-secret
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: searxng-secret
data:
- secretKey: SEARXNG_SECRET
remoteRef:
key: kv/searxng
property: searxng-secret
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: vault

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: searxng-service
spec:
ports:
- name: http
port: 8080
targetPort: 8080
protocol: TCP
selector:
app: searxng

83
dmz/searxng/values.yaml Normal file
View file

@ -0,0 +1,83 @@
#
# IMPORTANT NOTE
#
# This chart inherits from our common library chart. You can check the default values/options here:
# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
#
image:
# -- image repository
repository: registry.durp.info/searxng/searxng
# -- image tag
tag: latest
# -- image pull policy
pullPolicy: Always
# Explanation about each environment variables here:
# https://docs.searxng.org/admin/installation-docker.html#command-line
env:
INSTANCE_NAME: "durp.info"
BASE_URL: "https://searx.durp.info"
AUTOCOMPLETE: "false"
# MORTY_URL: "http://morty:8080"
# MORTY_KEY: "mysecretkey"
# BIND_ADDRESS: "0.0.0.0:8080"
controller:
strategy: "RollingUpdate"
# -- Configures service settings for the chart.
# @default -- See values.yaml
service:
main:
ports:
http:
port: 8080
# -- Configure persistence settings for the chart under this key.
# @default -- See values.yaml
persistence:
config:
enabled: false
ingress:
# -- Enable and configure ingress settings for the chart under this key.
# @default -- See values.yaml
main:
enabled: false
searxng:
config:
use_default_settings: true
#server:
# secret_key: pleasechangeme
# Uncomment when using the builtin rate limiter
# See https://docs.searxng.org/src/searx.plugins.limiter.html#limiter-plugin
# server.limiter: true
# redis.url: redis://@searxng-redis:6379/0
probes:
readiness:
custom: true
spec:
httpGet:
path: /healthz
port: 8080
liveness:
custom: true
spec:
httpGet:
path: /healthz
port: 8080
startup:
custom: true
spec:
httpGet:
path: /healthz
port: 8080
# Enable when using searxng builtin rate limiter
# Values: https://github.com/pascaliske/helm-charts/tree/master/charts/redis
redis:
enabled: false

View file

@ -1,115 +0,0 @@
resource "proxmox_vm_qemu" "k3smaster" {
count = local.k3smaster.count
ciuser = "administrator"
vmid = "${local.vlan}${local.k3smaster.ip[count.index]}"
name = local.k3smaster.name[count.index]
target_node = local.k3smaster.node[count.index]
clone = local.template
tags = local.k3smaster.tags
qemu_os = "l26"
full_clone = true
os_type = "cloud-init"
agent = 1
cores = local.k3smaster.cores
sockets = 1
cpu_type = "host"
memory = local.k3smaster.memory
scsihw = "virtio-scsi-pci"
#bootdisk = "scsi0"
boot = "order=virtio0"
onboot = true
sshkeys = local.sshkeys
vga {
type = "serial0"
}
serial {
id = 0
type = "socket"
}
disks {
ide {
ide2 {
cloudinit {
storage = local.storage
}
}
}
virtio {
virtio0 {
disk {
size = local.k3smaster.drive
format = local.format
storage = local.storage
}
}
}
}
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = local.vlan
}
#Cloud Init Settings
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3smaster.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
searchdomain = "durp.loc"
nameserver = local.dnsserver
}
resource "proxmox_vm_qemu" "k3sserver" {
count = local.k3sserver.count
ciuser = "administrator"
vmid = "${local.vlan}${local.k3sserver.ip[count.index]}"
name = local.k3sserver.name[count.index]
target_node = local.k3sserver.node[count.index]
clone = local.template
tags = local.k3sserver.tags
qemu_os = "l26"
full_clone = true
os_type = "cloud-init"
agent = 1
cores = local.k3sserver.cores
sockets = 1
cpu_type = "host"
memory = local.k3sserver.memory
scsihw = "virtio-scsi-pci"
#bootdisk = "scsi0"
boot = "order=virtio0"
onboot = true
sshkeys = local.sshkeys
vga {
type = "serial0"
}
serial {
id = 0
type = "socket"
}
disks {
ide {
ide2 {
cloudinit {
storage = local.storage
}
}
}
virtio {
virtio0 {
disk {
size = local.k3sserver.drive
format = local.format
storage = local.storage
}
}
}
}
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = local.vlan
}
#Cloud Init Settings
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3sserver.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
searchdomain = "durp.loc"
nameserver = local.dnsserver
}

View file

@ -1,48 +0,0 @@
terraform {
backend "http" {}
required_providers {
proxmox = {
source = "Telmate/proxmox"
version = "3.0.1-rc9"
}
}
}
provider "proxmox" {
pm_parallel = 1
pm_tls_insecure = true
pm_api_url = var.pm_api_url
pm_user = var.pm_user
pm_password = var.pm_password
pm_debug = false
}
locals {
sshkeys = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEphzWgwUZnvL6E5luKLt3WO0HK7Kh63arSMoNl5gmjzXyhG1DDW0OKfoIl0T+JZw/ZjQ7iii6tmSLFRk6nuYCldqe5GVcFxvTzX4/xGEioAyG0IiUGKy6s+9xzO8QXF0EtSNPH0nfHNKcCjgwWAzM+Lt6gW0Vqs+aU5ICuDiEchmvYPz+rBaVldJVTG7m3ogKJ2aIF7HU/pCPp5l0E9gMOw7s0ABijuc3KXLEWCYgL39jIST6pFH9ceRLmu8Xy5zXHAkkEEauY/e6ld0hlzLadiUD7zYJMdDcm0oRvenYcUlaUl9gS0569IpfsJsjCejuqOxCKzTHPJDOT0f9TbIqPXkGq3s9oEJGpQW+Z8g41BqRpjBCdBk+yv39bzKxlwlumDwqgx1WP8xxKavAWYNqNRG7sBhoWwtxYEOhKXoLNjBaeDRnO5OY5AQJvONWpuByyz0R/gTh4bOFVD+Y8WWlKbT4zfhnN70XvapRsbZiaGhJBPwByAMGg6XxSbC6xtbyligVGCEjCXbTLkeKq1w0DuItY+FBGO3J2k90OiciTVSeyiVz9J/Y03UB0gHdsMCoVNrj+9QWfrTLDhM7D5YrXUt5nj2LQTcbtf49zoQXWxUhozlg42E/FJU/Yla7y55qWizAEVyP2/Ks/PHrF679k59HNd2IJ/aicA9QnmWtLQ== ansible"
template = "Debian12-Template"
storage = "cache-domains"
emulatessd = true
format = "raw"
dnsserver = "192.168.98.1"
vlan = 98
k3smaster = {
tags = "k3s_dmz"
count = 3
name = ["master01-dmz", "master02-dmz", "master03-dmz"]
cores = 2
memory = "4096"
drive = 20
node = ["mothership", "overlord", "vanguard"]
ip = ["11", "12", "13"]
}
k3sserver = {
tags = "k3s_dmz"
count = 3
name = ["node01-dmz", "node02-dmz", "node03-dmz"]
cores = 4
memory = "8192"
drive = 240
node = ["mothership", "overlord", "vanguard"]
ip = ["21", "22", "23"]
}
}

View file

@ -1,14 +0,0 @@
variable "pm_api_url" {
description = "API URL to Proxmox provider"
type = string
}
variable "pm_password" {
description = "Passowrd to Proxmox provider"
type = string
}
variable "pm_user" {
description = "UIsername to Proxmox provider"
type = string
}

View file

@ -23,6 +23,13 @@ traefik:
dashboard: dashboard:
enabled: true enabled: true
ports:
gitlab-ssh:
port: 9022
expose:
default: true
exposedPort: 9022
additionalArguments: additionalArguments:
# - "--providers.file.filename=/config/config.yml" # - "--providers.file.filename=/config/config.yml"
- "--serversTransport.insecureSkipVerify=true" - "--serversTransport.insecureSkipVerify=true"

View file

@ -9,4 +9,4 @@ appVersion: "1.16.0"
dependencies: dependencies:
- name: argo-cd - name: argo-cd
repository: https://argoproj.github.io/argo-helm repository: https://argoproj.github.io/argo-helm
version: 8.1.3 version: 8.6.4

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/argocd path: infra/argocd
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/authentik path: infra/authentik
destination: destination:
@ -31,7 +31,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/authentik path: dmz/authentik
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/bitwarden path: infra/bitwarden
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/cert-manager path: infra/cert-manager
destination: destination:
@ -29,7 +29,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/cert-manager path: dmz/cert-manager
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/external-dns path: dmz/external-dns
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/external-secrets path: infra/external-secrets
destination: destination:
@ -29,7 +29,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/external-secrets path: dmz/external-secrets
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/gitlab-runner path: dmz/gitlab-runner
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/internalproxy path: dmz/internalproxy
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/istio-system path: infra/istio-system
destination: destination:
@ -36,7 +36,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/istio-system path: dmz/istio-system
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/kube-prometheus-stack path: infra/kube-prometheus-stack
destination: destination:

View file

@ -6,7 +6,7 @@
#spec: #spec:
# project: default # project: default
# source: # source:
# repoURL: https://gitlab.com/developerdurp/homelab.git # repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
# targetRevision: main # targetRevision: main
# path: infra/litellm # path: infra/litellm
# destination: # destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/littlelink path: dmz/littlelink
directory: directory:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/longhorn path: infra/longhorn
destination: destination:
@ -33,7 +33,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/longhorn path: dmz/longhorn
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/metallb-system path: infra/metallb-system
destination: destination:
@ -29,7 +29,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/metallb-system path: dmz/metallb-system
destination: destination:
@ -52,7 +52,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dev/metallb-system path: dev/metallb-system
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/nebula-sync path: infra/nebula-sync
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/nfs path: infra/nfs
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/openclarity path: infra/openclarity
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/openspeedtest path: dmz/openspeedtest
directory: directory:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/portainer path: infra/portainer
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/redlib path: dmz/redlib
directory: directory:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/renovate path: infra/renovate
destination: destination:

View file

@ -1,23 +1,22 @@
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata: metadata:
name: uptimekuma name: searxng
namespace: argocd namespace: argocd
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: master/uptimekuma path: dmz/searxng
directory: directory:
recurse: true recurse: true
destination: destination:
server: https://kubernetes.default.svc name: dmz
namespace: uptimekuma namespace: searxng
syncPolicy: syncPolicy:
automated: automated:
prune: true prune: true
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/traefik path: infra/traefik
destination: destination:
@ -32,7 +32,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/traefik path: dmz/traefik
destination: destination:
@ -58,7 +58,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dev/traefik path: dev/traefik
destination: destination:

View file

@ -6,7 +6,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: infra/vault path: infra/vault
destination: destination:
@ -34,7 +34,7 @@ metadata:
spec: spec:
project: default project: default
source: source:
repoURL: https://gitlab.com/developerdurp/homelab.git repoURL: https://gitlab.durp.info/durfy/homelab/gitops.git
targetRevision: main targetRevision: main
path: dmz/vault path: dmz/vault
destination: destination:

View file

@ -34,7 +34,7 @@ authentik:
enabled: true enabled: true
image: image:
registry: registry.durp.info registry: registry.durp.info
repository: bitnami/postgresql repository: bitnamilegacy/postgresql
pullPolicy: Always pullPolicy: Always
postgresqlUsername: "authentik" postgresqlUsername: "authentik"
postgresqlDatabase: "authentik" postgresqlDatabase: "authentik"
@ -52,7 +52,7 @@ authentik:
enabled: false enabled: false
image: image:
registry: registry.durp.info registry: registry.durp.info
repository: bitnami/redis repository: bitnamilegacy/redis
pullPolicy: Always pullPolicy: Always
architecture: standalone architecture: standalone
auth: auth:

View file

@ -17,7 +17,7 @@ spec:
spec: spec:
containers: containers:
- name: bitwarden - name: bitwarden
image: registry.durp.info/vaultwarden/server:1.34.3 image: registry.durp.info/vaultwarden/server:1.35.4
imagePullPolicy: Always imagePullPolicy: Always
volumeMounts: volumeMounts:
- name: bitwarden-pvc - name: bitwarden-pvc

View file

@ -8,7 +8,7 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: base - name: base
repository: https://istio-release.storage.googleapis.com/charts repository: https://istio-release.storage.googleapis.com/charts
version: 1.26.2 version: 1.29.0
- name: istiod - name: istiod
repository: https://istio-release.storage.googleapis.com/charts repository: https://istio-release.storage.googleapis.com/charts
version: 1.26.2 version: 1.26.2

View file

@ -11,8 +11,8 @@ spec:
- match: Host(`longhorn.infra.durp.info`) && PathPrefix(`/`) - match: Host(`longhorn.infra.durp.info`) && PathPrefix(`/`)
kind: Rule kind: Rule
middlewares: middlewares:
- name: authentik-proxy-provider #- name: authentik-proxy-provider
namespace: traefik # namespace: traefik
services: services:
- name: longhorn-frontend - name: longhorn-frontend
port: 80 port: 80

View file

@ -542,7 +542,7 @@ openclarity:
# -- Trivy Server container repository # -- Trivy Server container repository
repository: aquasec/trivy repository: aquasec/trivy
# -- Trivy Server container tag # -- Trivy Server container tag
tag: 0.64.1 tag: 0.69.3
# -- Trivy Server image digest. If set will override the tag. # -- Trivy Server image digest. If set will override the tag.
digest: "" digest: ""
# -- Trivy Server image pull policy # -- Trivy Server image pull policy

View file

@ -9,4 +9,4 @@ appVersion: "1.16.0"
dependencies: dependencies:
- name: portainer - name: portainer
repository: https://portainer.github.io/k8s/ repository: https://portainer.github.io/k8s/
version: 2.33.5 version: 2.33.6

View file

@ -2,7 +2,7 @@ portainer:
replicaCount: 1 replicaCount: 1
image: image:
repository: registry.durp.info/portainer/portainer-ce repository: registry.durp.info/portainer/portainer-ce
tag: 2.33.5 tag: 2.39.1
pullPolicy: Always pullPolicy: Always
imagePullSecrets: [] imagePullSecrets: []

View file

@ -10,4 +10,4 @@ dependencies:
- name: renovate - name: renovate
repository: https://docs.renovatebot.com/helm-charts repository: https://docs.renovatebot.com/helm-charts
version: 39.264.0 version: 39.264.0
alias: "renovate-personal"

View file

@ -39,3 +39,24 @@ spec:
remoteRef: remoteRef:
key: kv/renovate key: kv/renovate
property: RENOVATE_TOKEN property: RENOVATE_TOKEN
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: renovate-personal-config-secret
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: renovate-personal-config-secret
data:
- secretKey: RENOVATE_TOKEN
remoteRef:
key: kv/renoatePersonal
property: RENOVATE_TOKEN
- secretKey: RENOVATE_GITHUB_COM_TOKEN
remoteRef:
key: kv/renoatePersonal
property: RENOVATE_GITHUB_COM_TOKEN

View file

@ -1,4 +1,4 @@
renovate: renovate-personal:
global: global:
# -- Additional labels to be set on all renovate resources # -- Additional labels to be set on all renovate resources
commonLabels: {} commonLabels: {}
@ -99,12 +99,12 @@ renovate:
config: | config: |
{ {
"platform": "gitlab", "platform": "gitlab",
"endpoint": "https://gitlab.com/api/v4", "endpoint": "https://gitlab.durp.info/api/v4",
"autodiscover": "true", "autodiscover": true,
"dryRun": false, "dryRun": null,
"printConfig": false, "printConfig": false,
"autodiscoverFilter": ["developerdurp/*", "durfy/*"], "autodiscoverFilter": ["durfy/**"],
"assignees": ["developerdurp"], "assignees": ["durp"]
} }
# See https://docs.renovatebot.com/self-hosted-configuration # See https://docs.renovatebot.com/self-hosted-configuration
# config: | # config: |
@ -166,7 +166,7 @@ renovate:
# -- Environment variables that should be referenced from a k8s secret, cannot be used when existingSecret is set # -- Environment variables that should be referenced from a k8s secret, cannot be used when existingSecret is set
secrets: {} secrets: {}
# -- k8s secret to reference environment variables from. Overrides secrets if set # -- k8s secret to reference environment variables from. Overrides secrets if set
existingSecret: "renovate-config-secret" existingSecret: "renovate-personal-config-secret"
# -- Additional configmaps. A generated configMap name is: "renovate.fullname" + "extra" + name(below) e.g. renovate-netrc-config # -- Additional configmaps. A generated configMap name is: "renovate.fullname" + "extra" + name(below) e.g. renovate-netrc-config
extraConfigmaps: [] extraConfigmaps: []
@ -233,8 +233,8 @@ renovate:
# cpu: 100m # cpu: 100m
# memory: 128Mi # memory: 128Mi
# requests: # requests:
# cpu: 100m # cpu: 100m
# memory: 128Mi # memory: 128Mi
# -- Environment variables to add from existing secrets/configmaps. Uses the keys as variable name # -- Environment variables to add from existing secrets/configmaps. Uses the keys as variable name
envFrom: [] envFrom: []
@ -247,6 +247,7 @@ renovate:
# -- Environment variables to set on the renovate container # -- Environment variables to set on the renovate container
env: env:
RENOVATE_AUTODISCOVER: true RENOVATE_AUTODISCOVER: true
#LOG_LEVEL: debug
# env: # env:
# VARIABLE_NAME: "value" # VARIABLE_NAME: "value"

View file

@ -1,116 +0,0 @@
resource "proxmox_vm_qemu" "k3smaster" {
lifecycle {
prevent_destroy = true
}
count = local.k3smaster.count
ciuser = "administrator"
name = local.k3smaster.name[count.index]
target_node = local.k3smaster.node[count.index]
tags = local.k3smaster.tags
full_clone = false
qemu_os = "l26"
os_type = "cloud-init"
agent = 1
cores = local.k3smaster.cores
sockets = 1
cpu_type = "host"
memory = local.k3smaster.memory
scsihw = "virtio-scsi-pci"
boot = "order=virtio0"
onboot = true
sshkeys = local.sshkeys
vga {
type = "serial0"
}
serial {
id = 0
type = "socket"
}
disks {
ide {
ide2 {
cloudinit {
storage = local.k3smaster.storage
}
}
}
virtio {
virtio0 {
disk {
size = local.k3smaster.drive
format = local.format
storage = local.k3smaster.storage
}
}
}
}
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = local.vlan
}
#Cloud Init Settings
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3smaster.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
searchdomain = "durp.loc"
nameserver = local.dnsserver
}
resource "proxmox_vm_qemu" "k3sserver" {
lifecycle {
prevent_destroy = true
}
count = local.k3sserver.count
ciuser = "administrator"
name = local.k3sserver.name[count.index]
target_node = local.k3sserver.node[count.index]
tags = local.k3sserver.tags
qemu_os = "l26"
full_clone = false
os_type = "cloud-init"
agent = 1
cores = local.k3sserver.cores
sockets = 1
cpu_type = "host"
memory = local.k3sserver.memory
scsihw = "virtio-scsi-pci"
#bootdisk = "scsi0"
boot = "order=virtio0"
onboot = true
sshkeys = local.sshkeys
vga {
type = "serial0"
}
serial {
id = 0
type = "socket"
}
disks {
ide {
ide2 {
cloudinit {
storage = local.k3sserver.storage
}
}
}
virtio {
virtio0 {
disk {
size = local.k3sserver.drive
format = local.format
storage = local.k3sserver.storage
}
}
}
}
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = local.vlan
}
#Cloud Init Settings
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3sserver.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
searchdomain = "durp.loc"
nameserver = local.dnsserver
}

View file

@ -1,81 +0,0 @@
terraform {
backend "http" {}
required_providers {
proxmox = {
source = "Telmate/proxmox"
version = "3.0.1-rc9"
}
}
}
provider "proxmox" {
pm_parallel = 1
pm_tls_insecure = true
pm_api_url = var.pm_api_url
pm_user = var.pm_user
pm_password = var.pm_password
pm_debug = false
}
locals {
sshkeys = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEphzWgwUZnvL6E5luKLt3WO0HK7Kh63arSMoNl5gmjzXyhG1DDW0OKfoIl0T+JZw/ZjQ7iii6tmSLFRk6nuYCldqe5GVcFxvTzX4/xGEioAyG0IiUGKy6s+9xzO8QXF0EtSNPH0nfHNKcCjgwWAzM+Lt6gW0Vqs+aU5ICuDiEchmvYPz+rBaVldJVTG7m3ogKJ2aIF7HU/pCPp5l0E9gMOw7s0ABijuc3KXLEWCYgL39jIST6pFH9ceRLmu8Xy5zXHAkkEEauY/e6ld0hlzLadiUD7zYJMdDcm0oRvenYcUlaUl9gS0569IpfsJsjCejuqOxCKzTHPJDOT0f9TbIqPXkGq3s9oEJGpQW+Z8g41BqRpjBCdBk+yv39bzKxlwlumDwqgx1WP8xxKavAWYNqNRG7sBhoWwtxYEOhKXoLNjBaeDRnO5OY5AQJvONWpuByyz0R/gTh4bOFVD+Y8WWlKbT4zfhnN70XvapRsbZiaGhJBPwByAMGg6XxSbC6xtbyligVGCEjCXbTLkeKq1w0DuItY+FBGO3J2k90OiciTVSeyiVz9J/Y03UB0gHdsMCoVNrj+9QWfrTLDhM7D5YrXUt5nj2LQTcbtf49zoQXWxUhozlg42E/FJU/Yla7y55qWizAEVyP2/Ks/PHrF679k59HNd2IJ/aicA9QnmWtLQ== ansible"
template = "Debian12-Template"
format = "raw"
dnsserver = "192.168.12.1"
vlan = 12
k3smaster = {
tags = "k3s_infra"
count = 3
name = ["master01-infra", "master02-infra", "master03-infra"]
cores = 2
memory = "4096"
drive = 20
storage = "cache-domains"
node = ["mothership", "overlord", "vanguard"]
ip = ["11", "12", "13"]
}
k3sserver = {
tags = "k3s_infra"
count = 3
name = ["node01-infra", "node02-infra", "node03-infra"]
cores = 4
memory = "16384"
drive = 240
storage = "cache-domains"
node = ["mothership", "overlord", "vanguard"]
ip = ["21", "22", "23"]
}
#haproxy = {
# tags = "haproxy"
# count = 3
# name = ["haproxy-01", "haproxy-02", "haproxy-03"]
# cores = 2
# memory = "1024"
# drive = 20
# storage = "cache-domains"
# node = ["mothership", "overlord", "vanguard"]
# ip = ["31", "32", "33"]
#}
#postgres = {
# tags = "postgres"
# count = 3
# name = ["postgres-01", "postgres-02", "postgres-03"]
# cores = 4
# memory = "4096"
# drive = 40
# storage = "cache-domains"
# node = ["mothership", "overlord", "vanguard"]
# ip = ["34", "35", "36"]
#}
pihole = {
tags = "pihole"
count = 3
name = ["pihole-01", "pihole-02", "pihole-03"]
cores = 2
memory = "2048"
drive = 20
storage = "cache-domains"
node = ["mothership", "overlord", "vanguard"]
ip = ["41", "42", "43"]
}
}

View file

@ -1,57 +0,0 @@
resource "proxmox_vm_qemu" "pihole" {
count = local.pihole.count
ciuser = "administrator"
vmid = "${local.vlan}${local.pihole.ip[count.index]}"
name = local.pihole.name[count.index]
target_node = local.pihole.node[count.index]
clone = local.template
tags = local.pihole.tags
qemu_os = "l26"
full_clone = true
os_type = "cloud-init"
agent = 1
cores = local.pihole.cores
sockets = 1
cpu_type = "host"
memory = local.pihole.memory
scsihw = "virtio-scsi-pci"
#bootdisk = "scsi0"
boot = "order=virtio0"
onboot = true
sshkeys = local.sshkeys
vga {
type = "serial0"
}
serial {
id = 0
type = "socket"
}
disks {
ide {
ide2 {
cloudinit {
storage = local.pihole.storage
}
}
}
virtio {
virtio0 {
disk {
size = local.pihole.drive
format = local.format
storage = local.pihole.storage
}
}
}
}
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = local.vlan
}
#Cloud Init Settings
ipconfig0 = "ip=192.168.${local.vlan}.${local.pihole.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
searchdomain = "durp.loc"
nameserver = local.dnsserver
}

View file

@ -1,116 +0,0 @@
#resource "proxmox_vm_qemu" "haproxy" {
# count = local.haproxy.count
# ciuser = "administrator"
# vmid = "${local.vlan}${local.haproxy.ip[count.index]}"
# name = local.haproxy.name[count.index]
# target_node = local.haproxy.node[count.index]
# clone = local.template
# tags = local.haproxy.tags
# qemu_os = "l26"
# full_clone = true
# os_type = "cloud-init"
# agent = 1
# cores = local.haproxy.cores
# sockets = 1
# cpu_type = "host"
# memory = local.haproxy.memory
# scsihw = "virtio-scsi-pci"
# #bootdisk = "scsi0"
# boot = "order=virtio0"
# onboot = true
# sshkeys = local.sshkeys
# vga {
# type = "serial0"
# }
# serial {
# id = 0
# type = "socket"
# }
# disks {
# ide {
# ide2 {
# cloudinit {
# storage = local.haproxy.storage
# }
# }
# }
# virtio {
# virtio0 {
# disk {
# size = local.haproxy.drive
# format = local.format
# storage = local.haproxy.storage
# }
# }
# }
# }
# network {
# id = 0
# model = "virtio"
# bridge = "vmbr0"
# tag = local.vlan
# }
# #Cloud Init Settings
# ipconfig0 = "ip=192.168.${local.vlan}.${local.haproxy.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
# searchdomain = "durp.loc"
# nameserver = local.dnsserver
#}
#
#resource "proxmox_vm_qemu" "postgres" {
# count = local.postgres.count
# ciuser = "administrator"
# vmid = "${local.vlan}${local.postgres.ip[count.index]}"
# name = local.postgres.name[count.index]
# target_node = local.postgres.node[count.index]
# clone = local.template
# tags = local.postgres.tags
# qemu_os = "l26"
# full_clone = true
# os_type = "cloud-init"
# agent = 1
# cores = local.postgres.cores
# sockets = 1
# cpu_type = "host"
# memory = local.postgres.memory
# scsihw = "virtio-scsi-pci"
# #bootdisk = "scsi0"
# boot = "order=virtio0"
# onboot = true
# sshkeys = local.sshkeys
# vga {
# type = "serial0"
# }
# serial {
# id = 0
# type = "socket"
# }
# disks {
# ide {
# ide2 {
# cloudinit {
# storage = local.postgres.storage
# }
# }
# }
# virtio {
# virtio0 {
# disk {
# size = local.postgres.drive
# format = local.format
# storage = local.postgres.storage
# }
# }
# }
# }
# network {
# id = 0
# model = "virtio"
# bridge = "vmbr0"
# tag = local.vlan
# }
# #Cloud Init Settings
# ipconfig0 = "ip=192.168.${local.vlan}.${local.postgres.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
# searchdomain = "durp.loc"
# nameserver = local.dnsserver
#}
#

View file

@ -1,14 +0,0 @@
variable "pm_api_url" {
description = "API URL to Proxmox provider"
type = string
}
variable "pm_password" {
description = "Passowrd to Proxmox provider"
type = string
}
variable "pm_user" {
description = "UIsername to Proxmox provider"
type = string
}

Some files were not shown because too many files have changed in this diff Show more