ドキュメント

Zorvenドキュメント

インストール、接続、公開。クライアントのコマンド、サービスモード、設定、ダッシュボードの概念を1ページにまとめています。

このページの内容

インストール

Zorvenクライアントは単一のバイナリ(zorven)です。インストールスクリプトがバイナリをダウンロードし、トークンとサーバーアドレスをシステム設定に書き込み、バックグラウンドサービスを起動します。

LinuxとmacOS

スクリプトは /usr/local/bin/zorven にインストールされ、システムサービスを作成するため root 権限が必要です。ダッシュボードでトークンを取得し(クイックスタートを参照)、フラグとして渡します:

$curl -fsSL https://zorven.app/install.sh | sudo bash -s -- --token zrv_live_...

トークンを省略すると、スクリプトが入力を求めます。実行前にスクリプトの内容を確認するには:

$curl -fsSL https://zorven.app/install.sh -o install.sh
$less install.sh

Windows

PowerShellを管理者として開きます。スクリプトは C:\Program Files\Zorven にインストールし、Windowsサービスを起動します:

>irm https://zorven.app/install.ps1 | iex

先に内容を確認したい場合は、irm https://zorven.app/install.ps1 の出力をファイルに保存して読んでください。

デスクトップアプリ

Windows向けのグラフィカルインストーラー: Zorven-Setup-windows-amd64.exe。詳細や他のプラットフォームはダウンロードページをご覧ください。

手動ダウンロード

スクリプトを使いたくない場合は、バイナリを直接ダウンロードして実行権限を付け、PATH の通ったディレクトリに置いてください。

プラットフォームファイル
Linux x86-64/bin/zorven-linux-amd64
Linux ARM64/bin/zorven-linux-arm64
Linux ARM (32-bit)/bin/zorven-linux-arm
macOS Intel/bin/zorven-darwin-amd64
macOS Apple Silicon/bin/zorven-darwin-arm64
Windows x86-64/bin/zorven-windows-amd64.exe
Windows ARM64/bin/zorven-windows-arm64.exe
$sudo install -m 0755 zorven-linux-amd64 /usr/local/bin/zorven
$zorven version

現在のリリースは /bin/manifest.json に記載されています。クライアントは自己更新が可能で、無効にするには --no-auto-update を指定します。

クイックスタート

  1. サインアップしてトークンを作成 ダッシュボードを開いてクライアントを作成し、zrv_live_ で始まるクライアントトークンをコピーします。トークンはデバイスのIDなので、他人に見せないでください。
  2. トークンを保存
    $zorven authtoken zrv_live_...
  3. ローカルのポートを公開
    $zorven http 3000
    出力される https://<name>--slug.zorven.app のアドレスは、有効なTLS証明書付きですぐに公開されます。WebSocket、HTTP/2、SSEも動作します。クライアントはステータスボックスを表示します: Durum: Cevrimici (Online)、Genel URL: https://<name>--slug.zorven.app、Yerel Hedef: http://localhost:3000(ラベルはトルコ語で出力されます)。
  4. 使い捨てのトンネルが必要ですか?
    $zorven ephemeral 3000 --ttl 30m
    時間が来るとトンネルは自動的に削除されます。開始時に Gecici tunel: 30m0s sonra kendiliginden kaldirilacak.(TTL後に自動削除されるという意味)と表示されます。

ポートフォワーディングやルーターの設定変更は不要です。クライアントがサーバーへ外向きに接続するため、CGNATの内側でも動作します。

CLIコマンド

クライアントの実際のコマンドです。どのコマンドも zorven <command> --help でヘルプを表示できます。

zorven http <port> and zorven <port>

ローカルのHTTPサービスをインターネットに公開します。短縮形の zorven 8080 も同じ動作をします。

$zorven http 3000
$zorven 8080

リモートターミナルと画面共有は、CLIとサービスモードでは標準で無効、Windowsデスクトップアプリでは標準で有効です。CLIでダッシュボードから使うには、このデバイスで明示的に有効にします(0.2.2以降):

$zorven http 3000 --enable-terminal --enable-screen

