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:
Docker, behind a proxy
One virtual host; your own reverse proxy handles TLS.
Coolify
Coolify's proxy terminates TLS; two domains.
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 --buildThe 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 seedThis 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.zipOn 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 rebootOr 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.