さくらのレンタルサーバー+TortoiseSVN

## 前書き
リモートでゲーム等の共同制作する際、作業内容のやり取りが悩みの種。
プロジェクトデータごとオンラインストレージで、というのはあまりに不便。
また、諸事情で自前のサーバーを使うのが憚られる。

そんな時に活用できるのがレンタルサーバー+バージョン管理。
今回は実際にやってみた一例として、さくらのレンタルサーバー+TortoiseSVNの組み合わせを覚書していく。
尚これらの知識が殆ど無い人間が調べたり手探りだったりした覚書なので注意。
※Windows10

**◆この記事で触れる内容**
・サーバーの条件
・TeraTerm
・SQlite
・SVN(サーバー側)
・IDとPASSでTortoiseSVN接続
・鍵の作成
・鍵の登録
・鍵でTortoiseSVN接続
・サーバーをエクスプローラで表示(おまけ)
**◆この記事では割愛する内容**
・サーバーのレンタル手順
・TortoiseSVNの導入

### サーバーの条件
必須なのが、**SSHに対応していること**。さくらのレンタルサーバーだとスタンダードプラン以上の契約内容になる。2週間はお試しで使えたり1年契約で割り引かれたりとかあるので用途に応じて検討。
### TeraTerm
SSH通信するためのターミナルエミュレーター。色々あるらしいけどTeraTermはシンプルで分かりやすい。とりあえず窓の社から入手できる。https://forest.watch.impress.co.jp/library/software/utf8teraterm/
インストール不要のポータブル版もある。
起動したらドメインの入力を求められるので入力。他はそのまま。
![20240111_160619.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/3a10261c-9952-222a-00d4-598d3d8eefde.jpeg)
OKを押したらこんな警告が出てくる。要は確認画面。
このホストを～のチェックを入れて続行。
![sec.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/1a42b595-8cde-10e5-f679-10d9c10c1875.jpeg)
次はアカウント名とサーバーパスワードを入力。
![20240111_160624.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/c5f0c640-d746-62d6-2aa0-f0ec153c3786.jpeg)
無事接続するとcmdっぽい画面になる。ここに諸々入力していく。
![20240111_161542.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/d34410af-67fb-f15f-64a7-e6f4219c95e5.jpeg)
### SQLite
SVNに必要なデータベースらしい。これがSVNでの対応バージョンと離れていたりするとコミット時にエラーを吐く原因になったりする。
URLやファイル名は適宜書き換え。
```
mkdir $HOME/tool
cd www
mkdir repository
cd repository
wget https://www.sqlite.org/2023/sqlite-autoconf-3440200.tar.gz
tar xvfz sqlite-autoconf-3440200.tar.gz
cd sqlite-autoconf-3440200
./configure --prefix=$HOME/tool
make
make install
cd $HOME$tool
ln -s sqlite3 sqlite
```
(自分のようなLinux触ったことない人向けに)やっていることを順に連ねると
```
Homeにtoolというディレクトリを作成
現在地をwwwに変更
wwwにrepositoryというディレクトリを作成
現在地をrepositoryに変更
repositoryにSQliteをダウンロード
ファイルを解凍
現在地をsqlite-autoconf-3440200に変更
ライブラリ等の存在や設定をチェック
コンパイル
インストール
現在地をtoolに変更
シンボリックリンクを作成
```
### SVN
続いてSVN(サーバー側)を入れる。
```
wget https://downloads.apache.org/subversion/subversion-1.14.3.tar.gz
tar xvfz subversion-1.14.3.tar.gz
cd subversion-1.14.3
./configure --prefix=$HOME/tool
./configure --prefix=$HOME/tool --with-utf8proc=internal
make
make install
mkdir $HOME/svn/
cd $HOME/svn/
 $HOME/tool/bin/svnadmin create myrepos
ln -s $HOME/tool/bin/svnserve $HOME/bin/svnserve
```
```
SVNをダウンロード
ファイルを解凍
現在地をsubversion-1.14.3に変更
ライブラリ等の存在や設定をチェック
(オプションを変更して)ライブラリ等の存在や設定を再チェック
コンパイル
インストール
Homeにsvnというディレクトリを作成
現在地をsvnに変更
リポジトリを作成
シンボリックリンクを作成
```
### IDとPASSでTortoiseSVN接続
クライアント側のTortoiseSVNの設定。
導入については本稿では割愛。

TortoiseSVNの設定＞ネットワーク を開く。
![20240112_013822.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/d694d12c-b19c-a450-6cb6-4b528a71832c.jpeg)
SSHクライアントに以下を入力

`
"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -l exampleID -pw examplePASS
`

前半のアドレスはTortoisePlink.exeを絶対パスで指定する。普通にインストールしていれば上記と同じ場所になる。
exampleIDはアカウント名、examplePASSはサーバーパスワードに置換。

これでTortoiseSVNでサーバーに接続できるようになっているはずなので、リポジトリブラウザで確認する。以下を入力して開く。exampleDOMAINはドメインに置換

`
svn+ssh://exampleDOMAIN/home/exempleID/svn/myrepos
`

