Add The Lounge web IRC client

This commit is contained in:
Andrew Stoltz
2026-04-16 19:10:10 -05:00
parent 4f33d7a053
commit 9d0da584af

View File

@@ -1,4 +1,4 @@
# UnrealIRCd + Anope IRC Services # UnrealIRCd + Anope IRC Services + The Lounge web client
# ArgoCD managed - BlueJay Lab # ArgoCD managed - BlueJay Lab
# Credentials: 1Password → OnePasswordItem → K8s Secret → initContainer sed injection # Credentials: 1Password → OnePasswordItem → K8s Secret → initContainer sed injection
--- ---
@@ -32,6 +32,58 @@ spec:
dnsNames: dnsNames:
- irc.iamworkin.lan - irc.iamworkin.lan
--- ---
# TLS Certificate for The Lounge web IRC
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: webirc-tls
namespace: irc
spec:
secretName: webirc-tls
issuerRef:
name: step-ca-acme
kind: ClusterIssuer
dnsNames:
- webirc.iamworkin.lan
---
# The Lounge configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: thelounge-config
namespace: irc
data:
config.js: |
"use strict";
module.exports = {
public: true,
host: "0.0.0.0",
port: 9000,
reverseProxy: true,
maxHistory: 2500,
theme: "default",
prefetch: false,
disableMediaPreview: true,
fileUpload: {
enable: false
},
defaults: {
name: "BlueJayIRC",
host: "unrealircd.irc.svc.cluster.local",
port: 6667,
password: "",
tls: false,
rejectUnauthorized: true,
nick: "BlueJayWeb%%",
username: "bluejayweb",
realname: "BlueJay Web IRC",
join: "#general"
},
lockNetwork: true,
leaveMessage: "BlueJay Web IRC"
};
---
# UnrealIRCd configuration template (passwords replaced by placeholders) # UnrealIRCd configuration template (passwords replaced by placeholders)
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
@@ -614,6 +666,58 @@ spec:
persistentVolumeClaim: persistentVolumeClaim:
claimName: anope-data claimName: anope-data
--- ---
# The Lounge web IRC Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: thelounge
namespace: irc
labels:
app: thelounge
spec:
replicas: 1
selector:
matchLabels:
app: thelounge
template:
metadata:
labels:
app: thelounge
spec:
containers:
- name: thelounge
image: ghcr.io/thelounge/thelounge:4.4.3
ports:
- containerPort: 9000
name: http
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 30
periodSeconds: 20
resources:
requests:
memory: 64Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 250m
volumeMounts:
- name: thelounge-config
mountPath: /var/opt/thelounge/config.js
subPath: config.js
volumes:
- name: thelounge-config
configMap:
name: thelounge-config
---
# UnrealIRCd Service # UnrealIRCd Service
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
@@ -648,6 +752,20 @@ spec:
targetPort: 8067 targetPort: 8067
name: services-link name: services-link
--- ---
# The Lounge web IRC Service
apiVersion: v1
kind: Service
metadata:
name: thelounge
namespace: irc
spec:
selector:
app: thelounge
ports:
- port: 9000
targetPort: 9000
name: http
---
# Traefik IngressRouteTCP - IRC plain (6667) # Traefik IngressRouteTCP - IRC plain (6667)
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP kind: IngressRouteTCP
@@ -679,3 +797,21 @@ spec:
port: 6697 port: 6697
tls: tls:
passthrough: true passthrough: true
---
# Traefik IngressRoute - The Lounge web IRC
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: webirc
namespace: irc
spec:
entryPoints:
- websecure
routes:
- match: Host(`webirc.iamworkin.lan`)
kind: Rule
services:
- name: thelounge
port: 9000
tls:
secretName: webirc-tls