それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

gitサーバのgogs を使うことに

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 の ポートフォワーディングでいいわ

ssh gogs-server -L 8080:localhost:6000
open localhost:8080

インストールして初期ユーザを作ったら準備完了

初回登録ユーザーが「管理者」

「1番目」のユーザーが自動的に管理者になり、2番目以降は通常ユーザーになる。

これは最初「アレレ、管理者設定どこ?」って思って勘違いしてググりまくって苦労した。2番目以降の通常ユーザーに管理者フラグを立てると管理者になれる。

メールの設定とポートとSSL

メール送信の設定とかを入れて、再起動する

あとは他に、ポート指定したり、nginx にSSLのポートなどを設定。起動ウイザードで設定する

最後に、pull / push の sshhttps のNATなしのポートをなどを設定して準備完了。

PAM / LDAP が使える

Gitlab で認証連携のコレらをやろうと思うと有料版など面倒なのだが、ユーザーの管理に PAM(/etc/passwdなど PAM対応してる認証機構ならなんでも) や LDAP(DN) とSMTPが使える。PAM対応してるのが熱い。

PAM対応があると、sshMySQL と共通のID/PWでユーザーを管理できるので、保守性が高くて複数インストールしても苦なく使える。

軽快

とても軽快で使いやすい。もっさり感もなく、要求スペックは高くない。

git の認知に関する愚痴など

「git は使いたいけどgithub はちょっと。」とか「github が導入できないから git 導入に苦労する」とかいう言説はまやかしである。SFTPでもSMB/Cifsやでも使えるのであるから。git は「分散」レポジトリであることを忘れて中央サーバーが必須だと思いこんでる人の多いことといったら。

github にアクセスできなくてもgit は使えるしソースコードの管理もできる。なんなら今回のようなgogs など git server をオンプレで立ち上げてもいい。

github イコール git と思いこんでる言説が多くて困る。

*1: X-Original-Host を見てくれればいいのにな。