Giteaは、Goで記述された自己ホスト型のオープンソースgitサーバーです。リポジトリファイルエディタ、プロジェクトの問題追跡、ユーザー管理、通知、組み込みのWikiなどが付属しています。
Giteaは軽量のアプリケーションであり、それほど強力ではないシステムにインストールできます。メモリフットプリントがはるかに小さいGitlabの代替品を探していて、Gitlabが提供するすべての機能を必要としない場合は、Giteaを試してみてください。
この記事では、CentOS8にGiteaをインストールして構成する方法を説明します。
前提条件#
Giteaは、SQLite、PostgreSQL、およびMySQL/MariaDBasデータベースバックエンドをサポートしています。
SQLiteを使用します。これは、単一のファイル内にデータを格納する軽量のデータベースです。 CentOSマシンにSQLiteがインストールされていない場合は、sudoユーザーとして次のコマンドを実行してインストールできます。
sudo dnf install sqlite
SELinuxが無効になっているか、パーミッシブモードに設定されていることを前提としています。
Giteaは、ソース、バイナリ、およびパッケージとしてインストールできます。 Dockerイメージとしてデプロイすることもできます。バイナリを使用してGiteaをインストールします。
最初のステップは、CentOSにGitonをインストールすることです:
sudo dnf install git
Gitのバージョンを表示してインストールを確認します:
git --version
git version 2.18.4
Gitユーザーを作成する#
Giteaアプリケーションを実行するための新しいシステムユーザーを作成します:
sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
git
このコマンドは、git
という名前の新しいユーザーとグループを作成します 、ホームディレクトリを/home/git
に設定します 。
最新のGiteaバイナリは、Giteaダウンロードページからダウンロードできます。アーキテクチャに適したバイナリをダウンロードしてください。
執筆時点では、最新バージョンは1.12.3です。利用可能な新しいバージョンがある場合は、VERSION
を変更します 以下のコマンドの変数。
wget
を使用する /tmp
にGiteaバイナリをダウンロードするには ディレクトリ:
VERSION=1.12.3
sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
バイナリは任意の場所から実行できます。規則に従い、バイナリを/usr/local/bin
に移動します ディレクトリ:
sudo mv /tmp/gitea /usr/local/bin
バイナリを実行可能にします:
sudo chmod +x /usr/local/bin/gitea
次のコマンドは、必要なディレクトリを作成し、必要な権限と所有権を設定します。
sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git: /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
上記のディレクトリ構造は、Giteaの公式ドキュメントで推奨されています。
/etc/gitea
の権限 ディレクトリは770
に設定されています インストールウィザードが構成ファイルを作成できるようにします。インストールが完了したら、より制限の厳しい権限を設定します。
Systemdユニットファイルを作成する#
Giteaは、セットアップに一致するように構成されたSystemdユニットファイルを提供します。
ファイルを/etc/systemd/system/
にダウンロードします 次のように入力してディレクトリ:
sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/
完了したら、Giteaサービスを有効にして開始します:
sudo systemctl daemon-reload
sudo systemctl enable --now gitea
サービスが正常に開始されたことを確認します:
sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-01-04 21:27:23 UTC; 3s ago
Main PID: 14804 (gitea)
Tasks: 9 (limit: 1152)
CGroup: /system.slice/gitea.service
└─14804 /usr/local/bin/gitea web --config /etc/gitea/app.ini
...
Giteaが稼働しているので、Webインターフェイスを介してインストールを完了するときが来ました。
デフォルトでは、Giteaはポート3000
で接続をリッスンします すべてのネットワークインターフェイスで。 Gitea Webインターフェースへのアクセスを有効にするためにファイアウォールを構成する必要があります:
sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
sudo firewall-cmd --reload
ブラウザを開き、http://YOUR_DOMAIN_IR_IP:3000/install
と入力します 、および初期構成ページが表示されます:
次のように必須フィールドに入力します。
データベース設定:
- データベースタイプ:SQLite3
- パス:絶対パス
/var/lib/gitea/data/gitea.db
を使用します
アプリケーションの一般設定:
- サイトタイトル-組織名を入力します。
- リポジトリルートパス-デフォルトの
/home/git/gitea-repositories
のままにします 。 - GitLFSルートパス-デフォルトの
/var/lib/gitea/data/lfs
のままにします 。 - ユーザー名として実行-git
- SSHサーバードメイン-ドメインまたはサーバーのIPアドレスを入力します。
- SSHポート-22、SSHが他のポートでリッスンしている場合は変更します
- GiteaHTTPリッスンポート-3000
- GiteaベースURL-httpとドメインまたはサーバーのIPアドレスを使用します。
- ログパス-デフォルトの
/var/lib/gitea/log
のままにします
完了したら、「Giteaのインストール」ボタンを押します。インストールは瞬時に行われます。完了すると、ログインページにリダイレクトされます。
「今すぐサインアップ」リンクをクリックします。最初に登録されたユーザーは、自動的に管理者グループに追加されます。
インストールをより安全にするには、以下を使用して、Gitea構成ファイルの権限を読み取り専用に変更します。
sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini
それでおしまい。 CentOSマシンにGiteaがインストールされました。
NginxをSSLターミネーションプロキシとして構成する#
この手順はオプションですが、強くお勧めします。 Nginxをリバースプロキシとして使用するには、サーバーのパブリックIPを指すドメインまたはサブドメインが必要です。このチュートリアルでは、git.example.com
を使用します 。
まず、Nginxをインストールし、以下のガイドを使用して無料のLet’sEncryptSSL証明書を生成します。
- CentOS8にNginxをインストールする方法
- CentOS8でLet'sEncryptを使用してNginxを保護する
完了したら、テキストエディタを開き、ドメインサーバーのブロックファイルを編集します。
sudo nano /etc/nginx/conf.d/git.example.com.conf
/etc/nginx/conf.d/git.example.com.conf server {
listen 80;
server_name git.example.com;
include snippets/letsencrypt.conf;
return 301 https://git.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name git.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/git.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/git.example.com/chain.pem;
include snippets/letsencrypt.conf;
include snippets/ssl.conf;
# log files
access_log /var/log/nginx/git.example.com.access.log;
error_log /var/log/nginx/git.example.com.error.log;
# Handle / requests
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
}
git.example.comをGiteaドメインに置き換え、SSL証明書ファイルへの正しいパスを設定することを忘れないでください。 HTTPトラフィックはHTTPSにリダイレクトされます。
完了したら、変更を有効にするためにNginxサービスを再起動します。
sudo systemctl restart nginx
次に、GiteaドメインとルートURLを変更します。これを行うには、構成ファイルを開き、次の行を編集します。
sudo nano /etc/gitea/app.ini
/etc/gitea/app.ini [server]
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
次のように入力して、Giteaサービスを再起動します。
sudo systemctl restart gitea
この時点で、Giteaプロキシが構成されており、https://git.example.com
からアクセスできます。
通知メールを送信するには、Postfixをインストールするか、SendGrid、MailChimp、MailGun、SESなどのトランザクションメールサービスを使用できます。
電子メール通知を有効にするには、構成ファイルを開き、次の行を編集します。
sudo nano /etc/gitea/app.ini
/etc/gitea/app.ini [mailer]
ENABLED = true
HOST = SMTP_SERVER:SMTP_PORT
FROM = SENDER_EMAIL
USER = SMTP_USER
PASSWD = YOUR_SMTP_PASSWORD
正しいSMTPサーバー情報を使用していることを確認してください。
app.ini
を編集するたびに ファイルの場合、変更を有効にするにはGiteaサービスを再起動する必要があります:
sudo systemctl restart gitea
設定を確認してテストメールを送信するには、Giteaにログインし、[サイト管理]>[構成]>[SMTPメーラー構成]に移動します。
Giteaでは、Web Webhookを作成してSlackに接続し、Slackチャネルに通知を送信することもできます。
最新のGiteaバージョンへのアップグレードは簡単な作業です。バイナリをダウンロードして置き換えるだけです。
-
Giteaサービスを停止します:
sudo systemctl stop gitea
-
最新のGiteaバイナリをダウンロードして、
/usr/local/bin
に移動します ディレクトリ:VERSION=<THE_LATEST_GITEA_VERSION>
wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
sudo mv /tmp/gitea /usr/local/bin
-
バイナリを実行可能にします:
sudo chmod +x /usr/local/bin/gitea
-
Giteaサービスを再起動します:
sudo systemctl restart gitea
それだけです。