PCを閉じても動き続ける!VPSで株価監視システムを24時間稼働させる手順

自動化・運用

※本記事のコードや情報は執筆時点の仕様に基づいています。投資は自己責任であり、必ずデモ環境や少額資金でテストした上で運用してください。

Pythonで株価監視スクリプトや自動売買システムを構築しても、自宅のPCを常に起動し続けるのは現実的ではありません。PCのスリープ、Windows Updateによる再起動、停電、ネットワーク障害など、24時間稼働を阻むリスクは数多く存在します。

この問題を解決するのがVPS(Virtual Private Server:仮想専用サーバー)です。VPSを利用すれば、クラウド上に自分専用のサーバーを持ち、Pythonスクリプトを24時間365日安定して稼働させることができます。

この記事では、VPSの基本概念から、国内主要サービスの比較、契約手順、初期設定、Pythonのインストール、スクリプトの常時実行設定まで、株価監視システムを稼働させるための全工程を解説します。

VPSとは何か?自宅PCとの違い

まずはVPSの基本概念と、自宅PCで運用する場合との違いを整理します。

VPSの仕組み

VPSは、物理サーバーを仮想化技術で複数の独立した仮想サーバーに分割し、それぞれをユーザーに貸し出すサービスです。各ユーザーには専用のOS・CPU・メモリ・ストレージが割り当てられ、root権限(管理者権限)で自由にソフトウェアをインストールできます。

インターネット経由でリモート接続するため、自宅のPCを起動しておく必要はありません。

自宅PCとVPSの比較

項目 自宅PC VPS
稼働時間 PC起動中のみ 24時間365日
停電リスク あり データセンターの無停電電源で保護
ネットワーク品質 家庭回線に依存 高速・安定な回線が提供される
OS再起動リスク Windows Updateで予期せず再起動 Linux採用で自動再起動なし
月額コスト 電気代のみ 月額500円〜2,000円程度
初期設定の難易度 低い やや高い(Linux操作が必要)

なぜWindowsではなくLinuxを使うのか

VPSではLinux OS(Ubuntu)の利用を推奨します。理由は以下のとおりです。

  • Windows Serverライセンスが不要で月額コストが安い
  • 自動再起動のリスクがない
  • サーバー運用に最適化されており、メモリ消費が少ない
  • Pythonとの親和性が非常に高い

VPSで株価監視システムを運用する場合、Ubuntu(Linux)を選択するのが最もコストパフォーマンスに優れた選択肢です。

国内主要VPSサービスの比較

2026年2月時点で、個人投資家がPythonスクリプトを稼働させる用途に適した国内VPSサービスを比較します。

主要サービス一覧

サービス名 最安プラン月額(税込) メモリ ストレージ 特徴
ConoHa VPS 約751円〜 1GB 100GB SSD 時間課金あり。初心者向けUI
さくらのVPS 約590円〜 512MB 25GB SSD 老舗で安定。2週間お試しあり
Xserver VPS 約830円〜 2GB 50GB NVMe 高性能NVMe。コスパ良好
KAGOYA CLOUD VPS 約550円〜 1GB 25GB SSD 日額課金対応。短期利用に最適

株価監視用途の推奨スペック

Pythonで株価監視スクリプトを1〜3本稼働させる程度であれば、以下のスペックで十分です。

  • メモリ: 1GB以上
  • CPU: 1コア以上
  • ストレージ: 25GB以上
  • OS: Ubuntu 22.04 LTS または Ubuntu 24.04 LTS

初めてVPSを契約する場合は、時間課金や日額課金に対応したサービスを選ぶと、不要になった際にすぐ解約でき、コストを最小限に抑えられます。

選び方のポイント

迷った場合は以下の基準で判断してください。

  • コスト最優先: さくらのVPS(512MBプラン)またはKAGOYA
  • 性能と使いやすさのバランス: ConoHa VPSまたはXserver VPS
  • お試ししてから決めたい: さくらのVPS(2週間無料お試し)

VPSの契約と初期設定

ここからは、実際にVPSを契約してPythonを実行できる状態にするまでの手順を解説します。例としてUbuntuベースのVPSを前提にします。

契約時の設定項目

