0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セキュアサーバに、なりたいな「ハイ!rclone crypt」④SNVサーバを構築してみる

Last updated at Posted at 2025-12-23

📚 シリーズ目次

本シリーズは、作業の一部で Linux Mint 22.2 Cinnamon Edition を使用します。
Windows 11 での作業手順も併記しています。)

1. はじめに

いよいよ、QEMU上のDebianでのサーバ運用に入ります。ここまでは意図した通りに動いているように見えるので、パフォーマンスがアレでも動いてくれるはと思うのですが…不安を胸に抱いたまま、サーバ構築作業に突入です。

本記事では、非rootのスマホに仮想マシンを導入し、Android OS上でネイティブなLinuxサーバを稼働させることを目指します。

2. クライアントPCのセットアップ

2.1 ソフトウェアのインストール

サーバ構築に先立って、クライアントPCをセットアップしてしまいましょう。本記事ではクライアントにRabbitVCSを使用します。Linux Mintのソフトウェアマネージャから、以下のソフトウェアをインストールしてください。

  • Git
  • Subversion
  • Rabbitvcs-core
  • Nemo-python

Windows環境では、以下をインストールしてご使用ください。

  • Git for Windows
  • TortoiseGit
  • TortoiseSVN

2.2 右クリックメニューの統合

RabbitVCSの右クリックメニュー統合には RabbitVCS.py が必要です。以下のサイトからダウンロードし、~/.local/share/nemo-python/extensions に配置してお使いください。次のコマンドでも対応できます。

Linux PC
mkdir -p ~/.local/share/nemo-python/extensions
cd ~/.local/share/nemo-python/extensions
wget https://raw.githubusercontent.com/rabbitvcs/rabbitvcs/master/clients/nemo/RabbitVCS.py

RabbitVCS.py の配置後すぐは、右クリックメニューに反映されていません。一度ログアウトしてからログインしなおすと、使えるようになります。

3. SVNサーバのセットアップ

3.1 Subversionのインストール

それでは、サーバ構築の作業に入ります。まずは、Debianに接続しましょう。

Linux PC
ssh termux-qemu

接続できたら、以下のコマンドで必要なパッケージをインストールします。今回はHTTPSでの接続を行うため、Apache用のモジュールも導入します。

Debian
sudo apt install subversion
sudo apt install libapache2-mod-svn

3.2 Subversionの公開設定

続いて、Apacheでの公開設定を編集します。まずは、SVNリポジトリ用のフォルダを準備しましょう。rclone-mounter.service に以下の項目を追加してサービスを再起動すると、暗号化フォルダ内のサブフォルダが /srv/svn にマウントされます。

Debian
sudo nano /etc/systemd/system/rclone-mounter.service
Debian /etc/systemd/system/rclone-mounter.service
ExecStartPre=/usr/bin/mkdir -p /srv/svn

ExecStart=/usr/bin/rclone mount termux-secure:svn /srv/svn \
  --uid 1000 --gid 33 --umask 002 --allow-other \
  --vfs-cache-mode writes --daemon

ExecStop=/usr/bin/fusermount -u /srv/svn
Debian
sudo systemctl daemon-reload
sudo systemctl restart rclone-mounter

それでは、設定ファイルを編集します。SVNParentPathAuthUserFile 以外はデフォルトのものをそのまま使うので、編集といってもほぼコメントアウトを解除するだけです。以下のように修正してください。

Debian
sudo nano /etc/apache2/mods-enabled/dav_svn.conf
Debian /etc/apache2/mods-enabled/dav_svn.conf
- #<Location /svn>
+ <Location /svn>

-   #DAV svn
+   DAV svn

-   #SVNParentPath /var/lib/svn
+   SVNParentPath /srv/svn

-   #AuthType Basic
-   #AuthName "Subversion Repository"
-   #AuthUserFile /etc/apache2/dav_svn.passwd
+   AuthType Basic
+   AuthName "Subversion Repository"
+   AuthUserFile /etc/apache2/.htpasswd

    #<LimitExcept GET PROPFIND OPTIONS REPORT>
