VPS構築編で立てた さくらのVPS for Windows Server の上に、実際のトレードシステムを載せていく。auカブコム証券の kabuステーションAPI と、それを叩く自作の Next.js 製システム Logical225 の構成だ。
全体構成
[ブラウザ] ──(外部公開)──> [Logical225 (Next.js)] ──localhost:18080──> [kabuステーション App] ──> auカブコム証券
ポイントは2つ。
- kabuステーションAPI は localhost 限定。だから Logical225 は 同じサーバー上 で動かす
- 外部公開するのは Logical225 の UI だけ。kabuステーションAPI(18080番)は外部に晒さない
kabuステーション App の準備
インストール
auカブコム証券のサイトから kabuステーションをダウンロードしてインストールする(口座開設と、kabuステーションの利用条件を満たしている必要あり)。
API利用設定
kabuステーションを起動・ログインし、API設定(システム設定)で API を有効化、API パスワードを発行する。
- 環境はポート番号で決まる: 本番=18080番 / 検証=18081番
- Logical225 側の接続先と、環境(本番/検証)を一致させる
常時稼働のための注意
- API は kabuステーションが起動+ログイン中のみ 有効。PC版には完全な自動ログインは無いので、「口座番号を保存」「パスワード保存」を有効化して、起動後すぐログインできる状態にしておく(パスワードは自動入力されるが、ログインのクリックは必要)
- 再起動後に 起動・ログインまで自動化 したい場合は、Power Automate Desktop や PyAutoGUI などの自動操作ツールが必要。これは常駐化(次回)で扱う
- RDP は サインアウトせず「切断」 で抜ける(サインアウトするとアプリが終了し、API も止まる)
接続テスト(トークン取得)
API が叩けるか、トークン取得で確認する。
Invoke-RestMethod -Uri "http://localhost:18080/kabusapi/token" -Method Post -ContentType "application/json" -Body '{"APIPassword":"<APIパスワード>"}'
- トークンが返れば API 連携 OK
- PowerShell では
curlがInvoke-WebRequestのエイリアスなので、上記のようにInvoke-RestMethodを使う。本物の curl を使いたいならcurl.exeと明示する
Logical225 を載せる
GitHub から取得
プライベートリポジトリの場合は GitHub の認証(SSHキー or Personal Access Token)が必要。SSHキーを作成・登録してから clone する。
cd Workspace
git clone https://github.com/<ユーザー名>/Logical225.git
cd Logical225
.envなどの環境変数(API パスワード・接続先ポート等)は、Logical225 の README に沿って設定する
起動
npm ci
npm run build
npm run start # 既定 http://localhost:3000
ハマりどころ: 改行コード(CRLF/LF)
npm run build で Prettier が Delete ␍ prettier/prettier を出すことがある。これは改行コードの問題。Windows で扱ったことで Git が改行を CRLF に変換し、Prettier(LF設定)と食い違っている。次の3手で解決する。
# 1. Gitの自動変換を止める
git config core.autocrlf false
# 2. 既存ファイルをLFに直す(Prettierで一括整形)
npx prettier --write .
# 3. 再発防止に .gitattributes をリポジトリ直下へ置く
* text=auto eol=lf
git add --renormalize .
git add --renormalize .は、.gitattributesのルールを 既存ファイルにも遡って適用する仕上げ。中身は変えず、改行コードだけ LF に揃う- 今のビルドを通すだけなら手順2だけでも直るが、手順1・3をやらないと再発しやすい
外部公開
Logical225 が localhost:3000 で動いたら、VPS構築編で用意した ngrok で公開する。
ngrok http --domain=xxxx.ngrok-free.app 3000
これで、固定の HTTPS URL から Logical225 にアクセスできる。
公開時の鉄則
売買が絡むシステムなので、ここは外さない。
- kabuステーションAPI(18080番)は絶対に外部公開しない。公開するのは Logical225 だけ
- Logical225 側に Basic認証・ログイン機能・IP制限 などの保護を必ず入れる
次回予告
ここまでで「VPS 上で kabuステーション+Logical225 が動き、ngrok で外部からアクセスできる」状態になった。残りは次の機会に:
- HTTPS化の本命: 独自ドメイン+ Cloudflare Tunnel への移行(警告ページなし・前段認証あり)
- 常駐化: RDP を切っても、サーバー再起動後も自動で立ち上がるようにする(PM2/タスクスケジューラ等)
前編はこちら → VPS構築編