This commit is contained in:
2026-10-23 11:18:18 -04:00
parent 259c4aa83f
commit d5bbbd4f20
17 changed files with 2303 additions and 154 deletions
+140
View File
@@ -0,0 +1,140 @@
---
# tasks file for mediawiki
- name: Create MediaWiki namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: mediawiki
- name: Deploy MariaDB
kubernetes.core.helm:
name: mariadb
chart_ref: bitnami/mariadb
release_namespace: mediawiki
values:
auth:
rootPassword: "{{ mediawiki_admin_password }}"
username: mediawiki
password: "{{ mediawiki_admin_password }}"
database: mediawiki
primary:
persistence:
size: 4Ti
- name: Create a persistent volume claim for MediaWiki
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mediawiki
namespace: mediawiki
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 32Gi
- name: Create Deployment for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: mediawiki
namespace: mediawiki
spec:
replicas: 1
selector:
matchLabels:
app: mediawiki
template:
metadata:
labels:
app: mediawiki
spec:
containers:
- name: mediawiki
image: mediawiki
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 2Gi
ports:
- containerPort: 80
volumemounts:
- name: mediawiki
mountpath: /var/www/html
volumes:
- name: mediawiki
persistentVolumeClaim:
claimName: mediawiki
- name: Create Service for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: mediawiki
namespace: mediawiki
spec:
selector:
app: mediawiki
ports:
- port: 80
name: http
type: ClusterIP
- name: Create OnionService
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: mediawiki
namespace: mediawiki
spec:
version: 3
rules:
- port:
number: 80
backend:
service:
name: mediawiki
port:
number: 80
#- name: Create Ingress
# k8s:
# state: present
# definition:
# apiVersion: networking.k8s.io/v1
# kind: Ingress
# metadata:
# annotations:
# cert-manager.io/cluster-issuer: ca-issuer
# name: mediawiki
# namespace: mediawiki
# spec:
# ingressClassName: nginx
# rules:
# - host: mediawiki.eom.dev
# http:
# paths:
# - pathType: Prefix
# path: /
# backend:
# service:
# name: mediawiki
# port:
# number: 80
# tls:
# - hosts:
# - mediawiki.eom.dev
# secretName: mediawiki
+147
View File
@@ -0,0 +1,147 @@
---
# tasks file for mediawiki
- name: Create MediaWiki namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: mediawiki
- name: Deploy MariaDB
kubernetes.core.helm:
name: mariadb
chart_ref: bitnami/mariadb
release_namespace: mediawiki
values:
auth:
rootPassword: "{{ mediawiki_admin_password }}"
username: mediawiki
password: "{{ mediawiki_admin_password }}"
database: mediawiki
primary:
persistence:
size: 4Ti
- name: Create Deployment for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: mediawiki
namespace: mediawiki
spec:
replicas: 1
selector:
matchLabels:
app: mediawiki
template:
metadata:
labels:
app: mediawiki
spec:
containers:
- name: mediawiki
image: ericomeehan/mediawiki-extended
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 2Gi
env:
- name: WIKI_NAME
value: MediaWiki
- name: WIKI_ADMIN
value: mediawiki_admin
- name: WIKI_ADMIN_PASS
value: "{{ mediawiki_admin_password }}"
- name: WIKI_LANG
value: en
- name: WIKI_URL
value: https://mediawiki.eom.dev/
- name: DB_HOST
value: mariadb
- name: DB_PORT
value: "3306"
- name: DB_NAME
value: mediawiki
- name: DB_USER
value: mediawiki
- name: DB_PASS
value: "{{ mediawiki_admin_password }}"
- name: LDAP_BASE
value: dc=eom,dc=dev
- name: LDAP_SERVER_NAME
value: openldap.openldap.svc.cluster.local
- name: LDAP_SERVER_PORT
value: "389"
- name: LDAP_DOMAINNAME
value: openldap.openldap.svc.cluster.local
- name: LDAP_ENCTYPE
value: clear
- name: LDAP_USER_ATTR
value: uid
- name: LDAP_REAL_NAME_ATTR
value: cn
- name: LDAP_MAIL_ATTR
value: mail
- name: LDAP_BIND_USER
value: cn=readonly,dc=eom,dc=dev
- name: LDAP_BIND_PASS
value: "{{ openldap_readonly_password }}"
- name: LDAP_BUREAUCRAT_GROUP
value: cn=Mediawiki Bureaucrats,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_INTERFACE_ADMIN_GROUP
value: cn=Mediawiki Interface Administrators,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_SYSOP_GROUP
value: cn=Mediawiki Sysops,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_SEARCH_FILTER
value: (&(objectClass=posixAccount)(uid=%1$s)(memberOf=cn=Mediawiki Users,ou=MediaWiki,ou=Services,dc=eom,dc=dev))
ports:
- containerPort: 80
- name: Create Service for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: mediawiki
namespace: mediawiki
spec:
selector:
app: mediawiki
ports:
- port: 80
name: http
type: ClusterIP
- name: Create Ingress
k8s:
state: present
definition:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: ca-issuer
name: mediawiki
namespace: mediawiki
spec:
ingressClassName: nginx
rules:
- host: mediawiki.eom.dev
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: mediawiki
port:
number: 80
tls:
- hosts:
- mediawiki.eom.dev
secretName: mediawiki
+97
View File
@@ -0,0 +1,97 @@
---
# tasks file for discourse-onionservice
- name: onionservice for discourse
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: discourse
namespace: discourse
spec:
version: 3
rules:
- port:
number: 80
backend:
service:
name: discourse
port:
number: 80
- name: onionservice for gitea http
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: http
namespace: gitea
spec:
version: 3
rules:
- port:
number: 80
backend:
service:
name: gitea-http
port:
number: 3000
- name: onionservice for minio
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: minio
namespace: minio
spec:
version: 3
rules:
- port:
number: 80
backend:
service:
name: minio
port:
number: 9000
- name: onionservice for mastodon
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: mastodon
namespace: mastodon
spec:
version: 3
rules:
- port:
number: 80
backend:
service:
name: mastodon-apache
port:
number: 80
- name: onionservice for owncast
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: http
namespace: owncast
spec:
version: 3
rules:
- port:
number: 80
backend:
service:
name: owncast
port:
number: 8080
+89
View File
@@ -0,0 +1,89 @@
---
# tasks file for mediawiki
- name: Create MediaWiki namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: fictwiki
- name: Deploy MariaDB
kubernetes.core.helm:
name: mariadb
chart_ref: bitnami/mariadb
release_namespace: fictwiki
values:
auth:
rootPassword: "{{ mediawiki_admin_password }}"
username: mediawiki
password: "{{ mediawiki_admin_password }}"
database: mediawiki
primary:
persistence:
size: 4Ti
- name: Create Deployment for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: mediawiki
namespace: fictwiki
spec:
replicas: 1
selector:
matchLabels:
app: mediawiki
template:
metadata:
labels:
app: mediawiki
spec:
containers:
- name: mediawiki
image: mediawiki
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 2Gi
ports:
- containerPort: 80
- name: Create Service for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: mediawiki
namespace: fictwiki
spec:
selector:
app: mediawiki
ports:
- port: 80
name: http
type: ClusterIP
- name: Create OnionService
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: mediawiki
namespace: fictwiki
spec:
version: 3
rules:
- port:
number: 80
backend:
service:
name: mediawiki
port:
number: 80
+3 -17
View File
@@ -38,23 +38,6 @@
secretName: gitea-tls
persistence:
size: 2Ti
actions:
enabled: true
provisioning:
enabled: true
statefulset:
actRunner:
config: |
log:
level: debug
cache:
enabled: false
runner:
labels:
- "ubuntu-latest:docker://node:16-bullseye"
- "ubuntu-22.04:docker://node:16-bullseye"
- "ubuntu-20.04:docker://node:16-bullseye"
- "ubuntu-18.04:docker://node:16-buster"
gitea:
metrics:
enabled: true
@@ -82,6 +65,7 @@
SHOW_REGISTRATION_BUTTON: true
DEFAULT_ALLOW_CREATE_ORGANIZATION: false
ALLOW_ONLY_EXTERNAL_REGISTRATION: false
ENABLE_NOTIFY_MAIL: true
oauth2_client:
ENABLE_AUTO_REGISTRATION: true
UPDATE_AVATAR: true
@@ -105,6 +89,8 @@
enabled: false
postgresql:
enabled: true
image:
tag: 16.4.0-debian-12-r9
global:
postgresql:
auth:
+34 -8
View File
@@ -188,6 +188,8 @@
mountPath: /tmp/docker-mailserver/opendkim
ports:
- containerPort: 25
- containerPort: 110
- containerPort: 143
- containerPort: 465
- containerPort: 587
- containerPort: 993
@@ -276,14 +278,38 @@
app: mail
ports:
- port: 25
name: smtp-a
- port: 465
name: smtp-b
- port: 587
name: smtps
- port: 993
name: imap
- port: 995
name: smtp
- port: 110
name: pop3
- port: 143
name: imap
- port: 465
name: esmtps
- port: 587
name: esmtp
- port: 993
name: imaps
- port: 995
name: pop3s
type: LoadBalancer
externalTrafficPolicy: Local
- name: onionservice for smtp
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: smtp
namespace: mail
spec:
version: 3
rules:
- port:
number: 25
backend:
service:
name: mail
port:
number: 25
+1 -1
View File
@@ -3,4 +3,4 @@
- name: Deploy
include_tasks: "{{ item }}"
loop:
- gitea.yaml
- monero.yaml
+64 -71
View File
@@ -24,6 +24,22 @@
persistence:
size: 4Ti
- name: Create a persistent volume claim for MediaWiki
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mediawiki
namespace: mediawiki
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 32Gi
- name: Create Deployment for MediaWiki
k8s:
definition:
@@ -44,62 +60,20 @@
spec:
containers:
- name: mediawiki
image: ericomeehan/mediawiki-extended
image: mediawiki
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 2Gi
env:
- name: WIKI_NAME
value: MediaWiki
- name: WIKI_ADMIN
value: mediawiki_admin
- name: WIKI_ADMIN_PASS
value: "{{ mediawiki_admin_password }}"
- name: WIKI_LANG
value: en
- name: WIKI_URL
value: https://mediawiki.eom.dev/
- name: DB_HOST
value: mariadb
- name: DB_PORT
value: "3306"
- name: DB_NAME
value: mediawiki
- name: DB_USER
value: mediawiki
- name: DB_PASS
value: "{{ mediawiki_admin_password }}"
- name: LDAP_BASE
value: dc=eom,dc=dev
- name: LDAP_SERVER_NAME
value: openldap.openldap.svc.cluster.local
- name: LDAP_SERVER_PORT
value: "389"
- name: LDAP_DOMAINNAME
value: openldap.openldap.svc.cluster.local
- name: LDAP_ENCTYPE
value: clear
- name: LDAP_USER_ATTR
value: uid
- name: LDAP_REAL_NAME_ATTR
value: cn
- name: LDAP_MAIL_ATTR
value: mail
- name: LDAP_BIND_USER
value: cn=readonly,dc=eom,dc=dev
- name: LDAP_BIND_PASS
value: "{{ openldap_readonly_password }}"
- name: LDAP_BUREAUCRAT_GROUP
value: cn=Mediawiki Bureaucrats,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_INTERFACE_ADMIN_GROUP
value: cn=Mediawiki Interface Administrators,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_SYSOP_GROUP
value: cn=Mediawiki Sysops,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_SEARCH_FILTER
value: (&(objectClass=posixAccount)(uid=%1$s)(memberOf=cn=Mediawiki Users,ou=MediaWiki,ou=Services,dc=eom,dc=dev))
ports:
- containerPort: 80
volumemounts:
- name: mediawiki
mountpath: /var/www/html
volumes:
- name: mediawiki
persistentVolumeClaim:
claimName: mediawiki
- name: Create Service for MediaWiki
k8s:
@@ -117,31 +91,50 @@
name: http
type: ClusterIP
- name: Create Ingress
- name: Create OnionService
k8s:
state: present
definition:
apiVersion: networking.k8s.io/v1
kind: Ingress
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
annotations:
cert-manager.io/cluster-issuer: ca-issuer
name: mediawiki
namespace: mediawiki
spec:
ingressClassName: nginx
version: 3
rules:
- host: mediawiki.eom.dev
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: mediawiki
port:
number: 80
tls:
- hosts:
- mediawiki.eom.dev
secretName: mediawiki
- port:
number: 80
backend:
service:
name: mediawiki
port:
number: 80
#- name: Create Ingress
# k8s:
# state: present
# definition:
# apiVersion: networking.k8s.io/v1
# kind: Ingress
# metadata:
# annotations:
# cert-manager.io/cluster-issuer: ca-issuer
# name: mediawiki
# namespace: mediawiki
# spec:
# ingressClassName: nginx
# rules:
# - host: mediawiki.eom.dev
# http:
# paths:
# - pathType: Prefix
# path: /
# backend:
# service:
# name: mediawiki
# port:
# number: 80
# tls:
# - hosts:
# - mediawiki.eom.dev
# secretName: mediawiki
+147
View File
@@ -0,0 +1,147 @@
---
# tasks file for mediawiki
- name: Create MediaWiki namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: mediawiki
- name: Deploy MariaDB
kubernetes.core.helm:
name: mariadb
chart_ref: bitnami/mariadb
release_namespace: mediawiki
values:
auth:
rootPassword: "{{ mediawiki_admin_password }}"
username: mediawiki
password: "{{ mediawiki_admin_password }}"
database: mediawiki
primary:
persistence:
size: 4Ti
- name: Create Deployment for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: mediawiki
namespace: mediawiki
spec:
replicas: 1
selector:
matchLabels:
app: mediawiki
template:
metadata:
labels:
app: mediawiki
spec:
containers:
- name: mediawiki
image: ericomeehan/mediawiki-extended
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 2Gi
env:
- name: WIKI_NAME
value: MediaWiki
- name: WIKI_ADMIN
value: mediawiki_admin
- name: WIKI_ADMIN_PASS
value: "{{ mediawiki_admin_password }}"
- name: WIKI_LANG
value: en
- name: WIKI_URL
value: https://mediawiki.eom.dev/
- name: DB_HOST
value: mariadb
- name: DB_PORT
value: "3306"
- name: DB_NAME
value: mediawiki
- name: DB_USER
value: mediawiki
- name: DB_PASS
value: "{{ mediawiki_admin_password }}"
- name: LDAP_BASE
value: dc=eom,dc=dev
- name: LDAP_SERVER_NAME
value: openldap.openldap.svc.cluster.local
- name: LDAP_SERVER_PORT
value: "389"
- name: LDAP_DOMAINNAME
value: openldap.openldap.svc.cluster.local
- name: LDAP_ENCTYPE
value: clear
- name: LDAP_USER_ATTR
value: uid
- name: LDAP_REAL_NAME_ATTR
value: cn
- name: LDAP_MAIL_ATTR
value: mail
- name: LDAP_BIND_USER
value: cn=readonly,dc=eom,dc=dev
- name: LDAP_BIND_PASS
value: "{{ openldap_readonly_password }}"
- name: LDAP_BUREAUCRAT_GROUP
value: cn=Mediawiki Bureaucrats,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_INTERFACE_ADMIN_GROUP
value: cn=Mediawiki Interface Administrators,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_SYSOP_GROUP
value: cn=Mediawiki Sysops,ou=MediaWiki,ou=Services,dc=eom,dc=dev
- name: LDAP_SEARCH_FILTER
value: (&(objectClass=posixAccount)(uid=%1$s)(memberOf=cn=Mediawiki Users,ou=MediaWiki,ou=Services,dc=eom,dc=dev))
ports:
- containerPort: 80
- name: Create Service for MediaWiki
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: mediawiki
namespace: mediawiki
spec:
selector:
app: mediawiki
ports:
- port: 80
name: http
type: ClusterIP
- name: Create Ingress
k8s:
state: present
definition:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: ca-issuer
name: mediawiki
namespace: mediawiki
spec:
ingressClassName: nginx
rules:
- host: mediawiki.eom.dev
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: mediawiki
port:
number: 80
tls:
- hosts:
- mediawiki.eom.dev
secretName: mediawiki
+328
View File
@@ -0,0 +1,328 @@
---
# tasks file for monero
- name: Create Monero namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: monero
- name: Create PVC for Monero
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
namespace: monero
spec:
storageClassName: r720-nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 512Gi
- name: Create PVC for P2Pool
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: p2pool
namespace: monero
spec:
storageClassName: r720-nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Gi
- name: Create a Tor instance for Monerod
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: Tor
metadata:
name: tor
namespace: monero
- name: Create Deployment for Monerod
when: setup
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: monerod
namespace: monero
spec:
replicas: 1
selector:
matchLabels:
app: monerod
template:
metadata:
labels:
app: monerod
spec:
containers:
- name: monerod
image: nginx
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 2Gi
ports:
- containerPort: 18080
- containerPort: 18081
- containerPort: 18083
- containerPort: 18084
volumeMounts:
- name: data
mountPath: /data
- name: p2pool
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3333
- containerPort: 37889
volumes:
- name: data
persistentVolumeClaim:
claimName: data
- name: Create Service for Monero
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: monerod
namespace: monero
spec:
selector:
app: monerod
ports:
- port: 18080
name: p2p
- port: 18081
name: rpc
- port: 18083
name: zmq
- port: 18084
name: anonp2p
type: ClusterIP
- name: Create Service for P2Pool
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: p2pool
namespace: monero
spec:
selector:
app: p2pool
ports:
- port: 3333
name: mine
- port: 37889
name: p2p
type: LoadBalancer
- name: Create OnionService
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: rpc
namespace: monero
spec:
version: 3
rules:
- port:
number: 18081
backend:
service:
name: monerod
port:
number: 18081
- name: Create OnionService
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: p2p
namespace: monero
spec:
version: 3
rules:
- port:
number: 18084
backend:
service:
name: monerod
port:
number: 18084
- name: Create OnionService
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: mining
namespace: monero
spec:
version: 3
rules:
- port:
number: 3333
backend:
service:
name: p2pool
port:
number: 3333
- name: Create OnionService
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: p2poolp2p
namespace: monero
spec:
version: 3
rules:
- port:
number: 37889
backend:
service:
name: p2pool
port:
number: 37889
- name: Get p2p OnionService info
kubernetes.core.k8s_info:
api_version: tor.k8s.torproject.org/v1alpha2
kind: OnionService
namespace: monero
field_selectors:
- metadata.name=p2p
register: p2p_onionservice
- name: Get p2pool OnionService info
kubernetes.core.k8s_info:
api_version: tor.k8s.torproject.org/v1alpha2
kind: OnionService
namespace: monero
field_selectors:
- metadata.name=p2poolp2p
register: p2pool_onionservice
- name: Get Tor Service info
kubernetes.core.k8s_info:
api_version: v1
kind: Service
namespace: monero
field_selectors:
- metadata.name=tor-tor-svc
register: tor_svc
- name: Edit Deployment for Monerod
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: monerod
namespace: monero
spec:
replicas: 1
selector:
matchLabels:
app: monerod
template:
metadata:
labels:
app: monerod
spec:
containers:
- name: monerod
image: ericomeehan/monerod:latest
imagePullPolicy: Always
command:
- monerod
args:
- "--proxy={{ tor_svc.resources[0].spec.clusterIP }}:9050"
- "--p2p-bind-ip=0.0.0.0"
- "--p2p-bind-port=18080"
- "--rpc-bind-ip=0.0.0.0"
- "--rpc-bind-port=18081"
- "--tx-proxy=tor,{{ tor_svc.resources[0].spec.clusterIP }}:9050"
- "--anonymous-inbound={{ p2p_onionservice.resources[0].status.hostname }}:18084,0.0.0.0:18084"
- "--data-dir=/data"
- "--zmq-pub=tcp://127.0.0.1:18083"
- "--non-interactive"
- "--no-igd"
- "--confirm-external-bind"
resources:
requests:
memory: 2Gi
ports:
- containerPort: 18080
- containerPort: 18081
- containerPort: 18083
- containerPort: 18084
volumeMounts:
- name: monerod
mountPath: /data
- name: p2pool
image: ericomeehan/p2pool:latest
imagePullPolicy: IfNotPresent
command:
- p2pool
args:
- "--host"
- "127.0.0.1"
- "--rpc-port"
- "18081"
- "--wallet"
- "{{ monero_p2pool_wallet_address }}"
- "--stratum"
- "0.0.0.0:3333"
- "--p2p"
- "0.0.0.0:37889"
- "--addpeers"
- "65.21.227.114:37889"
- "--socks5"
- "{{ tor_svc.resources[0].spec.clusterIP }}:9050"
- "--no-dns"
- "--no-upnp"
- "--onion-address"
- "{{ p2pool_onionservice.resources[0].status.hostname }}"
ports:
- containerPort: 3333
- containerPort: 37889
volumeMounts:
- name: p2pool
mountPath: /home/p2pool
volumes:
- name: monerod
persistentVolumeClaim:
claimName: data
- name: p2pool
persistentVolumeClaim:
claimName: p2pool
+264
View File
@@ -0,0 +1,264 @@
---
# tasks file for monero
- name: Create Monero namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: monero
- name: Create PVC for Monero
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
namespace: monero
spec:
storageClassName: r720-nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 512Gi
- name: Create PVC for P2Pool
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: p2pool
namespace: monero
spec:
storageClassName: r720-nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Gi
- name: Request a certificate for Monero
k8s:
state: present
definition:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: monerotls
namespace: monero
spec:
secretName: monerotls
privateKey:
algorithm: RSA
encoding: PKCS1
size: 2048
duration: 2160h # 90d
renewBefore: 360h # 15d
isCA: false
usages:
- server auth
- client auth
subject:
organizations:
- EOM
commonName: monerod.eom.dev
dnsNames:
- monerod.eom.dev
issuerRef:
name: ca-issuer
kind: ClusterIssuer
- name: Request a certificate for p2pool
k8s:
state: present
definition:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: tls
namespace: monero
spec:
secretName: tls
privateKey:
algorithm: RSA
encoding: PKCS1
size: 2048
duration: 2160h # 90d
renewBefore: 360h # 15d
isCA: false
usages:
- server auth
- client auth
subject:
organizations:
- EOM
commonName: p2pool.eom.dev
dnsNames:
- p2pool.eom.dev
issuerRef:
name: ca-issuer
kind: ClusterIssuer
- name: Edit Deployment for Monerod
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: monerod
namespace: monero
spec:
replicas: 1
selector:
matchLabels:
app: monerod
template:
metadata:
labels:
app: monerod
spec:
containers:
- name: monerod
image: ericomeehan/monerod:latest
imagePullPolicy: Always
command:
- monerod
args:
- "--p2p-bind-ip=0.0.0.0"
- "--p2p-bind-port=18080"
- "--rpc-bind-ip=0.0.0.0"
- "--rpc-bind-port=18081"
- "--restricted-rpc"
- "--rpc-login={{ monerod_user }}:{{ monerod_password }}"
- "--data-dir=/data"
- "--zmq-pub=tcp://127.0.0.1:18083"
- "--rpc-ssl=enabled"
- "--rpc-ssl-private-key=/etc/letsencrypt/tls.key"
- "--rpc-ssl-certificate=/etc/letsencrypt/tls.crt"
- "--non-interactive"
- "--no-igd"
- "--confirm-external-bind"
- "--bootstrap-daemon-address=auto"
resources:
requests:
memory: 2Gi
ports:
- containerPort: 18080
- containerPort: 18081
- containerPort: 18083
volumeMounts:
- name: monerod
mountPath: /data
- name: monerotls
mountPath: /etc/letsencrypt
volumes:
- name: monerod
persistentVolumeClaim:
claimName: data
- name: monerotls
secret:
secretName: monerotls
- name: deploy p2pool
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: p2pool
namespace: monero
spec:
replicas: 1
selector:
matchLabels:
app: p2pool
template:
metadata:
labels:
app: p2pool
spec:
containers:
- name: p2pool
image: ericomeehan/p2pool:latest
imagePullPolicy: IfNotPresent
command:
- p2pool
args:
- "--host"
- "monerod"
- "--rpc-port"
- "18081"
- "--wallet"
- "{{ monero_p2pool_wallet_address }}"
- "--stratum"
- "0.0.0.0:3333"
- "--p2p"
- "0.0.0.0:37889"
- "--addpeers"
- "65.21.227.114:37889"
- "--tls-cert"
- "/etc/letsencrypt/tls.crt"
- "--tls-cert-key"
- "/etc/letsencrypt/tls.key"
- "--rpc-ssl"
- "--rpc-login={{ monerod_user }}:{{ monerod_password }}"
ports:
- containerPort: 3333
- containerPort: 37889
volumeMounts:
- name: p2pool
mountPath: /home/p2pool
- name: tls
mountPath: /etc/letsencrypt
volumes:
- name: p2pool
persistentVolumeClaim:
claimName: p2pool
- name: tls
secret:
secretName: tls
- name: monero service
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: monerod
namespace: monero
spec:
selector:
app: monerod
ports:
- port: 18080
name: p2p
- port: 18081
name: rpc
- port: 18083
name: zmq
type: LoadBalancer
- name: p2pool service
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: p2pool
namespace: monero
spec:
selector:
app: p2pool
ports:
- port: 3333
name: mine
- port: 37889
name: p2poolp2p
type: LoadBalancer
+1 -1
View File
@@ -48,7 +48,7 @@
spec:
containers:
- name: owncast
image: owncast/owncast:0.2.0
image: owncast/owncast:0.3.0
resources:
requests:
cpu: 1.5
+191
View File
@@ -0,0 +1,191 @@
---
# tasks file for monero
- name: Create P2Pool namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: p2pool
- name: Create PVC for P2Pool
k8s:
state: present
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
namespace: p2pool
spec:
storageClassName: r720-nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Gi
- name: Create a Tor instance for P2Poold
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: Tor
metadata:
name: tor
namespace: p2pool
- name: Create Deployment for P2Poold
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: p2pool
namespace: p2pool
spec:
replicas: 1
selector:
matchLabels:
app: p2pool
template:
metadata:
labels:
app: p2pool
spec:
containers:
- name: p2pool
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3333
- containerPort: 37889
- name: Create Service for P2Pool
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: p2pool
namespace: p2pool
spec:
selector:
app: p2pool
ports:
- port: 3333
name: mine
- port: 37889
name: p2p
type: ClusterIP
- name: Create OnionService for mining
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: mining
namespace: p2pool
spec:
version: 3
rules:
- port:
number: 3333
backend:
service:
name: p2pool
port:
number: 3333
- name: Create OnionService for P2P
k8s:
definition:
apiVersion: tor.k8s.torproject.org/v1alpha2
kind: OnionService
metadata:
name: p2p
namespace: p2pool
spec:
version: 3
rules:
- port:
number: 28722
backend:
service:
name: p2pool
port:
number: 37889
- name: Get Tor Service info
kubernetes.core.k8s_info:
api_version: v1
kind: Service
namespace: p2pool
field_selectors:
- metadata.name=tor-tor-svc
register: tor_svc
- name: Get p2pool OnionService info
kubernetes.core.k8s_info:
api_version: tor.k8s.torproject.org/v1alpha2
kind: OnionService
namespace: p2pool
field_selectors:
- metadata.name=p2p
register: p2pool_onionservice
- name: Edit Deployment for P2Poold
k8s:
definition:
apiVersion: v1
kind: Deployment
metadata:
name: p2pool
namespace: p2pool
spec:
replicas: 1
selector:
matchLabels:
app: p2pool
template:
metadata:
labels:
app: p2pool
spec:
containers:
- name: p2pool
image: ericomeehan/p2pool:latest
imagePullPolicy: IfNotPresent
command:
- p2pool
args:
- "--host"
- "{{ monero_p2pool_hostname }}"
- "--rpc-port"
- "18081"
- "--wallet"
- "{{ monero_p2pool_wallet_address }}"
- "--stratum"
- "0.0.0.0:3333"
- "--p2p"
- "0.0.0.0:37889"
- "--addpeers"
- "65.21.227.114:37889"
- "--socks5"
- "{{ tor_svc.resources[0].spec.clusterIP }}:9050"
- "--no-dns"
- "--no-upnp"
- "--onion-address"
- "{{ p2pool_onionservice.resources[0].status.hostname }}"
ports:
- containerPort: 3333
- containerPort: 37889
volumeMounts:
- name: data
mountPath: /home/p2pool
volumes:
- name: data
persistentVolumeClaim:
claimName: data
+45 -52
View File
@@ -7,37 +7,17 @@
release_namespace: prometheus
create_namespace: true
values:
alertmanager:
image:
repository: bitnamilegacy/alertmanager
tag: 0.28.1-debian-12-r15
server:
image:
repository: bitnamilegacy/prometheus
tag: 3.5.0-debian-12-r3
persistence:
size: 256Gi
extraScrapeConfigs:
- job_name: apps
static_configs:
- targets:
- discourse.eom.dev
labels:
instance: discourse
- targets:
- gitea.eom.dev
labels:
instance: gitea
- targets:
- grafana.eom.dev
labels:
instance: grafana
metrics_path: /metrics
- job_name: owncast
scrape_interval: 1m
metrics_path: /api/admin/prometheus
scheme: https
basic_auth:
username: admin
password: "{{ owncast_admin_password }}"
static_config:
- targets:
- owncast.eom.dev
- job_name: local
static_configs:
- targets:
@@ -45,103 +25,116 @@
labels:
instance: nextcloud
- targets:
- matrix-synapse.matrix.svc.cluster.local:9092
- ingress-nginx-controller-metrics.ingress-nginx.svc.cluster.local:10254
- job_name: www
static_configs:
- targets:
- prometheus.www.svc.cluster.local:9117
labels:
instance: matrix
metrics_path: /
instance: www
metrics_path: /metrics
- job_name: libvirt_exporter
static_configs:
- targets:
- 192.168.1.48:9177
- poweredge-t640:9177
labels:
instance: poweredge-t640
- targets:
- poweredge-r720:9177
labels:
instance: poweredge-r720
metrics_path: /metrics
- job_name: node_exporter
static_configs:
- targets:
- 192.168.1.95:9100
- poweredge-r350:9100
labels:
instance: poweredge-r350
- targets:
- 192.168.1.48:9100
- poweredge-t640:9100
labels:
instance: poweredge-t640
- targets:
- 192.168.1.59:9100
- poweredge-r720:9100
labels:
instance: poweredge-r720
- targets:
- alpha-control-plane:9100
labels:
instance: alpha-control-plane
- targets:
- 192.168.1.91:9100
- alpha-worker-0:9100
labels:
instance: alpha-worker-0
- targets:
- 192.168.1.70:9100
- alpha-worker-1:9100
labels:
instance: alpha-worker-1
- targets:
- 192.168.1.74:9100
- alpha-worker-2:9100
labels:
instance: alpha-worker-2
- targets:
- 192.168.1.75:9100
- alpha-worker-3:9100
labels:
instance: alpha-worker-3
- targets:
- 192.168.1.61:9100
- alpha-worker-4:9100
labels:
instance: alpha-worker-4
- targets:
- 192.168.1.66:9100
- alpha-worker-5:9100
labels:
instance: alpha-worker-5
- targets:
- 192.168.1.38:9100
- alpha-worker-6:9100
labels:
instance: alpha-worker-6
- targets:
- 192.168.1.92:9100
- alpha-worker-7:9100
labels:
instance: alpha-worker-7
- targets:
- 192.168.1.67:9100
- alpha-worker-8:9100
labels:
instance: alpha-worker-8
- targets:
- 192.168.1.63:9100
- alpha-worker-9:9100
labels:
instance: alpha-worker-9
- targets:
- 192.168.1.86:9100
- alpha-worker-10:9100
labels:
instance: alpha-worker-10
- targets:
- 192.168.1.65:9100
- alpha-worker-11:9100
labels:
instance: alpha-worker-11
- targets:
- 192.168.1.72:9100
- alpha-worker-12:9100
labels:
instance: alpha-worker-12
- targets:
- 192.168.1.95:9100
- alpha-worker-13:9100
labels:
instance: alpha-worker-13
- targets:
- 192.168.1.70:9100
- alpha-worker-14:9100
labels:
instance: alpha-worker-14
- targets:
- 192.168.1.46:9100
- alpha-worker-15:9100
labels:
instance: alpha-worker-15
- targets:
- 192.168.1.74:9100
- alpha-worker-16:9100
labels:
instance: alpha-worker-16
- targets:
- 192.168.1.88:9100
- alpha-worker-17:9100
labels:
instance: alpha-worker-17
metrics_path: /metrics
+27 -4
View File
@@ -16,7 +16,7 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: config
name: data
namespace: tes3mp
spec:
accessModes:
@@ -25,6 +25,18 @@
requests:
storage: 16Gi
- name: Create a config map
k8s:
state: present
definition:
apiVersion: v1
kind: ConfigMap
metadata:
name: config
namespace: tes3mp
data:
tes3mp-server-default.cfg: "{{ lookup('template', 'tes3mp-server-default.cfg.j2') }}"
- name: Create a deployment
k8s:
definition:
@@ -45,21 +57,32 @@
spec:
containers:
- name: tes3mp
image: tes3mp/server
image: tes3mp/server:0.7.0
imagePullPolicy: Always
volumeMounts:
- name: data
mountPath: /server/data
- name: config
mountPath: /server/tes3mp-server-default.cfg
subPath: tes3mp-server-default.cfg
ports:
- containerPort: 25565
env:
- name: TES3MP_SERVER_GENERAL_HOSTNAME
value: tes3.eom.dev
- name: TES3MP_SERVER_GENERAL_PASSWORD
value: "{{ tes3mp_password }}"
value: "{{ tes3mp_server_general_password }}"
command:
- "./tes3mp-server"
args:
- "$@"
volumes:
- name: data
persistentVolumeClaim:
claimName: data
- name: config
configMap:
name: config
- name: Expose deployment as a service
k8s:
@@ -73,7 +96,7 @@
selector:
app: tes3mp
ports:
- port: 25566
- port: 25565
targetPort: 25565
name: tes3mp
protocol: UDP