Compare commits

...

17 Commits

Author SHA1 Message Date
1b8b74628d 🔭 Ansible fix
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2023-02-06 17:07:34 +01:00
2e8b32f7b5 🔭 Add ssh config for ansible docker image
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-06 14:51:34 +01:00
2fb112760c Add ansible Dockerfile and enable building of game images
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-06 13:45:39 +01:00
cdf7ef26f6 Oxen debian:latest -> debian:10
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-06 13:16:46 +01:00
1decd34840 💄 Fix Makefile missing tag option for docker build command
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-06 12:55:05 +01:00
d40d907fe5 🔌 Docker.sock
Some checks failed
continuous-integration/drone/push Build is failing
2023-02-06 12:50:41 +01:00
a6baf5cbb5 🦈 Docker in docker!
Some checks failed
continuous-integration/drone/push Build is failing
2023-02-06 12:11:39 +01:00
245aa1429b 🔫 Remove drone trigger
Some checks failed
continuous-integration/drone/push Build is failing
2023-02-06 12:08:34 +01:00
66e5e61d74 Build status badge 2023-02-06 11:56:18 +01:00
031a5175b9 🐳 Drone CI auto update all my docker images 2023-02-06 11:52:21 +01:00
8c3769180d Add changes I've made manually on the build server
This also adds the xmr-stak cypto miner container image I created
That one is the first of potentially many images I won't push to the official Docker Hub registries, but insted to my own private registry
2022-06-19 16:21:23 +02:00
45983f1d10 Fix Makefile for personal registry images 2022-05-05 22:28:47 +02:00
87cc59271e Poggers Makefile? 2022-05-05 22:07:07 +02:00
9dbc6d5139 Add inital pwn container and expose common tor ports 2022-05-05 21:40:37 +02:00
e32b549dea Update README.md 2021-09-16 17:24:46 +02:00
cf22784b17 added papermc, waterfall and a small script update 2021-09-16 17:17:37 +02:00
0f353654eb Added siverten/ game server images, a tor image and a utility script 2021-09-14 17:13:40 +02:00
30 changed files with 681 additions and 31 deletions

25
.drone.yml Normal file
View File

@@ -0,0 +1,25 @@
---
kind: pipeline
type: docker
name: build and push
steps:
- name: build and push
image: docker:dind
volumes:
- name: docker.sock
path: /var/run/docker.sock
environment:
REG:
from_secret: registry
commands:
- mkdir ~/.docker
- echo "$REG" > ~/.docker/config.json
- apk add make
- make all
volumes:
- name: docker.sock
host:
path: /var/run/docker.sock

View File

@@ -1,11 +1,26 @@
contexts = siverten/bind9 siverten/oxen .PHONY: build push hub build_reg push_reg registry all
siverten/bind9 : modded_mc = magma rlcraft
docker build siverten/bind9 mc_contexts = $(modded_mc) papermc waterfall
siverten/oxen : game_contexts = $(mc_contexts) tshock
docker build siverten/oxen
contexts = ansible bind9 oxen tor $(game_contexts)
build:
$(foreach context,$(contexts),docker build --pull siverten/$(context) -t siverten/$(context);)
push:
$(foreach context,$(contexts),docker push siverten/$(context);)
hub: build push
reg_contexts = #xmr-stak
build_reg:
$(foreach context,$(reg_contexts),docker build --pull $(context) -t $(context);docker tag $(context) registry.42069.no/$(context))
push_reg:
$(foreach context,$(reg_contexts),docker push registry.42069.no/$(context);)
registry: build_reg push_reg
all: hub registry
build : $(contexts)
./sh/build.sh $(contexts)
push : $(contexts)
./sh/push.sh $(contexts)

View File

