2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GiteaをAWSでなるたけ手抜き運用

Last updated at Posted at 2022-09-25

趣味でやってるクローズドな開発用にGitea立ててみました

要件

  • Gitリモートリポジトリのオープンなやつクローズドなやつ両方持ちたい
  • イシューとかWikiとかはクローズドで書きたい
  • インフラの面倒なことはなるべく手抜きで

うまくいった構成

Giteaをこんな感じで構成してみました

  • HTTP/HTTPSは、ALB経由でサービスする
    • ALBをロードバランサーとしてはぜんぜん使ってないのですが(ターゲットグループにEC2 1台ずつしかいない)
    • リバースプロキシ的に使えて便利なのです
    • あと、証明書も良きに計らってくれるのがとても便利
  • gitプロトコルは、SSH on SSMで利用する
    • プル・プッシュするひとごとにIAMユーザーが必要ですが
    • SSHすら開けなくてよいのでとてもセキュア

Route53

giteaのトラフィックをALBへ流すレコードを追加する。

  • レコード名 : gitea.my.domain
  • レコードタイプ : A
  • エイリアス : はい
  • 値 : (ALBを指定する)

ALB

もともと、HTTPはHTTPSへリダイレクトする設定にしてます。
以下のルールを追加。

  • IF
    • ホストが gitea.my.domain
  • THEN
    • 転送先: gitea-tg

ターゲットグループ

  • Name: gitea-tg
  • Port: 3000
  • 後述のEC2インスタンスをターゲットに入れておく

EC2

  • AWS EC2 t3.micro
  • ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-20220609
  • セキュリティグループ
    • インバウンドで、ALBのセキュリティグループに対して、3000を許可
  • ロール
    • SSMを許可するロールを設定

/etc/gitea/app.ini (抜粋)

[server]
SSH_DOMAIN       = gitea.my.domain
DOMAIN           = gitea.my.domain
HTTP_PORT        = 3000
ROOT_URL         = https://gitea.my.domain/
DISABLE_SSH      = false
SSH_PORT         = 22
LFS_START_SERVER = true

開発環境の設定

こんな感じで設定して、gitプロトコルでプル・プッシュができました。
aws cliのインストールも必要です。

~/.ssh/config

Host gitea.my.domain
        IdentitiesOnly  yes
        User my_user
        IdentityFile ~/.ssh/my_user_name
        HostName        (インスタンスid)
        Port 22
        ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

ハマったこと

Amazon Linux だとうまくいかなかった

Gitea起動するしWebは使えたのですが、gitでのプル・プッシュがうまく動きませんでした。
とってくるバイナリが違ったのかも。

NLB よくわからなかった

NLBを使えば、HTTP/HTTPS以外も通せるらしいのですが。
ちょっと見にいってみて「わからん?」と、勉強不足な感じ。
既存サービスでALBを使ってもいるので、今回の構成にしました。

Too many authentication failures

なんか色んなキーで繋ごうとトライして出るぽい?
IdentitiesOnly yes を指定したら解消しました。

SSHキーのタイプ指定が必要だった

手癖でなにもオプション付けずにssh-keygenしたら認証はねられました。
指定のタイプで改めてキー生成して登録したら通りました。
(Giteaの説明、Githubのガイドをご覧くださいになってて、いーのかしらって思ったケド)

所感

Giteaだけなら、Elastic IPとってRoute53から流すだけにするとお安いですが。
他のサービスもホストしたいのと、証明書の管理が忘れたころにやってきて面倒すぎるので、手間暇のコストと思ってALB使ってます。

参考にさせて頂いたサイト

ありがとうございました、大変助かりました!

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?