ken_nogi/NodeSrv/apps/lineworks-user-auth/README.md
Kenichiro NOGI ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。
NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは
別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter
インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:37:06 +09:00

3.0 KiB
Raw Permalink Blame History

app-template

新規WEBアプリを作る際のひな形。新しいアプリを作るときは、このフォルダを NodeSrv/apps/<新アプリ名> としてコピーして使う。

ローカル開発

npm install
cp .env.example .env
npm run dev

http://localhost:3000/http://localhost:3000/health で動作確認。

本番同等の動作確認Docker

Dokployへデプロイする前に、ローカルでも同じDockerfileでビルド・起動できることを確認する。

docker compose -f docker-compose.local.yml up --build

docker-compose.local.yml はローカル検証専用。Dokploy側は docker-compose.yml を使うCompose「Raw」プロバイダ、Traefikラベルを手書きしたもの

Dokployへのデプロイ

詳細手順は .claude/skills/dokploy-webapp/SKILL.md および NodeSrvリポジトリ直下の README.md を参照。概要:

  1. docker-compose.yml 内の your-app-nameDockerサービス名・Traefikルーター識別子yourapp.apps.next-hd.net(公開ドメイン)をそれぞれ実際の値に置換。両者は独立した値でよく、一致させる必要はない
  2. Giteahttps://git73.next-hd.net/mygit-admin/NodeSrv.gitへpush
  3. Dokployで新規Composewebapps project、Provider: Gitea、sourceType: gitea、Compose Path: apps/<アプリ名>/docker-compose.yml)を作成
  4. 環境変数(.env.example の内容をDokployのEnvironment画面に設定.env 自体はgit管理しない
  5. Deploy実行 → https://<公開ドメイン>.apps.next-hd.net/health が200を返すことを確認

認証ゲートウェイKeycloak/oauth2-proxyは既定では付けない。必要な場合のみ、リポジトリ直下 README.md の「認証ゲートウェイ」章を参照して個別に追加する。

アプリポータル(apps/app-portal)への登録

webapps project配下のアプリは、.env.exampleのPORTAL_*変数をDokploy Environment画面で設定することで、apps/app-portalのダッシュボードに一覧表示・操作対象として登録できる(任意)。

  • 常駐WEBサービス(PORTAL_APP_TYPE=web): ダッシュボードからStart/Stop/Restart、「開く」でPORTAL_APP_URLへ遷移
  • バッチジョブ(PORTAL_APP_TYPE=batch): ダッシュボードの「今すぐ実行」からPORTAL_APP_URL${PORTAL_TRIGGER_PATH}へPOSTされる。アプリ側は以下のパターンでトリガーエンドポイントを実装する:
app.post(process.env.PORTAL_TRIGGER_PATH, (req, res) => {
  if (req.headers['x-portal-secret'] !== process.env.PORTAL_SECRET) {
    return res.sendStatus(403);
  }
  // 実処理を非同期でキューイングし即座に202を返す
  res.sendStatus(202);
});

PORTAL_SECRETはポータルとアプリ間で共有する値。AUTH_SECRETS.md同様、機密情報として扱いDokploy Environment画面でのみ設定する。実装例はapps/portal-sample-batch/src/index.js参照。