Nodaro Docs
DocumentationNode ReferenceModelsAI Agents (MCP)DevelopersSelf-hostingResearch

First user and admin

Sign up the first user of a self-hosted Nodaro and promote an admin on the Business edition with one SQL statement, with or without a Supabase dashboard.

The first user of a self-hosted Nodaro signs up in the app like everyone else, and becomes the install's operator. On the Community Edition that is all: there is no admin role in the product. On the Business edition, you then promote an account to admin with one SQL statement, because no admin exists yet to do it in the app.

Create the first account

Open /setup and follow step 1, Create your server login. This account belongs to your server only. It is not a Nodaro Cloud account: that one comes in step 2, and only if you connect to Nodaro Cloud.

The sign-in service creates the user, and Nodaro creates the user's profile automatically. On the bundled compose stack, no confirmation email is sent, so the account works at once.

Roles

A profile has one of three roles. The roles matter on the Business edition, which has the admin panel.

RoleWhat it adds
userThe default. Uses the editor.
adminOpens the admin panel and manages the install's provider keys.
super_adminAlso changes the roles of other users in the admin panel.

On the Community Edition, every user is unrestricted, and any signed-in user can manage the provider keys.

Promote an account

Open a SQL session

On a managed Supabase project, open the Supabase dashboard and choose SQL editor.

On the bundled stack, which has no dashboard, open psql in the database container:

docker compose -f docker-compose.community.yml exec db sh -c 'PGPASSWORD="$POSTGRES_PASSWORD" psql -U supabase_admin -d postgres'

Find the user's ID

In the Supabase dashboard, the ID is under Authentication › Users. In psql, list the users:

SELECT id, email FROM auth.users;

Set the role

UPDATE profiles
   SET role = 'admin'
 WHERE id = '<user_uuid>';

Use 'super_admin' instead of 'admin' for the account that should manage other users' roles.

Wait, or restart

The change applies within 5 minutes, because Nodaro caches each user's admin status for that long. To apply it at once, restart the app:

docker compose -f docker-compose.community.yml restart nodaro

Protect the owner account

On a Business install, set PLATFORM_OWNER_EMAIL to the email address of the owner's account. No other admin can then change that account's role. When it is empty, the default, no account is protected.

The compose file does not pass PLATFORM_OWNER_EMAIL from .env. Add it under environment: of the nodaro service:

  nodaro:
    environment:
      # ...the variables already listed...
      PLATFORM_OWNER_EMAIL: owner@example.com

The admin panel needs the Business edition

The published image and the compose file run the Community Edition, which has no admin panel. To get one, switch the install to the Business edition first: see Editions and surface profiles. The Business edition's admin features are Enterprise features: read License before you use them in production.

Frequently asked questions

Last updated on

On this page