Compare commits

..

1 commit

Author SHA1 Message Date
Renovate Bot
5d9969289c Update Helm release cert-manager to v1.19.2 2025-12-10 07:03:24 +00:00
263 changed files with 11266 additions and 1281 deletions

4
.gitignore vendored
View file

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

34
.gitlab/.gitlab-ci.yml Normal file
View file

@ -0,0 +1,34 @@
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"

5
ansible/base.yaml Normal file
View file

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

2
ansible/newcluster.yaml Normal file
View file

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

View file

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

View file

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

View file

@ -0,0 +1,2 @@
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

@ -0,0 +1,4 @@
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

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

View file

@ -0,0 +1,95 @@
# 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

@ -0,0 +1,155 @@
- 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

@ -0,0 +1,17 @@
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

@ -8,4 +8,4 @@ appVersion: 0.0.1
dependencies:
- name: cert-manager
repository: https://charts.jetstack.io
version: v1.17.2
version: v1.19.2

115
dev/terraform/k3s.tf Normal file
View file

@ -0,0 +1,115 @@
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
}

48
dev/terraform/main.tf Normal file
View file

@ -0,0 +1,48 @@
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

@ -0,0 +1,14 @@
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

@ -0,0 +1,62 @@
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

@ -8,4 +8,4 @@ appVersion: 0.0.1
dependencies:
- name: cert-manager
repository: https://charts.jetstack.io
version: v1.17.2
version: v1.19.2

View file

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

View file

@ -1,11 +1,11 @@
personal:
gitlab-runner:
image:
registry: registry.durp.info
image: gitlab-org/gitlab-runner
imagePullPolicy: Always
gitlabUrl: https://gitlab.durp.info/
gitlabUrl: https://gitlab.com/
unregisterRunner: false
terminationGracePeriodSeconds: 3600
concurrent: 10
@ -18,15 +18,87 @@ personal:
podSecurityPolicy:
enabled: false
resourceNames:
- gitlab-runner
- gitlab-runner
metrics:
enabled: true
serviceMonitor:
enabled: true
enabled: true
service:
enabled: true
annotations: {}
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:
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: |
@ -41,15 +113,15 @@ personal:
runUntagged: true
privileged: true
secret: gitlab-secret-personal
builds:
cpuLimit: 200m
cpuLimitOverwriteMaxAllowed: 400m
memoryLimit: 256Mi
memoryLimitOverwriteMaxAllowed: 512Mi
cpuRequests: 100m
cpuRequestsOverwriteMaxAllowed: 200m
memoryRequests: 128Mi
memoryRequestsOverwriteMaxAllowed: 256Mi
#builds:
#cpuLimit: 200m
#cpuLimitOverwriteMaxAllowed: 400m
#memoryLimit: 256Mi
#memoryLimitOverwriteMaxAllowed: 512Mi
#cpuRequests: 100m
#cpuRequestsOverwriteMaxAllowed: 200m
#memoryRequests: 128Mi
#memoryRequestsOverwriteMaxAllowed: 256Mi
securityContext:
allowPrivilegeEscalation: false
@ -63,9 +135,9 @@ personal:
runAsUser: 100
fsGroup: 65533
resources:
resources:
limits:
memory: 2Gi
requests:
memory: 128Mi
cpu: 50m
cpu: 500m

View file

@ -1,34 +0,0 @@
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: 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: 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
#
#---
#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"
#
#---
#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

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -14,7 +43,7 @@ spec:
namespace: traefik
kind: Rule
services:
- name: unraid
- name: duplicati
port: 8200
tls:
secretName: duplicati-tls

View file

@ -9,6 +9,7 @@ subsets:
- port: 443
---
apiVersion: v1
kind: Service
metadata:
@ -20,6 +21,7 @@ spec:
targetPort: 443
---
apiVersion: v1
kind: Endpoints
metadata:
@ -31,6 +33,7 @@ subsets:
- port: 443
---
apiVersion: v1
kind: Service
metadata:
@ -40,191 +43,3 @@ spec:
- protocol: TCP
port: 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

@ -1,43 +0,0 @@
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

@ -1,30 +0,0 @@
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

