mirror of
https://github.com/dragonlock2/matthewtran.com.git
synced 2026-06-28 01:58:34 +00:00
Compare commits
23 Commits
d1eebc9714
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 35036f8c03 | |||
| 20bc259f26 | |||
| fe2258b0e7 | |||
| ae5ffa9a4a | |||
| 71988b74ff | |||
| cdbacd6edd | |||
| 0fa04ef46f | |||
| 542d653d17 | |||
| d1a1e3fbe1 | |||
| 09ba7b2fdf | |||
| 251144832f | |||
| ed640ab69c | |||
| 263698ad8a | |||
| 150e04c571 | |||
| 32543c6b20 | |||
| b75fe2879a | |||
| 1f04cf13e9 | |||
| e058e70685 | |||
| 9b45cea6fd | |||
| fe689df277 | |||
| 0c30c0c9a5 | |||
| d0b5a94a3a | |||
| 7df0c2a004 |
+49
-3
@@ -17,6 +17,7 @@ UIDS = {
|
||||
"crypto" : 1002,
|
||||
"game" : 1003,
|
||||
"nas" : 1004,
|
||||
"tv" : 1005,
|
||||
}
|
||||
|
||||
PORTS = {
|
||||
@@ -41,6 +42,7 @@ PORTS = {
|
||||
"nas": [
|
||||
"445:445", # nas
|
||||
],
|
||||
"tv": [],
|
||||
}
|
||||
|
||||
def check_keys():
|
||||
@@ -142,10 +144,9 @@ def add_more_drive():
|
||||
})
|
||||
|
||||
def add_packages():
|
||||
# TODO update once done https://github.com/coreos/fedora-coreos-tracker/issues/681
|
||||
but["systemd"] = {
|
||||
"units": [
|
||||
{
|
||||
{ # TODO update once done https://github.com/coreos/fedora-coreos-tracker/issues/681
|
||||
"name": "rpm-ostree-install.service",
|
||||
"enabled": True,
|
||||
"contents": "\n".join([
|
||||
@@ -158,12 +159,17 @@ def add_packages():
|
||||
"[Service]",
|
||||
"Type=oneshot",
|
||||
"RemainAfterExit=yes",
|
||||
f"ExecStart=/usr/bin/usermod -a -G {",".join(UIDS.keys())} core",
|
||||
f"ExecStart=/usr/bin/usermod -aG {",".join(UIDS.keys())} core",
|
||||
"ExecStart=/usr/bin/rpm-ostree install -y --allow-inactive " + " ".join([
|
||||
"alsa-utils",
|
||||
"avahi",
|
||||
"flatpak",
|
||||
"htop",
|
||||
"python3",
|
||||
"seatd",
|
||||
"sway",
|
||||
"tmux",
|
||||
"usbutils",
|
||||
"vim",
|
||||
"zip",
|
||||
]),
|
||||
@@ -173,6 +179,33 @@ def add_packages():
|
||||
"WantedBy=multi-user.target",
|
||||
]),
|
||||
},
|
||||
{ # TODO update once done https://github.com/coreos/rpm-ostree/issues/49
|
||||
"name": "tv-setup.service",
|
||||
"enabled": True,
|
||||
"contents": "\n".join([
|
||||
"[Unit]",
|
||||
"Description=Post package install setup",
|
||||
"Wants=network-online.target",
|
||||
"After=network-online.target",
|
||||
"ConditionPathExists=/etc/rpm/rpm-ostree-install.stamp",
|
||||
"ConditionPathExists=!/etc/rpm/%N.stamp",
|
||||
"[Service]",
|
||||
"Type=oneshot",
|
||||
"RemainAfterExit=yes",
|
||||
"ExecStart=/usr/bin/sh -c 'grep -E \"^(audio|seat|video):\" /usr/lib/group >> /etc/group'",
|
||||
"ExecStart=/usr/bin/usermod -aG audio,seat,video tv",
|
||||
"ExecStart=/usr/bin/systemctl enable --now seatd",
|
||||
"ExecStart=flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo",
|
||||
"ExecStart=flatpak install -y " + " ".join([
|
||||
"com.brave.Browser",
|
||||
"org.mozilla.firefox",
|
||||
"com.valvesoftware.SteamLink",
|
||||
]),
|
||||
"ExecStart=/bin/touch /etc/rpm/%N.stamp",
|
||||
"[Install]",
|
||||
"WantedBy=multi-user.target",
|
||||
]),
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -201,6 +234,14 @@ def allow_port_access():
|
||||
"contents": { "inline": "net.ipv4.ip_unprivileged_port_start=80" },
|
||||
})
|
||||
|
||||
def allow_nouveau():
|
||||
but["storage"]["files"].append({
|
||||
"path": "/etc/modprobe.d/blacklist-nouveau.conf",
|
||||
"mode": 0o644,
|
||||
"overwrite": True,
|
||||
"contents": { "inline": "" }
|
||||
})
|
||||
|
||||
def add_users():
|
||||
for user in UIDS:
|
||||
but["passwd"]["users"].append({
|
||||
@@ -212,6 +253,10 @@ def add_users():
|
||||
"path": f"/var/lib/systemd/linger/{user}",
|
||||
"contents": { "inline": "" },
|
||||
})
|
||||
if user == "tv":
|
||||
but["passwd"]["users"][-1]["password_hash"] = subprocess.run(
|
||||
["docker", "run", "-it", "--rm", "quay.io/coreos/mkpasswd", "--method=yescrypt", cfg["core"]["tv_passwd"]],
|
||||
capture_output=True, text=True, check=True).stdout.strip()
|
||||
|
||||
def copy_source():
|
||||
but["storage"]["directories"].append({
|
||||
@@ -372,6 +417,7 @@ if __name__ == "__main__":
|
||||
add_ssh_keys()
|
||||
set_hostname()
|
||||
allow_port_access()
|
||||
allow_nouveau()
|
||||
|
||||
# server setup
|
||||
add_users()
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
],
|
||||
"stash_key": "<LUKS key>",
|
||||
"stash_wipe": false,
|
||||
"data_dir": "/var/home/core/matthewtrancom_data"
|
||||
"data_dir": "/var/mnt/stash/data",
|
||||
"tv_passwd": "password"
|
||||
},
|
||||
"drives": [
|
||||
{
|
||||
|
||||
+8
-6
@@ -23,6 +23,7 @@ IMAGES = {
|
||||
"nas": [
|
||||
"nas",
|
||||
],
|
||||
"tv": [],
|
||||
}
|
||||
|
||||
def generate(cfg):
|
||||
@@ -85,16 +86,17 @@ if __name__ == "__main__":
|
||||
|
||||
# run builds
|
||||
for user in IMAGES:
|
||||
if not IMAGES[user]:
|
||||
continue
|
||||
print(f"building images for {user}...")
|
||||
run([f"cd {SOURCE_DIR}"] + [
|
||||
f"sudo -u {user} podman build --tag {i} {SOURCE_DIR}/{i}"
|
||||
f"podman build --tag {i} {SOURCE_DIR}/{i}"
|
||||
for i in IMAGES[user]
|
||||
])
|
||||
], user=user)
|
||||
|
||||
# restart pods
|
||||
for user in IMAGES:
|
||||
if not IMAGES[user]:
|
||||
continue
|
||||
print(f"restarting pod for {user}...")
|
||||
run([
|
||||
f"cd {SOURCE_DIR}",
|
||||
f"sudo systemctl --machine={user}@.host --user restart {user}-pod " + " ".join(IMAGES[user]),
|
||||
])
|
||||
run([f"systemctl --user restart {user}-pod " + " ".join(IMAGES[user])], user=user)
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
FROM docker.io/gitea/gitea:1.23.7
|
||||
FROM docker.io/gitea/gitea:1.26.2
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
FROM ubuntu:24.04
|
||||
FROM ubuntu:26.04
|
||||
|
||||
RUN apt-get update && apt-get -y upgrade
|
||||
RUN apt-get install -y wget openjdk-21-jre
|
||||
RUN apt-get install -y wget openjdk-25-jre
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
# from https://github.com/itzg/rcon-cli
|
||||
RUN wget -O rcon-cli.tar.gz https://github.com/itzg/rcon-cli/releases/download/1.7.0/rcon-cli_1.7.0_linux_amd64.tar.gz
|
||||
RUN wget -O rcon-cli.tar.gz https://github.com/itzg/rcon-cli/releases/download/1.7.5/rcon-cli_1.7.5_linux_amd64.tar.gz
|
||||
RUN tar xvf rcon-cli.tar.gz && rm rcon-cli.tar.gz
|
||||
|
||||
# from https://www.minecraft.net/en-us/download/server (currently 1.21.5)
|
||||
RUN wget https://piston-data.mojang.com/v1/objects/e6ec2f64e6080b9b5d9b471b291c33cc7f509733/server.jar
|
||||
# from https://www.minecraft.net/en-us/download/server (currently 26.1.2)
|
||||
RUN wget https://piston-data.mojang.com/v1/objects/97ccd4c0ed3f81bbb7bfacddd1090b0c56f9bc51/server.jar
|
||||
|
||||
COPY entry.sh ./
|
||||
COPY eula.txt ./
|
||||
|
||||
+1
-1
@@ -6,6 +6,6 @@ cleanup() {
|
||||
|
||||
trap 'cleanup' SIGTERM SIGINT
|
||||
|
||||
java -Xmx1024M -Xms1024M -jar server.jar nogui &
|
||||
java -Xmx16G -Xms16G -jar server.jar nogui &
|
||||
wait $! # wait for SIGTERM
|
||||
wait $! # wait for server to stop
|
||||
|
||||
@@ -16,7 +16,7 @@ function-permission-level=2
|
||||
gamemode=spectator
|
||||
generate-structures=true
|
||||
generator-settings={}
|
||||
hardcore=true
|
||||
hardcore=false
|
||||
hide-online-players=false
|
||||
initial-disabled-packs=
|
||||
initial-enabled-packs=vanilla
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
FROM ubuntu:24.04
|
||||
FROM ubuntu:26.04
|
||||
|
||||
RUN apt-get update && apt-get -y upgrade
|
||||
RUN apt-get install -y wget unzip curl tmux
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
# from https://www.minecraft.net/en-us/download/server/bedrock (currently 1.21.82.1)
|
||||
RUN wget -O server.zip --user-agent "Mozilla/5.0" https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-1.21.82.1.zip
|
||||
# from https://www.minecraft.net/en-us/download/server/bedrock (currently 1.26.23.1)
|
||||
RUN wget -O server.zip --user-agent "Mozilla/5.0" https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-1.26.23.1.zip
|
||||
RUN unzip server.zip && rm server.zip
|
||||
|
||||
COPY entry.sh ./
|
||||
|
||||
+4
-4
@@ -1,14 +1,14 @@
|
||||
FROM ubuntu:24.04
|
||||
FROM ubuntu:26.04
|
||||
|
||||
RUN apt-get update && apt-get -y upgrade
|
||||
RUN apt-get install -y wget bzip2
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
# currently v0.18.4.0
|
||||
RUN wget -O monerod.tar.bz2 https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.4.0.tar.bz2
|
||||
# currently v0.18.5.0
|
||||
RUN wget -O monerod.tar.bz2 https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.5.0.tar.bz2
|
||||
RUN tar xvf monerod.tar.bz2 && rm monerod.tar.bz2
|
||||
RUN mv monero-x86_64-linux-gnu-v0.18.4.0 monero
|
||||
RUN mv monero-x86_64-linux-gnu-v0.18.5.0 monero
|
||||
|
||||
COPY entry.sh ./
|
||||
|
||||
|
||||
+1
-1
@@ -17,5 +17,5 @@ cleanup() {
|
||||
monero/monerod exit --rpc-bind-port 18089
|
||||
}
|
||||
trap 'cleanup' SIGTERM SIGINT
|
||||
tail -f /dev/null &
|
||||
sleep infinity &
|
||||
wait $!
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM ubuntu:24.04
|
||||
FROM ubuntu:26.04
|
||||
|
||||
ENV TZ=America/Los_Angeles
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
+1
-1
@@ -2,5 +2,5 @@
|
||||
|
||||
smbd -s smb.conf
|
||||
trap 'echo "stopping smbd..."' SIGTERM SIGINT
|
||||
tail -f /dev/null &
|
||||
sleep infinity &
|
||||
wait $!
|
||||
|
||||
+4
-4
@@ -1,14 +1,14 @@
|
||||
FROM ubuntu:24.04
|
||||
FROM ubuntu:26.04
|
||||
|
||||
RUN apt-get update && apt-get -y upgrade
|
||||
RUN apt-get install -y wget
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
# currently v4.6
|
||||
RUN wget -O p2pool.tar.gz https://github.com/SChernykh/p2pool/releases/download/v4.6/p2pool-v4.6-linux-x64.tar.gz
|
||||
# currently v4.16
|
||||
RUN wget -O p2pool.tar.gz https://github.com/SChernykh/p2pool/releases/download/v4.16/p2pool-v4.16-linux-x64.tar.gz
|
||||
RUN tar xvf p2pool.tar.gz && rm p2pool.tar.gz
|
||||
RUN mv p2pool-v4.6-linux-x64/p2pool ./p2pool
|
||||
RUN mv p2pool-v4.16-linux-x64/p2pool ./p2pool
|
||||
|
||||
COPY entry.sh ./
|
||||
|
||||
|
||||
+9
-4
@@ -1,12 +1,17 @@
|
||||
FROM ubuntu:24.04
|
||||
FROM ubuntu:26.04
|
||||
|
||||
RUN apt-get update && apt-get -y upgrade
|
||||
RUN apt-get install -y wget unzip python3 iproute2 dotnet-runtime-8.0
|
||||
RUN apt-get install -y wget unzip python3 iproute2
|
||||
|
||||
# .NET 8.0 not available by default in 26.04
|
||||
RUN apt-get install -y software-properties-common
|
||||
RUN add-apt-repository ppa:dotnet/backports
|
||||
RUN apt-get install -y dotnet-runtime-8.0
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
# from https://github.com/tModLoader/tModLoader/releases (currently v2025.03.3.1)
|
||||
RUN wget https://github.com/tModLoader/tModLoader/releases/download/v2025.03.3.1/tModLoader.zip
|
||||
# from https://github.com/tModLoader/tModLoader/releases (currently v2026.04.3.0)
|
||||
RUN wget https://github.com/tModLoader/tModLoader/releases/download/v2026.04.3.0/tModLoader.zip
|
||||
RUN unzip tModLoader.zip -d server && rm tModLoader.zip
|
||||
|
||||
RUN chmod +x server/start-tModLoaderServer.sh
|
||||
|
||||
@@ -4,7 +4,7 @@ worldname=poopy
|
||||
# server options
|
||||
motd=poopy
|
||||
worldpath=/data/worlds
|
||||
secure=1
|
||||
secure=0
|
||||
|
||||
# tmodloader options
|
||||
modpath=/data/mods
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM ubuntu:24.04
|
||||
FROM ubuntu:26.04
|
||||
|
||||
# install dependencies
|
||||
ENV TZ=America/Los_Angeles
|
||||
|
||||
+1
-1
@@ -24,5 +24,5 @@ python3 ip.py &
|
||||
# run server
|
||||
nginx -c ~/server.conf
|
||||
trap 'echo "stopping website..."' SIGTERM SIGINT
|
||||
tail -f /dev/null &
|
||||
sleep infinity &
|
||||
wait $!
|
||||
|
||||
Reference in New Issue
Block a user