Magnemite

Quick start

From a clean server to a logged-in dashboard and a first enrolled box.

Two supported ways to run the stack. Pick one:

What follows is the short version of the docker compose path, end to end.

Bring the stack up

git clone https://github.com/Rodaviva29/magnemite.git && cd magnemite
cp .env.example .env
# Set MAGNEMITE_PUBLIC_URL (and EDGE_PORT if 8080 is taken), then generate the
# secrets:
#   openssl rand -base64 32
$EDITOR .env

docker compose up -d --build

The stack publishes plain HTTP on EDGE_PORT (8080) and never binds 80 or 443: point a virtual host on your own reverse proxy at http://127.0.0.1:8080 and terminate TLS there.

Seed the database

docker compose exec hub pnpm --filter @magnemite/db run seed

This creates the admin account from ADMIN_EMAIL / ADMIN_PASSWORD, the app target, and one enrollment token — printed once, so copy it now. Losing it costs nothing: mint another from Settings.

Sign in

Open your domain and log in with ADMIN_EMAIL / ADMIN_PASSWORD. Sign-up is disabled by design; further accounts are created from Settings → Accounts.

Build the Magisk module

SERVER is the hub URL — the same value as MAGNEMITE_PUBLIC_URL.

make module SERVER=https://magnemite.example.com TOKEN=<enrollment token>
# → dist/magnemite-agent-0.1.2.zip

On Windows: ./scripts/build-agent.ps1 -Server https://… -Token <token>.

Flash a box

adb push dist/magnemite-agent-0.1.2.zip /data/local/tmp/
adb shell "su -c 'magisk --install-module /data/local/tmp/magnemite-agent-0.1.2.zip'"
adb reboot

Or in bulk over the LAN: ./scripts/enroll.sh dist/magnemite-agent-0.1.2.zip -f hosts.txt.

Watch it appear

The box enrolls itself on first boot and shows up in the fleet table with its serial, model, current Pokémon GO version and free space.

That is the only time it needs hands-on work. Every later update rides the socket it opened itself.

Then what

On this page