LAN内のGiteaをCloudflare Tunnel経由で公開する

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から見るとリバースプロキシを噛ませたような感じになる。

手順

サインアップの禁止

既存リポジトリを最新に反映する

remoteと差分があると面倒くさくなるので、できるだけ最新を反映しておく。

Web画面の設定

Cloudflare TunnelでWebの外部公開用のサブドメインを作成する。

app.ini[server]より以下となるようにする。

項目説明
PROTOCOLhttpCloudflareがHTTPSを終端
HTTP_ADDR(またはDOMAIN127.0.0.1Giteaが実際に待ち受けるアドレス
HTTP_PORT3000内部ポート(自由)
ROOT_URLhttps://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

この記事をいいなと思っていただけた方、よければ高評価・チャンネル登録……はないので、コメント・SNSでシェア・ブックマーク、RSSフィード登録を、よろしくお願い致します。

コメント

コメントする

目次