@ -0,0 +1,72 @@
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,42 +1,28 @@
#apiVersion: v1
#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
apiVersion: v1
kind: Service
metadata:
name: gitlab-ssh
name: gitlab
spec:
entryPoints:
- gitlab-ssh
routes:
- match: HostSNI(`*`)
services:
- name: unraid
port: 9022
ports:
- name: app
port: 9080
protocol: TCP
targetPort: 9080
clusterIP: None
type: ClusterIP
---
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
@ -50,9 +36,9 @@ spec:
- match: Host(`gitlab.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
port: 9443
scheme: https
- name: gitlab
port: 9080
scheme: http
tls:
secretName: gitlab-tls
@ -80,46 +66,3 @@ metadata:
spec:
type: ExternalName
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

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

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -9,7 +38,7 @@ spec:
- match: Host(`kasm.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: ubuntu
- name: kasm
port: 443
scheme: https
tls:

View file

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

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -9,7 +38,7 @@ spec:
- match: Host(`litellm.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: ubuntu
- name: litellm
port: 4000
tls:
secretName: litellm-tls

View file

@ -1,34 +0,0 @@
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,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -12,7 +41,7 @@ spec:
namespace: traefik
kind: Rule
services:
- name: unraid
- name: minio
port: 9769
scheme: http
tls:

View file

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

View file

@ -1,74 +0,0 @@
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,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -9,7 +38,7 @@ spec:
- match: Host(`nexus.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
- name: nexus
port: 8081
tls:
secretName: nexus-tls

View file

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

View file

@ -15,6 +15,7 @@ spec:
property: users
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
@ -25,6 +26,36 @@ spec:
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
kind: IngressRoute
metadata:
@ -38,12 +69,13 @@ spec:
- name: ollama-basic-auth
kind: Rule
services:
- name: ubuntu
- name: ollama
port: 11435
tls:
secretName: ollama-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
@ -58,6 +90,7 @@ spec:
- "ollama.durp.info"
---
kind: Service
apiVersion: v1
metadata:
@ -66,4 +99,4 @@ metadata:
external-dns.alpha.kubernetes.io/hostname: ollama.durp.info
spec:
type: ExternalName
externalName: durp.info
externalName: durp.info

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -9,13 +38,14 @@ spec:
- match: Host(`open-webui.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
- name: open-webui
port: 8089
scheme: http
tls:
secretName: open-webui-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
@ -30,6 +60,7 @@ spec:
- "open-webui.durp.info"
---
kind: Service
apiVersion: v1
metadata:

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -9,13 +38,14 @@ spec:
- match: Host(`plex.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
- name: plex
port: 32400
scheme: https
tls:
secretName: plex-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
@ -30,6 +60,7 @@ spec:
- "plex.durp.info"
---
kind: Service
apiVersion: v1
metadata:

View file

@ -1,3 +1,32 @@
apiVersion: v1
kind: Service
metadata:
name: portainer
spec:
ports:
- name: app
port: 9443
protocol: TCP
targetPort: 9443
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: portainer
subsets:
- addresses:
- ip: 192.168.20.104
ports:
- name: app
port: 9443
protocol: TCP
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
@ -7,13 +36,14 @@ spec:
- websecure
routes:
- match: Host(`portainer.internal.durp.info`) && PathPrefix(`/`)
middlewares:
- name: whitelist
namespace: traefik
#middlewares:
#- name: whitelist
# namespace: traefik
kind: Rule
services:
- name: infra-cluster
port: 443
- name: portainer
port: 9443
scheme: https
tls:
secretName: portainer-tls
@ -30,4 +60,4 @@ spec:
kind: ClusterIssuer
commonName: "portainer.internal.durp.info"
dnsNames:
- "portainer.internal.durp.info"
- "portainer.internal.durp.info"

View file

@ -1,3 +1,30 @@
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
kind: IngressRoute
metadata:
@ -12,7 +39,7 @@ spec:
- name: whitelist
namespace: traefik
services:
- name: unraid
- name: registry
port: 5000
tls:
secretName: registry-tls

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -12,13 +41,14 @@ spec:
namespace: traefik
kind: Rule
services:
- name: unraid
- name: root-vault
port: 8201
scheme: https
tls:
secretName: root-vault-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -12,7 +41,7 @@ spec:
namespace: traefik
kind: Rule
services:
- name: unraid
- name: s3
port: 9768
scheme: http
tls:
@ -46,7 +75,7 @@ spec:
- match: Host(`s3.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: unraid
- name: s3
port: 9768
scheme: http
tls:

View file

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

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -14,12 +43,13 @@ spec:
namespace: traefik
kind: Rule
services:
- name: unraid
- name: smokeping
port: 81
tls:
secretName: smokeping-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
@ -34,6 +64,7 @@ spec:
- "smokeping.durp.info"
---
kind: Service
apiVersion: v1
metadata:

View file

@ -1,3 +1,32 @@
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
kind: IngressRoute
metadata:
@ -16,7 +45,7 @@ spec:
namespace: traefik
kind: Rule
services:
- name: unraid
- name: tdarr
port: 8267
scheme: http
tls:

View file

@ -1,3 +1,33 @@
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
kind: IngressRoute
metadata:

View file

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

View file

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

View file

@ -1,10 +0,0 @@
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

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

View file

@ -1,40 +0,0 @@
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

@ -1,76 +0,0 @@
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

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

View file

@ -1,83 +0,0 @@
#
# 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

115
dmz/terraform/k3s.tf Normal file
View file

@ -0,0 +1,115 @@
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
}

48
dmz/terraform/main.tf Normal file
View file

@ -0,0 +1,48 @@
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

@ -0,0 +1,14 @@
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,13 +23,6 @@ traefik:
dashboard:
enabled: true
ports:
gitlab-ssh:
port: 9022
expose:
default: true
exposedPort: 9022
additionalArguments:
# - "--providers.file.filename=/config/config.yml"
- "--serversTransport.insecureSkipVerify=true"

View file

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

View file

@ -0,0 +1,101 @@
#apiVersion: external-secrets.io/v1
#kind: ExternalSecret
#metadata:
# name: argocd-secret-crossplane
#spec:
# secretStoreRef:
# name: vault
# kind: ClusterSecretStore
# target:
# name: argocd-secret-crossplane
# data:
# - secretKey: authToken
# remoteRef:
# key: kv/argocd/provider-argocd
# property: token
#
#---
#apiVersion: external-secrets.io/v1
#kind: ExternalSecret
#metadata:
# name: prod-kubeconfig
#spec:
# secretStoreRef:
# name: vault
# kind: ClusterSecretStore
# target:
# name: prod-kubeconfig
# data:
# - secretKey: kubeconfig
# remoteRef:
# key: kv/argocd/prd
# property: kubeconfig
#
#---
#apiVersion: argocd.crossplane.io/v1alpha1
#kind: ProviderConfig
#metadata:
# name: argocd-provider
#spec:
# serverAddr: argocd-server.argocd.svc:443
# insecure: true
# plainText: false
# credentials:
# source: Secret
# secretRef:
# namespace: argocd
# name: argocd-secret-crossplane
# key: authToken
#
#---
#apiVersion: cluster.argocd.crossplane.io/v1alpha1
#kind: Cluster
#metadata:
# name: prd
# labels:
# purpose: prd
#spec:
# forProvider:
# name: prd
# config:
# kubeconfigSecretRef:
# name: prod-kubeconfig
# namespace: argocd
# key: kubeconfig
# providerConfigRef:
# name: argocd-provider
#
#---
#apiVersion: external-secrets.io/v1
#kind: ExternalSecret
#metadata:
# name: dev-kubeconfig
#spec:
# secretStoreRef:
# name: vault
# kind: ClusterSecretStore
# target:
# name: dev-kubeconfig
# data:
# - secretKey: kubeconfig
# remoteRef:
# key: kv/argocd/dev
# property: kubeconfig
#
#---
#apiVersion: cluster.argocd.crossplane.io/v1alpha1
#kind: Cluster
#metadata:
# name: dev
# labels:
# purpose: dev
#spec:
# forProvider:
# name: dev
# config:
# kubeconfigSecretRef:
# name: dev-kubeconfig
# namespace: argocd
# key: kubeconfig
# providerConfigRef:
# name: argocd-provider

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,20 @@
#apiVersion: argoproj.io/v1alpha1
#kind: Application
#metadata:
# name: crowdsec
# namespace: argocd
#spec:
# project: default
# source:
# repoURL: https://gitlab.com/developerdurp/homelab.git
# targetRevision: main
# path: dmz/crowdsec
# destination:
# namespace: crowdsec
# name: dmz
# syncPolicy:
# automated:
# prune: true
# selfHeal: true
# syncOptions:
# - CreateNamespace=true

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,43 @@
#apiVersion: argoproj.io/v1alpha1
#kind: Application
#metadata:
# name: octopusdeploy
# namespace: argocd
#spec:
# project: default
# source:
# repoURL: https://gitlab.com/developerdurp/homelab.git
# targetRevision: main
# path: infra/octopusdeploy
# destination:
# namespace: octopusdeploy
# name: in-cluster
# syncPolicy:
# automated:
# prune: true
# selfHeal: true
# syncOptions:
# - CreateNamespace=true
#
#---
#apiVersion: argoproj.io/v1alpha1
#kind: Application
#metadata:
# name: octopusdeploy-agent
# namespace: argocd
#spec:
# project: default
# source:
# repoURL: https://gitlab.com/developerdurp/homelab.git
# targetRevision: main
# path: infra/octopus-agent
# destination:
# namespace: octopus-agent
# name: in-cluster
# syncPolicy:
# automated:
# prune: true
# selfHeal: true
# syncOptions:
# - CreateNamespace=true
#

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -8,4 +8,4 @@ appVersion: 0.0.1
dependencies:
- name: cert-manager
repository: https://charts.jetstack.io
version: v1.17.2
version: v1.19.2

View file

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

View file

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

View file

@ -0,0 +1,12 @@
apiVersion: v2
name: octopusdeploy
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
dependencies:
- name: kubernetes-agent
repository: oci://registry-1.docker.io/octopusdeploy
version: 2.*.*

View file

@ -1,23 +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
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: agent-token
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: agent-token
data:
- secretKey: bearer-token
remoteRef:
key: kv/octopusdeploy
property: infra-bearer-token

View file

@ -0,0 +1,19 @@
kubernetes-agent:
agent:
bearerTokenSecretName: agent-token
acceptEula: "Y"
serverUrl: "https://octopus.durp.info/"
serverCommsAddresses:
- "https://octopus-deploy-node0.octopusdeploy.svc.cluster.local:10943/"
- "https://octopus-deploy-node1.octopusdeploy.svc.cluster.local:10943/"
- "https://octopus-deploy-node2.octopusdeploy.svc.cluster.local:10943/"
space: "Default"
name: "infra"
deploymentTarget:
initial:
environments:
- "development"
- "production"
tags:
- "infra-cluster"
enabled: "true"

View file

@ -0,0 +1,12 @@
apiVersion: v2
name: octopusdeploy
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
dependencies:
- name: octopusdeploy-helm
repository: oci://ghcr.io/octopusdeploy
version: 1.7.0

View file

@ -0,0 +1,32 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: octopus-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
spec:
entryPoints:
- websecure
routes:
- match: Host(`octopus.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: octopusdeploy-octopus-deploy
port: 80
tls:
secretName: octopus-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: octopus-tls
spec:
secretName: octopus-tls
issuerRef:
name: vault-issuer
kind: ClusterIssuer
commonName: "octopus.durp.info"
dnsNames:
- "octopus.durp.info"

View file

@ -0,0 +1,106 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: vault
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: octopusdeploy-adminpassword
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: octopusdeploy-adminpassword
data:
- secretKey: secret
remoteRef:
key: kv/octopusdeploy
property: adminpassword
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: octopusdeploy-adminusername
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: octopusdeploy-adminusername
data:
- secretKey: secret
remoteRef:
key: kv/octopusdeploy
property: adminusername
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: octopusdeploy-connectionstring
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: octopusdeploy-connectionstring
data:
- secretKey: secret
remoteRef:
key: kv/octopusdeploy
property: connectionstring
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: octopusdeploy-masterkey
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: octopusdeploy-masterkey
data:
- secretKey: secret
remoteRef:
key: kv/octopusdeploy
property: masterkey
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: octopusdeploy-sapassword
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: octopusdeploy-sapassword
data:
- secretKey: secret
remoteRef:
key: kv/octopusdeploy
property: sapassword
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: octopusdeploy-licensekey
spec:
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: octopusdeploy-licensekey
data:
- secretKey: secret
remoteRef:
key: kv/octopusdeploy
property: licensekey

View file

@ -0,0 +1,10 @@
octopusdeploy-helm:
octopus:
image:
repository: registry.durp.info/octopusdeploy/octopusdeploy
tag: 2025.3
createSecrets: false
acceptEula: Y
replicaCount: 3
mssql:
enabled: true

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