@@ -1,16 +1,13 @@
# Dockerfiles # Dockerfiles
[![Build Status](https://drone.42069.no/api/badges/siv/dockerfiles/status.svg)](https://drone.42069.no/siv/dockerfiles)
Only Dockerfiles for build images so far. Dockerfiles autored by me! I'm Sivert V. Sæther.
Will most certanly put some other useful Dockerfiles here later. The siverten/ folder contains docker images you may find on
[DockerHub](https://hub.docker.com/u/siverten).
I would love for anyone to contriblute, but for the time being
this is hosted on my very own, pretty obscure git server.
## The sh folder ## The sh folder
Contians a script and symlinks for using the Makefile. Contians a script and symlinks for using the Makefile.
## NOTE
To make things easy for myself I've added a cheecky siverten/ folder
for stuff I've got on [DockerHub](https://hub.docker.com/).
Most of them are automagically built with scripts on my servers so
this is absolutely fantastick!
I would also love for anyone to contriblute, but for the time being
this is hosted on my very own, pretty obscure git server.

View File

@@ -1,7 +1,7 @@
FROM alpine:edge FROM alpine:edge
RUN apk update&&apk upgrade&&apk add\ RUN apk update && apk upgrade
rustup RUN apk add rustup
RUN rustup-init -y RUN rustup-init -y
ENV PATH="/root/.cargo/bin:${PATH}" ENV PATH="/root/.cargo/bin:${PATH}"

View File

@@ -6,5 +6,5 @@ for context in $*; do
else else
extra=":latest" extra=":latest"
fi fi
docker $op $context$extra docker "$op" "$context"$extra
done done

View File

@@ -1,9 +1,24 @@
# Docker files for siverten/ docker images on the DockerHub registry! # Docker files for siverten/ docker images on the DockerHub registry!
### oxen
A bit bloated debian based docker image for running nodes
on the oxen/loki crypto network.
### magma
Is a minecraft server that supports both paper/spigot/bukkit plugins and
forge mods!
### rlcraft
Docker image based of the magma one that comes with the rlcraft modpack ready.
NOTE: requires the modpack .zip unpacked in a folder named rlcraft for the
Dockerfile build to work!
### tshock
Tsock Terraria server running in docker!
### tor
Simple alpine based tor docker image.
There should be an arm based version of this on DockerHub (siverten/tor-arm)!
### bind9 ### bind9
Simple alpine based bind9 docker image. Simple alpine based bind9 docker image.
### oxen
A bit more bloated debian based docker image for running nodes
on the oxen/loki crypto network.

View File

@@ -0,0 +1,7 @@
FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add ansible expect
CMD ansible

View File

@@ -1,6 +1,5 @@
FROM alpine:3.12 FROM alpine:latest
RUN apk update && apk upgrade
RUN apk --update --no-cache add bind bind-dnssec-tools RUN apk --no-cache add bind bind-dnssec-tools
EXPOSE 53 EXPOSE 53
CMD ["named", "-c", "/etc/bind/named.conf", "-g", "-u", "named"] CMD ["named", "-c", "/etc/bind/named.conf", "-g", "-u", "named"]

26
siverten/magma/Dockerfile Normal file
View File

@@ -0,0 +1,26 @@
FROM openjdk:8-jre
RUN mkdir /magma
WORKDIR /magma
ENV GIT_HASH "761933c"
ENV MC_RAM="1G"
#https://magmafoundation.org/#download
RUN wget https://github.com/magmafoundation/Magma/releases/download/v${GIT_HASH}-CUSTOM/Magma-${GIT_HASH}-STABLE-server.jar
RUN java -jar Magma-${GIT_HASH}-STABLE-server.jar nogui
RUN echo 'eula=true' > eula.txt
COPY server.properties .
COPY bukkit.yml .
COPY spigot.yml .
COPY paper.yml .
COPY magma.yml .
COPY ops.json .
EXPOSE 25565
EXPOSE 25575
VOLUME [ "/magma/plugins", "/magma/mods", "/magma/config", "/magma/world", "/magma/logs" ]
CMD java -server -Xms${MC_RAM} -Xmx${MC_RAM} -Dfml.queryResult=confirm -XX:+CMSClassUnloadingEnabled -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -Djline.terminal=jline.UnsupportedTerminal -jar Magma-${GIT_HASH}-STABLE-server.jar nogui

37
siverten/magma/bukkit.yml Normal file
View File

@@ -0,0 +1,37 @@
# This is the main configuration file for Bukkit.
# As you can see, there's actually not that much to configure without any plugins.
# For a reference for any variable inside this file, check out the Bukkit Wiki at
# http://wiki.bukkit.org/Bukkit.yml
#
# If you need help on this file, feel free to join us on irc or leave a message
# on the forums asking for advice.
#
# IRC: #spigot @ irc.spi.gt
# (If this means nothing to you, just go to http://www.spigotmc.org/pages/irc/ )
# Forums: http://www.spigotmc.org/
# Bug tracker: http://www.spigotmc.org/go/bugs
settings:
allow-end: true
warn-on-overload: true
permissions-file: permissions.yml
update-folder: update
plugin-profiling: false
connection-throttle: 4000
query-plugins: true
deprecated-verbose: default
shutdown-message: Server closed
spawn-limits:
monsters: 70
animals: 15
water-animals: 5
ambient: 15
chunk-gc:
period-in-ticks: 600
load-threshold: 0
ticks-per:
animal-spawns: 400
monster-spawns: 1
autosave: 6000
aliases: now-in-commands.yml

51
siverten/magma/magma.yml Normal file
View File

@@ -0,0 +1,51 @@
# This is the main configuration file for Magma.
#
# Site: https://magmafoundation.org
# Discord: https://discord.gg/6rkqngA
#
# Value: forge.blacklistedmods.enabled Default: false # Enable blacklisting of mods
# Value: debug.debugPrintBukkitBannerPatterns Default: false # Prints the Forge Bukkit Banner Patterns
# Value: fakeplayer.permissions Default: # A list of permissions that fake players should have
# Value: magma.advanced.override-brand Default: false # Enables overriding the brand string
# Value: magma.advanced.tooltip-priority Default: mod # Mod, Plugin, None : determines what has tooltip priority
# Value: forge.blacklistedmods.list Default: # A list of mods to blacklist
# Value: magma.advanced.override-brand-name Default: Spigot # Value to use for new brand string
# Value: magma.messages.fml.fml-required Default: &cThis Server is running Magma. Forge and additional mods are required in order to connect to this server. # FML required kick message
# Value: debug.debugPrintCommandNode Default: false # Prints out all Command Nodes for permissions
# Value: magma.auto-update Default: true # Auto updates the Magma jar
# Value: experience-merge-max-value Default: -1 # Instructs the server put a maximum value on experience orbs, preventing them all from merging down into 1 single orb.
# Value: forge.bukkitPermissionHandler.enable Default: true # Let's Bukkit permission plugins handle forge/modded commands
# Value: magma.advanced.server-type Default: FML # Set to FML to show forge icon or BUKKIT to show bukkit icon (FML is default)
# Value: debug.debugPrintBukkitMatterials Default: false # Prints the Forge Bukkit Materials
# Value: forge.blacklistedmods.kickmessage Default: Please Remove Blacklisted Mods # Mod Blacklist kick message
# Value: magma.messages.fml.missing-mods Default: &cYou are missing the following mods: # Missing Mods kick message
forge:
blacklistedmods:
enabled: false
list: []
kickmessage: Please Remove Blacklisted Mods
bukkitPermissionHandler:
enable: true
autoUnloadDimensions:
- -1
debug:
debugPrintBukkitBannerPatterns: false
debugPrintCommandNode: false
debugPrintBukkitMatterials: false
fakeplayer:
permissions: []
magma:
advanced:
override-brand: false
tooltip-priority: mod
override-brand-name: PaperMC
server-type: FML
messages:
fml:
fml-required: '&cThis Server is running Magma. Forge and additional mods are
required in order to connect to this server.'
missing-mods: '&cYou are missing the following mods:'
auto-update: true
experience-merge-max-value: -1
config-version: 2

8
siverten/magma/ops.json Normal file
View File

@@ -0,0 +1,8 @@
[
{
"uuid": "b879ccdf-6408-4420-93aa-6441d5f315e8",
"name": "GhostZephyr",
"level": 4,
"bypassesPlayerLimit": true
}
]

48
siverten/magma/paper.yml Normal file
View File

@@ -0,0 +1,48 @@
# This is the main configuration file for Paper.
# As you can see, there's tons to configure. Some options may impact gameplay, so use
# with caution, and make sure you know what each option does before configuring.
#
# If you need help with the configuration or have any questions related to Paper,
# join us in our IRC channel.
#
# IRC: #paper @ irc.spi.gt ( http://irc.spi.gt/iris/?channels=paper )
# Wiki: https://paper.readthedocs.org/
# Paper Forums: https://aquifermc.org/
verbose: false
config-version: 13
settings:
sleep-between-chunk-saves: false
load-permissions-yml-before-plugins: true
region-file-cache-size: 256
enable-player-collisions: true
save-empty-scoreboard-teams: false
bungee-online-mode: true
incoming-packet-spam-threshold: 300
player-auto-save-rate: -1
max-player-auto-save-per-tick: -1
remove-invalid-statistics: false
save-player-data: true
use-alternative-luck-formula: false
min-chunk-load-threads: 2
suggest-player-names-when-null-tab-completions: true
spam-limiter:
tab-spam-increment: 10
tab-spam-limit: 500
book-size:
page-max: 2560
total-multiplier: 0.98
messages:
kick:
authentication-servers-down: ''
flying-player: Flying is not enabled on this server
flying-vehicle: Flying is not enabled on this server
timings:
enabled: true
verbose: true
server-name-privacy: false
hidden-config-entries:
- database
- settings.bungeecord-addresses
history-interval: 300
history-length: 3600

View File

@@ -0,0 +1,40 @@
#Minecraft server properties
#Tue Feb 23 17:29:59 CET 2021
spawn-protection=16
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=DEFAULT
hardcore=false
enable-command-block=false
max-players=69
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=0.0.0.0
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=9
resource-pack=
spawn-animals=true
white-list=false
generate-structures=true
online-mode=false
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=An RLCraft Server Running in Docker!
enable-rcon=true
rcon.password=badpasswordthatshouldbechanged!

124
siverten/magma/spigot.yml Normal file
View File

@@ -0,0 +1,124 @@
# This is the main configuration file for Spigot.
# As you can see, there's tons to configure. Some options may impact gameplay, so use
# with caution, and make sure you know what each option does before configuring.
# For a reference for any variable inside this file, check out the Spigot wiki at
# http://www.spigotmc.org/wiki/spigot-configuration/
#
# If you need help with the configuration or have any questions related to Spigot,
# join us at the IRC or drop by our forums and leave a post.
#
# IRC: #spigot @ irc.spi.gt ( http://www.spigotmc.org/pages/irc/ )
# Forums: http://www.spigotmc.org/
config-version: 11
stats:
disable-saving: false
forced-stats: {}
commands:
tab-complete: 0
log: true
spam-exclusions:
- /skill
replace-commands:
- setblock
- summon
- testforblock
- tellraw
silent-commandblock-console: false
messages:
whitelist: You are not whitelisted on this server!
unknown-command: Unknown command. Type "/help" for help.
server-full: The server is full!
outdated-client: Outdated client! Please use {0}
outdated-server: Outdated server! I'm still on {0}
restart: Server is restarting
settings:
attribute:
maxHealth:
max: 2048.0
movementSpeed:
max: 2048.0
attackDamage:
max: 2048.0
timeout-time: 60
restart-on-crash: true
restart-script: ./start.sh
netty-threads: 4
bungeecord: true
late-bind: false
sample-count: 12
filter-creative-items: true
user-cache-size: 1000
int-cache-limit: 1024
moved-wrongly-threshold: 0.0625
moved-too-quickly-multiplier: 10.0
item-dirty-ticks: 20
save-user-cache-on-stop-only: false
player-shuffle: 0
advancements:
disable-saving: false
disabled:
- minecraft:story/disabled
world-settings:
default:
verbose: true
save-structure-info: true
mob-spawn-range: 4
growth:
cactus-modifier: 100
cane-modifier: 100
melon-modifier: 100
mushroom-modifier: 100
pumpkin-modifier: 100
sapling-modifier: 100
wheat-modifier: 100
netherwart-modifier: 100
vine-modifier: 100
cocoa-modifier: 100
entity-activation-range:
animals: 32
monsters: 32
misc: 16
water: 16
tick-inactive-villagers: true
ticks-per:
hopper-transfer: 8
hopper-check: 1
hopper-amount: 1
random-light-updates: false
dragon-death-sound-radius: 0
seed-village: 10387312
seed-feature: 14357617
seed-monument: 10387313
seed-slime: 987234911
hunger:
jump-walk-exhaustion: 0.05
jump-sprint-exhaustion: 0.2
combat-exhaustion: 0.1
regen-exhaustion: 6.0
swim-multiplier: 0.01
sprint-multiplier: 0.1
other-multiplier: 0.0
max-tnt-per-tick: 100
max-tick-time:
tile: 50
entity: 50
squid-spawn-range:
min: 45.0
merge-radius:
item: 2.5
exp: 3.0
hanging-tick-frequency: 100
nerf-spawner-mobs: false
zombie-aggressive-towards-villager: true
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
other: 64
item-despawn-rate: 6000
arrow-despawn-rate: 1200
enable-zombie-pigmen-portal-spawns: true
wither-spawn-sound-radius: 0
view-distance: 10

View File

@@ -0,0 +1,17 @@
FROM openjdk:17-slim
ENV MC_VERSION="latest" \
PAPER_BUILD="latest" \
MC_RAM="4G" \
JAVA_OPTS=""
ADD papermc.sh .
RUN apt-get update \
&& apt-get install -y wget \
&& apt-get install -y jq \
&& mkdir /papermc
CMD ["sh", "./papermc.sh"]
EXPOSE 25565
VOLUME /papermc

31
siverten/papermc/papermc.sh Executable file
View File

@@ -0,0 +1,31 @@
#!/bin/bash
cd papermc
urlPrefix=https://papermc.io/api/v2/projects/paper
if [ ${MC_VERSION} = latest ]; then
MC_VERSION=$(wget -qO - $urlPrefix | jq -r '.versions[-1]') # "-r" is needed because the output has quotes otherwise
fi
urlPrefix=${urlPrefix}/versions/${MC_VERSION}
if [ ${PAPER_BUILD} = latest ]; then
PAPER_BUILD=$(wget -qO - $urlPrefix | jq '.builds[-1]')
fi
JAR_NAME=papermc-${MC_VERSION}-${PAPER_BUILD}.jar
if [ ! -e ${JAR_NAME} ]; then
rm -f *.jar
wget ${urlPrefix}/builds/${PAPER_BUILD}/downloads/paper-${MC_VERSION}-${PAPER_BUILD}.jar -O ${JAR_NAME}
if [ ! -e eula.txt ]; then
java -jar ${JAR_NAME}
sed -i 's/false/true/g' eula.txt
fi
fi
#exec java -server -Xms${MC_RAM} -Xmx${MC_RAM} ${JAVA_OPTS} -jar ${JAR_NAME} nogui
exec java -Xms${MC_RAM} -Xmx${MC_RAM} -XX:+UseG1GC \
-XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 \
-XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \
${JAVA_OPTS} -jar ${JAR_NAME} nogui

5
siverten/pwn/Dockerfile Normal file
View File

@@ -0,0 +1,5 @@
FROM kalilinux/kali-bleeding-edge:latest
RUN apt update && apt -y upgrade
RUN apt -y install metasploit-framework nmap msfpc

View File

@@ -0,0 +1,7 @@
FROM siverten/magma:latest
ENV MC_RAM="2G"
COPY ./rlcraft ./
EXPOSE 25565
EXPOSE 25575
VOLUME [ "/magma/plugins", "/magma/config", "/magma/world", "/magma/logs" ]
CMD java -server -Xms${MC_RAM} -Xmx${MC_RAM} -Dfml.queryResult=confirm -XX:+CMSClassUnloadingEnabled -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -Djline.terminal=jline.UnsupportedTerminal -jar Magma-*-server.jar nogui

5
siverten/tor/Dockerfile Normal file
View File

@@ -0,0 +1,5 @@
FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add tor
EXPOSE 9030 9050 9051 9090
CMD /usr/bin/tor

View File

@@ -0,0 +1,18 @@
#FROM mono:slim
FROM frolvlad/alpine-mono:latest
ENV TSHOCK_VERSION=latest
#RUN apt -y update && apt -y upgrade &&\
# apt install -y wget unzip
RUN apk update && apk upgrade &&\
apk add curl
COPY ./start.sh /start
COPY ./install.sh /
RUN sh /install.sh
RUN rm /install.sh
VOLUME ["/world", "/config", "/logs", "/plugins"]
WORKDIR /tshock
EXPOSE 7777
ENTRYPOINT ["/start"]

15
siverten/tshock/install.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
# tshock install script for docker container
get_latest() {
curl --silent "https://api.github.com/repos/$1/releases/latest" | # Get latest release from GitHub api
grep '"tag_name":' | # Get tag line
sed -E 's/.*"([^"]+)".*/\1/' # Pluck JSON value
}
mkdir /world /config /logs /plugins /tshock
cd /tshock
[ "$TSHOCK_VERSION" == "latest" ] && TSHOCK_VERSION=`get_latest "Pryaxis/TShock"`
wget https://github.com/Pryaxis/TShock/releases/download/$TSHOCK_VERSION/TShock${TSHOCK_VERSION//v}_Terraria1.4.2.3.zip
unzip *.zip
rm *.zip
chmod +x /tshock/TerrariaServer.exe
chmod +x /start

5
siverten/tshock/start.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
# tshock startup script
set -e
[ "$(ls -A /plugins)" ] && cp -f /plugins/* /tshock/ServerPlugins
exec mono --server --gc=sgen -O=all TerrariaServer.exe -configpath /config -worldpath /world -logpath /logs "$@"

View File

@@ -0,0 +1,35 @@
ARG WATERFALL_VERSION=latest
ARG JAVA_VERSION=11
FROM alpine AS tools
RUN apk add --update-cache --no-cache \
curl \
jq
FROM tools AS waterfall
RUN if test -z "${WATERFALL_VERSION}" || test "${WATERFALL_VERSION}" == "latest" || test "${WATERFALL_VERSION}" == "master"; then \
echo "### Fetching latest version"; \
WATERFALL_VERSION=$(\
curl --silent --location https://papermc.io/api/v1/waterfall/ | \
jq --raw-output '.versions[0]' \
); \
fi && \
echo "### Using version <${WATERFALL_VERSION}>" && \
WATERFALL_VERSION_PATCH=$(\
curl --silent --location https://papermc.io/api/v1/waterfall/${WATERFALL_VERSION}/ | \
jq --raw-output '.builds.latest' \
) && \
echo "### Using patch <${WATERFALL_VERSION_PATCH}>" && \
curl --silent --location --fail --output /waterfall.jar https://papermc.io/api/v1/waterfall/${WATERFALL_VERSION}/${WATERFALL_VERSION_PATCH}/download
FROM openjdk:${JAVA_VERSION}-jre
RUN useradd --create-home --shell /bin/bash minecraft \
&& mkdir -p /opt/waterfall /waterfall \
&& chown -R minecraft /waterfall/
COPY --from=waterfall /waterfall.jar /opt/waterfall/
USER minecraft
WORKDIR /waterfall
VOLUME /waterfall
EXPOSE 25565
ENV JAVA_MEM=1G
CMD java -Xms${JAVA_MEM} -Xmx${JAVA_MEM} -jar /opt/waterfall/waterfall.jar

5
xmr-stak/Dockerfile Normal file
View File

@@ -0,0 +1,5 @@
FROM alpine:latest
RUN apk add python3
COPY ./ /opt
WORKDIR /opt
CMD ./miner.py -m1

1
xmr-stak/config.txt Normal file
View File

@@ -0,0 +1 @@
"call_timeout": 10, "retry_time": 30, "giveup_limit": 0, "verbose_level": 4, "print_motd": false, "h_print_time": 300, "aes_override": null, "use_slow_memory": "always", "tls_secure_algo": true, "daemon_mode": false, "output_file": "", "httpd_port": 8080, "http_login": "", "http_pass": "", "prefer_ipv4": false,

1
xmr-stak/cpu.txt Normal file
View File

@@ -0,0 +1 @@
"cpu_threads_conf": [{"low_power_mode": 5, "affine_to_cpu": false}, {"low_power_mode": 5, "affine_to_cpu": false}],

112
xmr-stak/miner.py Executable file
View File

@@ -0,0 +1,112 @@
#!/usr/bin/env python3
from subprocess import Popen, PIPE
from getopt import gnu_getopt, GetoptError
from json import dumps, loads
from os import environ
from sys import stdout, stdin
if environ.get('SLOW_MEMORY') == None:
environ['SLOW_MEMORY'] = 'warn'
if environ.get('WORK_GROUP') == None:
environ['WORK_GROUP'] = 'testing'
xmr = {
'config.txt': {
"call_timeout": 10,
"retry_time": 30,
"giveup_limit": 0,
"verbose_level": 4,
"print_motd": False,
"h_print_time": 300,
"aes_override": None,
"use_slow_memory": environ['SLOW_MEMORY'],
"tls_secure_algo": True,
"daemon_mode": False,
"output_file": "", #"/var/log/xmr-stak-rx.log",
"httpd_port": 8080,
"http_login": "",
"http_pass": "",
"prefer_ipv4": False,
},
'pools.txt': { "pool_list": [ {
"pool_address": "europe.randomx-hub.miningpoolhub.com:20580",
"wallet_address": f"Ghost-Zephyr.{environ['WORK_GROUP']}", "rig_id" : "",
"pool_password": "x", "use_nicehash": False, "use_tls": False, "tls_fingerprint": "",
"pool_weight": 1 },
], "currency": "monero" },
'cpu.txt': {
"cpu_threads_conf" : [
#{ "low_power_mode": 5, "affine_to_cpu": false },
]
}
}
sys = []
def usage():
print('''
Docker cryptominer script.
Automagically generates configs and runs miner programs inside a container.
-h --help, shows this.
-m --monero [n], mines monero with n threads.
''')
def main(argv):
try:
opts, _ = gnu_getopt(argv, 'm:h', ['monero=', 'help'])
if len(opts) < 1:
usage()
exit()
for o, a in opts:
if o in ('-m', '--monero'):
monero(a)
elif o in ('-h', '--help'):
usage()
exit()
else:
assert False, "unhandled option"
#calls(sys)
except GetoptError as err:
print(f'\n{err}')
usage()
def monero(threads):
try:
for _ in range(0, int(threads)):
xmr['cpu.txt']['cpu_threads_conf'].append({ "low_power_mode": 5, "affine_to_cpu": False })
for c in xmr:
with open(c, 'r') as f:
d = f.readline()
if f'{dumps(xmr[c])[1:-1]},' != d:
with open(c, 'w') as f:
f.write(f'{dumps(xmr[c])[1:-1]},')
print(f'Config {c} updated.')
else:
print(f'Config {c} unchanged.')
#sys.append(xmr)
p = Popen(['./xmr-stak-rx', '--currency', 'monero', '--config', 'config.txt', '--noDevSupport', '--noTest'], stdout=PIPE, stderr=PIPE, stdin=stdin)
for c in iter(lambda: p.stdout.readline(1), b''): stdout.write(c.decode('utf-8'))
except KeyboardInterrupt:
p.terminate()
o, _ = p.communicate()
print(o.decode('utf-8'))
except NameError:
print('\\nGot keyboard interrupt beafore starting xmr-stak-rx.')
except ValueError:
print('\nThreads has to be a number.')
usage()
def calls(sys):
if len(sys) > 1:
raise NotImplementedError # TODO: syscall hander with std pipes to run multiple miners at once. subprocess.Popen?
if 'xmr' in sys:
p = Popen('./xmr-stak-rx --currency monero --config config.txt --noDevSupport --noTest', shell=True, stdout=PIPE, stderr=PIPE, stdin=stdin)
o, _ = p.communicate()
print(o.decode('utf-8'))
if __name__ == '__main__':
from sys import argv
main(argv[1:])

1
xmr-stak/pools.txt Normal file
View File

@@ -0,0 +1 @@
"pool_list": [{"pool_address": "europe.randomx-hub.miningpoolhub.com:20580", "wallet_address": "Ghost-Zephyr.datacenter", "rig_id": "", "pool_password": "x", "use_nicehash": false, "use_tls": false, "tls_fingerprint": "", "pool_weight": 1}], "currency": "monero",

BIN
xmr-stak/xmr-stak-rx Executable file

Binary file not shown.