DeepSeek Harness をサーバーに常駐させて 24 時間動かす

スクリーンショット検証済みの13ステップ。空の VPS から常時稼働の dsh へ — root SSH とブラウザターミナルの確保、モデルプロバイダーとコンテキストウィンドウ付きカスタムモデルの接続、タブを離れずにプラグインを入れる、そして agent が作ったサイトへの公開 URL を取りに戻す。

最終更新: 2026-09-22

ワンクリックデプロイ直後の DeepSeek Harness ホスティングパネル。アプリカードに admin のログイン名、Manage App ボタン、サーバーへ入るための ssh root コマンドが並んでいる
1 枚のカードに、この後必要になる 3 つが揃っています。ログインユーザー、稼働中のアプリ、SSH コマンド。

DeepSeek Harness はエージェントループをぶら下げた Web アプリケーションなので、どの機械で動かすかは単なる設定です。その機械をノートパソコンからサーバーに置き換えると、依頼できることが変わります。ふたを閉じてもビルドは続き、ワークスペースは再起動を生き残り、開くアドレスは臨時のトンネル URL ではなくサーバー自身のホスト名になります。長時間のタスクをバッテリー残量で調整しなくて済みます。

このページは、サーバー構築を一から最後まで追った 1 本の動画(出典はページ末尾に記載)に沿って、「サーバー常駐型」だけを扱います。harness を VPS に入れる、SSH かブラウザターミナルをつなぐ、ローカル構成では不要だったモデル設定を組み直す、そして全員が驚く一点 — agent が返してきたプレビューリンクが自分の PC では開けない問題まで。スマホをトンネルでリモート接続する話と、Ollama でローカルモデルを動かす話は別の仕事なので、下の関連ガイドに譲ります。

やり切ったときに手に入るもの

  • いつも使っている Web UI そのまま。VPS のホスト名で開き、ログイン名は root ではなくパネルが教える admin。シェルが要るときはブラウザの中にターミナルがあります。
  • リリースされた当日のモデルも、ピッカーに出る前に追加できます。プロバイダーの slug をカスタムモデル行に貼り付け、同じ場所でコンテキストウィンドウと最大出力トークンを指定します。
  • 作ったものがサーバーに残ります。出力先フォルダをセッションに指示すると、リモートでは開けない localhost リンクの代わりに、8080 番ポートの公開 URL が返ってきます。

13 ステップでサーバー常駐版を完成させる

harness を機械の上に乗せる

  1. 1

    ワンクリックデプロイ後、パネルの SSH 行を控える

    ワンクリック用イメージは Ubuntu 上に完成済みのアプリとして harness を入れます。完了カードには、この後ずっと使う情報が並びます。アプリ名と基盤 OS、ログインユーザー名(admin)、パスワードリセット、起動中の harness を新しいタブで開く Manage App ボタン、そして SSH access の ssh root@<サーバーIP> という完全なコマンドです。このコマンドは今すぐコピーしておいてください。エージェントが住む機械への入口になります。

    $ssh root@<YOUR_SERVER_IP>
    ワンクリックデプロイ直後の DeepSeek Harness ホスティングパネル。アプリカードに admin のログイン名、Manage App ボタン、サーバーへ入るための ssh root コマンドが並んでいる
    1 枚のカードに、この後必要になる 3 つが揃っています。ログインユーザー、稼働中のアプリ、SSH コマンド。3:40 から見る
  2. 2

    VPS の概要ページで root SSH とブラウザコンソールを確保する

    概要ページは管制室です。アプリが動き出したあとでも一度は通しておく価値があります。DeepSeek Harness のカードには admin というログイン名が再掲され、Ubuntu 26.04 Running の行には Reboot と並んで Web console ボタン。その下の帯には SSH username: root、IPv4 アドレス、root パスワードのリセット、そして ssh root@… の完全なコマンドが置かれています。いちばん効くのが Web console です。ブラウザのタブの中に root シェルが開くので、SSH クライアントを置いていない機械からもこの harness を管理できます。

    DeepSeek Harness を実行中の VPS の概要ページ。Ubuntu 26.04 Running の行にブラウザターミナルを開く Web console ボタンがあり、その下に root の SSH アドレスが続く
    ブラウザの Web console は保険です。SSH クライアント無しで root シェルに到達できます。8:20 から見る
  3. 3

    初回の APIキー ダイアログは Configure later で飛ばす

    アプリを初めて読み込むと Add an API key to get started が出て、公式 DeepSeek プロバイダーの設定を促されます。動画では意図的に Configure later をクリックします。サーバー構成の価値はどのプロバイダーを付けるかを自分で決められることにあり、OpenRouter のキー 1 本で数百モデルになるのか、特定モデルのためにベンダーのキーを別で引くのか、その判断は Settings の仕事であってこのダイアログの仕事ではありません。

    DeepSeek Harness の初回起動時、公式 DeepSeek の APIキーを求めるダイアログ。Configure later を押して飛ばし、後で別のプロバイダーを接続する
    ここではスキップ。プロバイダー選びは Settings → Models の判断であって初回起動の話ではありません。3:46 から見る
  4. 4

    セッションを開始する前にワークスペースのフォルダを作る

    セッションはワークスペースの中で動き、ワークスペースはサーバー上のただのディレクトリです。Select Workspace Directory ダイアログはサーバー自身の home を見に行き、既存フォルダの一覧に Show hidden files の横に New folder ボタンを備えています。動画では deepseek-test を作って開きます。このワークスペースで始めたセッションはすべてそのフォルダの内側だけを読み書きするので、複数人で使う機械でもファイルが野良化しません。

    DeepSeek Harness の Web UI の Select Workspace Directory ダイアログ。サーバーの home を見つつ、下部の New folder ボタンでワークスペースを作る
    ワークスペースはサーバー上のフォルダ 1 つ。セッションはそこから読み書き範囲を継承します。4:08 から見る

