ファイル共有の最適解は何なのか。
自宅ではMacのファイル共有機能を用いてスマホ、他PCとのファイル共有を実現している。 しかし、Macのファイル共有はクソなのか知らないが突然接続出来なくなることがある。後画像が全然表示されなかったりもする。 常に電源を接続しておかないといけないのも嫌だ。
↓は色々試した遍歴。

  • デスクトップのサーバー化:うるさい。
  • ラズパイのサーバー化:悪くないけど電源タップ1つ専有するのが嫌だ。管理するマシンが増えるもの嫌だ。
  • ニアバイシェア:NearDropを使用したことがあったがMac→Androidが出来なかった記憶が。。全デバイスで共通の仕組みないの。。osレベルでビルトインされてるようなものとかがあれば良いのだけど。

色々試したがスマホ自体をサーバ化するのはどうかという考えに至ってしまった。
FTPサーバー化するようなイメージ。SFTPで使用したいのでsshdも動かしておきたいなと。termuxを用いれば出来そうな感じだったので実際にやってみた。

Termuxのインストール

GooglePlayでは提供されていないのでGithubから取得する、あるいはFDroidでインストールを行う。自分は前者で実施。

https://github.com/termux/termux-app/releases

取得したら以下でインストール(adbが使用出来る前提)

adb install {pkg_name}

Termuxの初期設定

以下のコマンドで最低限必要なパッケージと必要な設定を行っておく。

  • 最新化
    pkgコマンドで標準で入っている。aptをラップしたコマンドらしい。
$ pkg update && pkg upgrade
  • 内部ストレージへのアクセス
    デフォルトでは~/からアクセス出来ないので以下のコマンドを実施。~/配下に「storage」が出来る。ftp転送用のディレクトリを切っておくとよい。
$ termux-setup-storage
  • ツールのインストール
    最低限必要なものを入れておこう。sshdは今回は必須。他は適宜。
$ pkg install vim wget sshd neofetch

neofetchはいつでもよい。開発が終了した話を聞いた。

  • sshdの起動
    sshで早く繋ぎたい。以下でデーモンが動き出すはず。
$ sshd
  • パスワード設定
    ssh接続はパスワード認証で実施する。公開鍵認証がよいならそれでもよい。今回はパスワードで。事前にパスワードを設定しておく。
$ passwd
  • ssh接続確認
    クライアントからssh接続を確認する。termuxでsshdを動かすとデフォルトポートは8022になる。問題なく接続出来ればOK。
$ ssh -p 8022 {username}@{ip}

クライアント側からsftp接続

ここまででsftpを用いてファイル共有が出来るようになっているはず。FileZillaなり用いて接続する。

最後に

転送速度も問題なく共有は出来ている。バッテリー持ちなど色々懸念はあるが一旦は様子見で運用することにする。

2024/05/29追記

sshを実行するたびにsshdコマンドをスマホから発行するのはめんどうなため自動化した。 FdroidからTermux::Bootなるアドインがあるみたいなのでそちらをダウンロード。
Termux上で以下のコマンドを発行。

$ mkdir -p ~/.termux/boot/
$ vi ~/.termux/boot/start-sshd

start-sshdファイルには以下を記載する。

termux-wake-lock && sshd

この後スマホからTermux::Bootのアイコンをタップし、スマホ自体を再起動。
0 sessions (wake lock held)なるアイコンが表示されていればOK。

これでいつでもSSH接続出来る。

2024/07/15追記

Macのファイル共有に戻しました。。