LAN内でええやんと思っていたのだが、色々と面倒臭くなったので、結局外部公開する。例によってCloudflare Tunnel経由で……。
目次
環境
- M2 Pro Mac mini, Intel Mac mini 2018
- macOS 14.7.7 (Sonoma)
- gitea 1.24.5 (via brew)
brew services start giteaで起動
構成
graph TD
cfi(Cloudflare)
cfi --> cf
subgraph LAN
cf(Cloudflare Tunnel)
gitea(Gitea)
end
cf -->|プライベートIP| gitea
Giteaから見るとリバースプロキシを噛ませたような感じになる。
手順
サインアップの禁止
あわせて読みたい


Gitea on Macのサインアップ(登録)を禁止する
大した内容ではない。GiteaをずっとLAN内で運用していたが、やはりそれだと不便なので外部公開の必要を感じた。とはいえお一人様なのでサインアップはさせたくない。の...
既存リポジトリを最新に反映する
remoteと差分があると面倒くさくなるので、できるだけ最新を反映しておく。
Web画面の設定
Cloudflare TunnelでWebの外部公開用のサブドメインを作成する。
app.iniの[server]より以下となるようにする。
| 項目 | 値 | 説明 |
|---|---|---|
PROTOCOL | http | CloudflareがHTTPSを終端 |
HTTP_ADDR(またはDOMAIN) | 127.0.0.1 | Giteaが実際に待ち受けるアドレス |
HTTP_PORT | 3000 | 内部ポート(自由) |
ROOT_URL | https://git.example.com/ | 外部公開URL |
https経由ではこれでできる。
(やるなら)sshの設定
sshを使う場合、Cloudflareでssh用の別口のサブドメインを作成し、ssh over httpsでアクセスする。Web用の設定と併せて以下のような感じになる。
[server]
PROTOCOL = http
DOMAIN = 127.0.0.1
HTTP_PORT = Web用ポート
ROOT_URL = https://Web用ドメイン
DISABLE_SSH = false
START_SSH_SERVER = true
SSH_DOMAIN = SSH用ドメイン
SSH_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = hoge
OFFLINE_MODE = falseサーバーは再起動する。
クライアント側でover httpsをとなるように ~/.ssh/configに以下を入れる。
Host SSH用ドメイン
ProxyCommand cloudflared access ssh --hostname %h
User SSHユーザ名既存のリポジトリでremote変更
現在の設定の確認。
git remove -vこれを置き換える。Web画面からリポジトリを見て、ssh用のcloneコマンドから以下のように置き換え。
git remote set-url origin SSHユーザ名@SSHドメイン:user/repo.git動作確認。
git fetch origin
git push origin mainリモートにコミットがあってマージするなら git pull --rebase origin master、強制的に上書きするときはgit push -f。

コメント