サーバー構成にモデルを接続する

  1. 5

    Settings → Models → Add provider

    Settings はサイドバーの一番下にあります。Models タブがプロバイダーの住処で、Add provider を押すとアルファベット順の長い一覧が開きます。amazon-bedrock、art-dog、atenloop、azure-openai-responses、cerebras、cloudflare-ai-gateway、cloudflare-workers-ai、deepseek、fireworks、github-copilot、google、google-vertex、groq、huggingface、kimi-coding、minimax、mistral、moonshotai、nvidia、openrouter と続きます。動画の構築では OpenRouter を選びました。キー 1 本でこれらのベンダーのモデルをほぼカバーでき、会話の途中でも切り替えられるからです。

    DeepSeek Harness の Settings の Models タブで、Add provider のドロップダウンを開いたところ。amazon-bedrock、cerebras、google、groq、minimax、moonshotai、openrouter などが並ぶ
    一覧が長いので、現実解は OpenRouter のキー 1 本になります。4:42 から見る
  2. 6

    プロバイダーのモデル一覧を取り込んで、まとめて追加する

    キーを貼り付けたあと、Customized settings の中に Fetch available models が出ます。押すと Choose models to add ダイアログが開き、モデル slug ごとにチェックボックスが並びます — a1zlj/jamba-large-1.7、aion-labs/aion-2.0、amazon/nova-2-lite-v1、amazon/nova-lite-v1、anthropic/claude-3-haiku など — 加えて Deselect all と Add selected。全部入れたままにするのが要点で、モデルピッカーは以後メンテ対象ではなくなります。Apply を押すと、この一覧が稼働中のサーバー側インスタンスに書き込まれます。

    DeepSeek Harness の Choose models to add ダイアログ。OpenRouter のモデル slug にチェックボックスが付き、Deselect all と Add selected ボタンが並ぶ
    1 回全部チェックしておけば、モデルピッカーは以後のメンテ対象ではなくなります。5:24 から見る
  3. 7

    まだ一覧に無いモデルを、コンテキストウィンドウ付きで追加する

    当日リリースされたモデルはピッカーに出てきません。取り込み済みの一覧の方がモデルより古いからです。解決策は同じ Models 画面のいちばん下、Add model の行にあります。プロバイダー側のページからコピーした slug を貼り(動画では google/gemini-3.8-flash)、セッションのドロップダウンに表示する名前を打ち(gemini-3.8-flash)、その行を広げるとフィールドが 2 つ増えます — Context window と Max output tokens で、プレースホルダーはそれぞれ 256K と 32K です。動画では両方空のままデフォルトに任せていますが、トークン課金されるサーバーでは、暴走した出力に上限をかける場所はこの場所です。

    $google/gemini-3.8-flash
    DeepSeek Harness のカスタムモデル行。slug に google/gemini-3.8-flash、表示名に gemini-3.8-flash を入れ、下段に Context window と Max output tokens フィールドが続く
    リリース当日のモデルを、取り込み済み一覧がそれを知る前に追加する方法です。7:12 から見る

