AmazonLinux2 に Nginx で SSL/TLS 終端構成で Gitea をインストールする
Gitea は Go 言語で書かれた Git サーバです。 Gogs から Fork した OSS です。 今回は AmazonLinux2 に Gitea をインストールする手順をメモしておきます。 DB は選択出来ますが、今回は MariaDB を使うことにします。
環境¶
今回は以下の環境を構築していきます。
- AmazonLinux2
- フロントエンド
- Nginx
- クライアント通信を Proxy し、バックエンドの Gitea へ転送する
- SSL/TLS を終端する
- バックエンド
- Gitea
- 3000/TCP を Listen
- 内蔵 SSH サーバは 22/TCP を Listen
- DB には MariaDB を使う
Git リポジトリの接続には上述の通り、Gitea 内蔵 SSH サーバを用い、22/TCP を Listen させます。 その為、/etc/ssh/sshd_config
を修正し、予め sshd が Listen するポートを (22 では無い) 別のポートへ変更しています。
Nginx¶
まず、フロントエンドを担当する Nginx をインストールします。
リポジトリの追加¶
AmazonLinux 標準リポジトリにある Nginx はややバージョンが古い為、Nginx の Mainline リポジトリからインストールします。 /etc/yum.repos.d/nginx.repo
を以下の内容で新規作成します。
1 2 3 4 5 6 |
|
リポジトリの定義が出来たら Nginx をインストールします。
1 |
|
Gitea 用設定ファイルの用意¶
Gitea 用の設定ファイルを用意します。 ポイントは大きく以下の 2 つです。
- クライアント通信を Proxy して Gitea へ転送する
- SSL/TLS を終端する
/etc/nginx/conf.d/gitea.conf
を以下の内容で作成します。 FQDN や証明書/秘密鍵のパスなどは環境に合わせて修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
自動起動&起動の設定¶
これで Nginx の設定は完了です。 Nginx に自動起動&起動設定を実施しておきます。
1 2 |
|
MariaDB¶
次は MariaDB を構築していきます。
インストール¶
AmazonLinux 標準リポジトリにあるパッケージをインストールします。
1 |
|
設定の修正¶
/etc/my.cnf
の [mysqld]
セクションに文字コードの設定を追加しておきます。
1 |
|
自動起動&起動の設定¶
自動起動&起動の設定を実施します。
1 2 |
|
初期設定¶
mysql_secure_installation
で対話的に初期設定を実施しておきます。 テスト用の DB 等は削除しておく方が無難です。
1 |
|
Gitea 用データベースの作成¶
Gitea 用のデータベースを作成します。 まず、MariaDB へ接続します。
1 |
|
以下の SQL を実行してデータベースやユーザを作成しておきます。 データベース名、ユーザ名、パスワードは適宜、修正します。
1 2 3 4 |
|
これで MariaDB の設定修正は完了です。
Gitea¶
最後に Gitea を構築していきます。
項目 | 値 |
---|---|
パス | /opt/gitea 以下へインストール |
実行ユーザ | root |
実行グループ | root |
git のインストール¶
Gitea は git
コマンドに依存している為、これをインストールしておきます。
1 |
|
インストール¶
GitHub からバイナリを取得し、インストールしていきます。
1 2 3 4 5 |
|
systemd 用定義ファイルの登録¶
systemd から Gitea を制御出来るよう、定義ファイルを登録します。 /etc/systemd/system/gitea.service
を以下の内容で新規作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
自動起動&起動の設定¶
systemd 用の登録ファイルを追加している為、systemctl daemon-reload
してから自動起動&起動を行います。
1 2 3 |
|
初期設定の実施¶
Gitea が起動したらブラウザで https://git.example.com/install
へアクセスし、初期設定を実施します。 初期値と、設定値サンプルを掲載しておきます。 尚、インストーラは一度起動して設定ファイルが作成すると、再実行出来なくなります。 設定ファイルは /opt/gitea/bin/custom/conf/app.ini
に作成されましたので、以降は直接このファイルを修正するか、もしくは設定ファイルを削除してインストーラを再実行して初期設定をやり直します。 更に重要なポイントですが、インストール時に指定したパラメータは、すぐには反映されないようなので初期設定が完了したら一度、Gitea を再起動 (systemctl restart gitea
) し、設定を再読込しておきます。
項目 | 初期値 | 設定例 |
---|---|---|
データベースのタイプ | MySQL | MySQL |
ホスト | 127.0.0.1:3306 | 127.0.0.1:3306 |
ユーザー名 | gitea | gitea |
パスワード | password | |
データベース名 | gitea | gitea |
サブタイトル | Gitea: Git with a cup of tea | Gitea: Git with a cup of tea |
リポジトリのルートパス | /opt/gitea/gitea-repositories | /opt/gitea/gitea-repositories |
Git LFS ルートパス | /opt/gitea/bin/data/lfs | /opt/gitea/bin/data/lfs |
実行ユーザ名 | root | root |
SSH サーバーのドメイン | localhost | git.example.com |
SSH サーバーのドメインポート | 22 | 22 |
Gitea の HTTP ポート | 3000 | 3000 |
Gitea のベース URL | http://localhost:3000/ | https://git.example.com/ |
ログの保存先パス | /opt/gitea/bin/log | /opt/gitea/bin/log |
SMTP ホスト | ||
メール送信者 | ||
SMTP ユーザー名 | ||
SMTP パスワード | ||
登録にはメールによる確認が必要 | ||
メール通知を有効にする | ||
ローカルモードを有効にする | ||
Gravatar を無効にする | チェック | |
フェデレーテッド・アバターを有効にする | チェック | |
OpenID を使ったサインインを有効にする | チェック | |
セルフ登録を無効にする | チェック | |
外部サービスを使用した登録のみを許可 | ||
OpenID を使ったセルフ登録を有効にする | チェック | チェック |
CAPTCHA を有効にする | ||
ページ閲覧にサインインが必要 | ||
デフォルトでメールアドレスを隠す | ||
デフォルトで組織の作成を許可 | チェック | チェック |
デフォルトでタイムトラッキングを有効 | チェック | チェック |
メールを隠すときのドメイン | noreply.example.org | noreply.example.org |
管理者ユーザー名 | gitea-admin | |
パスワード | password | |
パスワード確認 | password | |
メールアドレス | gitea-admin@example.com |
初期状態では下記のような表示になっていました。
内蔵 SSH サーバを有効化する¶
少なくても現バージョンの Gitea の Web インストーラには「内蔵 SSH サーバを利用するか?否か?」という選択が無いように見えます。 その為、Web インストーラでの初期設定が完了したら手動で /opt/gitea/bin/custom/conf/app.ini
の [server]
セクションへ下記を追加します。
1 |
|
追記が完了したら Gitea を再起動し、設定変更を反映します。
1 |
|
ログイン¶
これで準備完了です。 ブラウザで https://git.example.com
へアクセスすると下記のような画面が表示されるはずです。 初期設定で「ページ閲覧にサインインが必要」と設定している為、ログインせずに画面上部の エクスプローラ
をクリックしてもユーザやリポジトリ情報が表示される前にログインを要求されます。
参考¶
/opt/gitea/bin/custom/conf/app.ini (サンプル)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
|
/etc/my.cnf (初期状態)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|