Skip to content

Alternative wings for https://pterodactyl.io/ written in Java. Improved scalability through Kubernetes support.

License

Notifications You must be signed in to change notification settings

Fabian-Kru/java-wings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JavaWings

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


Simple Setup Diagram

image


Supported Nest/Eggs

  • Minecraft

    • Paper/Spigot/Sponge
    • Bungeecord/Velocity
    • Vanilla Minecraft
  • Voiceserver

    • Teamspeak
    • Mumble (not tested)
  • Source Engines (not tested)

  • Rust (not tested)


Prerequisites

  • Installed https://pterodactyl.io/ Panel
  • Kubernetes-Cluster
  • Samba Server (or similar compatible with CSI-Driver)
  • Java 17 or higher

optional Requirements

  • Kubernetes Autoscaler
  • Kubernetes Metrics Server

Additional Features

  • Kubernetes-Support
  • Pay-Per-Use ready
    • Track Pod online time
    • Track Pod resource usage

Feature Status

  • 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

Removed Features

  • Transfer Server (not needed)

Dependencies

  • 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)

Known Issues

  • None

Installation

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

1. Installing Wings

TODO

2. Configuration

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.


FAQ

  • Soon

About

Alternative wings for https://pterodactyl.io/ written in Java. Improved scalability through Kubernetes support.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published