ウェブサイト検索

Fedora 34にGiteaコードホスティングサービスをインストールする方法


Fedora 34にGiteaコードホスティングサービスをインストールする方法

このページで

  1. 前提条件
  2. ステップ1 - ファイアウォールを設定する
  3. ステップ2 - Gitをインストールする

    1. Gitを設定する
  4. ステップ3 - PostgreSQLをインストールして構成する
  5. ステップ4 - Gitユーザーを作成する
  6. ステップ5 - Giteaをインストールする

    1. Systemd サービスファイルを作成する
  7. ステップ6 - Giteaを設定する
  8. ステップ7 - Let's Encryptを使用してSSLをインストールする
  9. ステップ8 - Nginxをインストールして構成する
  10. ステップ9 - email通知の設定
  11. ステップ10 - Giteaの更新
  12. ステップ11 - SSHの使い方
  13. 結論

Giteaは、Gitプラットフォームに基づくオープンソースのコードホスティングソリューションです。Go言語で書かれています。リポジトリファイルエディタ、課題追跡、プルリクエスト、ユーザー管理、通知、組み込みウィキ、LFSサポート、Gitフックなど、多くの機能が含まれています。

それは軽量のアプリケーションです。したがって、パワーの低いシステムにインストールできます。メモリが小さいプラットフォームの自己ホスト型Gitプラットフォームを探しているなら、Giteaをチェックしてみてください。

この記事では、Fedora 34にGiteaをインストールおよび設定する方法と、最初のGitリポジトリを作成する方法について説明します。Giteaはソース、バイナリ、Dockerパッケージ、またはパッケージからインストールできます。私たちのチュートリアルでは、バイナリからインストールします。

前提条件

  • Fedora 34を実行しているサーバー。
  • 非ルートのsudoユーザー。
  • SELinuxが無効です。
  • すべてが最新であることを確認してください。

    sudo dnf update
    

ステップ1 - ファイアウォールを設定する

最初のステップはファイアウォールを設定することです。FedoraサーバーにはFirewalldファイアウォールが付属しています。

ファイアウォールが実行中かどうか確認してください。

sudo firewall-cmd --state

次の出力を得るべきです。

running

現在許可されているサービス/ポートを確認してください。

sudo firewall-cmd --permanent --list-services

次の出力を表示する必要があります。

dhcpv6-client mdns ssh

HTTPおよびHTTPSポートを許可します。

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

ファイアウォールの状態を再確認してください。

sudo firewall-cmd --permanent --list-services

あなたは似たような出力を見るべきです。

dhcpv6-client http https mdns ssh

ファイアウォールを再読み込みしてください。

sudo systemctl reload firewalld

ステップ2 - Gitをインストールする

最初のステップはGitをインストールすることです。

sudo dnf install git

Gitのバージョンを確認してインストールを検証します。

git --version
git version 2.31.1

Gitを設定する

Gitはgit configコマンドで設定できます。Gitを使うためにあなたの名前とメールアドレスを設定してください。

git config --global user.name "Your Name"
git config --global user.email "[email "

次のコマンドを使用して構成を確認できます。

