Nakama Server Setup for Tekton
This guide explains how to deploy the admin module to your Nakama server.
Files
tekton_admin.ts- TypeScript server runtime module
Prerequisites
- Nakama server installed and running
- Node.js and TypeScript for compilation (if using TypeScript)
Deployment Steps
Option 1: TypeScript (Recommended)
-
Install dependencies:
npm install -g typescript -
Compile TypeScript to JavaScript:
cd server/nakama tsc tekton_admin.ts --outDir dist --lib ES2020 --types nakama-runtime -
Copy to Nakama modules directory:
cp dist/tekton_admin.js /path/to/nakama/data/modules/ -
Restart Nakama server
Option 2: Convert to Lua
If you prefer Lua, the TypeScript can be converted. See Nakama docs.
Configuration
In your nakama.yml or nakama-docker.yml:
runtime:
js_entrypoint: "tekton_admin.js"
Or for multiple modules:
runtime:
js_entrypoint: "index.js"
Role System
User roles are stored in account metadata:
{
"role": "player" | "moderator" | "admin" | "owner"
}
Setting Initial Admin
Run this in Nakama console or via API:
UPDATE users
SET metadata = '{"role": "owner"}'
WHERE username = 'your_admin_username';
Or via Nakama HTTP API:
curl -X PUT "http://localhost:7350/v2/console/account/{user_id}" \
-H "Authorization: Bearer {admin_token}" \
-d '{"metadata": "{\"role\": \"owner\"}"}'
RPC Endpoints
| Endpoint | Required Role | Description |
|---|---|---|
admin_kick_player |
Host or Admin | Kick from match |
admin_ban_player |
Admin only | Ban user |
admin_unban_player |
Admin only | Unban user |
admin_get_ban_list |
Admin only | Get all bans |
admin_get_server_stats |
Host or Admin | Server statistics |
admin_end_match |
Host or Admin | End current match |
admin_set_user_role |
Owner only | Change user roles |
Security Notes
- Never trust the client - All admin operations are validated server-side
- Rate limiting - Consider adding rate limits for RPC calls
- Logging - All admin actions are logged with user ID
- Ban storage - Bans are stored in Nakama storage, not local files
Testing
- Create a test user with admin role
- Login with the admin user
- Press F10 in-game to open admin panel
- Verify kick/ban operations work
Troubleshooting
RPC Not Found
- Check module is loaded:
nakama --helpor check logs - Verify js_entrypoint in config
Permission Denied
- Check user has correct role in metadata
- Verify session is valid
Ban Not Working
- Check Nakama storage permissions
- Verify user_id is correct format (UUID)