VPSの申し込み画面では、以下の項目を選択します。

  1. リージョン(データセンターの場所): 東京リージョンを選択
  2. OS: Ubuntu 22.04 LTS または Ubuntu 24.04 LTS
  3. プラン: メモリ1GBプランで開始
  4. rootパスワード: 推測されにくい強力なパスワードを設定
  5. SSH鍵: 可能であればSSH鍵認証を設定(後述)

SSHでVPSに接続する

VPSへの接続にはSSH(Secure Shell)を使用します。Windowsでは、コマンドプロンプトまたはPowerShellからSSH接続が可能です。


ssh root@<VPSのIPアドレス>

初回接続時に「Are you sure you want to continue connecting?」と表示されたら yes と入力してください。その後、設定したrootパスワードを入力するとVPSにログインできます。

一般ユーザーの作成とセキュリティ設定

root(管理者)アカウントで常時作業するのはセキュリティ上のリスクがあります。一般ユーザーを作成してください。


adduser pytrader
usermod -aG sudo pytrader

これで pytrader というユーザーが作成され、sudo コマンドで管理者権限を必要に応じて使用できるようになります。以降は pytrader ユーザーでログインして作業します。


ssh pytrader@<VPSのIPアドレス>

SSH鍵認証の設定(推奨)

パスワード認証は総当たり攻撃(ブルートフォース)に弱いため、SSH鍵認証への切り替えを強く推奨します。

ローカルPC(Windows)での鍵ペア生成:


ssh-keygen -t ed25519 -C "your_email@example.com"

生成された公開鍵(id_ed25519.pub)の内容をVPSの ~/.ssh/authorized_keys に追加します。

VPS側での設定:


mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# ここに公開鍵の内容を貼り付けて保存
chmod 600 ~/.ssh/authorized_keys

SSH鍵認証を設定した後は、/etc/ssh/sshd_configPasswordAuthentication no に変更し、パスワードログインを無効化してください。

VPSにPython環境を構築する

VPSへの接続が完了したら、Python実行環境を構築します。

システムの更新

まず、OSのパッケージを最新の状態にします。


sudo apt update && sudo apt upgrade -y

Pythonのインストール確認

Ubuntu 22.04 / 24.04 にはPython 3が標準でインストールされています。以下のコマンドで確認してください。


python3 --version

pipとvenvのインストール

pip と仮想環境ツール(venv)は別途インストールが必要です。


sudo apt install python3-pip python3-venv -y

プロジェクト用の仮想環境を作成する


mkdir ~/stock-monitor
cd ~/stock-monitor
python3 -m venv .venv
source .venv/bin/activate

プロンプトの先頭に (.venv) と表示されれば、仮想環境が有効になっています。

必要なライブラリのインストール


pip install yfinance pandas schedule
ライブラリ 用途
yfinance 株価データの取得
pandas データ加工・分析
schedule 定期実行スケジューリング

【コピペOK】VPS上で動かす株価監視スクリプト

以下のスクリプトは、指定した銘柄の株価を定期的に取得し、CSVファイルに記録するシンプルな監視システムです。

監視スクリプト本体

monitor.py としてVPS上に保存してください。


import yfinance as yf
import pandas as pd
import schedule
import time
from datetime import datetime

# ==============================
# 設定エリア
# ==============================
WATCHLIST = ["7203.T", "9984.T", "6758.T"]  # トヨタ, SBG, ソニー
LOG_FILE = "price_log.csv"
CHECK_INTERVAL_MINUTES = 30

# ==============================
# 株価取得関数
# ==============================
def fetch_prices():
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print(f"[{now}] 株価チェック開始...")

    records = []
    for symbol in WATCHLIST:
        try:
            ticker = yf.Ticker(symbol)
            hist = ticker.history(period="1d")

            if hist.empty:
                print(f"  {symbol}: データ取得失敗")
                continue

            close = hist["Close"].iloc[-1]
            volume = hist["Volume"].iloc[-1]

            records.append({
                "datetime": now,
                "symbol": symbol,
                "close": round(close, 1),
                "volume": int(volume)
            })
            print(f"  {symbol}: {close:.1f}円 (出来高: {volume:,})")

        except Exception as e:
            print(f"  {symbol}: エラー - {e}")

    if records:
        df = pd.DataFrame(records)
        try:
            existing = pd.read_csv(LOG_FILE)
            df = pd.concat([existing, df], ignore_index=True)
        except FileNotFoundError:
            pass
        df.to_csv(LOG_FILE, index=False)
        print(f"  → {LOG_FILE} に保存完了n")

