ログインとサインアップ
メール認証コード、Google ログイン、新規登録の範囲を設定します。
Melso はデフォルトでメール認証コードによるログインを使い、Google OAuth を追加することもできます。既存のユーザーはいつでも再ログインできます。サインアップ制限は、新しいアカウントを作成できるかどうかだけを決めます。
メール認証コード
ユーザーがメールアドレスを入力すると、Melso は 6 桁の認証コードを送信します。コードは 10 分間有効で、検証に成功するとブラウザにログイン cookie が発行されます。
メールは Resend または SMTP で送信できます。両方を設定した場合は SMTP_HOST が優先されます。
Resend を使う
-
Resend で送信ドメインを検証し、API key を作成します。
-
次を設定します:
RESEND_API_KEY=re_xxxxxxxxxxxxxxxx RESEND_FROM_EMAIL=noreply@example.com -
API サービスを再起動します。
RESEND_FROM_EMAIL は、Resend で検証済みのドメインに属している必要があります。
SMTP を使う
最低限、ホストと送信元アドレスを設定します:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=multica
SMTP_PASSWORD=<password>
SMTP_FROM_EMAIL=noreply@example.com一般的な接続方式:
| シナリオ | 設定 |
|---|---|
| 内部の匿名 relay | SMTP_PORT=25。ユーザー名とパスワードは空のまま |
| STARTTLS | SMTP_PORT=587。サーバーが対応していればデフォルトで TLS にアップグレード |
| 暗黙的 TLS | SMTP_PORT=465、または SMTP_TLS=implicit を明示的に設定 |
SMTP_FROM_EMAIL が未設定の場合は RESEND_FROM_EMAIL にフォールバックします。プライベート CA や自己署名証明書を使う場合は、CA をコンテナの信頼ストアに追加してください。SMTP_TLS_INSECURE=true は証明書検証をスキップするため、信頼できる内部ネットワークで一時的に使う場合に限ってください。
一部の厳格な relay は、有効な EHLO 名も要求します:
SMTP_EHLO_NAME=mail.example.comメールサービスがない場合の動作
サーバーは起動しますが、認証コードと招待リンクはログに書き込まれるだけで、メールは送信されません。ローカル開発には向きますが、プロダクションには向きません。
起動ログには、現在使っているのが Resend API、SMTP relay、DEV mode のどれかが表示されます。
ローカル固定認証コード
ローカルの自動テストでは、固定の認証コードを設定できます:
APP_ENV=development
MULTICA_DEV_VERIFICATION_CODE=888888認証コードは 6 桁の数字である必要があります。APP_ENV=production のときは固定コードは無視されます。
公開インスタンスで固定認証コードを有効にしないでください。プロダクションの組み合わせは APP_ENV=production と空の MULTICA_DEV_VERIFICATION_CODE です。
Google ログイン
-
Google Cloud Console で OAuth 2.0 client を作成します。
-
Melso フロントエンドのコールバックアドレスを Authorized redirect URIs に追加します:
https://multica.example.com/auth/callback -
次を設定します:
GOOGLE_CLIENT_ID=xxxxx.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxx GOOGLE_REDIRECT_URI=https://multica.example.com/auth/callback -
API サービスを再起動します。
Google Console と GOOGLE_REDIRECT_URI のアドレスは、プロトコル、ポート、末尾のスラッシュを含めて完全に一致している必要があります。設定が反映されると、ログインページに Google ログインボタンが表示されます。フロントエンドイメージの再ビルドは不要です。
サインアップ制限
3 つの変数が組み合わさって、新しいアカウントを作成できるかどうかを決めます:
| 変数 | 効果 |
|---|---|
ALLOWED_EMAILS | 登録を許可する完全なメールアドレス。複数はカンマ区切り |
ALLOWED_EMAIL_DOMAINS | 登録を許可するメールドメイン。複数はカンマ区切り |
ALLOW_SIGNUP | allowlist が一つも設定されていない場合に新規登録を許可するか。デフォルトは true |
判定順序は次のとおりです:
- メールアドレスが
ALLOWED_EMAILSに一致すれば許可。 - またはドメインが
ALLOWED_EMAIL_DOMAINSに一致すれば許可。 - どちらにも一致せず、
ALLOW_SIGNUP=falseなら拒否。 ALLOW_SIGNUP=trueでも、いずれかの allowlist が設定されていて一致しなければ、やはり拒否。- allowlist が一つも設定されておらず、
ALLOW_SIGNUP=trueなら許可。
よくある設定:
# 会社ドメインのみ許可
ALLOW_SIGNUP=false
ALLOWED_EMAIL_DOMAINS=company.com
# 外部コラボレーターを 1 人追加で許可
ALLOWED_EMAILS=partner@example.net2 つの allowlist は、ALLOW_SIGNUP=false のときには明示的な例外リストとしても機能します。
招待とサインアップ制限
招待はサインアップ制限を自動的には迂回しません:
- 相手がすでに Melso アカウントを持っている場合は、ログインして招待を受諾できます。
- まだアカウントがない場合は、そのメールアドレスが上記のサインアップルールを満たす必要があります。
オープンなサインアップを無効にしたインスタンスで新しいメンバーを招待するときは、先に相手のメールアドレスを ALLOWED_EMAILS に追加してください。アカウントが作成され、招待が受諾されたら、エントリを削除して構いません。
セッション有効期間
ブラウザのログインは、デフォルトで 30 日間保持されます。AUTH_TOKEN_TTL で調整でき、Go duration または正の整数秒を受け付けます:
AUTH_TOKEN_TTL=720h変更後は API サービスの再起動が必要です。この値は、それ以降に発行されるログイン cookie と JWT にのみ影響し、発行済みのトークンを延長することはありません。