パネルのターミナル: クライアントはマシンにインストールされているシェルを報告し、新しいタブを開く際に選択します(bash、zsh、fish、sh、PowerShell 7、Windows PowerShell、cmd、WSL)。クライアントごとに最大8タブまで開け、検索、フォントサイズ変更、選択時のコピーに対応しています。zshとbashはZorvenプロファイル(プロンプト、オートサジェスト、シンタックスハイライト)で起動します。素のシェルが必要な場合は --terminal-plain-zsh / --terminal-plain-bash を使います。シェルはサーバー側で動作し、ページを離れたりリロードしたりしても、タブは同じシェルに再接続されて直近の出力が再表示されます。接続が切れた後、シェルは30分間待機し、タブを閉じると終了します。セッションに再接続できるのは、それを開いた本人のみです。

zorven ephemeral <port>

時間が来ると自動的に削除される一時的なトンネルを開きます。デモ、Webhookのテスト、PRプレビューに適しています。--ttl は1分〜24時間の範囲で指定します(既定は 2h)。エイリアス: temp、tmp。

$zorven ephemeral 3000
$zorven ephemeral 3000 --ttl 30m

zorven authtoken <token>

クライアントトークンをローカル設定に保存します。トークンは zrv_live_ で始まる必要があり、そうでない場合はコマンドが失敗します。エイリアス: token。

$zorven authtoken zrv_live_...

status, update, version

$zorven status

クライアントのバージョン、設定ファイル、サーバーアドレス、保存済みトークン(マスク済み)、バックグラウンドサービスの状態を表示します(バージョン行は0.2.2以降)。

$zorven update

新しいリリースがあればダウンロードして適用します(クライアントは再起動します)。

$zorven version

クライアントとプロトコルのバージョン、OS、アーキテクチャを表示します。サポートへのお問い合わせには、この出力を添えてください。

zorven config

$zorven config show
$zorven config set-server zorven.app:443
$zorven config set-token zrv_live_...

--system フラグを付けると、設定がシステム全体(サービスモード用)に書き込まれ、管理者/root権限が必要です。設定を参照してください。

zorven connect Team+

Zorven Networkに参加し、ローカルのSOCKS5プロキシ(既定は 127.0.0.1:1080)を開きます。アプリケーションは、インターネットに公開されていないプライベートリソース(例: db.internal:5432)に名前でアクセスできます。このコマンドにはクライアントトークンではなくAPIトークンが必要です(ダッシュボードのAPIキー。少なくとも tunnels:read スコープ)。トークンはサービスアカウントのものでなければならず、そのサービスアカウントにアクセスを許可するリソースポリシーが存在する必要があります(REST API: POST /resource-policies、grant.service_account_ids)。ポリシーがなければ、接続はどのリソースにも到達できません。

$ZORVEN_API_TOKEN=zrv_api_... zorven connect

あとは、アプリケーションのSOCKS5プロキシに 127.0.0.1:1080 を指定します。SSHの例:

$ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:1080 %h %p' ssh.internal

ゲートウェイ(サイト間)モードでは、プロキシをLANに公開できます。このモードでは、許可するクライアントのレンジの指定が必須です:

$zorven connect --listen 0.0.0.0:1080 --gateway --allow-from 192.168.2.0/24

ループバック以外でのリッスンは、--gateway と --allow-from の両方を指定した場合にのみ動作します。ローカルのリスナーには認証がないため、この制限は意図的なものです。

zorven forward <host>

ローカルポートを、SNIモードの生のTCPトンネル(訪問者側)にバインドします。たとえば、ゲームサーバーに参加する場合:

$zorven forward mc.example.com --port 25565

あとは、アプリケーションの接続先を 127.0.0.1:25565 にします。別のアドレスでリッスンするには --listen を使います。このコマンドはTCPのみ対応で、UDPにはダッシュボードの予約ポートモードを使います。

共通フラグ

zorven、zorven http、zorven ephemeral で利用できます(0.2.2以降。それ以前のバージョンでは zorven [port] でのみ受け付けます):