どこからでもアクセスする

  1. 8

    一声かけて、実行統計の行を読む

    スモークテストは一言で十分です。返信の下にメタデータの行が付いてきて、経過時間、Ran for 1s、TTFT 1.7s、そしてこのセッションで強調表示されている 5167 tok/s が並びます。この 1 行が 4 つを同時に確認させてくれます。プロバイダーキーが解決できたこと、モデルが応答したこと、エージェントループがサーバー側で回っていること、そしてブラウザからデータセンターまでの往復が 1 日使い続けられる速さであること。

    サーバー構成の DeepSeek Harness がテスト用の質問に返した返信。下のメタデータ行に実行時間、最初のトークンまでの遅延、5167 tokens/s が表示されている
    強調された 1 つの数字が、キーとモデルとサーバーの接続を同時に証明します。7:28 から見る
  2. 9

    localhost ではなくホスト名で harness を開く

    アプリがサーバーに配信される側になると、アドレスバーには 127.0.0.1:3080 ではなく VPS のホスト名が表示され、同じアドレスがノートパソコンでもスマホでも同僚の機械でも開けます。サイドバーが何よりの証拠です。サーバー上のワークスペースが全部並んでいます — 定期タスク用の Morning Brief、並行して走った Web サイト demo 2 つ、テスト用に作ったものまで。状態がブラウザではなくサーバー側にあるからです。

    localhost ではなく VPS のホスト名でブラウザで開いた DeepSeek Harness の Web UI。サイドバーにはサーバー上のすべてのワークスペースフォルダが並ぶ
    同じアプリ、違うアドレス — 左のワークスペース列がその証拠です。18:40 から見る

ブラウザを離れずに拡張する

  1. 10

    ブラウザのコンソールでプラグインのコマンドを実行する

    プラグインは dsh のコマンドラインで入れますが、まっさらなシェルで最初に叩くと必ず失敗します。ターミナルは Command 'dsh' not found, did you mean… と返し、その下に思いついた apt パッケージ名まで添えてきます。動画での直し方は、まず Node のパッケージマネージャーを入れる(npm install -g pnpm)、それからプラグイン追加コマンドを再実行して harness サービスを再起動する、という順です。同じコンソールは hostname、hostname -f、ipinfo.io への curl にも応えてくれるので、ブラウザに貼り付けるアドレスはここで手に入れます。

    $hostname; hostname -f; curl -s https://ipinfo.io/ip
    $npm install -g pnpm
    DeepSeek Harness の載ったサーバーのブラウザターミナルに Command dsh not found が表示された場面。プラグイン追加の前に pnpm を入れさせることになるステップ
    プラグイン導入は CLI の仕事ですが、まっさらな機械の PATH にはまだコマンドがありません。8:56 から見る
  2. 11

    強制再読込のあとに、プラグインマーケットからクリックで導入する

    プラグインを入れても、サービスを再起動してタブを強制再読込するまで何も起きません。しかもプロンプトもエラーも出ないので、ここで詰まる人が後を絶ちません。通過すると Settings → Plugins → Plugin Market が生きたカタログになり、各項目に Install ボタン(dsh-git-graph、dsh-skill-explorer、modlens、dsh-context)、Discover / Themes / Installed / Advanced のタブ列、上部に Update the plugin market が見えます。動画の注意喚起は意図をそのまま引く価値があります。審査済みのプラグインだけを入れること。マーケットの中身はコミュニティのコードで、動くときはあなたのエージェントの権限をそのまま使います。

    DeepSeek Harness の設定内にある Plugin Market。Discover、Themes、Installed のタブの下に dsh-git-graph や dsh-skill-explorer などのコミュニティ製プラグインが Install ボタン付きで並ぶ
    サービスの再起動と強制再読込を済ませれば、以後ターミナルは不要になります。9:52 から見る

作ったものを配信する

  1. 12

    VPS では localhost のリンクが開けない前提で考える

    作ったものをどう見ればいいか尋ねると、返ってくるのは http://localhost:3000 と、起動用の python3 -m http.server か npx serve のコマンドです。開くと Chrome に This site can't be reached — 127.0.0.1 refused to connect、ERR_CONNECTION_REFUSED と出ます。壊れているものは何もありません。サーバー上で localhost はそのサーバー自身を指し、あなたのパソコンのブラウザは自分に問いかけているだけです。ローカル構成とサーバー構成のいちばん大きな差はここです。

    リモートサーバー上の DeepSeek Harness が生成した localhost のプレビューリンクを開いて、This site can't be reached と ERR_CONNECTION_REFUSED を表示した Chrome のエラーページ
    VPS において localhost はその VPS を指します。このプレビューリンクは手元のパソコンからは開けません。15:56 から見る
  2. 13

    出力フォルダを固定して、公開 URL を取り返す

    回避策は追加の 1 メッセージで、ファイルをどの出力先に置き、どのアドレスを表示させるかをセッションに伝えることです。動画では the final output should be at http://<ホスト名>:8080/<ビルド名>/ と書いています。エージェントはサイトを /var/www/preview/<ビルド名>/ にコピーし、自分のポートに curl を流して 200 を確認し、Final Live URL と合わせて index.html、styles.css、menu-data.js、app.js を 1 ファイルずつ説明して返します。プレビュー用フォルダを 1 回決めるだけで、以後このワークスペースのビルドはすべて、顧客に送れるリンクで終わります。

    $the final output should be at http://<YOUR_HOSTNAME>:8080/<BUILD_NAME>/
    ビルド成果物の出力先を指定したあと、サーバーのホスト名上の Final Live URL と /var/www/preview 配下のファイル一覧を返してきた DeepSeek Harness のセッション返信
    一言足すだけで、以後のビルドはすべて送れるリンクになります。16:24 から見る

