ローカルサーバに Gogs をインストールする

ちょっとローカルに Git のリポジトリを置いておくサーバが欲しかったので docker コンテナにインストールしました。
今回は http によるアクセスのみで、SSH によるアクセスはできない設定です。

# cat /etc/debian_version
8.8

コンテナの3000ポートとホストの3000ポートを繋いでいます。

Gogs のインストールはドキュメントを読むと楽勝です。
今回はバイナリ版を入れています。

ざっくり環境を整える

sudo と vimwget を入れておきます。なぜか curl も気分で入れました。

# apt-get install sudo vim wget curl -y
# adduser zoar
# usermod -aG sudo zoar
# su zoar

MySQL Server のインストー

データベースとして MySQL を使うのでインストール。

$ sudo apt-get install mysql-server -y
$ sudo /etc/init.d/mysql start

コントロールするユーザーとデータを格納するデータベースを作ります。

$ mysql -uroot -p
mysql> CREATE DATABASE gogs;
mysql> CREATE USER zoar@localhost IDENTIFIED BY '%パスワード%';
mysql> use mysql
mysql> SELECT User FROM user WHERE User = 'zoar';
+------+
| User |
+------+
| zoar |
+------+
mysql> GRANT all ON gogs.* TO zoar@localhost;
mysql> \q  

Go言語のインストー

apt-get で入れようとすると 1.3 が落ちてくるので godeb を使って 1.8 をインストールします。

$ cd /tmp
$ wget https://godeb.s3.amazonaws.com/godeb-amd64.tar.gz
$ tar xvf godeb-amd64.tar.gz
$ sudo mv godeb /usr/local/bin/

godeb から Go 言語をインストールする。

$ godeb list | more
$ godeb install 1.8

Gogs バイナリのインストー

バイナリを落としてきて展開すればOK。
横着なのでホームディレクトリに直接展開しています。

$ cd /tmp
$ wget https://cdn.gogs.io/0.11.19/linux_amd64.tar.gz
$ cd ~
$ tar xvf /tmp/linux_amd64.tar.gz

Gogs を起動してウェブインターフェイスにアクセスすれば完了

$ cd gogs
$ ./gogs web

変更したのは次の部分。

  • データベース設定

    • ユーザ:zoar
    • パスワード:%パスワード%
  • Gogs の全般設定

    • 実行ユーザ:zoar
    • SSHポート:%空白%
    • アプリケーションのURL:http://%サーバIP%:3000/

最後に Gogs をインストール をクリックしておしまい。

最初に作成したユーザーが Gogs のサイト管理もできる権限に設定されます。

普通の(?) http で接続できるようにする

操作するときに :3000 を付けるのが面倒な感じだったので docker ホストで動いてる apache2 にプロキシ設定を追加して /gogs でもアクセスできるようにしました。

まずはコンテナにアタッチして設定を変更します。

host$ docker attach %hash%
container$ vi ./custom/conf/app.ini
ROOT_URL     = http://%サーバーIP%:3000
↓
ROOT_URL     = http://%サーバーIP%/gogs

再度起動しておく

container$ ./gogs web

Ctrl+p q でデタッチしてホストの設定をいじる

host$ sudo vi /etc/apache2/mods-enabled/proxy.conf 
        ProxyPass /gogs http://%サーバーIP%:3000
        ProxyPassReverse /gogs http://%サーバーIP%:3000
host $ sudo service apache2 reload

これで http://%サーバーIP%/gogs にアクセスして gogs を使えるようになりました。