Giteaは、Gitプラットフォームに基づくオープンソースのコードホスティングソリューションです。 Go言語で書かれています。リポジトリファイルエディタ、問題追跡、プルリクエスト、ユーザー管理、通知、組み込みWiki、LFSサポート、Gitフックなどが含まれます。
軽量なアプリケーションです。したがって、低電力システムにインストールできます。より小さなメモリプラットフォームを備えたセルフホストのGitプラットフォームをお探しの場合は、Giteaをチェックしてください。
この記事では、Fedora 34にGiteaをインストールして構成する方法と、最初のGitリポジトリーをセットアップする方法について説明します。 Giteaは、ソース、バイナリ、Dockerパッケージ、またはパッケージからインストールできます。チュートリアルでは、バイナリからインストールします。
- Fedora34を実行しているサーバー。
- root以外のsudoユーザー。
- SELinuxが無効になっています。
-
すべてが更新されていることを確認してください。
$ sudo dnf update
最初のステップは、ファイアウォールを構成することです。 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
最初のステップはGitをインストールすることです。
$ sudo dnf install git
Gitのバージョンを確認してインストールを確認します。
$ git --version
git version 2.31.1
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]
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
Giteaアプリケーションを実行するための新しいシステムユーザーを作成します。
$ sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
git
このコマンドは、git
という名前の新しいユーザーとグループを作成します ホームディレクトリを/home/git
に設定します 。
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
...
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がサーバーにインストールされました。
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
次のステップは、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
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
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
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コードホスティングサービスのインストールと構成に関するチュートリアルは終了です。ご不明な点がございましたら、以下のコメントに投稿してください。