-     #Require valid-user
+     Require valid-user
    #</LimitExcept>

- #</Location>
+ </Location>

変更を保存したら、モジュールを有効化してApacheを再起動します。

Debian
sudo a2enmod dav
sudo a2enmod dav_svn
sudo systemctl restart apache2

3.3 認証ユーザの設定

初回は以下のコマンドで認証ユーザを設定します。コマンドを実行するとパスワード入力を要求されるので、同じものを2回入力してください。svn:// と違って、パスワードを平文で記録しなくて済むのは安心できます。

Debian
sudo htpasswd -cm /etc/apache2/.htpasswd ユーザ名

認証ユーザを追加する場合は、こちらのコマンドを使用してください。-c オプションが存在すると、既存ユーザの情報がすべて消失します。

Debian
sudo htpasswd -m /etc/apache2/.htpasswd ユーザ名

4. SVNリポジトリの操作

4.1 リポジトリの作成

それでは、リポジトリを作成してHTTPS経由でのアクセスを確認します。以下のコマンドで作成してください。リポジトリ名は my-first-svn とすることにします。

Debian
svnadmin create /srv/svn/my-first-svn

4.2 PCでのチェックアウト

リポジトリが作成できたら、クライアントPCでチェックアウトしてみましょう。SVN作業用のフォルダ(~/SVN など)で右クリックして、「RabbitVCS SVN」から「Checkout...」を選択します。「URL」欄に以下をコピペしてOKボタンをクリックすると、リポジトリからチェックアウトされます。

Linux PC URL
https://termux.home.arpa:8443/svn/my-first-svn

Screenshot from 2025-12-23 11-21-33.png

初回接続時は、ユーザ名とパスワードの入力が求められます。「Save Authentication」にチェックを入れることで、次回以降は自動で認証されます。

Screenshot from 2025-12-23 11-23-01.png

4.3 メディアフォルダのSVN管理

ここでは、スマホのメディアフォルダをSVN管理できるようにします。SDカードのルートディレクトリをワークスペースとし、複数のフォルダを一度に管理します。まずは、以下のコマンドでメディアフォルダ用のリポジトリを作成します。

Debian
svnadmin create /srv/svn/sdcard

続いて、SDカードのルートディレクトリをSVNのチェックアウト先にします。以下のコマンドで強制チェックアウトし、作成したリポジトリと紐付けます。

Debian
cd /mnt/sdcard
svn checkout "https://termux.home.arpa/svn/sdcard" . \
  --username ユーザ名 \
  --force

内部ストレージのメディアフォルダを対象にする場合は、sdcardshared と読み替えてください。

今回は DCIMMovies をまとめてコミットします。その前に、コミット対象にしないファイルやフォルダを設定してしまいましょう。手元の環境では、.tmfs.thumbnails というフォルダがあったので、これを除外フォルダとして設定します。

Debian
svn add --depth=empty DCIM
svn add --depth=empty Movies
svn propset svn:ignore ".tmfs" DCIM
svn propset svn:ignore ".thumbnails" Movies

除外設定が終わったら、以下のコマンドですべてを追加してコミットします。

Debian
svn add --force DCIM
svn add --force Movies
svn commit -m "Initial commit"

5. おわりに

遅い。遅い上にコミットの最後で失敗する。rename操作で失敗してるっぽい。コミットを分割すると通ったりするけど、実用には向かないかもしれないな…という訳で、次回のGitサーバに期待せざるを得ない。速度面はQEMUのコア数を増やして確認してみます。


◀️ 前の記事 次の記事 ▶️
セキュアサーバに、なりたいな「ハイ!rclone crypt」③HTTPSサーバを構築してみる セキュアサーバに、なりたいな「ハイ!rclone crypt」⑤Gitサーバを構築してみる
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?