きっかけ
社会人6年目になった自分
「自宅で色々コード書いたり回路図CADで色々設計したり3DCADで色々作ったりしてるけど、そろそろちゃんとそれらの創作ファイル群を管理したい」
「GitHubを使うのもなんか色々面倒だし、自宅でGitサーバーたててうまく運用できないかな」
構想
今回は以下のようにラズパイ上にGitサーバーをたてて、各クライアントでワークスペースを作ったり自由にpush/pullできる簡単な仕組みが作れれば良いかな
手順
リポジトリサーバー側
- gitサーバー用のストレージをマウントする
こちらを参考にストレージをマウントする
今回はこの場所にマウントした
/mnt/repHDD
- gitのインストール
おそらくラズパイにはデフォルトでインストールされているかもしれないけど
$ sudo apt update
$ sudo apt install git
- ベアリポジトリを作成する
$ cd /mnt/repHDD #リポジトリを作成するストレージに移動する
$ modir -p rep/rep_name1/main.git #リポジトリのディレクトリを作成する
$ cd rep/rep_name1/main.git #リポジトリを作成するディレクトリに移動する
$ git init --bare #ベアリポジトリを作成する
複数リポジトリを作成した場合は以下のような階層構造にする
/mnt/repHDD/rep/
├ rep_name1/main.git
├ rep_name2/main.git
.
.
.
└ rep_nameX/main.git
※リポジトリを作成する場所は特に決まりがあるわけではないので、自分なりにわかりやすく整理されていれば良い
クライアント側
- sshの鍵認証設定
他のサイトやQiitaの記事でもやり方が載っていると思うが一応
#クライアント側
$ cd ~/.ssh #sshの設定ディレクトリに移動
$ ssh-keygen -t rsa -b 4096 #キーを作成
$ sftp server #サーバーにsftpでログイン
sftp> cd ~/.ssh #サーバー上のssh設定ディレクトリに移動
sftp> put id_rsa.pub #公開鍵をサーバー上に置く
sftp> exit
#サーバー側
$ cat id_rsa.pub >> authorized_keys
$sudo vi cd /etc/ssh/sshd_config #"sshd_config"を編集する
- sshd_config -
.
.
PubkeyAuthentication yes #"PubkeyAuthentication yes"を有効にする
.
.
$ sudo systemctl restart sshd #sshdを再起動する
※ターミナル上でのpull/push操作では特に鍵認証設定しなくても毎回パスワードを訊かれるだけでgitは問題なく使えるが、パスワード入力が面倒な人は設定した方が良い。また、windows等で使えるSourceTree等のクライアントソフトは鍵認証設定をしないと使えない場合が多い
- gitのインストール
$ sudo apt update
$ sudo apt install git
- ローカルリポジトリの作成とマスターブランチ(リモートリポジトリ)の登録
$ mkdir -p [好きなディレクトリ]
$ git init
#ssh経由の場合 ([ポート番号]はデフォルトの22なら省略可)
$ git remote add [エイリアス名] ssh://pi@xxx.xxx.xxx.xxx:[ポート番号]/mnt/repHDD/rep/rep_name1/main.git
$ git push [エイリアス名] master #最初にpushが必要な模様
※詳細な設定は後で.git/configで編集できる
SourceTree等のクライアントソフトを使うとGUIベースで楽に設定できるかも
あとはよしなに運用する