1つの neoserver:// リンクをクリックするだけで、NeoServer が自動的に起動し、サーバーに接続して、ターミナルを好きな場所で開きます。
それは特定のマシン、特定の tmux セッション、あるいは特定のディレクトリかもしれません。
Safari のブックマーク、メモ、デスクトップアイコン、Siri ショートカットに保存したり、AirDrop で同僚に送ったりしても、すべて機能します。
一、ターミナルリンクの書き方
すべてのターミナルリンクは次のような形式です:
neoserver://terminal?host=<server>&port=<port>&user=<user>&name=<terminal_memo>&tmuxName=<tmux_session>&zellijName=<zellij_session>&workdir=<directory>&command=<command>
| パラメータ | 必須 | 入力内容 |
|---|---|---|
host | ✅ | サーバーの IP またはドメイン。必須です。空欄だとリンクは無効になります。 |
port | ❌ | SSH ポート。指定しない場合はデフォルトの 22 になります。有効範囲は 1–65535 です。無効な値を入力するとリンクが無効になります。 |
user | ❌ | ログインユーザー名。指定しない場合はデフォルトの root になります。 |
name | ❌ | 今回のターミナルのメモ名(表示用で、サーバーの照合には使用されません)。 |
tmuxName | ❌ | 接続後、自動的にこの tmux セッションに入ります。 |
zellijName | ❌ | 接続後、自動的にこの zellij セッションに入ります。 |
workdir | ❌ | 接続後、自動的にこのリモートディレクトリに cd します。 |
command | ❌ | 接続後、自動的に1つのコマンドを実行します(改行付き)。複数行は %0A で区切ります。 |
⚠️ 優先順位:
tmuxName>zellijName>command>workdir。
tmuxName/zellijNameとcommandは併用できません:セッション名を指定するとそのセッションにアタッチするだけで、commandは無視されます(アタッチがターミナルの入力を占有するため、コマンドを注入できません)。commandはworkdirと併用できます:まずディレクトリにcdし、それからコマンドを実行します。tmuxName/zellijName/workdirの3つは依然として相互排他です。nameは純粋な表示名であるため、どれとも共存でき、上記のロジックには影響しません。
以下を参考に、自分用に書き換えてください:
# 最もシンプル:host のみ指定
neoserver://terminal?host=1.2.3.4
# ポートとユーザーを指定
neoserver://terminal?host=1.2.3.4&port=2222&user=deploy
# 接続して直接 main という tmux セッションに入る
neoserver://terminal?host=1.2.3.4&user=root&tmuxName=main
# 接続して直接 dev という zellij セッションに入る
neoserver://terminal?host=1.2.3.4&user=root&zellijName=dev
# 接続後、自動的にログディレクトリに cd する
neoserver://terminal?host=1.2.3.4&user=root&workdir=/var/log/nginx
# 今回のターミナルにメモ名をつける(リスト表示用、照合には無関係)
neoserver://terminal?host=1.2.3.4&user=root&name=本番サーバー
# 接続後、自動的に ls -la を実行(%20 = スペース)
neoserver://terminal?host=1.2.3.4&user=root&command=ls%20-la
# まず /var/log に cd し、それから tail -f syslog を実行
neoserver://terminal?host=1.2.3.4&user=root&workdir=/var/log&command=tail%20-f%20syslog
# 複数行のコマンド:まず cd /tmp を実行し、次に pwd を実行(%0A = 改行)
neoserver://terminal?host=1.2.3.4&user=root&command=cd%20%2Ftmp%0Apwd
二、接続後、ターミナルはどこで止まりますか?
これがターミナルリンクの最も便利な部分です。パラメータを変えることで、接続後にターミナルが開く場所が変わります:
| 指定したパラメータ | 接続後のターミナルの状態 |
|---|---|
host のみ(+オプションの port/user) | 通常のターミナルが開き、ユーザーのホームディレクトリで止まります |
tmuxName=main | 自動的に main セッションに tmux attach し、前回離脱した画面に戻ります |
zellijName=dev | 自動的に dev という zellij セッションに入ります |
workdir=/var/log | 自動的に /var/log ディレクトリに cd します |
command=ls -la | ターミナルの準備ができたら、自動的にこのコマンドを入力して実行します |
workdir=/var/log&command=tail -f syslog | まず /var/log に cd し、次に tail -f syslog を実行します |
なぜこの3つに分かれているのですか?
- tmux / zellij セッション:ネットワーク切断、App の終了、別のスマートフォンへの切り替えをしても、セッションは維持され、プロセスは失われません。1台のサーバーの tmux セッションを同僚と共有すれば、2人が同じ画面に入って一緒にトラブルシューティングできます。
- ディレクトリ:接続するたびに
cd /opt/app/logsと打つくらいなら、リンクを使って直接そこに飛んだ方が良いでしょう。 - コマンド:接続後に自動でコマンドを実行します。例えば、ログの取得、状態の確認、デプロイスクリプトの実行などです。
workdirと組み合わせることもできます(まずディレクトリに入ってから実行)。
nameは接続後の動作に影響しません。単に今回のターミナルを分かりやすい名前にするだけで、リストの中で見つけやすくします。
三、App 内でリンクをコピーする(手書き不要)
リンクの手書きはミスが起きやすいです。NeoServer は3箇所でワンクリックコピーが可能です。コピーした後は、どこにでも貼り付けられます。
1. 「このサーバー」のリンクをコピー
サーバータブ・サーバーリスト → いずれかのサーバーを左スワイプ → Copy Scheme Link
コピーされる内容:
neoserver://terminal?host=...&port=...&user=...
2. ターミナルのクイックモードでコピー
ターミナルタブ・サーバーリスト(クイックモード)→ いずれかのサーバーを長押し → Copy Scheme Link
3. 「このセッション」のリンクをコピー ⭐ 最も便利
ターミナルタブ・セッションリスト → いずれかのセッションを長押し → Copy Scheme Link
このリンクは「サーバーXのYセッションに接続する」という情報をパッケージ化します:
- このセッションが tmux の場合 → 自動的に
&tmuxName=...が付与されます - このセッションが zellij の場合 → 自動的に
&zellijName=...が付与されます - 通常セッションの場合 →
host/port/userのみです
コピーに成功すると Link Copied とポップアップ表示され、リンクがクリップボードに保存されます。
✏️ コピーされたリンクには
host/port/userしか含まれません(セッションリンクにはさらにtmuxNameまたはzellijNameが含まれます)。name(メモ)やcommand(自動実行コマンド)を追加したい場合は?手動でリンクの末尾に追加してください。App 内では現在この2つは生成されません。
💡 実行中の tmux セッションを長押ししてコピーし、同僚に送ってみてください。彼らが NeoServer で開くだけで、同じセッションに直接アタッチできます。2人が同じターミナル画面に入ることができます。
四、このリンクの開き方
neoserver:// は iOS のリンクプロトコルであり、リンクをクリックできる場所ならどこでも NeoServer を起動できます:
- Safari:アドレスバーに貼り付けて Enter キーを押すか、ブックマークに保存してクリックします。
- メモ / リマインダー:1つ保存して、クリックするだけで直接アクセスできます。
- ショートカット:「URL を開く」アクションにリンクを入力 → Siri の音声、デスクトップアイコン、自動化に割り当て可能です。
- AirDrop:2台の iPhone 間でリンクを送り合い、相手が開けばすぐに接続できます。
- メール:リンクをテキストとして送信し、相手が Safari にコピーして開きます。
📱 実機で初めて
neoserver://をクリックすると、iOS が「NeoServer で開きますか?」と確認を求めます。承認すれば以降は表示されません。
五、3つの実践シナリオ
🏠 シナリオ 1:「本番 tmux への接続」をデスクトップアイコンにする
毎日本番サーバーの main tmux セッションに接続しなければならないとします。毎回 App を開き → サーバーを探し → 接続し → アタッチするより、アイコンにしてしまった方が良いでしょう:
- App でこのサーバーのリンクをコピーし、手動で
&tmuxName=mainを追加します; - iOS の「ショートカット」を開き → 新規作成 → 「URL」アクションを追加して、このリンクを貼り付けます;
- 「URL を開く」アクションを追加します;
- 共有をタップ → ホーム画面に追加を選び、「本番サーバーへ接続」と名前をつけ、アイコンを選択します。
以降、デスクトップでこのアイコンをタップするだけで、NeoServer が自動的に接続し、main セッションに入ります。すべての操作が不要になります。
🎙️ シナリオ 2:音声で接続する
上記のショートカットを Siri に登録し、「Hey Siri、本番サーバーに接続して」というフレーズを設定します。話しかければスマートフォンが自動的に接続します。
🤝 シナリオ 3:セッションを同僚に共有する
- ターミナル・セッションリスト → このセッションを長押し → Copy Scheme Link;
- 同僚に送ります(AirDrop / WeChat など何でも構いません);
- 相手が NeoServer で開く → 自動的に同じ tmux セッションにアタッチします。
(前提:相手の iPhone にある NeoServer のサーバーライブラリも、同じホストに接続できる必要があります。)
🖥️ シナリオ 4:デスクトップアイコンでワンクリックコマンド実行
毎日特定のマシンのコンテナ状態を確認したいが、接続するたびに手動で docker ps と打ちたくない場合:
- サーバーのリンクをコピーし、手動で
&command=docker%20psを追加します; - シナリオ 1 のようにデスクトップアイコンを作成し、「コンテナ状態」と名前をつけます。
以降、アイコンをタップする → NeoServer が接続する → 自動的に docker ps を実行し、結果が直接ターミナルに表示されます。
六、ターミナルリンクのよくある質問
Q: リンクをクリックしたのに、間違ったサーバーに接続されました?
A: NeoServer は host(+ 入力されていれば port + 入力されていれば user)でサーバーを検索します。もしライブラリに host が同じサーバーが2台ある場合、最初に一致したものに接続されます。port や user を入力することで正確に区別できます。
Q: ライブラリにこのサーバーがない場合、リンクをクリックするとどうなりますか?
A: 「新規サーバー」ページは表示されなくなりました。 現在はリンク内の host/port/user を使って、その場で一時ターミナルを開きます:
- 資格情報のない認証を優先的に試みます(Tailscale SSH など、接続自体が身元を証明しているシナリオに適しています);
- サーバーがパスワードを要求する場合、NeoServer の既存のパスワード / keyboard-interactive 認証にフォールバックします;
- 一時サーバーはサーバーライブラリに保存されず、閉じると解放されます;
- ただし、「最近のセッション」にパスワードや秘密鍵を含まないスナップショットが残り、App の再起動後にタップすれば再接続できます。
元のリンクに含まれる name / tmuxName / zellijName / workdir / command は通常通り機能します。
Q: リンクに直接パスワードを含めて、毎回入力する手間を省けますか?
A: できません。 これはセキュリティ上の制限です。リンクにパスワードが含まれることはありません。手動で password=xxx を追加しても無視されます。パスワードは App 内のキーチェーンのみを経由します。
Q: name の用途は何ですか?
A: 今回のターミナルのメモ名に過ぎず、リストの中で見分けやすくするためのものです。サーバーの照合には関係しません。host が同じで name が異なるリンクを2つ開いても、接続されるのは同じサーバーです。
Q: command にセキュリティリスクはありますか?
A: 少しありますので、理解しておく必要があります。command は接続後に**自動的に実行(改行付き)**されます。どんな App や Web ページでも neoserver://...&command=... を発行できるため、出所不明で command を含むリンクはクリックしないでください。iOS が初回に「NeoServer で開きますか?」と確認するのが唯一のストッパーとなります。また、パスワードが必要なサーバーに対してはパスワードを渡すことができず、通常の認証にフォールバックするだけです。
Q: 中国語やスペースを含むディレクトリを workdir に指定できますか?
A: できます。そのまま書いてください(例:workdir=/home/me/my logs)。特殊文字は App が自動的に処理します。最も確実な方法は手書きではなく、App でコピーすることです。
Q: クリックしても反応がありません?
A: ① neoserver:// で始まっていることを確認してください;② 初回は「NeoServer で開く」の確認ダイアログが表示されます;③ host が空欄になっていないか確認してください;④ App がフォアグラウンドになくても問題ありません。自動的に起動します。
Q: Android / Windows で開けますか?
A: できません。neoserver:// は NeoServer がインストールされている iPhone / iPad でのみ認識されます。
試してみませんか?
NeoServer · SSH, Mosh, Docker & SFTP client for iPhone, iPad and Mac
App Store で無料