2.7 KiB
2.7 KiB
Nakama Server Setup for Tekton
This guide explains how to deploy the admin module to your Nakama server.
Files
core.js— Admin, user management, leaderboard, daily rewards, inbox, auth, shop catalog, purchases, and economy RPCs
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 cp core.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:
path: /nakama/data/modules
core.js has an InitModule function.
Nakama auto-discovers and calls it — no js_entrypoint needed.
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 modules are loaded: look for "Tekton core module loaded" in logs
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)