apiVersion: apps/v1 kind: Deployment metadata: name: enigmabbs namespace: enigmabbs spec: replicas: 1 selector: matchLabels: app: enigmabbs template: metadata: labels: app: enigmabbs spec: initContainers: - name: init-check image: busybox:latest command: ["/bin/sh", "-c"] args: - | echo "Checking for existing processes on port 8888..." netstat -tlnp 2>/dev/null | grep 8888 || echo "Port 8888 is free" - name: init-config image: enigmabbs/enigma-bbs:latest command: ["/bin/sh", "-c"] args: - | set -e echo "Creating directories..." mkdir -p /enigma-bbs/config/security mkdir -p /enigma-bbs/config/menus mkdir -p /enigma-bbs/db mkdir -p /enigma-bbs/filebase echo "Copying SSH key from secret..." cp /enigma-ssh-key/ssh_private_key.pem /enigma-bbs/config/security/ssh_private_key.pem chmod 600 /enigma-bbs/config/security/ssh_private_key.pem echo "Creating config.hjson..." cat > /enigma-bbs/config/config.hjson << 'EOF' { system: { bbsName: "Enigma BBS" bbsTimeZone: "America/New_York" bbsNodeNumber: 1 domain: "enigma.giaco.net" } loginServers: { telnet: { enabled: true port: 8888 } ssh: { enabled: true port: 44511 privateKeyPem: "/enigma-bbs/config/security/ssh_private_key.pem" privateKeyPass: "" } } contentServers: { web: { domain: "enigma.giaco.net" http: { enabled: true port: 8888 } } } security: { secureLoginOnly: false requireSecureConnections: false } } EOF echo "Creating achievements.hjson..." cat > /enigma-bbs/config/achievements.hjson << 'EOF' { systemAchievements: { } } EOF echo "Creating menu.hjson..." cat > /enigma-bbs/config/menu.hjson << 'EOF' { menus: { someMenu: { } } } EOF echo "Init completed" volumeMounts: - name: enigmabbs-config mountPath: /enigma-bbs/config - name: enigmabbs-data mountPath: /enigma-bbs/db - name: enigmabbs-art mountPath: /enigma-bbs/art - name: enigmabbs-mods mountPath: /enigma-bbs/mods - name: enigmabbs-ssh-key-volume mountPath: /enigma-ssh-key readOnly: true containers: - name: enigmabbs image: enigmabbs/enigma-bbs:latest imagePullPolicy: Always command: ["/bin/sh", "-c"] args: - | set -e echo "Killing any existing pm2 processes..." pm2 delete all || true pm2 kill || true sleep 2 echo "Starting Enigma BBS..." exec pm2-runtime main.js ports: - containerPort: 8888 name: web - containerPort: 44510 name: telnet - containerPort: 44511 name: ssh env: - name: NODE_ENV value: "production" volumeMounts: - name: enigmabbs-data mountPath: /enigma-bbs/db - name: enigmabbs-art mountPath: /enigma-bbs/art - name: enigmabbs-config mountPath: /enigma-bbs/config - name: enigmabbs-mods mountPath: /enigma-bbs/mods - name: enigmabbs-logs mountPath: /enigma-bbs/logs resources: requests: memory: "512Mi" cpu: "500m" limits: memory: "2Gi" cpu: "1000m" readinessProbe: tcpSocket: port: 8888 initialDelaySeconds: 90 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 5 livenessProbe: tcpSocket: port: 8888 initialDelaySeconds: 180 periodSeconds: 30 timeoutSeconds: 10 failureThreshold: 3 volumes: - name: enigmabbs-data persistentVolumeClaim: claimName: enigmabbs-data - name: enigmabbs-art persistentVolumeClaim: claimName: enigmabbs-art - name: enigmabbs-config emptyDir: {} - name: enigmabbs-ssh-key-volume secret: secretName: enigmabbs-ssh-key - name: enigmabbs-mods persistentVolumeClaim: claimName: enigmabbs-mods - name: enigmabbs-logs emptyDir: {}