git config --list
user.name=Your Name
[email 

ステップ3 - PostgreSQLをインストールして構成する

GiteaはSQLite、MySQL/MariaDB、MSSQL、PostgreSQLをサポートしています。私たちのチュートリアルでは、PostgreSQLを使用します。

PostgreSQLをインストールして初期化します。

sudo dnf module enable postgresql:13
sudo dnf install postgresql-server postgresql-contrib
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl enable --now postgresql

PostgreSQLはデフォルトでmd5暗号化方式をパスワード認証に使用していますが、これは安全ではありません。SCRAM-SHA-256方式に切り替える必要があります。また、リモートのPostgreSQLデータベースに接続する予定がある場合は、自分のIPアドレスをリッスンするように設定する必要があります。これらの両方は/var/lib/pgsql/data/postgresql.confファイルを編集することで変更できます。編集のために開いてください。

sudo nano /var/lib/pgsql/data/postgresql.conf

次のように以下の変数を編集してください。

listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256

Ctrl + X を押してファイルを保存し、プロンプトが表示されたら Y を入力します。

PostgreSQLを再起動します。

sudo systemctl restart postgresql

PostgreSQLシェルにログインします。

sudo -u postgres psql

Gitea用に新しいSQLユーザーとデータベースを作成します。データベースユーザーのために強力なパスワードを選択してください。

postgres-# CREATE ROLE gitea WITH LOGIN PASSWORD 'yourpassword';
postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

ユーザー名、データベース名、およびパスワードを適切に置き換えてください。

シェルを終了するには、\qと入力します。

上記で作成したデータベースにデータベースユーザーがアクセスできるように、/var/lib/pgsql/data/pg_hba.confに次の認証ルールを追加します。

もしデータベースがローカルであれば、この行を追加してください。

local    giteadb    gitea    scram-sha-256

リモートデータベースの場合は、代わりに以下のコードを使用してください。

host    giteadb    gitea    192.0.2.10/32    scram-sha-256

次の行を編集し、identをscram-sha-256に置き換える必要があります。

IPv4 local connections:
host    all             all             127.0.0.1/32            ident
IPv6 local connections:
host    all             all             ::1/128                 ident

彼らは次のように見えるべきです。

IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

PostgreSQLを再起動します。

sudo systemctl restart postgresql

リモート接続を有効にしたい場合は、ファイアウォールに次のルールを追加する必要もあります。

sudo firewall-cmd --permanent--add-service=postgresql
sudo firewall-cmd --reload

ステップ4 - Gitユーザーを作成する

Giteaアプリケーションを実行するための新しいシステムユーザーを作成します。

sudo useradd \
   --system \
   --shell /bin/bash \
   --comment 'Git Version Control' \
   --create-home \
   --home /home/git \
   git

このコマンドは、gitという名前の新しいユーザーとグループを作成し、ホームディレクトリを/home/gitに設定します。

ステップ5 - Giteaをインストールする

Giteaのダウンロードページを開き、最新のバイナリのバージョン番号を確認します。このチュートリアルを書いている時点での最新バージョンは1.14.3です。より新しいバージョンがある場合は、以下のコマンドのVERSION変数を変更してください。

最新のGiteaバイナリを取得するためにwgetユーティリティを使用します。

GITEAVERSION=1.14.3
wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64

ダウンロードしたバイナリを/usr/local/binディレクトリに移動します。

sudo mv gitea /usr/local/bin

バイナリを実行可能にしてください。

sudo chmod +x /usr/local/bin/gitea

Gitea が正常に動作するために、次のコマンドを実行してディレクトリを作成し、必要な権限を設定してください。

sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo chown -R git:git /var/lib/gitea/
sudo chmod -R 750 /var/lib/gitea/
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

/etc/gitea ディレクトリの権限は770に設定されており、インストールウィザードが設定ファイルを作成できるようになっています。インストールが完了したら、より制限のある権限に設定します。

Systemd サービスファイルを作成する

Giteaをsystemdサービスとして実行します。そのために、Gitea用の新しいsystemdエントリファイルを作成します。

sudo nano /etc/systemd/system/gitea.service

そのコードをそこに貼り付けてください。

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=postgresql.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

参考までに、Giteaリポジトリから利用可能なサンプルのsystemdファイルを確認することができます。

私たちが作成したファイルを有効にするために、systemdデーモンを再読み込みしてください。

sudo systemctl daemon-reload

Giteaサービスを有効にして開始します。

sudo systemctl enable --now gitea

Giteaが動作していることを確認してください。

sudo systemctl status gitea
  gitea.service - Gitea
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-07-04 20:33:38 EDT; 1 day 8h ago
   Main PID: 46404 (gitea)
      Tasks: 7 (limit: 2328)
     Memory: 115.5M
        CPU: 9min 12.061s
     CGroup: /system.slice/gitea.service
             ---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini
...

ステップ 6 - Giteaの設定

Giteaはデフォルトでポート3000でリッスンします。異なるポートを使用することも、デフォルトのポートを利用することもできます。したがって、ポート3000も開く必要があります。

sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

ブラウザを開いて https://YOURIPADDRESS:3000 と入力すると、Giteaインストーラーが表示されます。次の値を使って設定してください。

データベース設定

  • データベースの種類: ドロップダウンからPostgreSQLを選択してください。
  • ホスト: 127.0.0.1:5432
  • ユーザー名: gitea
  • パスワード: yourpassword
  • データベース名: gitea

一般設定

  • サイトのタイトル: 会社名を入力してください
  • リポジトリルートパス: デフォルトのパスをそのままにしてください
  • Git LFS ルートパス: デフォルトのパスをそのままにしてください
  • ユーザー名として実行: git
  • SSHサーバーのドメイン: IPアドレスを入力してください
  • HTTPリッスンポート: 3000(ここでポートを変更できますが、ファイアウォールを介してアクセスする必要があります。)
  • GiteaベースURL: http://YOURIPADDRESS:3000
  • ログパス: デフォルトのままにする

この時点でメールおよびサーバーの設定を構成することができますが、後で変更することもできます。ただし、管理者アカウントの設定は必ず入力してください。

インストールを開始するには、Giteaをインストール*ボタンをクリックしてください。完了すると、自動的にログインされ、アカウントダッシュボードにリダイレクトされます。

インストールはGiteaの設定ファイルを作成します。その権限を読み取り専用に変更してください。

sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini

それで全部です。Giteaがあなたのサーバーにインストールされました。

ステップ7 - Let's Encryptを使用してSSLをインストールする

Let's Encryptを使ってSSL証明書をインストールするには、Ubuntu 20.04に含まれているSnapdパッケージインストーラを使用してCertbotツールをダウンロードする必要があります。

次のコマンドを実行してCertbotをインストールします。

sudo dnf install certbot

SSL証明書を生成する。

sudo certbot certonly --standalone --preferred-challenges http -d example.com

上記のコマンドは、サーバーの/etc/letsencrypt/live/example.comディレクトリに証明書をダウンロードします。

Let's Encrypt の自動更新のために、チャレンジ webroot ディレクトリを作成します。

sudo mkdir -p /var/lib/letsencrypt

SSLを更新するためにCronジョブを作成します。これは毎日実行されて証明書を確認し、必要であれば更新します。それに先立って、まずはファイル/etc/cron.daily/certbot-renewを作成し、編集のために開きます。

sudo nano /etc/cron.daily/certbot-renew

次のコードを貼り付けてください。

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

タスクファイルの権限を変更して、実行可能にします。

sudo chmod +x /etc/cron.daily/certbot-renew

ステップ8 - Nginxをインストールして構成する

次のステップはNginxサーバーをインストールすることです。

sudo dnf install nginx

GiteaのためのNginx設定ファイルを作成してください。

sudo nano /etc/nginx/conf.d/gitea.conf

そのコードをそこに貼り付けてください。

server {
        listen 80;
    
        location ~ /\.well-known/acme-challenge {
                root /var/lib/letsencrypt/;
        }
    
        server_name yourdomain.com;
        return 301 https://$server_name$request_uri;
}
server {
        listen 443 ssl http2;
        server_name your_domain;
    
        client_max_body_size 50m;
    
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
        ssl_session_tickets off;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20- POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
        ssl_prefer_server_ciphers off;
        ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
        ssl_stapling on;
        ssl_stapling_verify on;

        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
    
        proxy_read_timeout 720s;
        proxy_connect_timeout 720s;
        proxy_send_timeout 720s;
        
        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;
    
        location / {
                proxy_redirect off;
                proxy_pass http://127.0.0.1:3000;
     	}
        access_log /var/log/nginx/gitea.access.log;
        error_log /var/log/nginx/gitea.error.log;
}

Ctrl + Xを押してファイルを保存し、促されたらYと入力します。

設定ファイルが正しく動作しているか確認してください。

sudo nginx -t

Nginxサーバーを再起動します。

sudo systemctl restart nginx

次に、GiteaのドメインとルートURLを変更します。そのためには、設定ファイル/etc/gitea/app.iniを開きます。

sudo nano /etc/gitea/app.ini

次の値を変更してください。

[server]
SSH_DOMAIN       = git.example.com
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

Ctrl + Xを押してファイルを保存し、促されたらYと入力します。

Giteaサービスを再起動してください。

sudo systemctl restart gitea

ステップ9 - email通知の設定

メール通知を受け取りたい場合は、Sendmailを通じて、またはAmazon SES、Postmark、Mailgun、Sendgridなどのサードパーティのメールトランザクションサービスを通じてそれを有効にすることができます。

通知を有効にするには、設定ファイル/etc/gitea/app.iniを開いてください。

sudo nano /etc/gitea/app.ini

ファイルの次のセクションを編集し、以下のコードを追加してください。

[mailer]
ENABLED = true
FROM           = [email 
MAILER_TYPE    = smtp
HOST           = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER           = [email 
PASSWD         = `password`

Ctrl + X を押してファイルを保存し、プロンプトが表示されたら Y を入力します。

Giteaサービスを再起動してください。

sudo systemctl restart gitea

ステップ10 - Giteaの更新

Giteaのアップグレードは、Giteaバイナリをダウンロードして置き換えることを含みます。

まず、Giteaサービスを停止します。

sudo systemctl stop gitea

Giteaバイナリをダウンロードしてインストールします。

GITEAVERSION=LATESTVERSION
wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
sudo mv gitea /usr/local/bin
sudo chmod +x /usr/local/bin/gitea

Giteaサービスを再起動してください。

sudo systemctl start gitea

ステップ11 - SSHの使い方

SSHを使用するには、自分のSSHキーをGiteaに追加する必要があります。もしまだ持っていない場合は、ローカルシステムで次のコマンドを使用して作成できます。

ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"

これにより、~/.ssh ディレクトリに id_ed25519 という名前のキーが作成されます。このキーを追加するには、~/.ssh/id_ed25519.pub ファイルの内容をクリップボードにコピーしてください。その後、このキーを Gitea 設定ページの SSH/GPG Keys タブに追加します。Add Key ボタンをクリックし、キーに名前を付けてボックスに貼り付けます。

sshd 設定ファイルに許可されたユーザーのリストがある場合は、gitを追加する必要があります。

SSHDの設定ファイルを開いてください。

sudo nano /etc/ssh/sshd_config

次のような行を探してください。

AllowUsers myuser myotheruser git

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

SSHDサービスを再起動してください。

sudo systemctl restart ssh

作成したキーのパスフレーズを、ローカルシステムのssh-agentツールに追加する必要があります。そうすれば、繰り返し入力を求められることはありません。以下のコマンドを実行してください。

eval $(ssh-agent)
Agent pid 46436
ssh-add ~/.ssh/id_ed25519

SSH接続をテストするために、リポジトリをクローンできます。

git clone ssh://[email /username/repo.git
Cloning into 'repo'...
The authenticity of host 'example.com (201.110.80.160)' can't be established.
ECDSA key fingerprint is SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'example.com,201.110.80.160' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), 4.77 KiB | 977.00 KiB/s, done.

結論

これでFedora 34でのGiteaコードホスティングサービスのインストールおよび設定に関するチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。

関連記事: