SCOPEDD bdb13b890d
CI / Real Minecraft installs (manual) (push) Skipped
CI / Rust, web and container (push) Failing after 10s
Server integrations / Fabric and Forge / 1.20.1 (push) Failing after 6s
CI / Windows launcher (push) Failing after 11s
Server integrations / paper (push) Failing after 15s
Server integrations / Fabric and Forge / 1.21.1 (push) Failing after 6s
Server integrations / Fabric and Forge / 26.1.2 (push) Failing after 7s
Server integrations / Fabric and Forge / 26.2 (push) Failing after 9s
Server integrations / Fabric and Forge / 26.3 (push) Failing after 7s
Use standard runner labels in Gitea workflows
2026-10-01 00:09:32 -04:00
2026-09-30 22:56:38 -04:00
2026-09-30 22:56:38 -04:00

SCOPENET

A fast, fully customisable Minecraft launcher — and the self-hosted admin panel that controls it.

Brand it, publish vanilla versions or modpacks, manage players, and push changes to every launcher instantly.

Launcher home Panel launcher designer

What's inside

Launcher (Windows) Tauri 2 + Rust + Svelte. Uses the system WebView2 instead of bundling Chromium, so the installer stays small and memory use low.
Admin panel (Docker) Rust (Axum) + SQLite + Svelte. 14 MB image; measured ~2 MB RAM at idle.
Engine scopenet-core: installs Minecraft, Java, Fabric/Quilt/Forge/NeoForge and launches the game.

Launcher features

  • Accounts — private panel accounts (username + password, authenticated online-mode servers), and local offline usernames for local play. Tokens are encrypted with a key stored in Windows Credential Manager.
  • Instances — every instance the admin publishes shows up in the sidebar; group-restricted ones only for the right players.
  • One-click play — downloads the right Java automatically, the game, the mod loader and the modpack, with live speed/ETA. Files are shared between instances and verified by SHA-1.
  • Built-in server — the instance's server is added to the multiplayer list, auto-joined (Quick Play on 1.20+), and its live status (players, MOTD, ping) is shown on the home screen.
  • Settings — memory with a recommendation for your PC, resolution, fullscreen, what happens on launch, Java path, GC presets (G1 / ZGC), JVM args, Minecraft keybind editor (applied to every instance), custom accent colour, glass/animation toggles, UI scale, storage manager, per-instance overrides.
  • Quality of life — game console, crash dialog with plain-English hints, repair files, offline launch from cache, self-updates from Gitea Releases, single-instance window, Ctrl+Enter to play.
  • Branding from the panel — name, logo, colours, font, corner radius, glass, image/video background, news feed, social links, custom CSS. No rebuild needed.

Admin panel features

  • Instances — pick a Minecraft version + loader, or import a modpack from Modrinth, CurseForge or a .zip (.mrpack, CurseForge export, or any instance folder). Upload extra mods/configs. CurseForge mods that block third-party downloads are flagged with a download link.
  • Access control — public, signed-in players, or specific groups.
  • Players — create/approve/disable accounts, roles, groups; sign-ups closed / approval / open.
  • Launcher design — every branding option with a live preview and 7 colour presets.
  • Dashboard — launches per day, active players, popular instances, recent activity.

Quick start

1. Run the panel

git clone https://gitea.jadonsandbox.com/blade/scopenet-mc.git
cd scopenet-mc
cp .env.example .env
# edit .env → set ADMIN_PASSWORD and PUBLIC_URL for your domain
docker compose config --quiet
docker compose up -d --build

Open http://your-server:8080, sign in as admin, then:

  1. Launcher design → name, logo, colours, news.
  2. Instances → New instance → a version, or a Modrinth / CurseForge / .zip modpack.
  3. Settings → how players sign in.

Put the panel behind HTTPS (Caddy, Traefik, nginx, Cloudflare Tunnel…) before sharing it. See docs/deployment.md.

2. Build your branded launcher

  1. In Gitea → Repository Settings → Actions → Variables, add:
    • PANEL_URL = https://panel.example.com (players connect automatically)
    • LOCK_PANEL = 1 (optional: hide the "change server" option)
    • LAUNCHER_NAME = MyServer Launcher (optional)
  2. Actions → Release → Run workflow, enter a version like 1.0.0 — or push a tag v1.0.0.

The workflow builds the Windows installer, pushes the panel image to Gitea registry (gitea.jadonsandbox.com/blade/scopenet-mc-panel, amd64 + arm64) and publishes a Gitea release. Installed launchers pick up new releases automatically.

The Gitea registry package may be private at first — make it public under the repository owner’s Packages settings if you want docker pull without logging in.

Gitea runner setup

Register a Linux host runner with the ubuntu-latest label and a Windows host runner with windows-latest. The CI workflows check the host OS and required tools before building. The Linux host needs Rust with rustfmt and clippy, Node 22+, Java 21 and 25 for the integration matrix, Docker with Buildx, pkg-config, the Tauri WebKit/GTK development libraries, curl, and jq. The Windows host needs Rust, Node 22+, PowerShell and Git Bash. Enable Actions for the repository and allow its job token to write releases and packages. See Gitea's runner labels and token permissions.

Repository layout

crates/shared      Wire types shared by launcher and panel (manifest, branding, auth)
crates/core        Launcher engine: Mojang/Java/loaders, file sync, launch, authlib, ping
integrations/      Paper plugin and Fabric/Forge server mods
panel/server       Admin panel API (Axum + SQLite)
panel/web          Admin panel UI (Svelte 5)
launcher/          Desktop launcher UI (Svelte 5)
launcher/src-tauri Desktop launcher shell (Tauri 2)
Dockerfile         Panel image (static binary on scratch)
docker-compose.yml Panel deployment
.gitea/workflows  CI + release (installer, Gitea release, Gitea registry image)

Documentation

Configuration reference

Panel (environment variables)

Variable Default
ADMIN_USERNAME admin First admin account (created on first start)
ADMIN_PASSWORD random, printed in logs First admin password
JWT_SECRET auto-generated in /data Signs login tokens
CURSEFORGE_API_KEY – Also settable in the panel
MAX_UPLOAD_MB 2048 Largest modpack upload
SCOPENET_BIND 0.0.0.0:8080 Listen address
SCOPENET_DATA_DIR /data Database, hosted files, uploads

Launcher (build-time, via repository variables) — PANEL_URL, LOCK_PANEL, LAUNCHER_NAME.

Notes

  • Minecraft is a trademark of Mojang Studios. SCOPENET is not affiliated with Mojang or Microsoft. Offline mode is intended for your own community servers.
  • No license has been chosen yet — add a LICENSE file before distributing.
S
Description
No description provided
Readme
22 MiB
1 Stars 1 Watchers 0 Forks
Languages
Rust 40.7%
Svelte 27.9%
Java 25.2%
TypeScript 4.8%
CSS 0.6%
Other 0.7%