# ==============================
# スケジュール実行
# ==============================
def main():
    print("=== 株価監視システム起動 ===")
    print(f"監視銘柄: {WATCHLIST}")
    print(f"チェック間隔: {CHECK_INTERVAL_MINUTES}分n")

    fetch_prices()

    schedule.every(CHECK_INTERVAL_MINUTES).minutes.do(fetch_prices)

    while True:
        schedule.run_pending()
        time.sleep(1)

if __name__ == "__main__":
    main()

動作テスト

仮想環境を有効にした状態で以下を実行します。


cd ~/stock-monitor
source .venv/bin/activate
python3 monitor.py

銘柄の株価が表示され、price_log.csv が生成されれば正常動作です。Ctrl + C でスクリプトを停止できます。

スクリプトをバックグラウンドで常時実行する

SSHを切断してもスクリプトが停止しないようにするには、バックグラウンド実行の設定が必要です。

方法1:screenコマンドを使う(簡易的)


sudo apt install screen -y
screen -S monitor
cd ~/stock-monitor
source .venv/bin/activate
python3 monitor.py

Ctrl + AD でscreenセッションをデタッチ(切り離し)します。SSHを切断しても、スクリプトはバックグラウンドで動き続けます。

再接続するには以下を実行します。


screen -r monitor

方法2:systemdサービスとして登録する(推奨)

本番運用では、systemdサービスとして登録するのが最も安定した方法です。VPSの再起動時にも自動的にスクリプトが起動します。

以下の内容で /etc/systemd/system/stock-monitor.service を作成してください。


sudo nano /etc/systemd/system/stock-monitor.service

[Unit]
Description=Stock Price Monitor
After=network.target

[Service]
Type=simple
User=pytrader
WorkingDirectory=/home/pytrader/stock-monitor
ExecStart=/home/pytrader/stock-monitor/.venv/bin/python3 monitor.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
設定項目 意味
After=network.target ネットワーク接続後に起動する
Restart=always エラーで停止しても自動再起動する
RestartSec=10 再起動までの待機時間(秒)
WantedBy=multi-user.target OS起動時に自動起動する

サービスを有効化・起動します。


sudo systemctl daemon-reload
sudo systemctl enable stock-monitor
sudo systemctl start stock-monitor

サービスの状態確認


sudo systemctl status stock-monitor

「Active: active (running)」と表示されていれば、正常に稼働しています。

systemdサービスとして登録すれば、VPSの再起動後も自動的にスクリプトが起動します。本番運用では必ずこの方法を採用してください。

よくあるエラーと対処法

SSH接続が突然切れてスクリプトが停止した

screenやsystemdを使わずにSSHセッション上で直接実行している場合、SSH切断と同時にプロセスが終了します。必ず前述のバックグラウンド実行設定を行ってください。

VPS上でyfinanceのデータ取得に失敗する

VPSのネットワーク設定やDNS設定に問題がある可能性があります。以下のコマンドで外部接続を確認してください。


curl -I https://query1.finance.yahoo.com

HTTPステータス200が返ってくれば接続は正常です。タイムアウトする場合は、VPSのファイアウォール設定を確認してください。

ディスク容量がいっぱいになった

CSVファイルの蓄積やログの増大でストレージが不足するケースがあります。以下のコマンドで使用量を確認してください。


df -h

古いログファイルの定期削除や、ログローテーションの設定を検討してください。

まとめ

VPSを活用すれば、自宅PCの電源状態に依存しない24時間稼働の株価監視システムを構築できます。全体の流れを整理すると以下のとおりです。

  • 国内VPSサービスを契約し、Ubuntuを選択する
  • SSHで接続し、一般ユーザーの作成とSSH鍵認証の設定を行う
  • Python3・pip・venvをインストールし、仮想環境内にライブラリを導入する
  • 株価監視スクリプトを作成し、動作テストを実施する
  • systemdサービスとして登録し、VPS再起動後も自動起動する設定を行う

VPSの運用は、自動売買システムの安定稼働に不可欠な技術です。まずは株価の定期記録から始め、動作が安定したら通知機能や売買ロジックの追加へとステップアップしてください。

タイトルとURLをコピーしました