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.
| Role | What it adds |
|---|---|
user | The default. Uses the editor. |
admin | Opens the admin panel and manages the install's provider keys. |
super_admin | Also 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 nodaroProtect 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.comThe 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
Related
Editions and surface profiles
Install
Database
Provider keys
Last updated on
Reverse proxy and HTTPS
Serve a self-hosted Nodaro on your own domain over HTTPS, with nginx or Caddy in front of port 3000, then set PUBLIC_URL and CORS_ORIGIN and restart the app.
Editions and surface profiles
Compare the Community, Business and Cloud editions, switch a self-hosted Nodaro to Business, and narrow its interface with a NODARO_SURFACE_PROFILE.