github だけがgit webじゃない。
git をWEBで閲覧するのには、github 以外にも git serverとして gitweb でもなんでもある。
gitlab は要求水準が高いし、prometheus がCPU食いまくる、またgitlab は複数のドメインで運用が面倒だ。*1
gitlab を複数インスタンス入れるのも面倒な話だし。マルチドメインをできないのなら、別のgit web を探すことにして。 gogs に目をつけた次第です
gogs インストール
gogs は go で書かれたgit サーバー
packager を使うのが早い
https://packager.io/gh/pkgr/gogs/builds/689/install/ubuntu-16.04
パッケージでインストールする。
wget -qO- https://dl.packager.io/srv/pkgr/gogs/key | sudo apt-key add - sudo wget -O /etc/apt/sources.list.d/gogs.list \ https://dl.packager.io/srv/pkgr/gogs/pkgr/installer/ubuntu/16.04.repo sudo apt-get update sudo apt-get install gogs
設定ファイルが作られる
インストール完了したら、次の設定が作られる。
/etc/gogs/conf/app.ini
適当に設定ファイルを編集。
再起動
systemctl status gogs systemctl restart gogs systemctl status gogs
また、すでに起動しているので、インストーラーにアクセスしたいところがだが、MySQLを要求するので、先に作っておく
DB 作成
apt インストールが完了したら、あとは、DB設定とユーザー作成して登録する。
Gogs はMYSQLのDBを要求するので、MYSQLにテーブル作成ようにユーザーとDBスキームを作っておく
takuya@sakura:~$ mycli -u root mysql root@(none):(none)> create database gogs mysql root@(none):(none)> create user "gogs-user" identified mysql root@(none):(none)> create user "gogs-user" identified by "**************"; mysql root@(none):(none)> grant all on gogs.* to 'gogs-user'@'%'; mysql root@(none):(none)>
接続テスト
ローカルホストと通信して、接続を確認する。
curl locahost:6000/install
ssh gogs-server -L 8080:localhost:6000 open localhost:8080
インストールして初期ユーザを作ったら準備完了
初回登録ユーザーが「管理者」
「1番目」のユーザーが自動的に管理者になり、2番目以降は通常ユーザーになる。
これは最初「アレレ、管理者設定どこ?」って思って勘違いしてググりまくって苦労した。2番目以降の通常ユーザーに管理者フラグを立てると管理者になれる。
メールの設定とポートとSSL
メール送信の設定とかを入れて、再起動する
あとは他に、ポート指定したり、nginx にSSLのポートなどを設定。起動ウイザードで設定する
最後に、pull / push の ssh や https のNATなしのポートをなどを設定して準備完了。
PAM / LDAP が使える
Gitlab で認証連携のコレらをやろうと思うと有料版など面倒なのだが、ユーザーの管理に PAM(/etc/passwdなど PAM対応してる認証機構ならなんでも) や LDAP(DN) とSMTPが使える。PAM対応してるのが熱い。
PAM対応があると、ssh や MySQL と共通のID/PWでユーザーを管理できるので、保守性が高くて複数インストールしても苦なく使える。
軽快
とても軽快で使いやすい。もっさり感もなく、要求スペックは高くない。
git の認知に関する愚痴など
「git は使いたいけどgithub はちょっと。」とか「github が導入できないから git 導入に苦労する」とかいう言説はまやかしである。SFTPでもSMB/Cifsやでも使えるのであるから。git は「分散」レポジトリであることを忘れて中央サーバーが必須だと思いこんでる人の多いことといったら。
github にアクセスできなくてもgit は使えるしソースコードの管理もできる。なんなら今回のようなgogs など git server をオンプレで立ち上げてもいい。
github イコール git と思いこんでる言説が多くて困る。
*1: X-Original-Host を見てくれればいいのにな。