Skip to content

Synchronize your mods with the Tmodloader dedicated server

License

Notifications You must be signed in to change notification settings

Ashu11-A/tModLoader-sync

Repository files navigation

tModLoader sync

License Stars Last Commit Repo Size


Automatically synchronizes your Steam mods with the server, making upload and maintenance easier.
This tool was created to be used with the tModLoader egg found here: Ashu_eggs

Star Repo

2026-02-23.17-55-14.mp4

🚀 Overview

tModLoader-sync is a synchronization tool designed to bridge the gap between tModLoader servers and mod uploading. It ensures that all mods from your Steam workshop are synchronized with the server, using SHA256 hashing for precise verification.

Key Features

  • Automatic Synchronization: Detects missing or outdated mods and uploads them to the server.
  • Multi-platform: Support for Linux and Windows (x64 and ARM64).
  • Interactive TUI: Friendly terminal interface built with Bubbletea.
  • Pterodactyl Ready: Specifically optimized for Pterodactyl-based deployments.
  • Multilingual: Support for English and Portuguese (PT-BR).

🏗️ Architecture

The project is divided into three main components:

  1. Server (/server): A Gin-based REST API that manages mod storage and synchronization status.
  2. Client (/client): A TUI application that scans local Steam Workshop mods and interacts with the server.
  3. Shared (/shared): Common logic for operating system detection, hashing, and versioning.

🛠️ Building

The project uses a Go workspace. You can build all targets using the provided script:

./build.sh

Binaries will be available in the build/ directory for:

  • Linux (x64, ARM64)
  • Windows (x64, ARM64)

📖 How to Use

Server

Run the server with the mandatory --port flag:

./server --port 8080

Client

Run the client by providing the server's host and port:

./client --host <SERVER_IP> --port 8080

The client will automatically detect your Steam Workshop path and start the synchronization process.


📥 Installation (Quick Script)

Linux (Bash)

curl -fsSL https://raw.githubusercontent.com/Ashu11-A/tModLoader-sync/main/sync.sh | h=<SERVER_IP> p=:<PORT> bash

Windows (PowerShell)

powershell -c "$h='<SERVER_IP>';$p=':<PORT>';irm https://raw.githubusercontent.com/Ashu11-A/tModLoader-sync/main/sync.ps1|iex"