GNU/Linux >> Linux の 問題 >  >> Fedora

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

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

軽量なアプリケーションです。したがって、低電力システムにインストールできます。より小さなメモリプラットフォームを備えたセルフホストのGitプラットフォームをお探しの場合は、Giteaをチェックしてください。

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

前提条件
  • Fedora34を実行しているサーバー。
  • root以外の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 protected]"

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

$ git config --list
user.name=Your Name
[email protected]
ステップ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で変更してください 以下のコマンドの変数。

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

$ 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を実行します。そのために、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
  • ユーザー名: ギテア
  • パスワード: yourpassword
  • データベース名: ギテア

一般設定

  • サイトタイトル: 組織名を入力してください
  • リポジトリルートパス: デフォルトのパスのままにします
  • 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'sEncryptを使用してSSLをインストールする

Let's Encryptを使用してSSL証明書をインストールするには、Ubuntu20.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'sEncryptの自動更新用のチャレンジWebルートディレクトリを作成します。

$ sudo mkdir -p /var/lib/letsencrypt

Cronジョブを作成してSSLを更新します。証明書を確認し、必要に応じて更新するために毎日実行されます。そのためには、まず、ファイル/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-電子メール通知の設定

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

通知を有効にするには、構成ファイル/etc/gitea/app.iniを開きます 。

$ sudo nano /etc/gitea/app.ini

ファイルの次のセクションを編集し、次のコードを追加します。

[mailer]
ENABLED = true
FROM           = [email protected]
MAILER_TYPE    = smtp
HOST           = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER           = [email protected]
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を使用するには、Giteaに独自のSSHキーを追加する必要があります。お持ちでない場合は、ローカルシステムで次のコマンドを使用して作成できます。

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

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

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 protected]/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コードホスティングサービスのインストールと構成に関するチュートリアルは終了です。ご不明な点がございましたら、以下のコメントに投稿してください。


Fedora
  1. CentOS8にHTTPSを使用してGiteaコードホスティングプラットフォームをインストールする方法

  2. Debian10にHTTPSを使用してGiteaコードホスティングプラットフォームをインストールする方法

  3. Node.jsをFedora35/Fedora34にインストールする方法

  1. Ubuntu18.04でDockerを使用してGiteaセルフホストGitサービスをインストールする方法

  2. Fedora34にVagrantをインストールする方法

  3. Fedora34にRedis6をインストールして設定する方法

  1. Debian11にGiteaGitサービスをインストールする方法

  2. OpenOffice4.1.10をFedora34にインストールする方法

  3. AnyDeskをFedora35/Fedora34にインストールする方法