フラグ説明
--serverトンネルサーバー(host:port。例: zorven.app:443)
--tokenクライアントトークン(zrv_live_...)
--local公開するローカルサービスのアドレスまたはポート
--ca-cert自己署名のサーバー証明書を含むファイル
--insecureTLSではなく平文の ws:// を使用(ローカル開発専用)
--log-leveldebug、info、warn、error(既定は warn)
--enable-terminal / --no-terminalリモートターミナル(PTY)アクセスを許可 / 無効化
--enable-screen / --no-screenリモート画面共有を許可 / 無効化
zorven enable|disable terminal|screen実行中のクライアント(フォアグラウンドまたはサービス)で再起動せずに許可を有効 / 無効化。--persist で永続化。zorven status で状態表示。実行中に --enable-terminal を指定しても同じ経路に転送されます。
zorven up / zorven downバックグラウンドサービスとして実行:必要ならインストールし、起動時に自動開始し、今すぐ開始します(--token、--enable-terminal、--enable-screen は永続設定として保存)。down は停止、--remove でアンインストール。管理者/root 権限が必要です。
zorven autostart on|offシステム起動時のサービス自動開始を有効 / 無効化
--no-auto-update自動更新を無効化
--print-url機械可読な zorven-url: <url> 行を出力(SDKやスクリプト向け)

サービスモード

サービスモードでは、クライアントはログインセッションなしでバックグラウンドで動作し、起動時に自動で開始します(Windowsサービスまたはsystemd)。インストールスクリプトは既にこの設定を行います。手動でセットアップするには、管理者/root権限で次を実行します:

$sudo zorven service install --token zrv_live_... --server zorven.app:443
$sudo zorven service start
コマンド動作
zorven service installサービスを登録します(--token/-t と --server/-s はシステム設定に書き込まれます)
zorven service startサービスを開始します
zorven service stopサービスを停止します
zorven service restartサービスを再起動します
zorven service statusサービスが稼働中かどうかを表示します
zorven service uninstallサービスを削除します

サービスは、ユーザー設定ではなくシステム設定を読み込みます。そのため、トークンとサーバーは --system を付けて(または service install --token で)書き込んでください。zorven authtoken だけではサービスは設定されません。sudo zorven service install --token zrv_live_... を使用してください。

設定

クライアントは2つの設定ファイルを使います。ユーザーごとの config.json(ユーザー設定ディレクトリの zorven フォルダ内)と、サービスモード用のシステム全体のファイル(Linux/macOS: /etc/zorven/config.json、Windows: %ProgramData%\zorven\config.json)です。zorven config show で有効な値を確認できます。

$sudo zorven config set-server zorven.app:443 --system
$sudo zorven config set-token zrv_live_... --system

環境変数も利用できます:

変数用途
ZORVEN_TOKENクライアントトークン(トンネルコマンド専用: zorven、http、ephemeral)
ZORVEN_SERVERサーバーアドレス(host:port。トンネルコマンドと connect)
ZORVEN_API_TOKENzorven connect 用のAPIトークン

サーバーを指定しない場合は、既定の zorven.app:443 が使われます。自分のサーバーを運用している場合は、zorven config set-server でそのアドレスを設定してください。

ダッシュボードの概念

すべての管理は panel.zorven.app で行います。以下に主要な概念と、それぞれが利用できるプランを示します。最新の上限は料金をご覧ください。

組織とプロジェクト

すべてのアカウントは組織に所属します。トンネル、クライアント、ドメインをプロジェクトにまとめることで、ステージング、本番、顧客ごとの環境を分けて管理できます。プロジェクト数はプランによって異なります(Free 2、Hobby 3、Pro 10、Team 50)。

トンネル

クライアント(デバイス)は1つ以上のトンネルを開きます。トンネルの種類: HTTP/HTTPS、生のTCP(データベース、SSH)、SNIモードのTCP、UDP(ゲームサーバー)。HTTPトンネルは、パスベースのルーティング、トラフィックポリシー、ダッシュボードのリクエストインスペクター(ヘッダーとボディの表示、ワンクリックでの再送)に対応しています。トンネルは、パスワード(Basic認証)またはGoogle/GitHubによる訪問者サインインで保護できます。キャプチャしたリクエストの再送(リプレイ)や、2つのレスポンスの比較(リプレイ差分)も可能です。認証、ポリシー、IPルールによって早い段階で拒否されたリクエスト(401、ポリシー、IP)は、リクエストインスペクターには記録されません。NodeとPythonのSDKも利用できます。

ドメイン

すべてのトンネルに、自動HTTPS付きの無料のテナントアドレス(name--slug.zorven.app。slug は組織の短縮名)が付与されます。ダッシュボードのドメインでは、name.zorven.app のようなグローバルな短縮名を取得することもできます(先着順)。Proは1つ、Teamは3つ、Enterpriseは10個です。Pro+ プランが下がった場合、上限を超える短縮名と独自ドメインは削除されず、停止(アクセス遮断)されます。アップグレードすると、古いものから順に再開されます。zorven や rpshell を含む名前は取得できません。ダッシュボードで独自ドメイン(例: api.yourcompany.com)を追加し、表示されるDNSレコード(所有権の検証とCNAME)を作成すると、Zorvenが証明書を自動で発行・更新します。独自ドメインは Hobby+ から利用できます。

