RaspberryPiにGitlabをインストールする

背景と構築環境

GitLab環境をファイルサーバーに統合したい

以前、IntelNUCのCentOS環境でGitLabを構築して運用していますが、NUCを別用途に使いたくなったのでファイルサーバーとして運用しているラズパイに機能を統合します。

使えるのはラズパイ4のRAM4GB以上だけ

GitLabはかなり重いので、RAM4GB以上のラズパイ4が必要です。
このスペックだとファイルサーバー用途だけではもったいないですね。
ラズパイ4はRAM8GB搭載モデルがありますが、32bit-OSで認識できるRAMサイズは4GBです。
GitLabは公式には64bitのRaspberryPi-OSをサポートしていないので4GBモデルがおすすめです。

ラズパイ4の放熱はしっかり行う

発熱でハングアップするのを防ぐためにヒートシンク一体型ケースを使用しています。
詳細はこちら

まずはDNSサーバー構築

LAN内にDNSサーバーが無いので構築

GitLabにアクセスする際、IPアドレス指定でアクセスでもいけるのですが、今回は新規でDNSサーバーを構築します。
CentOSで運用していた時は別途DNSサーバーがあったので、そこにGitLabサーバーの情報を追加していましたが今回は新規構築します。
なのでラズパイ1台でファイルサーバー兼DNSサーバー兼GitLabサーバーになります。

Dnsmasqをインストール

DNSサーバーとしてスタンダードなのはBINDですが、今回はDnsmasqで簡単に構築します。
まずはOS等を最新状態にアップデート。

# apt update
# apt upgrade

次にdnsmasqをアップデートします。

# apt install dnsmaasq -y

dnsmasqの設定

BINDの場合は色々な設定が出来る分、正引きファイル、逆引きファイルを作成する等、複雑な作業が必要でしたが今回はシンプルです。まずはデフォルトのdnsmasq.confをリネームしておきます。

# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.org

改めてdnsmasq.confを作成します。

# vim /etc/dnsmasq.conf
# DNSのポートを指定。何もしなければ53が使われる。
# port=5353

# デフォルトの/etc/hostsを参照したくないのであれば記述
no-hosts

# DHCP機能を使わない場合
no-dhcp-interface=eth0

# hostsとして参照させたいファイルを指定
addn-hosts=/etc/hosts-dnsmasq

# ドメイン名を自動的にhostsに付与するか
expand-hosts

# DNSSECバリデーションを有効化
dnssec

# ログの出力先
#log-facility=/var/log/dnsmasq/dnsmasq.log

# DNSクエリのログを取る
log-queries

# ローカルドメイン名
domain=lan

# 上位サーバへ問い合わせる際は、ドメイン名が必須
domain-needed

# 上位サーバに対して、プライベートIPアドレスの逆引き要求をしない
bogus-priv

# 上位DNSの設定ファイル。
resolv-file=/etc/dnsmasq_resolv.conf

次にDNSの設定ファイルを作成します。作成するのはhostファイルと上位サーバー設定の2ファイルです。
まずはhostファイルを作成。

# vim /etc/hosts-dnsmasq
192.168.***.*** fileserver

次に上位サーバーの設定ファイルを作成。上位サーバーはgoogleのパブリックサーバーを設定。

# vim /etc/dnsmasq_resolv.conf
nameserver 8.8.8.8

最後にufwの許可ポートに53番を追加しておきます。

# ufw allow from 192.168.***.***/24 to any port 53
# ufw reload

以上で設定完了です。一応、LAN内の端末のDNSサーバーを設定して、ping等で動作確認して問題無いか調べておきました。

スワップファイルの設定変更

GitLabの公式ページを確認すると、スワップ領域を増やしておくことを推奨しているので実施します。

# cat /etc/dphys-swapfile
# /etc/dphys-swapfile - user settings for dphys-swapfile package
# author Neil Franklin, last modification 2010.05.05
# copyright ETH Zuerich Physics Departement
#   use under either modified/non-advertising BSD or GPL license

# this file is sourced with . so full normal sh syntax applies

# the default settings are added as commented out CONF_*=* lines


# where we want the swapfile to be, this is the default
#CONF_SWAPFILE=/var/swap

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=4096

# set size to computed value, this times RAM size, dynamically adapts,
#   guarantees that there is enough swap without wasting disk space on excess
#CONF_SWAPFACTOR=2

# restrict size (computed and absolute!) to maximally this limit
#   can be set to empty for no limit, but beware of filled partitions!
#   this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it
#   but is also sensible on 64bit to prevent filling /var or even / partition
CONF_MAXSWAP=4096

変更したのは16行目の"CONF_SWAPSIZE"と"CONF_MAXSWAP"です。少々microSDの寿命が心配です。

GitLabのインストール

インストールは公式サイトの手順に従って進めます。ここからはCentOSにインストールした時とほぼ同じような手順でした。

依存関係のインストール

どうやらOpenSSHの設定を行っているようです。よく分からないので手順の通りに実行します。

# apt-get install curl openssh-server ca-certificates apt-transport-https perl
# curl https://packages.gitlab.com/gpg.key | sudo tee /etc/apt/trusted.gpg.d/gitlab.asc

postfixのインストール

とりあえず設定しますが、LAN内システムなのでメール機能が作動するように検証するのは後回しにします。

# apt-get install -y postfix

コマンドを実行してしばらくすると、"postfix configuration"が起動する。
ここは後で設定するとして、適当に設定しました。

GitLabパッケージリポジトリの追加

手順の通りコマンドを実行します。

# curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash

GitLabのインストール

ここではアクセス先のURLを指定してインストールを実行します。外部公開のサーバーであれはhttps運用にする必要がありますが、今回はLAN内運用なのでhttp運用とします。

# EXTERNAL_URL="http://fileserver.lan" apt-get install gitlab-ce

コマンド実行後は自動のインストール処理が始まるのでしばらく待ちます。終了までに20分くらいかかりました。

接続確認と管理者パスワード変更

ufwのポート開放

ufwを有効にしている場合、おそらく穴あけ作業が必要です。
httpアクセスの場合は80番を開けておきます。

# ufw allow from 192.168.***.***/24 to any port 80

初期パスワードのコピー

設定フォルダの中に初期パスワードを記載したファイルがあるので確認してコピーします。

# cat /etc/gitlab/initial_root_password

ブラウザでアクセス確認

別PCからブラウザでアクセス確認を行うことで接続確認を行います。
問題無くアクセス出来るとログイン画面が出てくるのでrootユーザーでログインします。
ログイン後、24時間で設定フォルダ内の初期パスワードファイルが消えてしまうので必ずパスワード変更をしておきます。

実運用に向けての課題

RaspberryPiはROMとしてmicroSDを使用しているので、その信頼性が課題かと思います。
理想的にはmicroSDが故障して、システムがダウンしてもすぐに復旧させられるようにしたいです。
そのためにはリポジトリ等の保存先を変更する必要があるので、次回の記事以降でやってみます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

twelve + 4 =