GitBucket+DockerでプライベートなGithubリモートリポジトリをお手軽構築

LinuxDocker, GitBucket

言わずもがな、Gitとはバージョン管理を行うツールで、Githubは共有のリポジトリ(リモートリポジトリ)を管理することが出来るWebサービスである。そう、皆が使用しているけれども、Github社というのが存在していて、そこが管理開発を行っている。

ソースコードやドキュメントの管理をGithubに登録することで行っても良いのだけれど、プライベートなリポジトリをGithub上に置くのは(なんとなく)抵抗がある。その場合、「GitBucket」というサービスを自分でインストールして使用するのが便利だ。

GitBucketは、プライベート版Github

GitBucketはGitHubクローンのアプリケーションで、javaが動く環境であれば(例えばApache+Tomcat等)簡単に動かすことが出来る。
他にも様々なGitHubクローンが存在しているけれども、GitBucketは日本人が開発の中心となっていることもあって日本語のドキュメントが多数存在している。ので、今回はこれを採用することにする。

Dockerを使ってインストールする

Gitbucketが公式に配布しているわけではないが、下記の通りGitBucketのDocker版が有志により公開されている。

DockerFile自体もCentOSをベースとしてJavaをインストールし、そこにGitBucketを配置するというシンプルな構成だ。また、必要なファイルはホスト側に持たせる形となるため、万が一の自体やコンテナのアップデートを行う際も安心である。

サーバーで次のように実行すれば良い。

コンテナを起動する

続いて、GitBucketのDockerコンテナを起動する。
GitBucket自体はコンテナ内の8080番ポートで公開されているので、これをホスト側のどこかのポートに紐付ける形となる。
今回は、適当に29000番ポートで公開する形とした。また、/opt/gitに外部ファイルを配置することとしている。

これで、http://localhost:29000/でブラウザにアクセスをすると、無事GitBucketが起動するはずである。最初はroot:rootでログイン出来るはず。

gitbucket-w765

Apacheのリバースプロキシを使ってサブドメインでアクセス出来るようにする

ポート番号を入力するのはちょっと格好が悪いので、Apacheからリバースプロキシを用いてアクセス出来るようにする。つまり、https://git.example.com/等とアクセスすると、上記のページが出るようにしてやる。

Apacheの設定に下記のような形で追記する。

これで、git.example.comでアクセスすることが出来るようになった。

実際に使ってみる

今回は、「root」でそのまま「work」というリポジトリを作ってみた。その後、クライアント端末からGithubを使う際と同じように操作をすることができる。

お、ちゃんとclone出来た。適当にファイルを置いてpushしてみる。

きちんとGitBucketにPushされたようだ。画面で確かめてみる。

gitbucket-test-w563

おお、出来ている出来ている。

普段多くのドキュメントをMarkdownで書いているので、こういう形でバージョン管理が出来ると非常に便利である。しかも、他人に見られる心配も(URLとアカウントがハックされる可能性を除けば)基本的にはない。
細々とした日曜プログラミングでも、AWSかどこかにGitBucketをインストールしてそこに配置するようにしておけば、後から差分を確認することが出来て分かりやすいのではないか。ということで、GitBucketを使ったプライベートなGitHub構築でした。