証明書: *.zorven.app のプラットフォーム用ワイルドカード証明書は、サーバーの外でDNS検証(acme.sh)により取得され、ファイルから読み込まれます。独自ドメインの証明書はLet's Encrypt(HTTP-01とTLS-ALPN-01)で自動発行されます。DNS検証が完了していない独自ドメインでは、TLSハンドシェイクが拒否されます。

チーム

メールでメンバーを組織に招待できます。ロールは owner、admin、member です。チームページは Pro+ プランで利用でき、メンバー数の上限はプランによって異なります(Pro 3、Team 5)。企業向けのサインインとして、OIDC SSOと2FAに対応しています。

ポリシーとSecret Vault

ポリシーエンジン Pro+ では、ダッシュボードからコードなしでルールを定義できます: レート制限、拒否、リダイレクト、ヘッダー挿入(set_header)、mTLSの必須化(require_mTLS)、WAF(waf)、Webhook署名検証(verify_webhook)。WAFはOWASP-liteルールでSQLインジェクション、XSS、パストラバーサル、コマンドインジェクション、スキャナーのUser-Agentを検出し、独自の正規表現ルールも追加できます。検査対象はパス、クエリ、User-Agent、Referer、Cookieで(リクエストボディは対象外)、一致すると403を返します。verify_webhook はGitHub、Stripe、GitLab、Shopify、Slackの署名を検証します(許容時間は5分、ボディは最大1 MB)。無効な署名は401で拒否されます。Secret Vault Pro+ はシークレットを暗号化して保存します。{{secret:name}} は、verify_webhook の secret_ref フィールドでのみ解決されます。

リクエストの処理順: Freeプランの初回訪問時の中間ページはポリシーエンジンより前に実行され、トンネルごとのリクエストリミッターはポリシーの後に実行されます。ロードバランシング Team+: ラウンドロビン、重み付け、最小接続数、レイテンシの各方式に対応し、HTTPとTCPのヘルスチェックを備えています。

プランごとの機能

機能プラン
REST APIとAPIトークンPro+
IP許可リストPro+
Webドア(TCP/UDP)Pro+
ポリシーエンジンPro+
Secret VaultPro+
WAFとWebhook署名検証(ポリシーエンジンの一部)Pro+
OIDC SSO、トンネルmTLS、Basic認証、Google/GitHub訪問者サインイン全プラン(ポリシーに基づく require_mTLS はPro+)
エージェント設定の一元管理、高度なUDPPro+
チームページPro+(メンバー数の上限はプランによる)
ログのエクスポート、Zorven Network、高度なロードバランシングTeam+
ゼロトラストアクセス条件(2FAの強制、接続元IPレンジ)Enterprise

上限を超えても接続は切断されず、速度が制限されます(Free 1、Hobby 5、Pro 10、Team 25、Enterprise 100 Mbps)。Proには7日間の無料トライアルが含まれます。ログの保持期間はプランごとに適用されます(Free 1日、Hobby 3日、Pro 7日、Team 30日、Enterprise 90日。1時間ごとのクリーンアップジョブ)。監査ログは365日間保持されます。Teamでは、ダッシュボードの「クォータとプラン」から、追加デバイス(1台あたり月額0.50ドル)と追加トラフィック(1 GBあたり0.10ドル)をリクエストでき、承認されると上限が引き上げられます。

訪問者ログインページ

HTTPトンネルにアクセスポリシー(Basic認証またはGoogle / GitHub)が設定されている場合、訪問者にはブラウザ標準のパスワードポップアップではなく、Zorven風のログインページが表示されます。トルコ語と英語、ライト/ダークテーマ、モバイルに対応しています。

  • ユーザー名とパスワード: セッションは12時間有効です。パスワードを変更すると、既存のセッションは無効になります。IPごとに、10分間で失敗は最大10回までです。curl やAPIクライアントは、Authorization: Basic ヘッダーで引き続き通過できます。
  • Google / GitHubで続行: トンネルが許可したプロバイダーのみが表示されます。許可メールのリストが適用され、訪問者はアカウントを切り替えられます。
  • 統計: すべての試行(方法、プロバイダー、ID、成否、理由、IP、ユーザーエージェント)が記録されます。パスワードは記録されません。記録はプランのログ保持期間にわたって保存されます。GET /api/v1/tunnels/{id}/access-events が一覧を、GET /api/v1/tunnels/{id}/access-events/summary?window=24h|7d|30d が概要を返します(analytics:read スコープ)。ダッシュボード画面は今後追加予定です。

