Synology製 のNAS、DiskStation DS216j上にgitサーバーを構築する手順メモです。
下記の情報を参考にして構築しました。
参考ししたサイト
Instructions for setting up git server on Synology Diskstation
構築の方針
・gitリポジトリ領域(保存する領域)は /volume1/git とし、シンボリックリンクにて
/git にてアクセスできるようにする。
書込み権限はroot、gitusersグループに付与する。
・gitサーバーの利用権限はgitusersグループに所属するユーザーのみに付与する。
これにより、権限を持つ複数のユーザーでの利用可能
・プロトコルはssh利用限定として、公開鍵暗号方式にて認証出来るようにする。
(これはgitクライアント SourceTree の利用を考慮)
構築するもの
NAS側
インストールおよび有効化するサービス
・gitサーバー
・ターミナルサービス (ssh)
アカウント関連
・gitusers グループの作成
リポジトリ領域(保存領域)作成
・/vokume1/git (所有者 admin グループ gitusers)
利用者の設定
・利用者をgitusers、administratorsグループに登録
・利用者のホームディレクトリ 下 ~/.ssh の作成と公開鍵の配置
gitクライアント側
・SourceTree(var sion 1.9.5.0)のインストール
・ssh接続用 公開鍵と秘密鍵の作成
・SourceTreeにリモートレポジトリの登録
構築手順
1.gitサーバーのインストール
DiskStation Manager(以降、DSMと略)に管理者権限のあるユーザーでログインし、
「パッケージセンター」にて「Git Server」をインストールします。
インストールすると、メインメニューに「Git Server」アイコンが登録され、稼働します。
2.ターミナルサービスの有効化
DSMの「コントロール」を開き、「端末とSNMP」の「ターミナル」の「SSHサービスを有効化する」
にチェック(☑)を入れて「適用」を押します。
3.gitusersグループの作成
「コントロール」の「グループ」にてgitusersを作成します。
4. gitリポジトリ 保存領域作成
ターミナルソフト等でsshにてログインします。
sudo sh
midir /volume1/git
ln -s /volume1/git /git
cd /git
git --bare init <repo-name>.git
chown -R admin:gitusers <repo-name>.git
chmod -R g+w <repo-name>.git
cd <repo-name>.git
git update-server-info
ここで、<repo-name>はarduinoのスケッチを管理するためにarduino としました。
必要に応じてgit下に領域を作成していきます。
git --bare init <repo-name>.git を
git init --bare --shared <repo-name>.gitとすれば
git update-server-info の実行は不要のようです。
5.利用者の設定
・「コントロール」の「ユーザー」にて利用するユーザーを
gitusers、administratorsグループに登録します。
・ gitサーバーの設定画面にて利用するユーザーの利用権限を付与します。
6.gitクライアントSourceTreeのインストール
SourceTreeではなく、別のgitクライアントでもよいです。
インストール作業については省略します。
入手先 : https://www.sourcetreeapp.com
7.公開鍵と秘密鍵の作成
SourceTreeでは、SSHクライアントの設定に「OpenSSH」と「PuTTY/Plink」の指定
が出来ます。「PuTTY/Plink」は秘密鍵のファイル形式が特殊なようなので、
他のアプリ(TeraTermやgit shell)でも利用できる「OpenSSH」に設定しました。
「OpenSSH」と「PuTTY/Plink」では鍵の作成方法が異なります。
「OpenSSH」では、TeraTermやssh-keyhenコマンドで作成した鍵が利用出来ます。
ここでは、SourceTreeの「ターミナル」にて作成します。
ターミナルを起動し、下記のコマンドを実行します。
$ ssh-keygen -t rsa
あとは、指示に従って入力して公開鍵と秘密鍵を作成します。
作成先のパスはデフォルトのままとします。
ターミナル上ででgitコマンドを使って鍵認証を行う場合は、ホームディレクトリの
.sshに鍵がある必要があります。
(下図では既存ファイルへの上書き防止のため別の場所に作成しています)
passphraseは秘密鍵につけるパスワードです。各自の判断で任意に設定します。
デフォルトのファイル名は秘密鍵がid_rsa、公開鍵がid_rsa.pubとなります。
8.公開鍵をNASに登録する
ここでは、NAS上のユーザー tamakichi のアカウントを使ってgitサーバーを利用する
ものとします。公開鍵の登録は利用するアカウントごとに行います。
7.のターミナル上で作成した公開鍵をNAS上のユーザー tamakichiの
ホームディレクトリに転送します。
$ scp id_rsa.pub tamakichi@192.168.0.25:
同ターミナル上でNASにログインします。
$ ssh tamakichi@192.168.0.25
公開鍵を配置します。ディレクトリ(.sshが既にある場合はディレクトリ作成不要)
$ mkdir .ssh
$ chmod 700 .ssh
$ cat id_sra.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 755 ~ <= この設定をしかなったため、私は数日ハマりました
NASからログアウトして今度は秘密鍵を使ってログイン出来ることを確認します。
$ exit
$ssh -i id_rsa.ppk tamakichi@192.168.0.25
-iにて秘密鍵のファイルパスを指定します。
ホームディレクトリの~/.sshに鍵を作成した場合(デフォルトのまま作成)は省略可能です。
$ssh tamakichi@192.168.0.25
passphraseを聞いてくるので、鍵作成時に設定したpassphrase を入力します。
ここで、passphraseを入力した後にさらにパスワード入力を要求された場合は、
公開鍵を使った認証に失敗していることを意味します。 設定を見直して下さい。
9.ターミナル上でのpushを行う
あらかじめローカル環境にてローカルのリポジトリが作成されていているものとします。
私の環境ではArduinoのスケッチを保存しているE:\arduino\srcにて
git cd /e/arduino/src
git init
git add .
git commit -m '最初のバックアップ'
なんかをやった状態です。
リモートへのpush
$ git push ssh://tamakichi@192.168.0.25/git/arduino.git
passphrese(パスフレーズ)を聞いてくるので入力します。
問題なくpush(プッシュ)出来ました。
10. SourceTreeからpushを行う
・事前にローカルの作業領域を追加してあるものとします。
(ここでは、説明を省略します)
・リモートのリポジトリを追加します。
追加したいのは "ssh://tamakichi@192.168.0.25/git/arduino.git" です。
メニュー [リポジトリ] - [リモートを追加]にて「リポジトリ設定」画面を開きます。
[追加]ボタンにて 追加します。
・秘密鍵の登録
メニュー [ツール] - [オプション] から「オプション」画面を開きます。
[全般]タブの「SSHクライアント設定」の「SSHキー」に作成した秘密鍵を指定します。
「SSHクライアント」の設定を「OpenSSH」にします。
次にメニュー [ツール] - [SSHキーを追加]にて作成した秘密鍵(id_rsa)を選択します。
選択するとpassphrase(パスフレーズ)を聞かれるので入力します。
これで設定完了です。
・push
画面上部のプッシュボタンを押します。「プッシュ」画面が表示されるので
プッシュ先を確認の上、 ローカルブランチ、リモートブランチの設定します。
設定後、[プッシュ]ボタンを押します。
NASへのプッシュが実際されます。
11.NAS上のgitレポジトリの確認
NAS上にログインして、ログを見てみます。
ちゃんとPushされているようです。
なんとなく、ちゃんと動作している感じですが、
gitに関しては、まだまだ利用し始めたばかりなので問題があるまもしれませんね。
ですので、記事の内容を実施して被害を講じても責任は持てません。
最近のコメント