2024-09-03 07:08:18
This commit is contained in:
parent
1af78edd4c
commit
14cf99e3c9
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
title: 【おうちGit鯖】Giteaを立てよう
|
title: 【おうちGit鯖】Giteaを立てよう
|
||||||
released_at: 2024-06-30T00:00:00+09:00
|
released_at: 2024-06-30T00:00:00+09:00
|
||||||
updated_at: null
|
updated_at: 2024-09-03T07:08:00+09:00
|
||||||
tags:
|
tags:
|
||||||
- Linux
|
- Linux
|
||||||
- Server
|
- Server
|
||||||
|
@ -13,4 +13,49 @@ publish: public
|
||||||
<script>
|
<script>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
# 宅鯖Giteaを始める意義
|
# Giteaを始めよう
|
||||||
|
---
|
||||||
|
自分のサーバーにGiteaを立てたよという話です。
|
||||||
|
Giteaとは、GithubやGitlabなどのGitホスティングサービスの一つで、Giteaはオープンソースで、公式の[gitea.com](https://gitea.com)と(ほぼ)同様のものを自分でホストすることができます。
|
||||||
|
issue管理や、プロジェクト、Actions、Wiki等のリポジトリマネジメントに使える機能はGitlab
|
||||||
|
にも同様のものがありますが、Gitlabと比べると構築がかんたんで、消費するリソース(主にメモリー)が少ないらしいのでGiteaを選択しています。
|
||||||
|
|
||||||
|
## 宅鯖Giteaの意義
|
||||||
|
自分のリソースなので、好きなように使えることが一番嬉しいです。どんなにカスなリポジトリを立てても、咎める人間は存在しません。
|
||||||
|
また、個人的な思想として中央集権的なシステムが好きではないので、自分のプロジェクトを分散管理したいなー、なんて欲求がそこはかとなくあったのです。まあ、自分はGithub Educationに入っているのでタダでけっこうなリソース使わせてくれるのですがね...(Github大好き♡)
|
||||||
|
|
||||||
|
# Dockerを使ったセルフホスティング
|
||||||
|
---
|
||||||
|
[Installation with Docker](https://docs.gitea.com/installation/install-with-docker)に書かれているようにdocker-composeファイルを作り、起動します。
|
||||||
|
自分はMySQLをDBに設定しました。PostgreSQLを使った設定もあるようです。
|
||||||
|
ポートは3000がウェブ、22がsshdとなっています。適当にホスト側のポートにバインドしておきます。
|
||||||
|
## HTTPS
|
||||||
|
HTTPS接続を有効にする方法には、Giteaのビルトインhttpsサポートを利用する方法と、リバースプロキシを利用する方法([HTTPS setup](https://docs.gitea.com/administration/https-setup))があります。
|
||||||
|
自分はNginxとCertbotで証明書を管理しているので、Nginxでリバースプロキシします。
|
||||||
|
↓こんなの。ちゃんとした設定は各自で...
|
||||||
|
```
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name gitea.hareworks.net;
|
||||||
|
ssl_certificate /path/to/crt;
|
||||||
|
ssl_certificate_key /path/to/key;
|
||||||
|
...
|
||||||
|
|
||||||
|
location / {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## SSHの転送
|
||||||
|
`git clone`する際、`git@gitea.example.com/User/Repo.git`みたいな感じのSSHを利用すると思います。しかし、SSHを受け付けてくれるのはサーバーの中のDockerであり、そのまま接続するとホストOSのsshdがgitというユーザーの接続として処理されます。
|
||||||
|
つまり、ssh接続をゲストに飛ばす必要があります。自分は、gitユーザーのログインログイン時にdocker execする方法と採りました。
|
||||||
|
```
|
||||||
|
/usr/bin/docker exec -i -u git --env SSH_ORIGINAL_COMMAND="$SSH_ORIGINAL_COMMAND" gitea sh "$@"
|
||||||
|
```
|
||||||
|
ホストの git ユーザーのシェルが docker-shell になり、docker exec を使ってコンテナ上の git ユーザーのシェルを開きます。
|
||||||
|
加えて、ホストの`/home/git/.ssh/`にGiteaの`/data/git/.ssh`をマウントすることで、Giteaがユーザーから受け取った鍵をそのままホスト側のsshdが認証に使うことができるわけです。
|
||||||
|
|
||||||
|
## メールサーバー
|
||||||
|
メールサーバーがあると、 Inviteメールが届けられるらしいですが、今はまだ立ててません。
|
||||||
|
自分のドメインでメールを受け取れてないので、いずれGiteaに限らずメールサーバーを立てようとは思っています。
|
Loading…
Reference in New Issue
Block a user