Ubuntu18.04でのGogs鯖の導入

# はじめに
Ubuntu18.04でgogs鯖を立てる記事です．
経緯としてはサークルの代表からGit鯖立てろ！ってことでGogs軽そうで良さげじゃねと


#導入(失敗編)
```ruby:PackageのInstall
$ 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
```

コマンドはGogsのガイドをそのままコピーで楽ちん！！！と思ったら動かなかった...
あ，UbuntuのVersionが18.04.4やんけ!!!

```ruby:UbuntuのVersition確認
$ cat /etc/lsb-release
```

#導入(成功編)
まずsqliteがないとダメらしいのでインストール

```ruby:SqliteのInstall
$ sudo apt install sqlite3
```

次にgitのversionが最新版かどうか確認(一番最初にしろ)

```
$ git --version
git version 2.17.1
```

次に，gitユーザの獲得

```
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
```
最新版が0.11.91だったので以下のコマンドを実行Versionを変えれば他のバージョンをgoogledriveからinstallできる

```ruby:install
$ VERSION=0.11.91
$ wget https://dl.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz -P /tmp
```

tarの解凍

```ruby:解凍
$ sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
```


Gogsインストールディレクトリの所有権をユーザーおよびグループgitに変更

```ruby:権限の変更
$ sudo chown -R git: /home/git/gogs
```

Systemdユニットファイルのコピー

```
$ sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
```

gogs鯖の起動と確認

```
$ sudo systemctl start gogs
$ sudo systemctl enable gogs
$ sudo systemctl status gogs
```

#webインストーラー
webインターフェースを開いて設定を行なっていきます

```
./gogs web
```

http://127.0.0.1:3000をブラウザで開いて設定を行います．

![gogs-install.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505843/31e43bb9-181c-bf55-a8cb-2e3f54564150.jpeg)

上のはGogsの公式が出している画像です.MySqlを使いたい場合，文字コードをUTF8にしたデータベースをMysqlで先に作っておきましょう.

Nginxの設定をします.
Nginxが入っていない人は導入をして，次のファイルを開いて編集します．

```
sudo nano /etc/nginx/sites-enabled/gogs.example.com
```


```
server {
    listen 80;
    server_name gogs.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://gogs.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name gogs.example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    client_max_body_size 50m;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/gogs.example.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/gogs.example.com.access.log;
    error_log /var/log/nginx/gogs.example.com.error.log;

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}
```
最後に,nginxを再起動して，gogsのドメインとルートUrlの変更を行なって，gogsサービスを再起動したら終わりです!!

```
//Nginxの再起動
$ sudo systemctl restart nginx
$ sudo nano /home/git/gogs/custom/conf/app.ini
[server]
DOMAIN           = gogs.example.com
ROOT_URL         = https://gogs.example.com/
//Gogsの再起動
$ sudo systemctl restart gogs
```

https://gogs.example.comにアクセスできれば，成功です

# 参考文献

https://linuxize.com/post/how-to-install-and-configure-gogs-on-ubuntu-18-04/