59 Commits

Author SHA1 Message Date
Softwarenoob
75af71a122 ci(base): Correct package path 2021-08-24 20:50:37 +03:00
Torsten Widmann
61e341587e Add Dotnet 2.1, 3.1, 5.0 Docker Images (#9)
* Add Dotnet 2.1, 3.2, 5.0 Docker Images
2021-08-24 20:10:35 +03:00
Torsten Widmann
581038a328 Fix for Debian Bullyeye (#8) 2021-08-22 20:46:05 +03:00
Torsten Widmann
7c0061618f Updated package, for Bullseye (#7) 2021-08-22 20:45:45 +03:00
Softwarenoob
86a97cf362 feat: migrate all java images from alpine to debian 2021-08-22 04:44:01 +03:00
Softwarenoob
4884c6728b docs: fix ubuntu os image typo 2021-08-06 23:34:19 +03:00
Softwarenoob
2db7d40454 fix: oses workflow migration
fix building oses images after migrating them over
2021-08-06 23:31:39 +03:00
Softwarenoob
36f90183e2 fix: build workflows and migrate base to oses
Fix bot image workflow build and migrate base images to oses since it appears we already have such folder - although badly named (why not base?).
2021-08-06 23:20:24 +03:00
Softwarenoob
ba43d5ab59 fix: attemp to fix workflow 2021-08-06 22:33:07 +03:00
Softwarenoob
eb515743e7 feat: add base_ubuntu and base_debian images
Base images that self-hosted with other images importing these to build the image
2021-08-06 22:18:34 +03:00
Softwarenoob
4650340592 feat: add bot specific docker images
Migrates over docker images that are required to run specific bots
2021-08-06 22:17:06 +03:00
Softwarenoob
6b1fde7b50 feat: migrate Python images based on eval startup to support Discord egg
Migrates Python images from images fork with eval startup that correctly parses the Discord.py startup parameters
2021-08-06 21:55:29 +03:00
Softwarenoob
d8126cc628 feat: add nodejs images with eval startup to work with Discord eggs
Porting over nodejs images to yolks which use eval startup to properly manage the discord.js egg startup parameters
2021-08-06 21:48:59 +03:00
Alex
a8b0860d28 Merge pull request #6 from pascal-zarrad/feature/improve-cassandra-images
Improve Cassandra images
2021-08-04 01:57:49 +03:00
Pascal Zarrad
9c976a7aad Add pytz module 2021-08-03 23:07:39 +02:00
Pascal Zarrad
58a430d459 Add java version output to entrypoint 2021-08-03 22:29:17 +02:00
Alex
d5527b5c7f Merge pull request #5 from pascal-zarrad/feature/cassandra
Add a Apache Cassandra image
2021-08-02 00:04:26 +03:00
Pascal Zarrad
70af7a9dff Make cassandra to a generic yolks image 2021-08-01 22:45:33 +02:00
Pascal Zarrad
b797d567e4 Fix version printing 2021-08-01 22:44:01 +02:00
Pascal Zarrad
46ac715efa Add software build GitHub action 2021-08-01 22:44:01 +02:00
Pascal Zarrad
8b6f7a652a Add cassandra images to readme 2021-08-01 22:43:46 +02:00
Pascal Zarrad
ea0c2fe67c Add cassandra images 2021-08-01 20:44:10 +02:00
Softwarenoob
88a6c5f1ae docs: update installation readme title
Points installation image title to the folder to match the readme format
2021-07-18 03:42:05 +03:00
Softwarenoob
b5c8d7ccc6 docs: easier to read image list
Differentiates each image section making it easier to navigate and differentiate
2021-07-18 03:38:58 +03:00
Softwarenoob
c42fc50cbd docs: update debian-install
Updates debian-install point to the correct new folder and pull link. resolves #4
2021-07-18 03:20:59 +03:00
Alex
681b068b4f patch: workflow registry
Use correct registry for pushing built erlang images
2021-07-17 17:37:46 +03:00
Alex
cb449862c6 Merge pull request #3 from pascal-zarrad/feature/erlang
Add erlang images
2021-07-17 01:13:51 +03:00
Pascal Zarrad
be19be7cee Add erlang to README 2021-07-14 23:48:37 +02:00
Pascal Zarrad
eaa2d8a25d Add erlang images 2021-07-14 23:30:12 +02:00
Alex
d1c80ea7e3 Merge pull request #2 from lilkingjr1/arma3
Arma 3 - Small Bug Fix
2021-07-14 12:27:58 +03:00
Red-Thirten
577d18ce26 Arma 3 - Small Bug Fix
- Fixed RemoveDuplicates function adding an extra trailing semicolon if the input string is empty.
- Added Aussie Server Hosts as a credited contributor for help and ideas on the project.
2021-07-13 23:24:28 -07:00
Softwarenoob
ff39426961 force rebuild all images 2021-07-14 03:45:37 +03:00
Softwarenoob
7367b5d3b7 migrate workflows to parkervcp repository 2021-07-14 03:42:20 +03:00
Michael (Parker) Parker
3d93b50204 Merge pull request #1 from lilkingjr1/arma3
Add Arma 3 Image
2021-07-13 16:51:17 -07:00
Alex
734e5f2657 Merge branch 'pterodactyl:master' into master 2021-07-14 00:01:12 +03:00
Red-Thirten
4b47c04777 Update entrypoint.sh
- Moved the mod movement, lowercase command, and key movement to the "success" portion of the SteamCMD function to prevent the code from trying to perform these actions on failed mod downloads.
- Changed some of the echos to print this process more cleanly
2021-07-13 12:19:12 -07:00
Red-Thirten
1811271a68 Update entrypoint.sh 2021-07-12 19:57:34 -07:00
Red-Thirten
d3b62017b7 Update games.yml
- Added Arma 3 game image reference
2021-07-12 17:04:15 -07:00
Red-Thirten
06ca1edce7 Added Arma 3 image files
These files originate from https://github.com/parkervcp/images/tree/game/arma3 which is currently hosted at quay.io/parkervcp/pterodactyl-images:game_arma3
However, the entire image has been mainly rewritten in this update, which includes the following changes:
- Code styling / nomenclature has been normalized across the entire file.
- A robust RunSteamCMD function has been added to run SteamCMD with advanced error handling and reporting. Works for both the server and mods, and is configurable with the STEAMCMD_ATTEMPTS environment variable to specify how many times it should retry a download after a recoverable error (like large Workshop mod downloads timing out).
- Added support for a MOD_FILE environment variable, to specify an exported Arma 3 modlist HTML file for import into the server (for downloads and runtime). These mods are combined with any mods listed in MODIFICATIONS.
- A more robust and automatic way of downloading/updating mods is now included with the UPDATE_SERVER function. All mods to be used during runtime are checked for updates by comparing local file's creation dates against the mod's Workshop page last update. This allows for fast and reliable mod updates compared to the old manual system, and allows users to comfortably leave the update server function on all the time if they'd like.
- Added a RemoveDuplicates function to prevent a user from accidentally loading a mod twice.
- Checks for missing, trailing semicolons in manual mod lists due to human error.
- Mod update information echos are less cryptic and now use the mod's human-readable name, as well as printing the date they last updated.
- Made the server binary check error messages less cryptic and provided solution recommendations.
- Added a CLEAR_CACHE env. var. function to delete headless client profiles on startup to help with potential issues they cause.
- Un-hardcoded the basic.cfg URL and replaced with env. var.
- Added HC_HIDE env. var. to prevent headless client console spam.
- Added VALIDATE_SERVER env. var. to manually validate, because the new automatic update function skips validation to speed it up.
- Added CDLC env. var. for easy download of Creator DLCs incase the user doesn't know how to use SteamCMD beta branches.
2021-07-12 17:01:41 -07:00
Red-Thirten
cc01ed7599 Create README.md 2021-07-12 16:56:17 -07:00
Red-Thirten
52cd7be921 Update README.md
- Added Arma 3 game image
- Adjusted all the links to be relative to the root folder to be more robust
2021-07-12 16:50:32 -07:00
Alex
b7ad086aba Add setup-qemu-action for arm64 (#8)
Adds `docker/setup-qemu-action` to the image building workflow, enabling images to be built for architectures and OSes other than `linux/amd64`.
2021-07-09 13:03:10 -06:00
Dane Everitt
fa1bb9757e Also build arm 2021-07-04 14:59:34 -07:00
Dane Everitt
b5747f2fa2 Use only 8, 11, 16 (and OpenJ9 variants) 2021-07-04 14:56:00 -07:00
Dane Everitt
85a16a07c2 Merge branch 'master' of ssh://github.com/pterodactyl/yolks 2021-07-04 14:31:26 -07:00
Dane Everitt
54ad40aec7 Change base java versions to be not openj9 2021-07-04 14:31:24 -07:00
Dane Everitt
5fc972316c Merge pull request #7 from AreYouRlyScared/build/1
Build the new images
2021-07-04 14:29:55 -07:00
Charles Morgan
c32aab2602 Build the new images 2021-06-21 20:13:08 -04:00
Charles Morgan
88180b3f5c Add Base Debian (#5) 2021-06-21 16:27:00 -07:00
Dane Everitt
130bee2129 Merge pull request #6 from AreYouRlyScared/patch-1
Add auto update script
2021-06-19 12:04:20 -07:00
Charles Morgan
9e243293ba Add auto update script
Add's auto-update option inside entry point if `AUTO_UPDATE` flag is set to 1

Pulled from parkers entrypoint for source debian
2021-06-17 20:20:01 -04:00
Dane Everitt
b8ba21765c Update entrypoint.sh 2021-06-13 11:00:35 -07:00
Dane Everitt
aba1860ff3 Merge pull request #4 from AreYouRlyScared/add/basealpine
Add base alpine to workflows
2021-06-13 10:57:24 -07:00
Dane Everitt
9a9f642089 Merge pull request #3 from AreYouRlyScared/update/installname
Change source to debian
2021-06-13 10:56:03 -07:00
Dane Everitt
731a1cbef6 Merge pull request #1 from AreYouRlyScared/readme
Update README.md
2021-06-13 10:55:19 -07:00
Alex
1f91b59cc5 Revert "enable workflows"
This reverts commit 87919ac50d.
2021-06-13 17:31:39 +03:00
Charles Morgan
78f52a2c96 Create alpine.yml 2021-06-05 16:47:35 -04:00
Charles Morgan
a3219c58dc Change source to debian 2021-05-29 21:16:28 -04:00
Charles Morgan
b0132afa46 Update README.md 2021-05-17 21:24:17 -04:00
69 changed files with 1284 additions and 513 deletions

39
.github/workflows/base.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: build oses
on:
schedule:
- cron: "0 0 * * 1"
push:
branches:
- master
paths:
- oses/**
jobs:
push:
name: "yolks:${{ matrix.oses }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
oses:
- alpine
- debian
- ubuntu
steps:
- uses: actions/checkout@v2
- uses: docker/setup-buildx-action@v1
with:
version: "v0.5.1"
buildkitd-flags: --debug
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- uses: docker/build-push-action@v2
with:
context: ./oses/${{ matrix.oses }}
file: ./oses/${{ matrix.oses }}/Dockerfile
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:${{ matrix.oses }}

40
.github/workflows/bot.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: build bot
on:
schedule:
- cron: "0 0 * * 1"
push:
branches:
- master
paths:
- bot/**
jobs:
push:
name: "yolks:bot_${{ matrix.tag }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tag:
- bastion
- parkertron
- red
- sinusbot
steps:
- uses: actions/checkout@v2
- uses: docker/setup-buildx-action@v1
with:
version: "v0.5.1"
buildkitd-flags: --debug
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- uses: docker/build-push-action@v2
with:
context: ./bot/${{ matrix.tag }}
file: ./bot/${{ matrix.tag }}/Dockerfile
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:bot_${{ matrix.tag }}

38
.github/workflows/cassandra.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: build cassandra
on:
schedule:
- cron: "0 0 * * 1"
push:
branches:
- master
paths:
- cassandra/**
jobs:
push:
name: "yolks:cassandra_${{ matrix.tag }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tag:
- java8_python2
- java11_python3
steps:
- uses: actions/checkout@v2
- uses: docker/setup-buildx-action@v1
with:
version: "v0.5.1"
buildkitd-flags: --debug
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- uses: docker/build-push-action@v2
with:
context: ./cassandra
file: ./cassandra/${{ matrix.tag }}/Dockerfile
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:cassandra_${{ matrix.tag }}

41
.github/workflows/dotnet.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: build dotnet
on:
# Allows you to run this workflow manually from the Actions tab
# workflow_dispatch:
schedule:
- cron: "0 0 * * 1"
push:
branches:
- master
paths:
- dotnet/**
jobs:
push:
name: "yolks:dotnet_${{ matrix.tag }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tag:
- 2.1
- 3.1
- 5.0
steps:
- uses: actions/checkout@v2
- uses: docker/setup-buildx-action@v1
with:
version: "v0.5.1"
buildkitd-flags: --debug
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- uses: docker/build-push-action@v2
with:
context: ./dotnet
file: ./dotnet/${{ matrix.tag }}/Dockerfile
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:dotnet_${{ matrix.tag }}

39
.github/workflows/erlang.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: build erlang
on:
schedule:
- cron: "0 0 * * 1"
push:
branches:
- master
paths:
- erlang/**
jobs:
push:
name: "yolks:erlang_${{ matrix.tag }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tag:
- 22
- 23
- 24
steps:
- uses: actions/checkout@v2
- uses: docker/setup-buildx-action@v1
with:
version: "v0.5.1"
buildkitd-flags: --debug
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- uses: docker/build-push-action@v2
with:
context: ./erlang
file: ./erlang/${{ matrix.tag }}/Dockerfile
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:erlang_${{ matrix.tag }}

View File

@@ -15,6 +15,7 @@ jobs:
fail-fast: false
matrix:
game:
- arma3
- fivem
- source
steps:
@@ -35,4 +36,4 @@ jobs:
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/games:${{ matrix.game }}
ghcr.io/parkervcp/games:${{ matrix.game }}

View File

@@ -36,4 +36,4 @@ jobs:
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:go_${{ matrix.tag }}
ghcr.io/parkervcp/yolks:go_${{ matrix.tag }}

View File

@@ -16,7 +16,7 @@ jobs:
matrix:
tag:
- alpine
- source
- debian
steps:
- uses: actions/checkout@v2
- uses: docker/setup-buildx-action@v1
@@ -35,4 +35,4 @@ jobs:
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/installers:${{ matrix.tag }}
ghcr.io/parkervcp/installers:${{ matrix.tag }}

View File

@@ -15,14 +15,15 @@ jobs:
fail-fast: false
matrix:
tag:
- 7
- 8
- 9
- 8j9
- 11
- 14
- 11j9
- 16
- 16j9
steps:
- uses: actions/checkout@v2
- uses: docker/setup-qemu-action@v1
- uses: docker/setup-buildx-action@v1
with:
version: "v0.5.1"
@@ -36,7 +37,7 @@ jobs:
with:
context: ./java
file: ./java/${{ matrix.tag }}/Dockerfile
platforms: linux/amd64
platforms: linux/amd64,linux/arm64
push: true
tags: |
ghcr.io/parkervcp/yolks:java_${{ matrix.tag }}
ghcr.io/parkervcp/yolks:java_${{ matrix.tag }}

View File

@@ -37,4 +37,4 @@ jobs:
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:nodejs_${{ matrix.tag }}
ghcr.io/parkervcp/yolks:nodejs_${{ matrix.tag }}

View File

@@ -15,6 +15,7 @@ jobs:
fail-fast: false
matrix:
tag:
- 2.7
- 3.7
- 3.8
- 3.9
@@ -36,4 +37,4 @@ jobs:
platforms: linux/amd64
push: true
tags: |
ghcr.io/parkervcp/yolks:python_${{ matrix.tag }}
ghcr.io/parkervcp/yolks:python_${{ matrix.tag }}

View File

@@ -1,4 +1,5 @@
# Yolks
A curated collection of core images that can be used with Pterodactyl's Egg system. Each image is rebuilt
periodically to ensure dependencies are always up-to-date.
@@ -18,6 +19,86 @@ All of these images are available for `linux/amd64` and `linux/arm64` versions,
these images on an arm system, no modification to them or the tag is needed, they should just work.
### Contributing
When adding a new version to an existing image, such as `java v42`, you'd add it within a child folder of `java`, so
`java/42/Dockerfile` for example. Please also update the correct `.github/workflows` file to ensure that this new version
is tagged correctly.
## Available Images
### [Oses](/oses)
* [alpine](/oses/alpine)
* `ghcr.io/parkervcp/yolks:alpine`
* [debian](/oses/debian)
* `ghcr.io/parkervcp/yolks:debian`
* [ubuntu](/oses/ubuntu)
* `ghcr.io/parkervcp/yolks:ubuntu`
### [Cassandra](/cassandra)
* [`cassandra_java8_python27`](/cassandra/cassandra_java8_python2)
* `ghcr.io/parkervcp/yolks:cassandra_java11_python2`
* [`cassandra_java11_python3`](/cassandra/cassandra_java11_python3)
* `ghcr.io/parkervcp/yolks:cassandra_java11_python3`
### [dotNet](/dotnet)
* [`dotnet2.1`](/dotnet/2.1)
* `ghcr.io/parkervcp/yolks:dotnet_2.1`
* [`dotnet3.1`](/dotnet/3.1)
* `ghcr.io/parkervcp/yolks:dotnet_3.1`
* [`dotnet5.0`](/dotnet/5.0)
* `ghcr.io/parkervcp/yolks:dotnet_5.0`
### [Erlang](/erlang)
* [`erlang22`](/erlang/22)
* `ghcr.io/parkervcp/yolks:erlang_22`
* [`erlang23`](/erlang/23)
* `ghcr.io/parkervcp/yolks:erlang_23`
* [`erlang24`](/erlang/24)
* `ghcr.io/parkervcp/yolks:erlang_24`
### [Games](/games)
* [`arma3`](/games/arma3)
* `ghcr.io/parkervcp/games:arma3`
* [`fivem`](/games/fivem)
* `ghcr.io/parkervcp/games:fivem`
* [`source`](/games/source)
* `ghcr.io/parkervcp/games:source`
### [Golang](/go)
* [`go1.14`](/go/1.14)
* `ghcr.io/parkervcp/yolks:go_1.14`
* [`go1.15`](/go/1.15)
* `ghcr.io/parkervcp/yolks:go_1.15`
* [`go1.16`](/go/1.16)
* `ghcr.io/parkervcp/yolks:go_1.16`
### [Java](/java)
* [`java7`](/java/7)
* `ghcr.io/parkervcp/yolks:java_7`
* [`java8`](/java/8)
* `ghcr.io/parkervcp/yolks:java_8`
* [`java9`](/java/9)
* `ghcr.io/parkervcp/yolks:java_9`
* [`java11`](/java/11)
* `ghcr.io/parkervcp/yolks:java_11`
* [`java14`](/java/14)
* `ghcr.io/parkervcp/yolks:java_14`
* [`java16`](/java/16)
* `ghcr.io/parkervcp/yolks:java_16`
### [Nodejs](/nodejs)
* [`node12`](/nodejs/12)
* `ghcr.io/parkervcp/yolks:nodejs_12`
* [`node14`](/nodejs/14)
* `ghcr.io/parkervcp/yolks:nodejs_14`
* [`node15`](/nodejs/15)
* `ghcr.io/parkervcp/yolks:nodejs_15`
* [`node16`](/nodejs/16)
* `ghcr.io/parkervcp/yolks:nodejs_16`
### [Python](/python)
* [`python3.7`](/python/3.7)
* `ghcr.io/parkervcp/yolks:python_3.7`
* [`python3.8`](/python/3.8)
* `ghcr.io/parkervcp/yolks:python_3.8`
* [`python3.9`](/python/3.9)
* `ghcr.io/parkervcp/yolks:python_3.9`
### [Installation Images](/installers)
* [`alpine-install`](/installers/alpine)
* `ghcr.io/parkervcp/installers:alpine`
* [`debian-install`](/installers/debian)
* `ghcr.io/parkervcp/installers:debian`

19
bot/bastion/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM node:14-buster
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
## install mongo
RUN wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add - \
&& echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list \
&& apt update \
&& apt install -y mongodb-org=4.2.7 mongodb-org-server=4.2.7 mongodb-org-shell=4.2.7 mongodb-org-mongos=4.2.7 mongodb-org-tools=4.2.7 \
## install bastion reqs
&& apt install -y python build-essential netcat ffmpeg \
## add container user
&& useradd -d /home/container -m container -s /bin/bash
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

12
bot/bastion/entrypoint.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
cd /home/container
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Replace Startup Variables
MODIFIED_STARTUP=$(echo -e $(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g'))
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}

13
bot/parkertron/Dockerfile Normal file
View File

@@ -0,0 +1,13 @@
FROM alpine:3.9
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
RUN apk add --update --no-cache git curl lua-stdlib lua musl-dev g++ libc-dev tesseract-ocr tesseract-ocr-dev \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/ash", "/entrypoint.sh"]

View File

@@ -0,0 +1,12 @@
#!/bin/ash
cd /home/container
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Replace Startup Variables
MODIFIED_STARTUP=`eval echo $(echo ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
echo ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}

19
bot/red/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM python:3.8-slim
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
RUN mkdir -p /usr/share/man/man1 \
&& apt update \
&& apt -y install git ca-certificates dnsutils iproute2 wget curl xz-utils git openjdk-11-jre \
zlib1g-dev libffi-dev git libmagickwand-dev unzip libaa1-dev build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev ffmpeg imagemagick \
&& pip install python-forecastio tweepy unidecode discord-text-sanitizer mcstatus bs4 sqlalchemy geocoder valve python-valve py-cpuinfo psutil \
&& useradd -m -d /home/container container \
&& mkdir -p /home/container/.config/Red-DiscordBot/ \
&& ln -s /home/container/.config/Red-DiscordBot/ /usr/local/share/Red-DiscordBot
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

12
bot/red/entrypoint.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
cd /home/container
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Replace Startup Variables
MODIFIED_STARTUP=$(echo -e $(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g'))
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}

21
bot/sinusbot/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM ubuntu:18.04
LABEL maintainer="ki2007 <ki2007@damw.eu>" version="1.0"
ENV DEBIAN_FRONTEND noninteractive
# Install Dependencies
RUN apt update \
&& apt upgrade -y \
&& apt install -y ca-certificates less libasound2 libegl1-mesa libglib2.0-0 libnss3 libpci3 libpulse0 libxcursor1 libxslt1.1 libx11-xcb1 libxkbcommon0 locales pulseaudio python sudo x11vnc x11-xkb-utils xvfb iproute2 \
&& useradd -m -d /home/container container
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -0,0 +1,12 @@
#!/bin/bash
cd /home/container
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Replace Startup Variables
MODIFIED_STARTUP=`eval echo $(echo ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
echo ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}

38
cassandra/entrypoint.sh Normal file
View File

@@ -0,0 +1,38 @@
#!/bin/ash
# Default the TZ environment variable to UTC.
TZ=${TZ:-UTC}
export TZ
# Set environment variable that holds the Internal Docker IP
INTERNAL_IP=$(ip route get 1 | awk '{print $NF;exit}')
export INTERNAL_IP
# Switch to the container's working directory
cd /home/container || exit 1
# Print Java version
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0mjava -version\n"
java -version
# Print Python version
if command -v python &> /dev/null
then
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0mpython --version\n"
python --version
else
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0mpython3 --version\n"
python3 --version
fi
# Convert all of the "{{VARIABLE}}" parts of the command into the expected shell
# variable format of "${VARIABLE}" before evaluating the string and automatically
# replacing the values.
PARSED=$(echo "${STARTUP}" | sed -e 's/{{/${/g' -e 's/}}/}/g' | eval echo "$(cat -)")
# Display the command we're running in the output, and then execute it with the env
# from the container itself.
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0m%s\n" "$PARSED"
# shellcheck disable=SC2086
exec env ${PARSED}

View File

@@ -0,0 +1,16 @@
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk11:alpine-jre
LABEL author="Pascal Zarrad" maintainer="p.zarrad@outlook.de"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache python3 py3-tz ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

View File

@@ -0,0 +1,17 @@
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk8:alpine-jre
LABEL author="Pascal Zarrad" maintainer="p.zarrad@outlook.de"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache python2 ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& python -m ensurepip --upgrade && pip install pytz \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

21
dotnet/2.1/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM ghcr.io/parkervcp/yolks:debian
LABEL author="Torsten Widmann" maintainer="info@goover.de"
ENV DEBIAN_FRONTEND noninteractive
RUN apt update -y \
&& apt upgrade -y \
&& apt install -y apt-transport-https wget iproute2 \
&& wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt update -y \
&& apt install -y aspnetcore-runtime-2.1 libgdiplus
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

21
dotnet/3.1/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM ghcr.io/parkervcp/yolks:debian
LABEL author="Torsten Widmann" maintainer="info@goover.de"
ENV DEBIAN_FRONTEND noninteractive
RUN apt update -y \
&& apt upgrade -y \
&& apt install -y apt-transport-https wget iproute2 \
&& wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt update -y \
&& apt install -y aspnetcore-runtime-3.1 libgdiplus
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

21
dotnet/5/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM ghcr.io/parkervcp/yolks:debian
LABEL author="Torsten Widmann" maintainer="info@goover.de"
ENV DEBIAN_FRONTEND noninteractive
RUN apt update -y \
&& apt upgrade -y \
&& apt install -y apt-transport-https wget iproute2 \
&& wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt update -y \
&& apt install -y aspnetcore-runtime-5.0 libgdiplus
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

12
dotnet/entrypoint.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
cd /home/container
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Replace Startup Variables
MODIFIED_STARTUP=$(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}

16
erlang/22/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM --platform=$BUILDPLATFORM erlang:22-alpine
LABEL author="Pascal Zarrad" maintainer="p.zarrad@outlook.de"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

16
erlang/23/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM --platform=$BUILDPLATFORM erlang:23-alpine
LABEL author="Pascal Zarrad" maintainer="p.zarrad@outlook.de"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

16
erlang/24/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM --platform=$BUILDPLATFORM erlang:24-alpine
LABEL author="Pascal Zarrad" maintainer="p.zarrad@outlook.de"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

25
erlang/entrypoint.sh Normal file
View File

@@ -0,0 +1,25 @@
# Default the TZ environment variable to UTC.
TZ=${TZ:-UTC}
export TZ
# Set environment variable that holds the Internal Docker IP
INTERNAL_IP=$(ip route get 1 | awk '{print $NF;exit}')
export INTERNAL_IP
# Switch to the container's working directory
cd /home/container || exit 1
# Print Erlang's version
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0merl -noshell -eval 'erlang:display(erlang:system_info(system_version))' -eval 'init:stop()'\n"
erl -noshell -eval 'erlang:display(erlang:system_info(system_version))' -eval 'init:stop()'
# Convert all of the "{{VARIABLE}}" parts of the command into the expected shell
# variable format of "${VARIABLE}" before evaluating the string and automatically
# replacing the values.
PARSED=$(echo "${STARTUP}" | sed -e 's/{{/${/g' -e 's/}}/}/g' | eval echo "$(cat -)")
# Display the command we're running in the output, and then execute it with the env
# from the container itself.
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0m%s\n" "$PARSED"
# shellcheck disable=SC2086
exec env ${PARSED}

29
games/arma3/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
FROM ubuntu:20.04
LABEL author="David Wolfe (Red-Thirten)" maintainer="rehlmgaming@gmail.com"
ENV DEBIAN_FRONTEND noninteractive
ENV USER_NAME container
ENV NSS_WRAPPER_PASSWD /tmp/passwd
ENV NSS_WRAPPER_GROUP /tmp/group
# Install Dependencies
RUN dpkg --add-architecture i386 \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y libgcc-10-dev libstdc++-10-dev libtinfo5 lib64z1 libcurl3-gnutls \
&& apt-get install -y libnss-wrapper gettext-base tar curl gcc g++ libc6 libtbb2 lib32z1 lib32gcc1 lib32stdc++6 libsdl2-2.0-0 libsdl2-2.0-0:i386 libtbb2:i386 lib32stdc++6 libtinfo5:i386 libncurses5:i386 libcurl3-gnutls:i386 \
&& useradd -m -d /home/container -s /bin/bash container \
&& touch ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
&& chgrp 0 ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
&& chmod g+rw ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP}
ADD passwd.template /passwd.template
USER container
ENV HOME /home/container
WORKDIR /home/container
COPY ./libnss_wrapper.so /libnss_wrapper.so
COPY ./libnss_wrapper_x64.so /libnss_wrapper_x64.so
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

21
games/arma3/LICENSE.txt Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017-2021 Pterodactyl Software
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

2
games/arma3/README.md Normal file
View File

@@ -0,0 +1,2 @@
# Arma 3
Docker container designed to run Bohemia Interactive's Arma 3 dedicated server.

324
games/arma3/entrypoint.sh Normal file
View File

@@ -0,0 +1,324 @@
#!/bin/bash
## File: Pterodactyl Arma 3 Image - entrypoint.sh
## Author: David Wolfe (Red-Thirten)
## Contributors: Aussie Server Hosts (https://aussieserverhosts.com/)
## Date: 2021/07/13
## License: MIT License
## === CONSTANTS ===
STEAMCMD_DIR="./steamcmd" # SteamCMD's directory containing steamcmd.sh
STEAMCMD_LOG="${STEAMCMD_DIR}/steamcmd.log" # Log file for SteamCMD
GAME_ID=107410 # SteamCMD ID for the Arma 3 GAME (not server). Only used for Workshop mod downloads.
EGG_URL='https://github.com/parkervcp/eggs/tree/master/game_eggs/steamcmd_servers/arma/arma3' # URL for Pterodactyl Egg & Info (only used as info to legacy users)
# Color Codes
CYAN='\033[0;36m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
## === ENVIRONMENT VARS ===
# STARTUP, STARTUP_PARAMS, STEAM_USER, STEAM_PASS, SERVER_BINARY, MOD_FILE, MODIFICATIONS, SERVERMODS, UPDATE_SERVER, CLEAR_CACHE, VALIDATE_SERVER, MODS_LOWERCASE, STEAMCMD_EXTRA_FLAGS, CDLC, STEAMCMD_APPID, HC_NUM, SERVER_PASSWORD, HC_HIDE, STEAMCMD_ATTEMPTS, BASIC_URL, DISABLE_MOD_UPDATES
## === GLOBAL VARS ===
# validateServer, extraFlags, updateAttempt, modifiedStartup, allMods, CLIENT_MODS
## === DEFINE FUNCTIONS ===
#
# Runs SteamCMD with specified variables and performs error handling.
function RunSteamCMD { #[Input: int server=0 mod=1; int id]
# Clear previous SteamCMD log
if [[ -f "${STEAMCMD_LOG}" ]]; then
rm -f "${STEAMCMD_LOG:?}"
fi
updateAttempt=0
while (( $updateAttempt < $STEAMCMD_ATTEMPTS )); do # Loop for specified number of attempts
# Increment attempt counter
updateAttempt=$((updateAttempt+1))
if (( $updateAttempt > 1 )); then # Notify if not first attempt
echo -e "\t${YELLOW}Re-Attempting download/update in 3 seconds...${NC} (Attempt ${CYAN}${updateAttempt}${NC} of ${CYAN}${STEAMCMD_ATTEMPTS}${NC})\n"
sleep 3
fi
# Check if updating server or mod
if [[ $1 == 0 ]]; then # Server
${STEAMCMD_DIR}/steamcmd.sh "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +force_install_dir /home/container +app_update $2 $extraFlags $validateServer +quit | tee -a "${STEAMCMD_LOG}"
else # Mod
${STEAMCMD_DIR}/steamcmd.sh "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +workshop_download_item $GAME_ID $2 +quit | tee -a "${STEAMCMD_LOG}"
fi
# Error checking for SteamCMD
steamcmdExitCode=${PIPESTATUS[0]}
if [[ -n $(grep -i "error\|failed" "${STEAMCMD_LOG}" | grep -iv "setlocal\|SDL") ]]; then # Catch errors (ignore setlocale and SDL warnings)
# Soft errors
if [[ -n $(grep -i "Timeout downloading item" "${STEAMCMD_LOG}") ]]; then # Mod download timeout
echo -e "\n${YELLOW}[UPDATE]: ${NC}Timeout downloading Steam Workshop mod: \"${CYAN}${modName}${NC}\" (${CYAN}${2}${NC})"
echo -e "\t(This is expected for particularly large mods)"
elif [[ -n $(grep -i "0x402\|0x6\|0x602" "${STEAMCMD_LOG}") ]]; then # Connection issue with Steam
echo -e "\n${YELLOW}[UPDATE]: ${NC}Connection issue with Steam servers."
echo -e "\t(Steam servers may currently be down, or a connection cannot be made reliably)"
# Hard errors
elif [[ -n $(grep -i "Password check for AppId" "${STEAMCMD_LOG}") ]]; then # Incorrect beta branch password
echo -e "\n${RED}[UPDATE]: ${YELLOW}Incorrect password given for beta branch. ${CYAN}Skipping download...${NC}"
echo -e "\t(Check your \"[ADVANCED] EXTRA FLAGS FOR STEAMCMD\" startup parameter)"
break
# Fatal errors
elif [[ -n $(grep -i "Invalid Password\|two-factor\|No subscription" "${STEAMCMD_LOG}") ]]; then # Wrong username/password, Steam Guard is turned on, or host is using anonymous account
echo -e "\n${RED}[UPDATE]: Cannot login to Steam - Improperly configured account and/or credentials"
echo -e "\t${YELLOW}Please contact your administrator/host and give them the following message:${NC}"
echo -e "\t${CYAN}Your Egg, or your client's server, is not configured with valid Steam credentials.${NC}"
echo -e "\t${CYAN}Either the username/password is wrong, or Steam Guard is not properly configured\n\taccording to this egg's documentation/README.${NC}\n"
exit 1
elif [[ -n $(grep -i "Download item" "${STEAMCMD_LOG}") ]]; then # Steam account does not own base game for mod downloads, or unknown
echo -e "\n${RED}[UPDATE]: Cannot download mod - Download failed"
echo -e "\t${YELLOW}While unknown, this error is likely due to your host's Steam account not owning the base game.${NC}"
echo -e "\t${YELLOW}(Please contact your administrator/host if this issue persists)${NC}\n"
exit 1
elif [[ -n $(grep -i "0x202\|0x212" "${STEAMCMD_LOG}") ]]; then # Not enough disk space
echo -e "\n${RED}[UPDATE]: Unable to complete download - Not enough storage"
echo -e "\t${YELLOW}You have run out of your allotted disk space.${NC}"
echo -e "\t${YELLOW}Please contact your administrator/host for potential storage upgrades.${NC}\n"
exit 1
elif [[ -n $(grep -i "0x606" "${STEAMCMD_LOG}") ]]; then # Disk write failure
echo -e "\n${RED}[UPDATE]: Unable to complete download - Disk write failure"
echo -e "\t${YELLOW}This is normally caused by directory permissions issues,\n\tbut could be a more serious hardware issue.${NC}"
echo -e "\t${YELLOW}(Please contact your administrator/host if this issue persists)${NC}\n"
exit 1
else # Unknown caught error
echo -e "\n${RED}[UPDATE]: ${YELLOW}An unknown error has occurred with SteamCMD. ${CYAN}Skipping download...${NC}"
echo -e "\t(Please contact your administrator/host if this issue persists)"
break
fi
elif [[ $steamcmdExitCode != 0 ]]; then # Unknown fatal error
echo -e "\n${RED}[UPDATE]: SteamCMD has crashed for an unknown reason!${NC} (Exit code: ${CYAN}${steamcmdExitCode}${NC})"
echo -e "\t${YELLOW}(Please contact your administrator/host for support)${NC}\n"
exit $steamcmdExitCode
else # Success!
if [[ $1 == 0 ]]; then # Server
echo -e "\n${GREEN}[UPDATE]: Game server is up to date!${NC}"
else # Mod
# Move the downloaded mod to the root directory, and replace existing mod if needed
mkdir -p ./@$2
rm -rf ./@$2/*
mv -f ./Steam/steamapps/workshop/content/$GAME_ID/$2/* ./@$2
rm -d ./Steam/steamapps/workshop/content/$GAME_ID/$2
# Make the mods contents all lowercase
ModsLowercase @$2
# Move any .bikey's to the keys directory
echo -e "\tMoving any mod ${CYAN}.bikey${NC} files to the ${CYAN}~/keys/${NC} folder..."
find ./@$2 -name "*.bikey" -type f -exec cp {} ./keys \;
echo -e "${GREEN}[UPDATE]: Mod download/update successful!${NC}"
fi
break
fi
if (( $updateAttempt == $STEAMCMD_ATTEMPTS )); then # Notify if failed last attempt
if [[ $1 == 0 ]]; then # Server
echo -e "\t${RED}Final attempt made! ${YELLOW}Unable to complete game server update. ${CYAN}Skipping...${NC}"
echo -e "\t(Please try again at a later time)"
sleep 3
else # Mod
echo -e "\t${RED}Final attempt made! ${YELLOW}Unable to complete mod download/update. ${CYAN}Skipping...${NC}"
echo -e "\t(You may try again later, or manually upload this mod to your server via SFTP)"
sleep 3
fi
fi
done
}
# Takes a directory (string) as input, and recursively makes all files & folders lowercase.
function ModsLowercase {
echo -e "\n\tMaking mod ${CYAN}$1${NC} files/folders lowercase..."
for SRC in `find ./$1 -depth`
do
DST=`dirname "${SRC}"`/`basename "${SRC}" | tr '[A-Z]' '[a-z]'`
if [ "${SRC}" != "${DST}" ]
then
[ ! -e "${DST}" ] && mv -T "${SRC}" "${DST}"
fi
done
}
# Removes duplicate items from a semicolon delimited string
function RemoveDuplicates { #[Input: str - Output: printf of new str]
if [[ -n $1 ]]; then # If nothing to compare, skip to prevent extra semicolon being returned
echo $1 | sed -e 's/;/\n/g' | sort -u | xargs printf '%s;'
fi
}
# === ENTRYPOINT START ===
cd /home/container
sleep 1
# Check for old eggs
if [[ -z ${VALIDATE_SERVER} ]]; then # VALIDATE_SERVER was not in the previous version
echo -e "\n${RED}[STARTUP_ERR]: Please contact your administrator/host for support, and give them the following message:${NC}\n"
echo -e "\t${CYAN}Your Arma 3 Egg is outdated and no longer supported.${NC}"
echo -e "\t${CYAN}Please download the latest version at the following link, and install it in your panel:${NC}"
echo -e "\t${CYAN}${EGG_URL}${NC}\n"
exit 1
fi
# Collect and parse all specified mods
if [[ -n ${MODIFICATIONS} ]] && [[ ${MODIFICATIONS} != *\; ]]; then # Add manually specified mods to the client-side mods list, while checking for trailing semicolon
CLIENT_MODS="${MODIFICATIONS};"
else
CLIENT_MODS=${MODIFICATIONS}
fi
if [[ -f ${MOD_FILE} ]] && [[ -n "$(cat ${MOD_FILE} | grep 'Created by Arma 3 Launcher')" ]]; then # If the mod list file exists and is valid, parse and add mods to the client-side mods list
CLIENT_MODS+=$(cat ${MOD_FILE} | grep 'id=' | cut -d'=' -f3 | cut -d'"' -f1 | xargs printf '@%s;')
elif [[ -n "${MOD_FILE}" ]]; then # If MOD_FILE is not null, warn user file is missing or invalid
echo -e "\n${YELLOW}[STARTUP_WARN]: Arma 3 Modlist file \"${CYAN}${MOD_FILE}${YELLOW}\" could not be found, or is invalid!${NC}"
echo -e "\tEnsure your uploaded modlist's file name matches your Startup Parameter."
echo -e "\tOnly files exported from an Arma 3 Launcher are permitted."
if [[ -n "${CLIENT_MODS}" ]]; then
echo -e "\t${CYAN}Reverting to the manual mod list...${NC}"
fi
fi
if [[ -n ${SERVERMODS} ]] && [[ ${SERVERMODS} != *\; ]]; then # Add server mods to the master mods list, while checking for trailing semicolon
allMods="${SERVERMODS};"
else
allMods=${SERVERMODS}
fi
allMods+=$CLIENT_MODS # Add all client-side mods to the master mod list
CLIENT_MODS=$(RemoveDuplicates ${CLIENT_MODS}) # Remove duplicate mods from CLIENT_MODS, if present
allMods=$(RemoveDuplicates ${allMods}) # Remove duplicate mods from allMods, if present
allMods=$(echo $allMods | sed -e 's/;/ /g') # Convert from string to array
# Update everything (server and mods), if specified
if [[ ${UPDATE_SERVER} == 1 ]]; then
echo -e "\n${GREEN}[STARTUP]: ${CYAN}Starting checks for all updates...${NC}"
echo -e "(It is okay to ignore any \"SDL\" errors during this process)\n"
## Update game server
echo -e "${GREEN}[UPDATE]:${NC} Checking for game server updates with App ID: ${CYAN}${STEAMCMD_APPID}${NC}..."
if [[ ${VALIDATE_SERVER} == 1 ]]; then # Validate will be added as a parameter if specified
echo -e "\t${CYAN}File validation enabled.${NC} (This may take extra time to complete)"
validateServer="validate"
else
validateServer=""
fi
# Determine what extra flags should be set
if [[ -n ${STEAMCMD_EXTRA_FLAGS} ]]; then
echo -e "\t(${YELLOW}Advanced${NC}) Extra SteamCMD flags specified: ${CYAN}${STEAMCMD_EXTRA_FLAGS}${NC}\n"
extraFlags=${STEAMCMD_EXTRA_FLAGS}
elif [[ ${CDLC} == 1 ]]; then
echo -e "\t${CYAN}Download/Update Creator DLC server files enabled.${NC}\n"
extraFlags="-beta creatordlc"
else
echo -e ""
extraFlags=""
fi
RunSteamCMD 0 ${STEAMCMD_APPID}
## Update mods
if [[ -n $allMods ]] && [[ ${DISABLE_MOD_UPDATES} != 1 ]]; then
echo -e "\n${GREEN}[UPDATE]:${NC} Checking all ${CYAN}Steam Workshop mods${NC} for updates..."
for modID in $(echo $allMods | sed -e 's/@//g')
do
if [[ $modID =~ ^[0-9]+$ ]]; then # Only check mods that are in ID-form
# Get mod's latest update in epoch time from its Steam Workshop changelog page
latestUpdate=$(curl -sL https://steamcommunity.com/sharedfiles/filedetails/changelog/$modID | grep '<p id=' | head -1 | cut -d'"' -f2)
# If the update time is valid and newer than the local directory's creation date, or the mod hasn't been downloaded yet, download the mod
if [[ ! -d @$modID ]] || [[ ( -n $latestUpdate ) && ( $latestUpdate =~ ^[0-9]+$ ) && ( $latestUpdate > $(find @$modID | head -1 | xargs stat -c%Y) ) ]]; then
# Get the mod's name from the Workshop page as well
modName=$(curl -sL https://steamcommunity.com/sharedfiles/filedetails/changelog/$modID | grep 'workshopItemTitle' | cut -d'>' -f2 | cut -d'<' -f1)
if [[ -z $modName ]]; then # Set default name if unavailable
modName="[NAME UNAVAILABLE]"
fi
if [[ ! -d @$modID ]]; then
echo -e "\n${GREEN}[UPDATE]:${NC} Downloading new Mod: \"${CYAN}${modName}${NC}\" (${CYAN}${modID}${NC})"
else
echo -e "\n${GREEN}[UPDATE]:${NC} Mod update found for: \"${CYAN}${modName}${NC}\" (${CYAN}${modID}${NC})"
fi
if [[ -n $latestUpdate ]] && [[ $latestUpdate =~ ^[0-9]+$ ]]; then # Notify last update date, if valid
echo -e "\tMod was last updated: ${CYAN}$(date -d @${latestUpdate})${NC}"
fi
echo -e "\tAttempting mod update/download via SteamCMD...\n"
RunSteamCMD 1 $modID
fi
fi
done
echo -e "${GREEN}[UPDATE]:${NC} Steam Workshop mod update check ${GREEN}complete${NC}!"
fi
fi
# Check if specified server binary exists.
if [[ ! -f ./${SERVER_BINARY} ]]; then
echo -e "\n${RED}[STARTUP_ERR]: Specified Arma 3 server binary could not be found in the root directory!${NC}"
echo -e "${YELLOW}Please do the following to resolve this issue:${NC}"
echo -e "\t${CYAN}- Double check your \"Server Binary\" Startup Variable is correct.${NC}"
echo -e "\t${CYAN}- Ensure your server has properly installed/updated without errors (reinstalling/updating again may help).${NC}"
echo -e "\t${CYAN}- Use the File Manager to check that your specified server binary file is not missing from the root directory.${NC}\n"
exit 1
fi
# Make mods lowercase, if specified
if [[ ${MODS_LOWERCASE} == "1" ]]; then
for modDir in $allMods
do
ModsLowercase $modDir
done
fi
# Clear HC cache, if specified
if [[ ${CLEAR_CACHE} == "1" ]]; then
echo -e "\n${GREEN}[STARTUP]: ${CYAN}Clearing Headless Client profiles cache...${NC}"
for profileDir in ./serverprofile/home/*
do
[ "$profileDir" = "./serverprofile/home/Player" ] && continue
rm -rf $profileDir
done
fi
# Check if basic.cfg exists, and download if not (Arma really doesn't like it missing for some reason)
if [[ ! -f ./basic.cfg ]]; then
echo -e "\n${YELLOW}[STARTUP_WARN]: Basic Network Configuration file \"${CYAN}basic.cfg${YELLOW}\" is missing!${NC}"
echo -e "\t${YELLOW}Downloading default file for use instead...${NC}"
curl -sSL ${BASIC_URL} -o ./basic.cfg
fi
# $NSS_WRAPPER_PASSWD and $NSS_WRAPPER_GROUP have been set by the Dockerfile
export USER_ID=$(id -u)
export GROUP_ID=$(id -g)
envsubst < /passwd.template > ${NSS_WRAPPER_PASSWD}
if [[ ${SERVER_BINARY} == *"x64"* ]]; then # Check which libnss_wrapper architecture to run, based off the server binary name
export LD_PRELOAD=/libnss_wrapper_x64.so
else
export LD_PRELOAD=/libnss_wrapper.so
fi
# Replace Startup Variables
modifiedStartup=`eval echo $(echo ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
# Start Headless Clients if applicable
if [[ ${HC_NUM} > 0 ]]; then
echo -e "\n${GREEN}[STARTUP]:${NC} Starting ${CYAN}${HC_NUM}${NC} Headless Client(s)."
for i in $(seq ${HC_NUM})
do
if [[ ${HC_HIDE} == "1" ]];
then
./${SERVER_BINARY} -client -connect=127.0.0.1 -port=${SERVER_PORT} -password="${SERVER_PASSWORD}" -profiles=./serverprofile -bepath=./battleye -mod="${CLIENT_MODS}" ${STARTUP_PARAMS} > /dev/null 2>&1 &
else
./${SERVER_BINARY} -client -connect=127.0.0.1 -port=${SERVER_PORT} -password="${SERVER_PASSWORD}" -profiles=./serverprofile -bepath=./battleye -mod="${CLIENT_MODS}" ${STARTUP_PARAMS} &
fi
echo -e "${GREEN}[STARTUP]:${CYAN} Headless Client $i${NC} launched."
done
fi
# Start the Server
echo -e "\n${GREEN}[STARTUP]:${NC} Starting server with the following startup command:"
echo -e "${CYAN}${modifiedStartup}${NC}\n"
${modifiedStartup}
if [ $? -ne 0 ]; then
echo -e "\n${RED}PTDL_CONTAINER_ERR: There was an error while attempting to run the start command.${NC}\n"
exit 1
fi

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,26 @@
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
messagebus:x:106:109::/var/run/dbus:/bin/false
bind:x:108:112::/var/cache/bind:/bin/false
${USER_NAME}:x:${USER_ID}:${GROUP_ID}:${USER_NAME}:${HOME}:/bin/bash

View File

@@ -20,7 +20,7 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
#
# Default the TZ environment variable to UTC.
TZ=${TZ:-UTC}

View File

@@ -32,7 +32,7 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 \
&& apt update \
&& apt upgrade -y \
&& apt install -y tar curl gcc g++ lib32gcc1 libgcc1 libcurl4-gnutls-dev:i386 libssl1.1:i386 libcurl4:i386 lib32tinfo6 libtinfo6:i386 lib32z1 lib32stdc++6 libncurses5:i386 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 iproute2 gdb libsdl1.2debian libfontconfig telnet net-tools netcat tzdata \
&& apt install -y tar curl gcc g++ lib32gcc-s1 libgcc1 libcurl4-gnutls-dev:i386 libssl1.1:i386 libcurl4:i386 lib32tinfo6 libtinfo6:i386 lib32z1 lib32stdc++6 libncurses5:i386 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 iproute2 gdb libsdl1.2debian libfontconfig1 telnet net-tools netcat tzdata \
&& useradd -m -d /home/container container
USER container

View File

@@ -38,6 +38,30 @@ cd /home/container || exit 1
# replacing the values.
PARSED=$(echo "${STARTUP}" | sed -e 's/{{/${/g' -e 's/}}/}/g' | eval echo "$(cat -)")
## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; then
echo -e "steam user is not set.\n"
echo -e "Using anonymous user.\n"
STEAM_USER=anonymous
STEAM_PASS=""
STEAM_AUTH=""
else
echo -e "user set to ${STEAM_USER}"
fi
## if auto_update is not set or to 1 update
if [ -z ${AUTO_UPDATE} ] || [ "${AUTO_UPDATE}" == "1" ]; then
# Update Source Server
if [ ! -z ${SRCDS_APPID} ]; then
./steamcmd/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir /home/container +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) $( [[ -z ${HLDS_GAME} ]] || printf %s "+app_set_config 90 mod ${HLDS_GAME}" ) $( [[ -z ${VALIDATE} ]] || printf %s "validate" ) +quit
else
echo -e "No appid set. Starting Server"
fi
else
echo -e "Not updating game server as auto update was set to 0. Starting Server"
fi
# Display the command we're running in the output, and then execute it with the env
# from the container itself.
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0m%s\n" "$PARSED"

View File

@@ -20,7 +20,7 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
#
# Default the TZ environment variable to UTC.
TZ=${TZ:-UTC}

View File

@@ -18,7 +18,7 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
#
FROM --platform=$BUILDPLATFORM debian:stable-slim
@@ -32,4 +32,4 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 \
&& apt update \
&& apt upgrade -y \
&& apt -y --no-install-recommends install ca-certificates curl lib32gcc1 libsdl2-2.0-0:i386 git
&& apt -y --no-install-recommends install ca-certificates curl lib32gcc-s1 libsdl2-2.0-0:i386 git

View File

@@ -1,38 +1,17 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM --platform=$BUILDPLATFORM openjdk:11-slim
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk11-openj9:alpine
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt-get update -y \
&& apt-get install -y curl ca-certificates openssl git tar sqlite fontconfig tzdata iproute2 \
&& useradd -d /home/container -m container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD [ "/bin/bash", "/entrypoint.sh" ]

16
java/11j9/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk11-openj9:debianslim
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
RUN apt-get update -y \
&& apt-get install -y curl ca-certificates openssl git tar sqlite fontconfig tzdata iproute2 \
&& useradd -d /home/container -m container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +0,0 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk14-openj9:alpine
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

View File

@@ -1,38 +1,17 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM --platform=$BUILDPLATFORM openjdk:16-slim
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk16-openj9:alpine
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt-get update -y \
&& apt-get install -y curl ca-certificates openssl git tar sqlite fontconfig tzdata iproute2 \
&& useradd -d /home/container -m container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD [ "/bin/bash", "/entrypoint.sh" ]

16
java/16j9/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk16-openj9:debianslim
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
RUN apt-get update -y \
&& apt-get install -y curl ca-certificates openssl git tar sqlite fontconfig tzdata iproute2 \
&& useradd -d /home/container -m container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +0,0 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM --platform=$BUILDPLATFORM openjdk:7-jre-alpine
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

View File

@@ -1,38 +1,17 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM --platform=$BUILDPLATFORM openjdk:8-slim-buster
FROM --platform=$BUILDPLATFORM ibmjava:8-jre-alpine
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt-get update -y \
&& apt-get install -y curl ca-certificates openssl git tar sqlite fontconfig tzdata iproute2 \
&& useradd -d /home/container -m container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD [ "/bin/bash", "/entrypoint.sh" ]

16
java/8j9/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk8-openj9:debianslim
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
RUN apt-get update -y \
&& apt-get install -y curl ca-certificates openssl git tar sqlite fontconfig tzdata iproute2 \
&& useradd -d /home/container -m container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +0,0 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM --platform=$BUILDPLATFORM adoptopenjdk/openjdk9-openj9:alpine
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl fontconfig git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]

View File

@@ -1,4 +1,4 @@
#!/bin/ash
#!/bin/bash
#
# Copyright (c) 2021 Matthew Penner

View File

@@ -1,38 +1,14 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM node:12-buster-slim
FROM --platform=$BUILDPLATFORM node:12-alpine
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl ffmpeg git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt update \
&& apt -y install ffmpeg iproute2 git sqlite3 libsqlite3-dev python3 python3-dev ca-certificates dnsutils tzdata zip \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +1,14 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM node:14-buster-slim
FROM --platform=$BUILDPLATFORM node:14-alpine
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl ffmpeg git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt update \
&& apt -y install ffmpeg iproute2 git sqlite3 libsqlite3-dev python3 python3-dev ca-certificates dnsutils tzdata zip \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +1,14 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM node:15-buster-slim
FROM --platform=$BUILDPLATFORM node:15-alpine
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl ffmpeg git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt update \
&& apt -y install ffmpeg iproute2 git sqlite3 libsqlite3-dev python3 python3-dev ca-certificates dnsutils tzdata zip \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +1,14 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM node:16-buster-slim
FROM --platform=$BUILDPLATFORM node:16-alpine
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl ffmpeg git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt update \
&& apt -y install ffmpeg iproute2 git sqlite3 libsqlite3-dev python3 python3-dev ca-certificates dnsutils tzdata zip \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,49 +1,15 @@
#!/bin/ash
#!/bin/bash
cd /home/container
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Default the TZ environment variable to UTC.
TZ=${TZ:-UTC}
export TZ
# Set environment variable that holds the Internal Docker IP
INTERNAL_IP=$(ip route get 1 | awk '{print $NF;exit}')
export INTERNAL_IP
# Switch to the container's working directory
cd /home/container || exit 1
# Print Node.js version
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0mnode -v\n"
# Print Node.js Version
node -v
# Convert all of the "{{VARIABLE}}" parts of the command into the expected shell
# variable format of "${VARIABLE}" before evaluating the string and automatically
# replacing the values.
PARSED=$(echo "${STARTUP}" | sed -e 's/{{/${/g' -e 's/}}/}/g' | eval echo "$(cat -)")
# Replace Startup Variables
MODIFIED_STARTUP=$(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')
echo ":/home/container$ ${MODIFIED_STARTUP}"
# Display the command we're running in the output, and then execute it with the env
# from the container itself.
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0m%s\n" "$PARSED"
# shellcheck disable=SC2086
exec env ${PARSED}
# Run the Server
eval ${MODIFIED_STARTUP}

View File

@@ -1,6 +1,4 @@
#!/bin/ash
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -20,7 +18,7 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
#
# Default the TZ environment variable to UTC.
TZ=${TZ:-UTC}

30
oses/debian/Dockerfile Normal file
View File

@@ -0,0 +1,30 @@
FROM debian:buster-slim
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
ENV DEBIAN_FRONTEND noninteractive
## add container user
RUN useradd -m -d /home/container -s /bin/bash container
RUN ln -s /home/container/ /nonexistent
ENV USER=container HOME=/home/container
## update base packages
RUN apt update \
&& apt upgrade -y
## install dependencies
RUN apt install -y gcc g++ libgcc1 lib32gcc1 libc++-dev gdb libc6 git wget curl tar zip unzip binutils xz-utils liblzo2-2 cabextract iproute2 net-tools netcat telnet libatomic1 libsdl1.2debian libsdl2-2.0-0 \
libfontconfig libicu63 icu-devtools libunwind8 libssl-dev sqlite3 libsqlite3-dev libmariadbclient-dev libduktape203 locales ffmpeg gnupg2 apt-transport-https software-properties-common ca-certificates tzdata \
liblua5.3 libz-dev rapidjson-dev
## configure locale
RUN update-locale lang=en_US.UTF-8 \
&& dpkg-reconfigure --frontend noninteractive locales
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

12
oses/debian/entrypoint.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
cd /home/container
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Replace Startup Variables
MODIFIED_STARTUP=$(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}

24
oses/ubuntu/Dockerfile Normal file
View File

@@ -0,0 +1,24 @@
FROM ubuntu:18.04
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
ENV DEBIAN_FRONTEND noninteractive
## add container user
RUN useradd -m -d /home/container -s /bin/bash container
## update base packages
RUN apt update \
&& apt upgrade -y
## install dependencies
RUN apt install -y gcc g++ libgcc1 lib32gcc1 libc++-dev gdb libc6 git wget curl tar zip unzip binutils xz-utils liblzo2-2 cabextract iproute2 net-tools netcat telnet libatomic1 libsdl1.2debian libsdl2-2.0-0 \
libfontconfig libicu60 libiculx60 icu-devtools libunwind8 libssl1.0.0 libssl1.0-dev sqlite3 libsqlite3-dev libmariadbclient-dev libduktape202 libzip4 locales ffmpeg apt-transport-https init-system-helpers \
libcurl3-gnutls libjsoncpp1 libleveldb1v5 liblua5.1-0 libluajit-5.1-2 libsqlite3-0 libfluidsynth1 bzip2 zlib1g
## configure locale
RUN update-locale lang=en_US.UTF-8 \
&& dpkg-reconfigure --frontend noninteractive locales
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

12
oses/ubuntu/entrypoint.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
cd /home/container
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Replace Startup Variables
MODIFIED_STARTUP=$(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}

14
python/2.7/Dockerfile Normal file
View File

@@ -0,0 +1,14 @@
FROM python:2.7-slim
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
RUN apt update \
&& apt -y install git gcc g++ ca-certificates dnsutils curl iproute2 ffmpeg procps \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +1,14 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM python:3.7-slim
FROM --platform=$BUILDPLATFORM python:3.7-alpine
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl ffmpeg g++ gcc git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt update \
&& apt -y install git gcc g++ ca-certificates dnsutils curl iproute2 ffmpeg procps \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +1,14 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM python:3.8-slim
FROM --platform=$BUILDPLATFORM python:3.8-alpine
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl ffmpeg g++ gcc git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt update \
&& apt -y install git gcc g++ ca-certificates dnsutils curl iproute2 ffmpeg procps \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,38 +1,14 @@
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
FROM python:3.9-slim
FROM --platform=$BUILDPLATFORM python:3.9-alpine
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
LABEL author="Matthew Penner" maintainer="matthew@pterodactyl.io"
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
LABEL org.opencontainers.image.licenses=MIT
RUN apk add --update --no-cache ca-certificates curl ffmpeg g++ gcc git openssl sqlite tar tzdata \
&& adduser -D -h /home/container container
RUN apt update \
&& apt -y install git gcc g++ ca-certificates dnsutils curl iproute2 ffmpeg procps \
&& useradd -m -d /home/container container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./../entrypoint.sh /entrypoint.sh
CMD [ "/bin/ash", "/entrypoint.sh" ]
CMD ["/bin/bash", "/entrypoint.sh"]

View File

@@ -1,49 +1,15 @@
#!/bin/ash
#!/bin/bash
cd /home/container
#
# Copyright (c) 2021 Matthew Penner
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Make internal Docker IP address available to processes.
export INTERNAL_IP=`ip route get 1 | awk '{print $NF;exit}'`
# Default the TZ environment variable to UTC.
TZ=${TZ:-UTC}
export TZ
# Set environment variable that holds the Internal Docker IP
INTERNAL_IP=$(ip route get 1 | awk '{print $NF;exit}')
export INTERNAL_IP
# Switch to the container's working directory
cd /home/container || exit 1
# Print Python version
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0mpython --version\n"
# Print current Python version
python --version
# Convert all of the "{{VARIABLE}}" parts of the command into the expected shell
# variable format of "${VARIABLE}" before evaluating the string and automatically
# replacing the values.
PARSED=$(echo "${STARTUP}" | sed -e 's/{{/${/g' -e 's/}}/}/g' | eval echo "$(cat -)")
# Replace Startup Variables
MODIFIED_STARTUP=$(echo -e $(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g'))
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
# Display the command we're running in the output, and then execute it with the env
# from the container itself.
printf "\033[1m\033[33mcontainer@pterodactyl~ \033[0m%s\n" "$PARSED"
# shellcheck disable=SC2086
exec env ${PARSED}
# Run the Server
eval ${MODIFIED_STARTUP}