複数人で使う場合は?

ここまでで手に入るのは、admin ログイン 1 つに対して harness 1 台という構成で、動画もそこで止まっており、ユーザー単位の分離は一切設定していません。個人用なら問題ありませんが、チームだとこれは実際の課題になります。あの URL に到達してログインを通過した人は、同じワークスペース、同じセッション履歴、同じ APIキーを共有するからです。人ごとに隔離する話はサーバー設定では解決できず、プラグインの仕事です。公網向けのサーバーをマルチテナントのホスティング基盤に変えるコミュニティ製プラグインがあり、ユーザーが登録し、管理者が承認し、各自が分離された dsh 環境と自分のキーを受け取ります。何をするかは 詳細ページに書いてあります.

DeepSeek Harness のセルフホスティング:よくある質問

dsh をノートパソコンから引っ越す前に、みんなが気にする点。

DeepSeek Harness を動かすには大きなサーバーが必要ですか?

小さくて足ります。追った構築では 2 コア / 8 GB の KVM プランで harness 全体を動かし、モデルはすべて API 呼び出しでした。機械が担うのは Web UI の配信、エージェントループ、ファイルの保存だけで、推論はプロバイダー側で起きます。ウェイトまで自前で動したいときだけ、もっと大きい構成が必要になります — それは別のガイドの話です。

スマホからリモート接続するのとは何が違うのですか?

別物で、差が重要です。遠隔アクセスはトンネルです。harness は自分の機械で動き続け、その機械は電源を入れっぱなしにしなくてはならず、公開 URL はランダムでトンネルを再起動すれば失われます。セルフホスティングは harness そのものを常時稼働のサーバーへ移します。ふたを閉じた後も夜のタスクは進み、ブックマークするアドレスはサーバー自身のホスト名です。

動画と同じホスティング会社を使う必要がありますか?

いいえ。ベンダーは本質ではありません。Ubuntu イメージと harness テンプレートが動く VPS ならどこでも構いません。パネルから欲しいものは同じ 3 つです。本物のシェル用の ssh root@ コマンド、単発コマンド用のブラウザ内 Web コンソール、稼働中のインスタンスを開く Manage App のリンクです。

別のモデルを使いたいのに、なぜ最初に DeepSeek のキーを求められるのですか?

あのダイアログは公式 DeepSeek プロバイダーを 1 つ接続するだけで、Configure later で飛ばしても何も壊れません。プロバイダーは Settings → Models で追加し、それぞれに個別のキーを割り当てます。全プロバイダーのモデルは同じセッションのピッカーに集約されるので、会話の途中でモデルを乗り換えられるようになります。

モデルごとにコンテキストウィンドウを設定できますか?

できます。Settings → Models のカスタムモデル行では、モデル ID と表示名のすぐ下に Context window と Max output tokens の 2 フィールドが続きます(プレースホルダーは 256K と 32K)。空欄ならプロバイダーの既定値に従い、値を入れれば出力トークン課金のモデルに上限をかけられます。複数人で共有する機械ではコスト抑制にも効きます。

公網 IP に置いても安全ですか?

あの URL をパスワードとして扱ってください。アプリのログインはユーザー名 admin と VPS のパスワードを使い、ユーザー単位の分離はありません。ログインを通過した人はワークスペース、セッション履歴、APIキーを共有します。強いパスワードを使い、剥き出しのポートを開くのではなく手前に HTTPS を噛ませ、プラグインは審査済みだけを入れる。動画でもこの注意は 2 回出てきます。1 回はテーマを試しながら、最後に削除するところまで見せています。

関連ガイド

隣り合う仕事:動かさずに残した harness につなぐ、機械の上で推論する、安全に入れる。

出典とクレジット

このページのスクリーンショットはすべて、下にリンクした動画から取り出したコマです。解説者のカメラ吹き出しを消すためのトリミングを加え、出典を明記しています。各ステップは、元動画の正確な秒数へのディープリンクを持ち、手順・注意点・結論はこのページ独自に書いたものです。

DSH Plugins は DeepSeek Harness プラグインの独立したコミュニティ ディレクトリです。DeepSeek との提携・公認はありません。サードパーティ製プラグインはセキュリティ監査を受けていません。インストール前にソースコードをご確認ください。

DeepSeek Harnessの新着プラグインを毎週お届け。スパムはありません。