Soft Serve: SSHから閲覧・管理するGitサーバー
コマンド ライン用の強力な自己ホスト可能な Git サーバー。次のコマンドのいくつかを試すこともできます。 または、ソフト サーブを使用して、ソフト ブラウズ [ディレクトリ] を使用するか、Git リポジトリ内でソフトを実行してローカル リポジトリを参照することもできます。
ひと目でわかる
- これは何?
- Charmbracelet Soft ServeのSSH TUI、リポジトリ管理、権限、Webhook、運用上の制約をREADMEから確認する。
- 誰に向いている?
- このプロジェクトは、READMEが示すThe mighty, self-hostable Git server for the command line. You can also try some of the following commands: Or you can use Soft Serve to browse local repositories using soft browse [directory] or running soft within a Git repository.という対象と、記載された環境・権限・入力条件が一致するチームに向きます。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 15 日前です。
- 何の言語で書かれている?
- 主に Go です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
Soft Serveで見る対象と設計上の焦点
Soft Serveは、コマンドラインから操作するセルフホスト型Gitサーバーです。READMEはこれを「コマンドライン向けの美味しいセルフホスト型Gitサーバー」と説明しています。SSH経由でターミナルUIを提供し、SSH、HTTP、Gitプロトコルでリポジトリをクローンでき、HTTPおよびSSHバックエンドでGit LFSをサポートします。SSHでリポジトリを管理し、SSHまたはgit pushでオンデマンドにリポジトリを作成し、SSHアクセス可能なUIでリポジトリ、ファイル、コミットを閲覧でき、SSH経由でファイルを印刷する際に構文ハイライトと行番号を付けられます。このプロジェクトはGoで書かれ、MITライセンスで配布されています。
Soft ServeはSSH接続を入口にGitリポジトリを閲覧・操作するサーバーです。TUIで一覧やツリーを見せる設計と、通常のGitリモートとしてpushやcloneを受ける設計が同じ認証境界にあります。公開範囲を決めるときは画面の見た目ではなく、SSHユーザーとリポジトリ権限を基準にします。 soft-serveでは第1節の確認対象を独立させ、入力、結果、失敗時の記録を同じ単位で残します。READMEに明記された値と、手元で観測した値を分けて記録することで、soft-serve固有の判断材料になります。
Soft Serveで見る導入条件と依存関係
Soft Serveは、softという単一バイナリとして提供されます。READMEには、macOSまたはLinuxでのbrew、Windowsでのwinget、Arch Linuxでのpacman、Nix、Debian/Ubuntuでのaptリポジトリ、Fedora/RHELでのyumリポジトリを使ったインストール方法が記載されています。プリビルドバイナリはAlpine、Debian、RPM形式でLinux、macOS、Windows向けに用意されており、go install github.com/charmbracelet/soft-serve/cmd/soft@latest でもインストールできます。Dockerイメージも言及されていますが、具体的なDockerコマンドはREADMEにありません。サーバーを起動するには、gitがインストールされていることを確認してsoft serveを実行します。これにより、リポジトリ、SSHキー、データベースを格納するdataディレクトリが作成されます。初回起動時には、SOFT_SERVE_INITIAL_ADMIN_KEYSに自分のSSH公開鍵を設定して管理者ユーザーを作成します。SOFT_SERVE_DEFAULT_REPOを設定すると、起動時に空の公開リポジトリを作成できますが、READMEは存在のみを保証し、到達可能性はアクセス設定に依存すると述べています。
アクセスレベルはno-access、read-only、read-write、admin-accessに分かれ、HTTP認証用トークンをSSH CLIから作成できます。READMEはサーバーをネットワークへ公開する前に認証を設定するよう警告し、古いSHA-1 RSA鍵に関するx/crypto/sshの制約も示しています。鍵種別を先に試すべき理由が明確です。 soft-serveでは第2節の確認対象を独立させ、入力、結果、失敗時の記録を同じ単位で残します。READMEに明記された値と、手元で観測した値を分けて記録することで、soft-serve固有の判断材料になります。
Soft Serveで見る処理経路と設定項目
サーバー設定は、初回起動後にdataディレクトリ内のconfig.yamlに保存されます。デフォルトファイルには、サーバー名、ログ形式、SSHリッスンアドレス:23231、Gitデーモン:9418、HTTP:23232、データベースドライバ(sqliteまたはpostgres)、Git LFS、cronジョブ、statsリスナーなどのセクションがあります。設定は環境変数で上書きでき、環境変数はSOFT_SERVE_の後に大文字の設定名を続けます。例えばSOFT_SERVE_SSH_LISTEN_ADDRやSOFT_SERVE_HTTP_PUBLIC_URLです。データパスはSOFT_SERVE_DATA_PATHで制御され、カスタム設定ファイルの場所はSOFT_SERVE_CONFIG_LOCATIONで設定できます。データベースはSQLiteとPostgresをサポートし、デフォルトはSQLiteです。READMEには、ドライバをpostgresに設定し、データソースURLを指定してPostgresデータベースを指す方法が示されています。サンプル設定ではGit LFSはデフォルトで有効ですが、純SSH転送はデフォルトで無効です。
repo create、import、mirror、private、rename、deleteなどの管理コマンドに加え、pushやcollaborator変更のWebhookを扱えます。フックはリポジトリ単位またはデータパス下に配置できます。管理者操作と通常のpushを別アカウントで試し、ログとイベント通知を確認します。 soft-serveでは第3節の確認対象を独立させ、入力、結果、失敗時の記録を同じ単位で残します。READMEに明記された値と、手元で観測した値を分けて記録することで、soft-serve固有の判断材料になります。
Soft Serveで見る出力と運用記録
Soft Serveの認証と認可はSSH経由で管理されます。READMEは、認証が必要なすべての操作がSSHで行われると述べており、ユーザーはSSH公開鍵を重複して使用できません。匿名アクセスは2つの設定で制御されます。anon-accessは匿名ユーザーのアクセスレベル(no-access、read-only、read-write、admin-access、デフォルトはread-only)を設定し、allow-keylessは鍵を使用しない接続を許可するかどうか(デフォルトはtrue)を設定します。allow-keylessを無効にすると、HTTPおよびgit://のクローンは拒否されます。READMEは、SOFT_SERVE_ANON_ACCESSとSOFT_SERVE_ALLOW_KEYLESSによるローカル開発用の上書きは完全な未認証アクセスを許可し、信頼できないネットワークに公開してはならないと警告しています。HTTP認証用のアクセストークンはSSH CLIで生成できます。アクセスレベルはno-access、read-only、read-write、admin-accessの4つです。既知の制限として、Goのx/crypto/sshパッケージの欠陥により、新しいSSH RSA鍵は使用できず、古いSHA-1 RSA鍵のみが機能します。
Soft ServeはSSH接続を入口にGitリポジトリを閲覧・操作するサーバーです。TUIで一覧やツリーを見せる設計と、通常のGitリモートとしてpushやcloneを受ける設計が同じ認証境界にあります。公開範囲を決めるときは画面の見た目ではなく、SSHユーザーとリポジトリ権限を基準にします。 soft-serveでは第4節の確認対象を独立させ、入力、結果、失敗時の記録を同じ単位で残します。READMEに明記された値と、手元で観測した値を分けて記録することで、soft-serve固有の判断材料になります。
Soft Serveで見る対応範囲の読み方
リポジトリはSSH経由のrepoコマンドで管理され、READMEにはblob、branch、collab、create、delete、description、hide、import、info、list、mirror、private、project-name、rename、tag、treeといったサブコマンドが列挙されています。リポジトリを作成するには、登録ユーザーがrepo create <名前>を実行するか、Soft Serveサーバーを指すリモートにプッシュします。リポジトリが存在しない場合、プッシュによって作成されます。リポジトリはネストでき、repo importで公開リモートからインポートし、--mirrorでプルミラーとしてマークできます。コラボレーターは特定のアクセスレベルで追加できます。リポジトリはプライベートに設定、一覧から非表示、名前変更、削除ができます。webhookはpush、collaborators、branch_tag_createなどのイベントをサポートします。READMEには、SSH経由でリポジトリツリーやファイルblobを印刷するコマンドもあり、構文ハイライトと行番号のフラグがあります。これらのrepoコマンドを使用するには、リポジトリのコラボレーターである必要があります。
アクセスレベルはno-access、read-only、read-write、admin-accessに分かれ、HTTP認証用トークンをSSH CLIから作成できます。READMEはサーバーをネットワークへ公開する前に認証を設定するよう警告し、古いSHA-1 RSA鍵に関するx/crypto/sshの制約も示しています。鍵種別を先に試すべき理由が明確です。 soft-serveでは第5節の確認対象を独立させ、入力、結果、失敗時の記録を同じ単位で残します。READMEに明記された値と、手元で観測した値を分けて記録することで、soft-serve固有の判断材料になります。
Soft Serveで見る制約を切り分ける確認
Soft Serve TUIは主にSSH経由でリポジトリを閲覧するためのものです。sshでサーバーに接続するか、リポジトリ名をコマンドとして渡すとそのリポジトリに直接ジャンプできます。READMEには、ローカルリポジトリ向けのsoft browseと、Gitリポジトリ内でsoftを実行する方法も記載されています。メニューでハイライトされたリポジトリでcキーを押すとクローンコマンドがコピーされますが、端末のOSC52サポートに依存します。サーバー側の自動化のために、Soft Serveはgit hooks(pre-receive、update、post-update、post-receive)をサポートしています。フックはリポジトリごとにリポジトリのhooksディレクトリに置くか、データパス下のhooksディレクトリにグローバルに置くことができます。READMEには、プッシュに関する情報を出力するupdateフックの例が含まれています。このプロジェクトはCharmの一部であり、MITライセンスで配布されています。このライセンスは使用、コピー、変更、結合、公開、配布、サブライセンス、販売を許可しますが、ソフトウェアは保証なしで現状のまま提供されます。
repo create、import、mirror、private、rename、deleteなどの管理コマンドに加え、pushやcollaborator変更のWebhookを扱えます。フックはリポジトリ単位またはデータパス下に配置できます。管理者操作と通常のpushを別アカウントで試し、ログとイベント通知を確認します。 soft-serveでは第6節の確認対象を独立させ、入力、結果、失敗時の記録を同じ単位で残します。READMEに明記された値と、手元で観測した値を分けて記録することで、soft-serve固有の判断材料になります。
編集部の結論
このプロジェクトは、READMEが示すThe mighty, self-hostable Git server for the command line. You can also try some of the following commands: Or you can use Soft Serve to browse local repositories using soft browse [directory] or running soft within a Git repository.という対象と、記載された環境・権限・入力条件が一致するチームに向きます。採用前にはrepo create、import、mirror、private、rename、deleteなどの管理コマンドに加え、pushやcollaborator変更のWebhookを扱えます。フックはリポジトリ単位またはデータパス下に配置できます。管理者操作と通常のpushを別アカウントで試し、ログとイベント通知を確認します。を実際の小さな構成で確認し、READMEにない性能や互換性を前提にしないでください。
コミュニティノート