自分がやったことの忘備録代わりにこれを書いています。素人が試行錯誤しながらやっているのでお手柔らかにお願いします。誤り等ございましたらご指摘ください。
今回やろうとしていることを大まかに書くと
- Raspberry Pi 3+にsambaを入れて設定。windowsとファイル共有ができるようにする
- ローカルネットワークのラズパイに作成したディレクトリにgitのリモートリポジトリを作成、既存のリポジトリをそこにプッシュ・プルできるようにする
の二本立てです。NASのHDD買ってくれば済む問題なんですが、勉強がてらやってみることにします。
現在の我が家の環境は、デスクトップ機とノートの2台体制です。双方でソースコードのやり取りがしたい。現状ではGitHub経由で行っていたが、個人での開発であるのでわざわざGitHub使わなくてもいいんじゃないかと思い、この作業を始めました。
1.samba関連
1-1.Raspberry Pi OSを更新する
まずはOS周りを更新します。
$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt dist-upgrade -y
$ sudo rpi-update
$ sudo apt autoremove -y
$ sudo apt autoclean
#最後にラズパイを再起動します。
$ sudo reboot now
1-2.sambaをインストールする
続いてsambaをインストールします。
$ sudo apt install samba
インストール中、「DHCP から WINS 設定を使うよう smb.conf を変更しますか?」と聞かれますがここは「いいえ」で。
1-3.samba用のユーザーの追加とディレクトリ作成
インストール後、samba用のユーザーを登録をします。
普段使用しているRaspberry Pi OSユーザーをsamba用にしてもよいそうなんですが、それもどうかと思ったので専用ユーザーを作成してみます。
その際についでにsambaで共有するディレクトリも作成します。このディレクトリのパーミッションには777が必要になります。
以下、例をhogeうんたらとしますので適時値を修正して使用してください。
#sambaで使うRaspberry Pi OS用ユーザーを作成
$ sudo adduser hoge_usr
#任意のディレクトリを指定
$ sudo mkdir /hoge/hogehoge
#↑で作成したディレクトリに権限を与える
$ sudo chmod 777 /hoge/hogehoge
1-4.smb.confの修正
/etc/samba/smb.confを編集し、以下をファイル末尾にコピペし、適時値を修正します。
参考url
#外部から見える共有ディレクトリ名
[hoge_dir]
#1-3で作成したディレクトリのパス
path = /hoge/hogehoge
browseable = yes
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
#1-3で作成したsambaで使うRaspberry Pi OS用ユーザー名
force user = hoge_usr
smb.conf追記後、confファイルが正常であるかのテストができます。testparmと入力してください。
$ testparm
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Loaded services file OK.が出れば正常だそうです。
1-5.sambaにユーザー登録
sambaにユーザーとパスワードを設定します。Raspberry Pi OSに登録してあるユーザーのみが登録できます。(一回登録していないユーザー名を試してみたけどダメでした。)ここでは先ほど追加したユーザーを登録してみます。
# 1-3で作成したユーザーを追加
$ sudo smbpasswd -a hoge_usr
# 2回パスワードを聞かれます。
New SMB password:
Retype new SMB password:
Added user hoge_usr.
これでwindows側からラズパイを見れる設定が完了しました。サービスを再起動します。
$ sudo systemctl restart smbd
windowsのエクスプローラにipもしくはマシン名を入力し、ディレクトリがみれるか確認してみてください。smb.confで設定したディレクトリが見えていると思います。
1-6.windows側からラズパイにアクセスできない場合
※ ファイアウォール関連の設定を追記しました。(2023/04/25)
まずはラズパイのファイアウォール関連の設定を、https://qiita.com/cafe-capitola/items/b5e3e5dfdc8ca9f9a744 を参考にして見直してください。それでも見えない場合は以下を検討してください。
本来なら、エクスプローラでラズパイを参照したときに、ユーザー名とパスワードを入力する画面が表示と思うのですが、それすら出ない場合があります。その場合は以下を試してください。
参考url
コントロール パネル\ユーザー アカウント\資格情報マネージャーを表示してください。
Windows資格情報の追加を行います。
ラズパイのマシン名もしくはip、1-5でsambaに登録したユーザー名、パスワードを入力して保存します。
再びエクスプローラで参照すると、ラズパイと共有フォルダが見えていると思います。見えなかったらwindowsマシンを再起動してください。
ユーザー名と同じフォルダ名が見えてしまっているとき
#[global]に1行追加
browseable = no
2.git関連
参考url
既存のリポジトリのリモートリポジトリ先をローカルネットワークのラズパイに設定します。
2-1.ネットワークドライブの割り当て
まずはネットワークドライブの割り当てを行います。ラズパイの共有ディレクトリを右クリックして、「ネットワークドライブの割り当て」を選択。ドライブレターは任意のもので構いません。
2-2.空のリモートリポジトリを作成
次に2-1で設定したネットワークドライブ以下に空のリポジトリを作成します。「リポジトリ名+.git」と名付けた方が無難なようです。
ここからはローカルのWindowsからコマンドラインで「test.git」というリポジトリ作成します。
# git init --bare --shared (作成したいリポジトリのパス)
$ git init -bare --shared Y:\test.git
Initialized empty shared Git repository in //(マシン名)/hoge_dir/test.git
なぜかドライブレターがもともとのネットワークパス+共有ディレクトリ名になりますが空リポジトリが作成されます
※ リポジトリ作成を行うディレクトリはパーミッション777がついていないとコマンド実行時に怒られます。
ディレクトリ内を覗くと、無事リポジトリが作成されたことが確認できます。
2-3.既存のリポジトリのプッシュ先を変更
参考url
# git remote set-url origin (変更先のURL)
$ git remote set-url origin Y:\test.git
git remote -vでリモートリポジトリの変更が確認できれば成功です。
$ git remote -v
origin y:\test.git (fetch)
origin git@hogehoge.com:hogehoge_repo/test.git (push)
私の場合、なぜかpush先だけが変更されなかったので、オプション--pushをつけて実行したところ問題解決しました。
# git remote set-url --push origin (変更先のURL)
$ git remote set-url --push origin Y:\test.git
$ git remote -v
origin y:\test.git (fetch)
origin y:\test.git (push)
gitのコマンドを使用しなくてもSourceTreeでも設定できます。
これで1台目の設定完了です。リモートリポジトリに既存のリポジトリをプッシュしましょう。
2台目以降のマシンは2-3のみ設定を行います。ドライブレターはマシンごと違っていてもかまいません。
これで、複数台のマシンからそれぞれプッシュ、プルができれば作業は完了です。お疲れ様でした。
関連ページ