Wings for Pterodactyl-Panel written in Java and with builtin Kubernetes support.
JavaWings replaces the conventional Wings, as a result of the replacement Docker is no longer used internally.
Kubernetes is used instead.
The aim of JavaWings is to efficiently distribute game servers with short and long lifetimes and to add the possibility of scaling.
Note
This project is still in development and not ready for production use.
Note
Discord: get help or ask questions: https://discord.gg/vsMUf8yhp6
Supported Nest/Eggs
-
Minecraft
- Paper/Spigot/Sponge
- Bungeecord/Velocity
- Vanilla Minecraft
-
Voiceserver
- Teamspeak
- Mumble (not tested)
-
Source Engines (not tested)
-
Rust (not tested)
- Installed https://pterodactyl.io/ Panel
- Kubernetes-Cluster
- Samba Server (or similar compatible with CSI-Driver)
- Java 17 or higher
- Kubernetes Autoscaler
- Kubernetes Metrics Server
- Kubernetes-Support
- Pay-Per-Use ready
- Track Pod online time
- Track Pod resource usage
- Built-in SFTP Server
- Node-Stats
- Server Mounts
- Create Server
- Delete Server
- Server Console View
- Server Console Commands
- Server Status Change
- Server Statistic (Uptime, CPU, Memory)
- Server Statistic (Network, Disk)
- Files edit/create-directory/create-file/delete
- File/Folder rename
- File download/upload
- File compress/decompress
- Schedules
- Users
- Backups (create, restore, lock/unlock)
- Backups (exclude files)
- Network-Tab
- Settings-Tab
- use StartUp
- Transfer Server (not needed)
- snakeyaml (org.yaml:snakeyaml)
- bson (org.mongodb:bson)
- java-jwt (com.auth0:java-jwt)
- sshd-sftp (org.apache.sshd:sshd-sftp)
- sshd-core (org.apache.sshd:sshd-core)
- org.json (org.json:json)
- eddsa (net.i2p.crypto:eddsa)
- zip4j (net.lingala.zip4j:zip4j)
- Mina-sshd
- Kubernetes-Java
- hcloud (for Hetzner)
- None
0. Installing Kubernetes-CSI-Driver
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/v1.14.0/deploy/install-driver.sh | bash -s v1.14.0 --
Create credentials for SMB-Share
kubectl create secret generic smbcreds --from-literal username='USERNAME' --from-literal password='PASSWORD' -n java-wings
Create PersistentVolume.yml & kubectl apply -f PersistentVolume.yaml -n java-wings
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: smb.csi.k8s.io
name: pv-java-wings-storage
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: smb
mountOptions:
- dir_mode=0777
- file_mode=0777
csi:
driver: smb.csi.k8s.io
readOnly: false
# make sure this value is unique for every share in the cluster
volumeHandle: java-wings-storage-test
volumeAttributes:
source: "//<STORAGE-IP>/<STORAGE-SHARE>/" # Change this to your SMB IP and share name
nodeStageSecretRef:
name: smbcreds
namespace: default
Create PersistentVolumeClaim.yaml & kubectl apply -f PersistentVolumeClaim.yaml -n java-wings
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-java-wings-storage
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi #adjust this to your needs
volumeName: pv-java-wings-storage
storageClassName: smb
TODO
Once you have installed Wings and the required components, the next step is to create a node on your installed Panel. Go to your Panel administrative view, select Nodes from the sidebar, and on the right side click Create New button.
After you have created a node, click on it and there will be a tab called Configuration. Copy the code block content, paste it into a new file called config.yml in /etc/pterodactyl and save it.
- Soon