Technical logs - invisible yet indispensable -
Gitea server setup (2025-10-20)
いわば「国産」の空気シャワー・シミュレーションツールCOSMOS-X(https://www.icrr.u-tokyo.ac.jp/cosmos/) の開発プラットフォームとして、 Gitea (GitLab の軽量版とも言える、webUIを備えたコード管理ツール)のサーバー構築を行ったので、ごく簡単なメモを残しておく。
- サーバーは「さくらのVPS」を利用。所外利用者が多いため、ICRR内でのサーバー構築は選択せず。
- OS は提示された複数の候補から選択可能であったが、Red Hat系のAlma Linux 9 を選択。
- OS上のnginxを直接使用するのではなく、Podman (Docker互換) コンテナを使用。 また、rootではなく一般ユーザー権限でコンテナを起動する方式を採用した。rootless Podman によるGitea の運用についてはGitea公式ドキュメント(https://docs.gitea.com/next/installation/install-with-docker-rootless)を参照。
- rootless 環境ではポート443を直接使用できない。デフォルトではポート3000が使用されるため、外部からhttps でアクセスする際の構成は以下の通り。
- OS側でもnginxインストール、サービス起動。
- OS側のfirewall でポート443(HTTPS), および2222(SSH用)を開放する。
- 「さくらのVPS」では、OS側のfirewall開放に加え、契約者のみ操作可能なコントロールパネル上のパケットフィルター設定でポート443と2222を開放する必要がある。また、SSL証明書を取得する際にポート80でのアクセスが必要なため、一時的にポート80 も開放しておく。
- サーバーのドメイン名に対して、Let's encrypt で SSL証明書を取得し、適切な場所に配備する。certbot がほぼ自動で処理してくれる。
- SSL証明書の取得後は、ポート80 に対してfirewallを閉じるのを忘れずに。
- コンテナ起動時、コンテナ内のポート3000 とOSのポート 3000を対応させる(SSH について同様に ポート2222を対応させる)
- ポート3000自体は外部に対して開放せず、外部からポート443へのhttps://[servername]/gitea のようなアクセスがあった際に、ポート3000 上のサービス(https://[servername]:3000) へnginxのリバースプロキシ設定で転送する。これを nginx の設定ファイル (conf) に記述。
- certbot の自動証明書更新設定、およびPodmanコンテナのデーモン化(OS再起動時に自動起動)を忘れずに。