Webドア(TCP/UDP) Pro+

生のTCP/UDPトンネル(SNIを含む)では、訪問者がWebでサインインし、その人のIPアドレスだけがトンネルポートで許可されます。許可のない接続は何も返さず破棄されます。

  1. まず、トンネルにサインイン方法を設定します: ユーザー名とパスワード、またはGoogle / GitHub(アクセスポリシー)。
  2. ドアを有効にして、許可の期間を選択します: 3600(1時間)、43200(12時間)、86400(24時間)、604800(7日間)。
  3. 訪問者にドアURL door--<label>.zorven.app を共有します。サインイン後、その人のIPは時間が切れるまでポートに到達でき、本人がドアを閉じることもできます。
$curl -X PUT -H "Authorization: Bearer zrv_api_..." -d '{"enabled":true,"duration_sec":3600}' https://zorven.app/api/v1/tunnels/{id}/door
エンドポイント用途
GET /api/v1/tunnels/{id}/door設定とドアURL
PUT /api/v1/tunnels/{id}/door有効化 / 無効化と期間の選択
GET /api/v1/tunnels/{id}/door/grants有効なIP許可
DELETE /api/v1/tunnels/{id}/door/grants/{grantId}許可の取り消し(その人もサインアウトされます)

ブロックされた試行は、アクセス統計に集計されます。プランがProを下回ると、ドアは自動的に閉じられます。IPv6とIPv4アドレスの間での照合は行われません。

メールアプリで使う

プラットフォームのメールボックス(org-name@mail.zorven.app)を、IMAPとSMTPでメールアプリから利用できます。ダッシュボードのメールセクションにある「メールアプリで使う」から、メールボックスごとにアプリパスワードを作成します。アプリパスワードは一度だけ表示され、いつでも取り消せます。

設定値
サーバーmail.zorven.app
IMAPポート993、SSL/TLS
SMTP(送信)ポート587 STARTTLS、またはポート465 SSL/TLS
ユーザー名メールアドレス全体
パスワードダッシュボードで作成したアプリパスワード
フォルダINBOX、Sent、Trash、Drafts(IDLEによるプッシュ)
  • Gmailアプリ(Android / iOS): アカウントを追加し、「その他」または「個人用(IMAP)」を選択して、上記の設定を入力します。
  • OutlookとThunderbird: autoconfig / autodiscoverのエンドポイントがあり、メールアドレスを入力するだけで設定できる場合があります。
  • Apple Mail: ダッシュボードから構成プロファイルをダウンロードしてインストールします。
  • 外部の宛先への送信はウェブメールと同じプランのルール(Enterprise)に従い、プラットフォーム内のアドレス宛ては常に配信されます。
  • POP3は提供しておらず、IMAPのみです。GmailのWebサイトはPOP3で外部アカウントを追加する仕組みのため、gmail.comではこのアカウントを追加できません。Gmailアプリをご利用ください。

APIとトークン

ダッシュボードで行えることは、すべてREST APIからも利用できます。APIアクセスは Pro+ プランで利用できます。ダッシュボードのAPIキーセクションでスコープと有効期間を選んでAPIトークンを作成し、Authorization ヘッダーで送信します:

$curl -H "Authorization: Bearer zrv_api_..." https://zorven.app/api/v1/tunnels

2種類のトークンを混同しないでください。zrv_live_ は zorven authtoken で使うクライアント(デバイス)トークン、zrv_api_ はREST APIと zorven connect で使うAPIトークンです。すべてのエンドポイントとスコープはAPIリファレンスをご覧ください。

ヘルプ

よくある質問はFAQ、サービスの状態はステータスページ、その他のご用件はお問い合わせをご覧ください。クライアントとサーバーはオープンコア(AGPLv3)です: GitHub。

始める準備はできましたか?

無料アカウントで、数分で最初のトンネルを開きましょう。