Gogsは、Goで記述された自己ホスト型のオープンソースgitサーバーです。リポジトリファイルエディタ、プロジェクトの問題追跡、および組み込みのWikiが含まれています。
Gogsisは軽量のアプリケーションであり、低電力システムにインストールできます。メモリフットプリントがはるかに小さいGitlabの代替品を探していて、Gitlaboffersが提供するすべてのベルやホイッスルが必要ない場合は、必ずGogsを試してください。
このチュートリアルでは、Ubuntu18.04にGogsをインストールして構成する手順について説明します。同じ手順がUbuntu16.04およびその他のUbuntuベースのディストリビューションにも適用されます。
Gogsは、SQLite、PostgreSQL、またはMySQL / MariaDBdatabaseを使用して、すべてのデータを保存できます。
このチュートリアルでは、選択するデータベースとしてSQLiteを使用します。 SQLiteがシステムにインストールされていない場合は、次のように入力してインストールできます。
sudo apt install sqlite3
セキュリティをさらに強化するには、基本的なファイアウォールを設定することをお勧めします。 Ubuntu18.04ガイドでUFWを使用してファイアウォールを設定する方法の手順に従うことができます。
Gogsのインストール#
バイナリからGogsをインストールします。インストールは非常に簡単なプロセスです。
最初のステップは、サーバーにGitonをインストールすることです。これを行うには、ローカルパッケージインデックスを更新し、sudoユーザーとして次のコマンドを実行してgitパッケージをインストールします。
sudo apt update
sudo apt install git
Gitのバージョンを表示してインストールを確認します:
git --version
git version 2.17.1
Gitユーザーを作成する#
次のように入力して、Gogsサービスを実行する新しいシステムユーザーを作成します。
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
このコマンドはユーザーを作成し、ホームディレクトリを/home/git
に設定します 。出力は次のようになります:
Adding system user `git' (UID 111) ...
Adding new group `git' (GID 116) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...
Gogs Downloadページにアクセスして、アーキテクチャの最新のバイナリをダウンロードします。執筆時点では、最新バージョンは0.11.86です。新しいバージョンが利用可能な場合は、VERSION
を変更してください。 以下のコマンドの変数。
/tmp
にあるGogsアーカイブをダウンロードします 次のwgetコマンドを使用してディレクトリを作成します:
VERSION=0.11.86
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
ダウンロードが完了したら、Gogs tar.gzファイルを抽出し、/home/git
に移動します。 ディレクトリ:
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
次のコマンドを実行して、Gogsインストールディレクトリの所有権をユーザーとグループのgitに変更します。
sudo chown -R git: /home/git/gogs
systemdユニットファイルを作成する#
Gogsには、セットアップに一致するように構成済みのSystemdユニットファイルが付属しています。
ファイルを/etc/systemd/system/
にコピーします 次のように入力してディレクトリ:
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
完了したら、Gogsサービスを開始して有効にします。
sudo systemctl start gogs
sudo systemctl enable gogs
サービスが正常に開始されたことを確認します:
* gogs.service - Gogs
Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-04-25 04:13:44 PDT; 9s ago
Main PID: 14376 (gogs)
Tasks: 8 (limit: 2319)
CGroup: /system.slice/gogs.service
`-14376 /home/git/gogs/gogs web
Webインストーラーを使用してGogsをインストールする#
Gogsがダウンロードされて実行されたので、Webインターフェイスを介してインストールを完了します。
ブラウザを開き、http://YOUR_DOMAIN_IR_IP:3000
と入力します 次のような画面が表示されます。
データベース設定:
- データベースタイプ:SQLite3
- パス:絶対パス
/home/git/gogs/gogs.db
を使用します
アプリケーションの一般設定
- アプリケーション名:組織名を入力してください
- リポジトリルートパス:デフォルトの
/home/git/gogs-repositories
のままにします - 実行ユーザー:git
- ドメイン:ドメインまたはサーバーのIPアドレスを入力します。
- SSHポート:22、SSHが他のポートでリッスンしている場合は変更します
- HTTPポート:3000
- アプリケーションURL:httpとドメインまたはサーバーのIPアドレスを使用します。
- ログパス:デフォルトの
/home/git/gogs/log
のままにします
完了したら、「Gogsのインストール」ボタンを押します。インストールはすぐに実行され、完了するとログインページにリダイレクトされます。
[今すぐサインアップ]リンクをクリックします。
最初に登録されたユーザーは、自動的に管理者グループに追加されます。
それでおしまい。 GogsがUbuntuマシンにインストールされました。
NginxをSSLターミネーションプロキシとして構成する#
この手順はオプションですが、強くお勧めします。 Nginxをリバースプロキシとして使用するには、サーバーのパブリックIPを指すドメインまたはサブドメインが必要です。このチュートリアルでは、gogs.example.com
を使用します 。
まず、Nginxをインストールし、以下のガイドに従って無料のLet’sEncryptSSL証明書を生成します。
- Ubuntu18.04にNginxをインストールする方法
- Ubuntu18.04でLet’sEncryptを使用してNginxを保護する
完了したら、テキストエディタを開き、ドメインサーバーのブロックファイルを編集します。
sudo nano /etc/nginx/sites-enabled/gogs.example.com
/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;
}
}
gogs.example.comをGogsドメインに置き換え、SSL証明書ファイルへの正しいパスを設定することを忘れないでください。すべてのHTTPリクエストはHTTPSにリダイレクトされます 変更を有効にするには、Nginxサービスを再起動します。
sudo systemctl restart nginx
次に、GogsドメインとルートURLを変更する必要があります。これを行うには、構成ファイルを開き、次の行を編集します。
sudo nano /home/git/gogs/custom/conf/app.ini
/home/git/gogs/custom/conf/app.ini [server]
DOMAIN = gogs.example.com
ROOT_URL = https://gogs.example.com/
次のように入力して、Gogsサービスを再起動します。
sudo systemctl restart gogs
この時点で、Gogsが構成されており、https://gogs.example.com
からアクセスできます。
Gogsが通知メールを送信できるようにするには、Postfixをインストールするか、SendGrid、MailChimp、MailGun、SESなどのトランザクションメールサービスを使用できます。
電子メール通知を有効にするには、構成ファイルを開き、次の行を編集します。
sudo nano /home/git/gogs/custom/conf/app.ini
/home/git/gogs/custom/conf/app.ini [mailer]
ENABLED = true
HOST = SMTP_SERVER:SMTP_PORT
FROM = SENDER_EMAIL
USER = SMTP_USER
PASSWD = YOUR_SMTP_PASSWORD
正しいSMTPサーバー情報を入力してください。
変更を有効にするには、Gogsサービスを再起動します。
sudo systemctl restart gogs
Gogsでは、Web Webhookを作成してSlackに接続し、Slackチャネルに通知を送信することもできます。
Gogsのアップグレード#
Gogsをアップグレードするには、いくつかの手動手順が必要です。
-
まず、Gogsサービスを停止します:
sudo systemctl stop gogs
-
Gogsインストールディレクトリの名前を変更します。
sudo mv /home/git/gogs{,_old}
-
最新のGogsバージョンをダウンロードして、
/home/git
に移動します ディレクトリ:VERSION=<THE_LATEST_GOGS_VERSION>
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
必ず
VERSION
を変更してください 実際のGogsリリースバージョンで。 -
custom
をコピーします 、data
、log
次のrsyncコマンドを使用して、抽出されたディレクトリへのディレクトリ:sudo rsync -a /home/git/gogs_old/{custom,data,log,gogs.db} /home/git/gogs/
-
最後に、Gogsサービスを開始します:
sudo systemctl restart gogs
それだけです。