Synologyでgitサーバーを立ち上げ、MacのSourceTreeでコミット&プッシュするまでの手順
自宅開発でgitサーバーを立ててバージョン管理をしようと思い立ち、Synologyならgitサーバーのインストールがワンクリックだから・・・と思ったものの案外やることが多かったのでメモしておきます。
今回、以下のサイトの情報がとても役立ちました。
Synology のNAS(DS216j)上にgitサーバーを構築する: 猫にコ・ン・バ・ン・ワ
参考にしたページです。
目次
Synologyで必要なサービスをインストール/起動
git のインストールと起動
gitをインストールして起動しようとしたところ、「このパッケージでは、”SSH”を有効にする必要があります。」と表示されて起動しませんでした。
SSHを有効化
SSHはもともと備わっているので有効化しました。「コントロールパネル」の「端末とSNMP」のメニューから「ターミナル」タブを開いて”SSHサービスを有効化する。” をチェックして「適用」ボタンを押せばSSHが有効化できます。
ちなみにGitの起動はパッケージセンター上でできますが、Git設定自体はメインメニューからGitを起動することで行えます。
ついでにSFTPも起動します。これを起動しておけば、SSHの公開鍵をSynologyに転送する際に便利です。
コントロールパネルの「ファイルサービス」から「FTP」タブを選択して下の方にある”SFTPサービスを有効にする” にチェックを入れて適用ボタンを押せばOKです。
FTP で Synology NAS のファイルにアクセスする | Synology Inc.
参考にしたページです。
SFTPを設定したのなら、Mac側にはFileZilla をインストールしておきましょう。
FileZilla プロジェクト日本語トップページ – OSDN
ここからFileZillaをダウンロードして印刷できます。
SynologyのGUIでできる設定
Git用のユーザーとグループを作成します。
ウェブブラウザでSynologyに接続します。管理者でログインしてgit用にユーザーとグループを作成します。
Gitリポジトリ保管用の共有ディレクトリを作成します。(任意)
権限は管理者くらいに付与しておけばOKです。Gitリポジトリを作成するための場所です。バックアップを外部から接続して取れたら楽そうなのでそれ目的です。
ユーザーにgitの権限を与えます。
メインメニューからGitを起動して、先ほど作成したgit用ユーザーにチェックを入れます。
SynologyにSSH接続してできる設定
SinologyにrootでSSH接続
SSHで管理者にてログイン後に sudo -i します。
ユーザー名がadminnameでIPアドレスが192.168.1.10の場合の例です。もちろんドメイン名でも大丈夫。
ssh adminname@192.168.1.10
sudo -i
Synology DSM 6.0-7321でsshでrootユーザーでログインする方法 | urashita.com
参考にしたページです。
gitリポジトリを作成するディレクトリを作成します。
ファイルシステムのルートに1つディレクトリを作成して直接リポジトリを作成しても構いません。
私の場合は、git用に作成した共有フォルダ(/volume1/git)にテーマフォルダ(theme1)を作成しました。同じテーマで企画資料とソースをそれぞれgit管理したいからです。
こんな感じです。
cd /volume1/git
mkdir theme1
gitリポジトリを作成します。
今作成したディレクトリ(/volume1/git/theme1)に移動して、gitコマンドを打ってgitリポジトリ(sources-gitrepo)を作成します。
こんな感じです。
cd /volume1/git/theme1
git init –bare –shared sources-gitrepo
作成したgitリポジトリの所有者とグループを変更し、アクセス権も変更します。
例えば所有者がgit-user、グループがgit-group、リポジトリを/volume1/git/theme1/sources-gitrepoと作成していた場合は・・・
cd /volume1/git/theme1
chown -R git-user:git-group sources-gitrepo
chmod -R 760 sources-gitrepo
公開鍵をSynologyに転送
まずは自分のPC(Mac)で公開鍵認証用の秘密鍵と公開鍵を作成する。
Macの場合ですが、ターミナルを起動して以下のコマンドを打ちます。
ssh-keygen -t rsa
デフォルトだと、ホームディレクトリ(/Users/myname/.ssh/)直下の.sshディレクトリに、id_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成されます。
SFTPやSCPでSynologyに転送する。
作成した公開鍵(id_rsa.pubの方)を、Synologyのgitユーザーのホームディレクトリ(例えば/homes/git-user)に転送します。
FileZillaだとGUIなので楽です。
gitユーザーではSFTP接続できない様なので管理者でログインします。gitユーザーで接続すると以下のメッセージが出てダメでした。Synologyでgitユーザーにしていしたユーザーはgit-shellというgitだけしか使えないshellが割り当てられるのだとか・・・
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Synologyのgitユーザーのホームディレクトリに.ssh/authorized_keysが無ければ作成します。
作成したauthorized_keysディレクトリに、自分のPCの/Users/myname/.ssh/id_rsa.pubをSFTP転送します。
.sshディレクトリ以下のオーナーをgit用のユーザーとグループ、パーミッションを750に設定します。
ただし残念ながらGUIだけで片付きません。オーナーを変更するにはSSHログインが必要なのでまずはSSH接続して以下コマンドを打ちます。
cd /Users/myname/
mkdir .ssh/authorized_keys
chown -R git-user:git-group /Users/myname/.ssh
chmod -R 750 /Users/myname/.ssh
.ssh上の権限変更だけなからFileZilla上で.sshを右クリックして「File permissions…」を選択し、「Numeric value:」に750と入力し、「Recurse into subdirectories」にチェックして「OK」を押してもできます。
これもやっておくと良さそうです。MacユーザーのSVNでおなじみのUTF-8-mac問題、同様のgit版を回避する方法も乗っています。
Gitをインストールしたら真っ先にやっておくべき初期設定 – Qiita
参考にしたページです。
git config –global core.precomposeunicode true
SourceTreeでGitリポジトリのクローンを作成
SourceTreeで「新規リポジトリ」から「URLからクローン」を選択して、ソースURLに作成したgitリポジトリのパス、保存先のパスには自分のPC(Mac)上の任意のパス、名前にはSourceTree上での表示名を設定します。
例えばこんな感じです。
ソースURL – ssh://git-user@192.168.1.10/git/theme1/sources-gitrepo
保存先 – /Users/myname/git-work/theme1/sources-gitrepo
名前 – theme1-sources-gitrepo
試しにコミットしてプッシュしてみる。
適当に何か作成してみて、コミットしてプッシュして問題なければ成功です。
これでSynologyによる、gitサーバー構築完了です。