
オープンソースでセルフホスト可能なTailscaleコントロールサーバーの実装。

Tailscale コントロールサーバーのオープンソース、セルフホスト実装です。
Discord サーバー に参加してチャットしましょう。
注意: 常に使用しているリリースバージョンと同じ GitHub タグを選択し、正しい設定例があることを確認してください。main ブランチには未リリースの変更が含まれている可能性があります。安定版と開発版のドキュメントが利用可能です:
Tailscale は Wireguard 上に構築されたモダンな VPN です。 ネットワーク上のコンピューター間でオーバーレイネットワークのように動作し、 NAT トラバーサル を利用します。
Tailscale のすべてはオープンソースですが、プロプライエタリ OS(Windows および macOS/iOS)用の GUI クライアントとコントロールサーバーは除きます。
コントロールサーバーは、Tailscale ネットワーク内のノード間で Wireguard 公開鍵を交換するための交換ポイントとして機能します。クライアントの IP アドレスを割り当て、各ユーザー間の境界を作成し、ユーザー間でマシンを共有できるようにし、ノードのアドバタイズされたルートを公開します。
Tailscale ネットワーク(テイルネット) は、個人ユーザーまたは組織に対して Tailscale が割り当てるプライベートネットワークです。
Headscale は、Tailscale コントロールサーバーのセルフホスト、オープンソースの代替を実装することを目指しています。Headscale の目標は、セルフホスターや愛好家に、自分のプロジェクトやラボで使用できるオープンソースサーバーを提供することです。これは、個人使用または小規模なオープンソース組織に適した、単一の Tailscale ネットワーク(テイルネット)という狭い範囲を実装しています。
headscale が気に入り、役に立つと思われた場合は、リポジトリにスポンサーシップと寄付のボタンがあります。
ドキュメントの "機能" を参照してください。
ドキュメントの "クライアントおよびオペレーティングシステムのサポート" を参照してください。
リバースプロキシやコンテナを使用して Headscale を実行することはサポートしておらず、推奨もしていませんのでご注意ください。
ドキュメント をご覧ください。
NixOS ユーザー向けには、nix/ にモジュールがあります。
main からのビルドmain ブランチからの開発ビルドは、コンテナイメージとバイナリとして入手可能です。詳細は開発ビルドのドキュメントを参照してください。
このプロジェクトは Tailscale Inc. とは関係ありません。
ただし、Headscale のアクティブなメンテナの一人は Tailscale に雇用されており、作業時間をプロジェクトへの貢献に充てることが許可されています。このメンテナからの貢献は他のメンテナによってレビューされます。
メンテナはプロジェクトの方向性を設定するために協力しています。根本的な原則は、持続可能なプロジェクトを維持しながら、セルフホスター、愛好家、趣味人のコミュニティに奉仕することです。
CONTRIBUTING.md ファイルをお読みください。
headscale に貢献するには、最新バージョンの Go と Buf(Protobuf ジェネレーター)が必要です。
開発環境のセットアップには Nix を使用することをお勧めします。これは nix develop で行うことができ、ツールをインストールしてシェルを提供します。これにより、headscale メンテナと同じ開発環境を保証できます。
増え続ける貢献との一貫性を確保するために、このプロジェクトはリンティングとスタイル/フォーマットルールを採用しています:
Go コードは golangci-lint でリントされ、golines(幅88)と gofumpt でフォーマットされます。
開発中はツールを実行するようにエディターを設定し、コードをコミットする前に make lint と make fmt を実行してください。
Proto コードは buf でリントされ、clang-format でフォーマットされます。
ドキュメント は mdformat でフォーマットされます。
その他(Markdown、YAML など)は prettier でフォーマットされます。
具体的な設定は .golangci.yaml と Makefile を確認してください。
インストールして有効化:
nix develop
プロジェクトの一部では、Protobuf から Go コードを生成する必要があります(proto/ に変更があった場合)。これは次のコマンドで(再)生成する必要があります:
make generate
注: gen/ からの変更は、レビューを容易にするために別のコミットでチェックインしてください。
テストを実行するには:
make test
プログラムをビルドするには:
make build
依存関係管理には Nix を使用することをお勧めします。これにより必要なツールがすべて揃います。自分で依存関係を管理する場合は、Make を直接使用できます:
Nix を使用する場合(推奨):
nix develop
make test
make build
独自の依存関係を使用する場合:
make test
make build
Makefile は、必要なツールが不足している場合に警告を表示し、nix develop を実行するよう提案します。利用可能なすべてのターゲットを確認するには make help を実行してください。
contrib.rocks で作成