Giteaは、Goで記述され、GogsからフォークされたWebアプリケーションをホストするコードです。その名前が示すように、GitlabやGithubと同様に、人気のあるソース管理プログラムGitで使用するように設計されています。このガイドでは、HTTPSリバースプロキシ(Nginx)の背後にあるDebian10にGiteaをインストールする方法について説明します。
- root権限を持つDebian10システム。
- サーバーを指す登録済みドメイン名。
- $EDITOR環境変数を設定する必要があります。
- 電子メール通知用のSMTPサーバーへのアクセス(オプション)。
(サブ)ドメインがAレコードでサーバーのIPv4アドレスを指していることを確認してください。必要に応じて、サーバーのIPv6アドレスを指すAAAAレコードを作成します。
ステップ1:システムの準備
パッケージインデックスを更新することから始めて、利用可能な更新をインストールします:
apt update apt upgrade -y reboot
このセットアップには、いくつかのソフトウェアパッケージが必要です。
- Git、Giteaの依存関係。
- Giteaにはデータベースが必要なためのPostgreSQL。
- リバースプロキシとして使用されるNginx。
- Let'sEncryptSSL証明書を取得するためのユーティリティであるCertbot。
- Sudo、postgresシステムユーザーとしてコマンドを実行します。
次のようにインストールします:
apt install -y git nginx certbot postgresql sudo
次に、Giteaを実行するユーザーを作成します:
adduser --system --disabled-password --group --shell /bin/bash --home /home/gitea gitea
次に、Giteaのディレクトリ構造を作成します:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
そして、所有権と権限を次のように設定します。
chown -R gitea:gitea /var/lib/gitea chown -R gitea:gitea /run/gitea chown -R root:gitea /etc/gitea chmod -R 750 /var/lib/gitea chmod 770 /etc/gitea>
/ etc / giteaの権限は一時的なものであり、Webインストーラーの実行後に強化されます。
ステップ2:データベースのセットアップ
Postgresが有効で実行されていることを確認してください:
systemctl enable --now [email protected]
次に、Giteaが使用するユーザーロールとデータベースを作成します。
sudo -u postgres psql postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password'; postgres=# CREATE DATABASE gitea; postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea; postgres=# exit;
ステップ3:Giteaのインストール
Giteaのダウンロードページから最新のlinux-amd64バイナリをダウンロードします。例:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea chmod 755 /usr/local/bin/gitea
次に、Giteaのsystemdユニットファイルを作成します:
$EDITOR /etc/systemd/system/gitea.service
そして、次のように入力します:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target Requires=postgresql.service [Service] Type=simple User=gitea Group=gitea WorkingDirectory=/var/lib/gitea/ RuntimeDirectory=gitea ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
新しいユニットがロードされていることを確認してください:
systemctl daemon-reload
次に、systemdにシステムの起動時にGiteaを起動するように指示します:
systemctl enable gitea.service
ステップ4:Giteaの設定
初期設定には、付属のWebインストールスクリプトを使用します。まず、Giteaを起動します:
systemctl start gitea.service
次に、http:// your_domain:3000 / installに移動し、次のように必要なパラメーターを入力します。
- データベースタイプ:PostgreSQL
- ホスト:127.0.0.1:5432
- ユーザー名:gitea
- パスワード:Postgresロールの作成時に選択したパスワードを入力します。
- データベース名:gitea
- SSL:無効
- サイトタイトル:選択したタイトル。
- リポジトリルートパス:/ var / lib / gitea / data / repository
- Git LFSルートパス:/ var / lib / gitea / data / lfs
- ユーザー名として実行:gitea
- SSHサーバードメイン:your_domain
- SSHサーバーポート:22
- Gitea HTTPリッスンポスト:3000
- GiteaベースURL:https:// your_domain /
- ログパス:/ var / lib / gitea / log
メールと残りの設定を適切と思われるものとして構成し、[Giteaのインストール]をクリックします。誤ったURLにリダイレクトされます。 NginxまたはHTTPSをまだ構成していないため、これは正常です。パフォーマンス上の理由から、デフォルトのTCPポートではなくUNIXソケットでリッスンするようにGiteaを構成します。
続行する前にGiteaを停止してください:
systemctl stop gitea.service
以下に示すように、/ etc/giteaの権限を強化します。これにより、giteaグループに属していない人が、データベースのクレデンシャルなどの機密情報を含むapp.iniを読み取ることができなくなります。
chmod 750 /etc/gitea chown root:gitea /etc/gitea/app.ini chmod 640 /etc/gitea/app.ini
構成ファイルを開きます:
$EDITOR /etc/gitea/app.ini
Remove the following line from the [server] section:
HTTP_PORT = 3000
And add the following lines to the [server] section:
HTTP_ADDR = /run/gitea/gitea.sock PROTOCOL = unix UNIX_SOCKET_PERMISSION = 666
ステップ5:リバースプロキシの設定
Stop Nginx if it is running, as certbot will need to bind to port 80:
systemctl stop nginx.service
次のコマンドを使用して、ドメインの証明書を取得します。
certbot certonly --standalone --agree-tos -m [email protected] -d your_domain
Let's Encryptは、証明書を発行する前にドメインの所有権を確認します。証明書、チェーン、秘密鍵は/ etc /letsencrypt / live /your_domain/に保存されます。
これで、Nginxを構成できます。新しい構成ファイルを作成します:
$EDITOR /etc/nginx/sites-available/gitea
そして、次の構成を入力します。
server { listen 80; listen [::]:80; server_name your_domain; return 301 https://$server_name$request_uri; access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; } server { listen 443 ssl; listen [::]:443 ssl; server_name your_domain; ssl on; ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem; location / { proxy_pass http://unix:/var/run/gitea/gitea.sock; } access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; }
最初のサーバーブロックは、すべてのHTTPリクエストをHTTPSにリダイレクトするためだけに機能します。 2番目のブロックはHTTPS接続をリッスンし、Giteaがリッスンするように構成したUNIXソケットにプロキシします。
上記の構成を保存したら、次のコマンドを実行して有効にします。
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
で構文エラーがないか確認し、それに応じて構成を編集します。
nginx -t
最後に、NginxとGiteaを起動します:
systemctl start nginx.service gitea.service
これで、Giteaインスタンスが正常に実行されているはずです。最初のWebインストーラーを使用して管理者アカウントを作成しなかった場合、最初にサインアップしたユーザーに管理者の役割が与えられます。
デフォルトでは、Giteaは重大度レベルInfo以上のメッセージをログに記録します。ほとんどの場合、これを警告またはエラーに変更することをお勧めします。これを行うには、/ etc / gitea / app.iniを開き、[log]セクションのLEVELパラメーターをtrace、debug、info、warn、error、critical、fatal、noneのいずれかに変更します。たとえば、重大度が警告以上のメッセージをログに記録するには、次を使用します。
[log] MODE = file LEVEL = warn ROOT_PATH = /var/lib/gitea/log
変更を有効にするためにGiteaを再起動します:
systemctl restart gitea.service
代わりに、Giteaは独自のSSHサーバーを使用できます。有効にするには、[サーバー]構成セクションに次の行を追加します。
START_SSH_SERVER = true
また、SSHポートを1000を超える任意の数に変更します。例:
SSH_PORT = 2222
次に、Giteaを再起動して変更を適用します。