add tmodloader

This commit is contained in:
Matthew Tran 2025-04-10 01:43:10 -07:00
parent c1f31adcd9
commit 292812f3f5
9 changed files with 36 additions and 18 deletions

2
.gitignore vendored
View File

@ -21,6 +21,8 @@ minecraft_bedrock/worlds*
# terraria
terraria/worlds
terraria/mods
terraria/config.txt
terraria/password.txt
# nas

View File

@ -25,7 +25,7 @@ Services deployed on [matthewtran.com](https://matthewtran.com).
4. Reboot the router and server.
5. Configure, build, and start services.
- Create `website/sendgrid.key` with a [SendGrid API key](https://app.sendgrid.com/settings/api_keys).
- Create `terraria/password.txt` if needed.
- Create `terraria/config.txt` and `terraria/password.txt` if needed.
- Create `nas/mounts.json` which contains a list of `"<name>":"<directory>"` for the SMB share.
- Create `nas/users.json` which contains a list of `"<user>":"<password>"` for the SMB share.
- `scripts/setup_repo.py`

View File

@ -119,6 +119,7 @@ services:
- game
volumes:
- ./terraria/worlds:/home/me/worlds
- ./terraria/mods:/home/me/mods
cap_drop:
- ALL
nas:

View File

@ -10,6 +10,7 @@ if __name__ == "__main__":
"minecraft/worlds",
"minecraft_bedrock/worlds",
"terraria/worlds",
"terraria/mods",
"website/gitea",
], check=True)
shutil.chown(out, os.getlogin(), os.getlogin())

View File

@ -25,6 +25,7 @@ if __name__ == "__main__":
"minecraft/worlds",
"minecraft_bedrock/worlds",
"terraria/worlds",
"terraria/mods",
]
}
for group in PATHS:

View File

@ -1,21 +1,25 @@
FROM ubuntu:24.04
RUN apt-get update && apt-get -y upgrade
RUN apt-get install -y wget unzip
RUN apt-get install -y wget unzip dotnet-runtime-8.0
RUN groupadd -g 2002 me && useradd -u 2002 -g 2002 -m me
USER me
WORKDIR /home/me
# from https://terraria.fandom.com/wiki/Server (currently 1.4.4.9)
RUN wget https://terraria.org/api/download/pc-dedicated-server/terraria-server-1449.zip
RUN unzip terraria-server-1449.zip && rm terraria-server-1449.zip
RUN mv 1449/ server/
# from https://github.com/tModLoader/tModLoader/releases (currently v2025.02.3.2)
RUN wget https://github.com/tModLoader/tModLoader/releases/download/v2025.02.3.2/tModLoader.zip
RUN unzip tModLoader.zip -d server && rm tModLoader.zip
RUN chmod +x server/start-tModLoaderServer.sh
RUN mkdir server/tModLoader-Logs && touch server/tModLoader-Logs/server.log
RUN echo "" > server/LaunchUtils/InstallDotNet.sh
COPY --chown=me:me entry.sh ./
WORKDIR /home/me/server/Linux
RUN chmod +x TerrariaServer.bin.x86_64
COPY --chown=me:me config.default ./config.txt
COPY --chown=me:me password.default ./password.txt
COPY --chown=me:me config.txt password.tx[t] ./
COPY --chown=me:me config.tx[t] password.tx[t] ./
# To add mods, install them on the client and copy over the .tmod files to mods/
# Then modify/create mods/enabled.json and add the desired mods to enable
# TODO reduce idle cpu when no players...

15
terraria/config.default Normal file
View File

@ -0,0 +1,15 @@
# world file
world=/home/me/worlds/master.wld
# default options if no world
autocreate=3
worldname=poopy
difficulty=2
# server options
motd=poopy
worldpath=/home/me/worlds
secure=1
# tmodloader options
modpath=/home/me/mods

View File

@ -1,6 +0,0 @@
world=/home/me/worlds/legendary.wld
autocreate=3
seed=getfixedboi
worldname=legendary
difficulty=2
worldpath=/home/me/worlds

View File

@ -8,7 +8,7 @@ trap 'cleanup' TERM
rm cmd
mkfifo cmd
tail -f cmd | ./TerrariaServer.bin.x86_64 -config config.txt -pass $(cat password.txt) &
tail -f cmd | ./server/start-tModLoaderServer.sh -nosteam -config ../config.txt -pass $(cat password.txt) &
echo "help\n" > cmd # shell waits for FIFO to be opened for writing before starting program!
wait $! # wait for SIGTERM
wait $! # wait for server to stop