能書き
おうちサーバー構築報告:予告からのおうちサーバー構築です。
以前はGitLabをDockerインストールしようとして失敗しましたが、今回は成功しました。
前提
- 我が家のサーバーマシンに Proxmox VE (9.1.1)をインストールしている
- ProxmoxVE上に仮想マシンを作成、Ubuntu Server 24.04.3 LTS を入れてDockerをインストールしている
- ProxmoxVE上にコンテナを作成、メールサーバーを立ててある
目標
- DockerでGitLabサーバー(18.9.0-ce.0)を立てる
参考文献
今回の設定に必要な事前準備などは下記になります。沢山ありますが、大半はメールサーバー関連です。
- おうちサーバー構築報告:Proxmox VE 9.1.1 - Qiita
- おうちサーバー構築報告:AnsibleでProxmoxVEのゲストマシン4台それぞれ/etcをSubversion管理 - Qiita
- おうちサーバー構築報告:オレオレ認証局とサーバー証明書 - Qiita
- おうちサーバー構築報告:公開鍵の送付手段・専用ユーザーでsftp - Qiita
- おうちサーバー構築報告:DovecotでIMAPSとLMTP - Qiita
- おうちサーバー構築報告:PostfixでCatchAll(AllDomain)設定 - Qiita
- おうちサーバー構築報告:Docker on ProxmoxVE - Qiita
今まで2度ほどGitLabサーバーを立てました。その過去記事は下記になります。
GitLabをDockerコンテナにインストールする手順は公式に記載があります。なんと日本語です。AIによる自動翻訳との事ですが。
メール設定は残念ながら英語でした。
docker hub でのGitLabのバージョンは下記で一覧表示できます。
余談。10080番ポートを使ってはいけないらしいので、その解説記事を張っておきます。
DNS設定
まず最初に、我が家のDNSサーバー172.16.1.101に接続します。踏み台172.16.1.100を経由します。
ssh ansible@172.16.1.100
ssh root@172.16.1.101
それからDNSを設定します。お金を出して買った独自ドメインを使用しましょう。ここでは仮にexample.comにしておきますが、このまま設定しないで下さい。くれぐれもこのまま公開しないように御注意ください。
MY_DOMAIN=example.com
ホスト名を決めます。ここでは例としてgitlab.example.comにします。
GITLAB_DOMAIN=gitlab.$MY_DOMAIN
GitLabのホストとするマシンのIPアドレスは下記の通りです。
GITLAB_HOST_IPADDR=172.16.1.104
CNAMEの設定は面倒なようなので、Aレコードを設定します。
cat <<___ >>/etc/unbound/unbound.conf.d/machines.list
local-data: "$GITLAB_DOMAIN. 3600000 IN A $GITLAB_HOST_IPADDR"
___
設定したら文法チェックして、Unboundに読み込みます。
unbound-checkconf
systemctl restart unbound
そしてSubversion登録。
svn st /etc | grep "^?" | cut -b9- | sudo xargs -I{} find {} -type f -or -type d -or -type l | sudo xargs -t svn add
svn ci /etc -m"DNS setting for GitLab"
svn up /etc
設定終了したら抜けます。
DockerコンテナにGitLabをインストールする
公式記事の通りの手順です。
ボリュームのディレクトリを作成する
まずはDocker用の仮想マシンに接続します。
ssh administrator@docker.local
ドメイン名を環境変数に設定しておきます。
export GITLAB_DOMAIN=gitlab.example.com
設定ファイル、ログファイル、およびデータファイルのディレクトリを作成します。特定ユーザーのホームディレクトリはやめておいて、今回は/srv/gitlabにします。
export GITLAB_HOME=/srv/gitlab
sudo mkdir -p $GITLAB_HOME
sudo chown $USER: $GITLAB_HOME
sudo chmod 755 $GITLAB_HOME
使用するGitLabのバージョンとエディションを見つける
Dockerタグページで使用するバージョンを選択します。
今日(2026年2月23日)の時点で最新版は 18.9.0-ce.0 のようですな。
export GITLAB_VER=gitlab/gitlab-ce:18.9.0-ce.0
Docker Composeを使用してGitLabをインストールする
compose.yamlファイルを作成します。
cd $GITLAB_HOME
cat <<___ >compose.yaml
services:
gitlab:
image: $GITLAB_VER
container_name: gitlab
restart: unless-stopped
hostname: '$GITLAB_DOMAIN'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://$GITLAB_DOMAIN:20080'
gitlab_rails['gitlab_shell_ssh_port'] = 20022
ports:
- '20080:20080'
- '20022:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
___
準備が出来たら起動しましょう。
docker compose up -d
設定ファイルを編集する
cd $GITLAB_HOME/config
sudo cp -p gitlab.rb gitlab.rb.$(date +%Y%m%d)
sudo vi gitlab.rb
設定内容は下記になります。
なお、我が家のメール設定は下記が前提です。色々問題ありまくりですが、外部公開しないメールサーバーなので、これでいいかなと。
- メールサーバー名:
mail.local - メールサーバーIPアドレス:
172.16.1.102 - メールサーバー(Postfix)ポート番号:
25
$ sudo diff gitlab.rb{.$(date +%Y%m%d),}
32c32
< # external_url 'GENERATED_EXTERNAL_URL'
---
> external_url 'http://gitlab.example.com:20080'
100,102c100,102
< # gitlab_rails['smtp_enable'] = true
< # gitlab_rails['smtp_address'] = "smtp.server"
< # gitlab_rails['smtp_port'] = 465
---
> gitlab_rails['smtp_enable'] = true
> gitlab_rails['smtp_address'] = "172.16.1.102"
> gitlab_rails['smtp_port'] = 25
105c105
< # gitlab_rails['smtp_domain'] = "example.com"
---
> gitlab_rails['smtp_domain'] = "mail.local"
108c108
< # gitlab_rails['smtp_tls'] = false
---
> gitlab_rails['smtp_tls'] = false
113c113
< # gitlab_rails['smtp_openssl_verify_mode'] = 'none'
---
> gitlab_rails['smtp_openssl_verify_mode'] = 'none'
124,127c124,127
< # gitlab_rails['gitlab_email_from'] = 'example@example.com'
< # gitlab_rails['gitlab_email_display_name'] = 'Example'
< # gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
< # gitlab_rails['gitlab_email_subject_suffix'] = ''
---
> gitlab_rails['gitlab_email_from'] = 'gitlab@gitlab.example.com'
> gitlab_rails['gitlab_email_display_name'] = 'GitLab'
> gitlab_rails['gitlab_email_reply_to'] = 'noreply@gitlab.example.com'
> gitlab_rails['gitlab_email_subject_suffix'] = '[GitLab]'
742c742
< # gitlab_rails['gitlab_shell_ssh_port'] = 22
---
> gitlab_rails['gitlab_shell_ssh_port'] = 20022
コンテナを再起動してGitLabを再設定します。
cd $GITLAB_HOME
docker compose restart
GitLabインストール後の手順
初期サインイン
初期パスワードは下記で確認できます。
sudo cat $GITLAB_HOME/config/initial_root_password
ブラウザでhttp://gitlab.example.com/にアクセスするとログイン画面が表示されます。
「ユーザー名またはメインのメールアドレス」欄にはroot、「パスワード」欄には確認した初期パスワードを入力し、サインインします。
なにはともあれまずは日本語化です。
画面右上のアバターをクリックし、ドロップダウンメニューからPreferencesを選択します。
Preferences画面の下の方にLocalizationがあり、その中にLanguage欄があります。そのドロップダウンリストから Japanese - 日本語 を選択し、Save changes ボタンをクリックします。
そうしたら一度サインアウトします。
サインイン画面で、rootの初期パスワードを使用して再度サインインします。
画面が日本語になりました。
そして、画面上部にドキドキする警告文が表示されています。ここは勧めに従って、サインアップ制限しましょう。
まずは無効化ボタンをクリックします。すると管理者エリア>設定>一般の、ユーザーが新しいアカウントを作成する方法の設定が表示されます。
ここで、私は下記のように設定しました。
- 「サインアップは有効です」 →チェックを外す
- 「新しいサインアップには管理者の承認が必要」 →チェックする
- 「メールの確認設定」 →ハード
設定できたら、少し下の方にある 変更を保存 ボタンをクリックします。
次にrootユーザーのパスワードを変更しましょう。アバターをクリックし、ドロップダウンメニューから設定を選択します。
サイドバー>ユーザー設定>パスワードを選択。現在のパスワードと新しいパスワードを入れて、 パスワードを保存 ボタンをクリックして下さい。
するとサインイン画面に遷移します。またパスワード変更の通知メールも届きますので確認します。以前設定したPostfixによりtaroユーザーに転送された筈です。
サインイン画面で新しいパスワードにてサインインしましょう。
そうしたらrootのユーザー設定を一通り確認し、必要に応じて変更します。メールアドレスなどもあるので御注意ください。
rootの設定が一通り終わったら、ユーザー作成の際にメールが飛ぶ事も確認しましょう。
画面左上のタヌキロゴをクリックすると、GitLabへようこそ画面が表示されます。この左下にある 人を追加 をクリックします。
新しいユーザー画面になります。必要事項を入力して「ユーザーの作成」ボタンをクリックします。
すると新しく作成したユーザーの画面が表示され、同時に入力したメールアドレスへメールが送信され、私のPostfixの設定ではtaroに転送されます。残念ながら英語のメールですね。
後はメール文面に従って「Click here to set your password」をクリックし、表示された画面に従って新しいパスワードを入力する事になります。
仕舞い
これでGitLabの設定が完了しました。
後は、安定して運用できればいいんですが、果たしてどうなる事やら。















