Fedora 34にGiteaコードホスティングサービスをインストールする方法
Fedora 34にGiteaコードホスティングサービスをインストールする方法
このページで
- 前提条件
- ステップ1 - ファイアウォールを設定する
ステップ2 - Gitをインストールする
- Gitを設定する
ステップ5 - Giteaをインストールする
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コードホスティングサービスのインストールおよび設定に関するチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。