繋がらない場合はTeraTermからチェック。(svnから接続できるか確認)
```
$HOME/tool/bin/svn info svn+ssh:/exampleDOMAIN/home/exempleID/svn/myrepos
```
接続できなかった場合↓(svnserveが機能しているか確認)
```
svnserve -h
```
command not foundの場合↓(リンク先が正確に指定されているか確認)
```
ls -l $HOME/bin/svnserve
```
繋がったらチェックアウト＆適当にコミットしてエラーが出ないか確認。

鍵で接続したい人は引き続き↓へ

### 鍵の作成
公開鍵と秘密鍵のペアを作成する。
https://www.ranvis.com/putty
まずこちらからPuTTYrvの任意のバージョンを入手。ポータブル版でOK。
ここでは`0.80 (2023-12-20) 64bit .7z`を使用している。

中にあるputtygen.exeを起動。

パラメータはそのままで生成をクリック
![20240113_184204.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/83af4e97-51f1-1d97-b185-b41943e916a0.jpeg)
マウスを動かしているとインジケーターが進む。
![20240113_184204.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/97bd8451-52a1-9432-d663-49d7cf848be8.jpeg)
こんな感じで鍵が生成される。

秘密鍵を保存。パスフレーズは任意。なくても良い。ファイル名も任意
秘密鍵は`.ppk`の形式で保存される。
公開鍵は保存せずともppkを開けば秘密鍵と一緒に書いてある。
あるいはこれで秘密鍵を読み込めば表示される。

### 鍵の登録
![20240113_184643.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/93ffac4f-fe7e-4b86-61c1-428a81544cb2.jpeg)
公開鍵(赤枠の部分)をコピー。

公開鍵の登録方法は幾つかあるが、今回はレンタルサーバーのWebサイトから行う。
レンタルサーバーのコントロールパネルにアクセスし、SSH公開鍵の項を開く。

![20240113_190440.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/ab954fee-5886-e840-51b2-b9fad896bed2.jpeg)

新規追加をクリックし、公開鍵の欄にペースト。コメントも識別できるように書いておく。
![20240113_190628.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/5f4397a1-9b87-2fb5-4452-409ae4bd210e.jpeg)
これで公開鍵の登録は完了。

複数人アクセスする場合はこの鍵生成と登録をその分行う。
鍵生成は本人が行って、サーバー担当に公開鍵だけ送って登録するのが望ましいかもしれない。

 　
続いて秘密鍵の登録を行う。
pageant.exeに秘密鍵を登録するのだが、これがPCを再起動する度に登録が必要になる。
そこでショートカットに引数を渡し、登録された状態で起動できるようにする。

pageant.exeのショートカットを作成し、ショートカットのプロパティを開く。
リンク先を以下のように変更する
![20240114_021207.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/0b040769-9e9c-c7e0-6275-8ea98b425acf.jpeg)
本来のリンク先パスの後ろにppkの絶対パスを追加する。パスの間の半角スペースは必須。

これでショートカットから起動すればOK。
特にウィンドウは開かないがタスクトレイにアイコンが表れる。
ダブルクリックすれば登録されている鍵が確認できる。
![20240114_021747.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/4aa77d15-d087-1b2d-b219-1eed1cf55f85.jpeg)



### 鍵でTortoiseSVN接続

IDとPASSで接続した時と同じようにTortoiseSVNの設定＞ネットワーク を開く
SSHクライアントを以下のように書き換え

`"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -l "SampleID" -i "ppkの絶対パス"`

SampleIDはアカウント名、ppkの絶対パスはショートカットに追加したのと同じように。
設定できたらリポジトリブラウザ等で接続確認。パスは前述と同じ。
`
svn+ssh://exampleDOMAIN/home/exempleID/svn/myrepos
`

![20240114_023447.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/8520f12b-30f7-aa2c-2720-61908c557aa6.jpeg)

　





 
### サーバーをエクスプローラで表示(おまけ)
PC直下の適当な場所で右クリック→ネットワークの場所を追加する
![net1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/77b2f8fd-e209-c4dc-4414-37fcffc4901b.jpeg)
　
ネットワークの場所の追加ウィザードが表示されるので、次、次と進む。
下の画面では`ftp://`から始まる形式でドメインを入力して次へ

![20240112_144035.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/95908f41-8aaa-e438-b87d-073b4aee37c5.jpeg)

匿名でログオンのチェックを外しIDを入力して次へ

![20240112_144047.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/8a5266a5-d483-3fb7-7bf4-1a36ac0b7b5d.jpeg)

ショートカットの名前。分かりやすければなんでも

![20240112_151141.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/596579b3-f00e-d2f9-08f6-7af19ef17185.jpeg)
![20240112_151207.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/db0eeb3b-eeb2-7c1b-c2f5-65f72b7b06ff.jpeg)

これでネットワークの場所が追加されたのでダブルクリック。
ユーザー名とパスワードを求められるので入力。

![20240112_152403.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368554/7e3d6f40-d35a-b804-7e18-e01c9200e4dd.jpeg)

これでエクスプローラーで見れるようになった。
基本的には直接ファイルを開くことはできず、プロパティから見れる情報もごく一部のみ。ファイル検索も機能しない。
あくまで手軽にディレクトリ構造を視覚化する手段ということで。