Gitで管理しているソースを検索したい、そんな時に便利なSourcegraph。
Github向けなどのブラウザ拡張もあるようですが、サーバがオープンソース化され、自前でホストすることができるようになりました。
Sourcegraphサーバーを立て、特定のGitレポジトリを参照できるよう設定すると、コードの検索や定義・呼び出し先の表示など解析ができるようになります。
公式のチュートリアルにあるように、Dockerコンテナとして構築するのが簡単です。
今回はUbuntu Server 18.04で構築してみました。
Dockerのインストール
前提となるDockerをインストールします。Ubuntuではこんな感じ。プロキシ経由の場合はこちらを参考に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # remove old versions sudo apt remove --purge docker docker-engine docker.io sudo apt update # prerequisites sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # configure repository curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # install Docker CE sudo apt update sudo apt install docker-ce -y |
Sourcegraphサーバの起動
あとはDockerイメージをpullするだけ。
しかし、普通に構築するとループバック(127.0.0.1)にリダイレクトするので、そのままでは他のマシンから使えません。
そのため、先に設定ファイル(JSON)を用意して外部アドレスに解決させるようにします。
設定ファイルを用意します。URLの部分はIPアドレスやホスト名で読み替えて下さい。
ファイル名は何でもいいのですが、sgconfig.json
としました。
1 2 3 4 5 6 7 8 9 10 | { "auth.providers": [ { "type": "builtin" } ], "disablePublicRepoRedirects": true, "appURL": "http://{host_name}:7080", "maxReposToSearch": 50 } |
なお、この"appURL"
なるパラメータは最近のリリースでは"externalURL"
に名前が変更されるようです(とドキュメントには書いてある)。
上記の設定ファイルを、ホームディレクトリ以下のパスにrootとして配置します。ファイル名はsourcegraph-config.json
としておき、後ほどコンテナにマウントします。
1 2 3 | sudo mkdir -p ~/.sourcegraph sudo mkdir -p ~/.sourcegraph/config sudo cp -f sgconfig.json ~/.sourcegraph/config/sourcegraph-config.json |
コンテナを起動します。
1 2 3 4 5 6 | sudo docker run \ --publish 7080:7080 \ --volume ~/.sourcegraph/config:/etc/sourcegraph \ --volume ~/.sourcegraph/data:/var/opt/sourcegraph \ --volume /var/run/docker.sock:/var/run/docker.sock \ sourcegraph/server:2.13.2 |
なお、上記の記述では7080番ポートで公開されます。マニュアルの例とは異なり、コンテナを停止しても削除されませんので注意して下さい。
ブラウザで設定した外部URLにアクセスすると、サイト管理者のアカウント設定など初期設定が可能になります。
GithubやGitlabなどの有名どころとの連携はもちろん、GiteaやGitbucketなどで構築したURLで到達可能なGitレポジトリも登録できるようになっています。
おわり。