← 一覧
@lapius/dela-clidela
GitHubnpm

dela (deplapius) — deploy.lapius7.com 用トンネルCLI

try.cloudflare.comのcloudflared tunnel --url相当を、自前のトンネルサーバー (deploy.lapius7.com、実体はsish)に対して行うCLI。 ローカルのポートを実行するだけで https://xxxx.deploy.lapius7.com として即座に公開できる。

dela 3000
dela · deploy.lapius7.com

  ✓ トンネルを確立しました

    🔗  https://cc9z4sx0.deploy.lapius7.com
        → localhost:3000

  Ctrl+C で終了 · 他のターミナルからは dela list / dela stop で確認・停止できます

接続待ちの間はスピナーが回り、確立すると上のようなパネルが表示される(色付き。NO_COLOR環境変数か 非TTY出力では自動的に無色になる)。サブドメインは毎回ランダムに割り当てられ(固定不可)、Ctrl+Cで トンネルを閉じるとURLも即座に無効になる。サーバー側は検索エンジンにインデックスされないよう noindexヘッダー・robots.txtを返す。

前提

インストール

npm(推奨)

npm i -g @lapius/dela-cli

Linux / macOS(x64・arm64)/ Windows(x64)のビルド済みバイナリが入る(Go 不要、Node.js 18 以降)。 更新も同じコマンド(npm i -g @lapius/dela-cli)で行う。

インストーラースクリプト(Go でソースからビルド)

Goがインストールされている環境向け(sca-cliと同じ方式)。

macOS / Linux / Windows(Git Bash・WSL)

curl -fsSL https://raw.githubusercontent.com/lapius7/dela-cli/main/install.sh | bash

Windows(PowerShell)

irm https://raw.githubusercontent.com/lapius7/dela-cli/main/install.ps1 | iex

Windows(コマンドプロンプト / cmd)

cmdはirm/iexのようなワンライナー実行に対応していないため、一度ファイルとして保存してから実行する:

curl -fsSL https://raw.githubusercontent.com/lapius7/dela-cli/main/install.bat -o install.bat && install.bat

(PowerShellが使える環境では、上のPowerShell版の方が手順が短い)


どれも内部的にgo install github.com/lapius7/dela-cli/cmd/dela@latestをGOPROXY=directで実行し、 $(go env GOPATH)/bin(Windowsは%GOPATH%\bin)にdela(Windowsはdela.exe)を配置する。 このディレクトリにPATHが通っていない場合は、インストーラーが警告を表示するので指示に従うこと。 GOPROXY=directにしているのは、Goの公式モジュールプロキシがタグの無いブランチの@latest解決結果を キャッシュすることがあり、更新後もしばらく古いコミットが返ることがあるため(常にGitHubから直接取得させる)。

インストーラーで入れた場合は、同じコマンドをもう一度実行すれば更新できる(go installは既存のバイナリを上書きする)。

使い方

dela <port>          例: dela 3000        (localhost:3000 を公開)
dela <host:port>     例: dela 127.0.0.1:8080
dela <port> -v       接続の生ログ(sishの内部メッセージ)も表示する
dela --help

管理コマンド

このPCで起動中のトンネルは、~/.dela/state/にプロセスごとの記録として残るので、 別のターミナルからも一覧・停止ができる(デーモンは無い。各delaプロセス自身が記録の作成・削除を行う)。

dela list             起動中のトンネル一覧(PID・URL・転送先・経過時間)
dela stop <PID>       指定したPIDのトンネルを停止する
dela stop --all       すべてのトンネルを停止する
dela version          バージョンを表示する

トラブルシューティング

構成

sishを薄くラップしているだけで、SSHプロトコル自体は自前実装せずシステムのsshコマンドを サブプロセスとして呼び出す(cmd/dela/)。色付け・スピナーもGo標準ライブラリのみの自前実装で、 外部依存は無い(sca-cliと同じ方針)。

ファイル役割
main.goエントリポイント。ssh呼び出し・出力整形・シグナル処理
style.goANSI色付けヘルパー(NO_COLOR・非TTY自動判定)
spinner.go接続待ち中のスピナー表示
state.godela list/stop用のローカル状態ファイル(~/.dela/state/)管理
commands.golist/stop/versionコマンドの実装
procalive_unix.go / procalive_windows.goプロセスの生死確認(OS別実装)