# 最初のユーザーと管理者

> セルフホスティング環境の Nodaro で最初のユーザーを登録し、Business エディションでは SQL 文 1 つで管理者に昇格させます。Supabase のダッシュボードがあってもなくても使える手順です。

Source: https://nodaro.ai/ja/docs/self-hosting/first-admin

セルフホスティング環境の Nodaro の**最初のユーザー**は、ほかのユーザーと同じようにアプリでアカウントを登録し、その環境の運用者になります。Community エディションでは、これで完了です。製品に管理者ロールはありません。Business エディションでは、続けて SQL 文 1 つでアカウントを**管理者**に昇格させます。アプリ上でこの操作を行える管理者が、まだいないためです。

## 最初のアカウントを作成する
`/setup` を開き、ステップ 1 の**サーバーのログインアカウントを作成**に従います。このアカウントは、自分のサーバー専用です。Nodaro Cloud のアカウントではありません。Nodaro Cloud のアカウントはステップ 2 で使うもので、Nodaro Cloud に接続する場合にだけ必要です。

ユーザーは認証サービスが作成し、ユーザーのプロフィールは Nodaro が自動で作成します。同梱の Compose スタックでは確認メールが送信されないため、アカウントはすぐに使えます。

## ロール
プロフィールには、3 つのロールのいずれかが設定されます。ロールが意味を持つのは、管理パネルがある Business エディションです。

| ロール | 追加される権限 |
| --- | --- |
| `user` | デフォルトです。エディターを使えます。 |
| `admin` | 管理パネルを開き、環境のプロバイダーキーを管理できます。 |
| `super_admin` | さらに、管理パネルでほかのユーザーのロールを変更できます。 |

Community エディションでは、すべてのユーザーに制限がなく、ログインしているユーザーなら誰でもプロバイダーキーを管理できます。

## アカウントを昇格させる
### SQL セッションを開く
**マネージドの Supabase プロジェクト**では、Supabase のダッシュボードを開き、**SQL editor** を選びます。

ダッシュボードがない**同梱のスタック**では、データベースのコンテナで `psql` を開きます。

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

### ユーザーの ID を調べる
Supabase のダッシュボードでは、ID は **Authentication › Users** にあります。`psql` では、次のようにユーザーを一覧表示します。

```sql
SELECT id, email FROM auth.users;
```

### ロールを設定する
```sql
UPDATE profiles
SET role = 'admin'
 WHERE id = '<user_uuid>';
```

ほかのユーザーのロールを管理させるアカウントには、`'admin'` の代わりに `'super_admin'` を使います。

### 待つか、再起動する
Nodaro は各ユーザーの管理者ステータスを 5 分間キャッシュするため、変更は 5 分以内に反映されます。すぐに反映するには、アプリを再起動します。

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

## オーナーのアカウントを保護する
Business エディションの環境では、`PLATFORM_OWNER_EMAIL` にオーナーのアカウントのメールアドレスを設定します。こうすると、ほかの管理者はそのアカウントのロールを変更できなくなります。デフォルトの空の状態では、保護されるアカウントはありません。

Compose ファイルは、`.env` の `PLATFORM_OWNER_EMAIL` をアプリに渡しません。`nodaro` サービスの `environment:` の下に追加します。

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

## 管理パネルには Business エディションが必要
公開されているイメージと Compose ファイルで動くのは Community エディションで、管理パネルはありません。管理パネルを使うには、まず環境を Business エディションに切り替えます。[エディションとサーフェスプロファイル](https://nodaro.ai/docs/self-hosting/editions-and-profiles#switch-a-self-hosted-install-to-business)を参照してください。Business エディションの管理機能は Enterprise 機能です。本番環境で使う前に、[ライセンス](https://nodaro.ai/docs/self-hosting/license)をお読みください。

## Frequently asked questions

### セルフホスティング環境の Nodaro で、ユーザーを管理者にするにはどうすればよいですか？

ユーザーがアカウントを登録したあと、SQL 文 1 つで、そのユーザーのプロフィールの role 列を admin に設定します。Supabase の SQL エディターで実行するか、データベースのコンテナで psql を使って実行します。管理パネルがあるのは Business エディションだけです。

### Community エディションに管理者はいますか？

いいえ。Community エディションには、管理パネルも、製品としての管理者ロールもありません。すべてのユーザーに制限がなく、ログインしているユーザーなら誰でもプロバイダーキーを管理できます。

### 管理者への昇格が反映されるまで、どのくらいかかりますか？

最大 5 分です。Nodaro は、各ユーザーの管理者ステータスを 5 分間キャッシュするためです。すぐに反映するには、アプリのコンテナを再起動します。

### PLATFORM_OWNER_EMAIL は何のためのものですか？

Business エディションの環境で、オーナーのアカウントを指定します。ほかの管理者は、そのアカウントのロールを変更できなくなります。空のままにすると、保護されるアカウントはありません。
