QNAP Xeon搭載NASのNextcloud仮想マシンにSFTPを追加

公開 | 更新 
図2.C5570 Appメニュー

WebDAV未サポートのコピー複合機から、NAS 仮想マシン の NextCloud サーバへ、受信したFAXのPDFファイルを SFTP で転送し、 NextCloud 側で閲覧可能にする仕組みを構築します。

WebDAVを使えないFUJIFILM複合機

前回、QNAP Xeon搭載NAS上のUbuntu 22.04 Server仮想マシンに構築したNextCloudファイル共有を、FUJIFILM製のコピー複合機が受信するFAXのPDF文書の転送先にしたいのですが、残念ながら当該機がサポートするプロトコルはSMB、FTP、SFTPに限られ、WebDAVが使えません。

図1.FAX受信時に使えるジョブフロー

図1.FAX受信時に使えるジョブフロー

複合機とNextCloudは、互いに物理的にも異なるネットワークに属することからSMBもそぐわないことから、今回SFTPで転送する仕組みを構築することにしました。

 

SFTPの準備

まず、複合機がアクセスしてくる際に使用するユーザアカウントを、NextCloud仮想マシン上に作成します。

そしてこのユーザを後述の理由により、rootグループに加えます。

 

次に /etc/ssh/sshd_configを編集して、このユーザはSFTP専用とし、chrootでルートディレクトリを前回NextCloudに設定したグループ共有フォルダへ、設定します。

 

chrootやNextCloudのパーミッション嗜好

chrootで指定するディレクトリの所有者はrootでなければならないほか、パーミッションが適切に設定されていないと、アクセス試行がBroken Pipeにより失敗してしまいます。

また、NextCloudがデータディレクトリのパーミッションをチェック、書き換えてしまうようで、

両者が納得する落とし所を探って数時間、以下のように設定することでようやく抜け出すことができました。

こうすれば動作する、という自信はむしろ有りませんが、もしSFTPでBroken Pipeを食らったり、変えたはずのパーミッションが元に戻ってしまっている、などの現象に遭遇したら、この辺りが解決の糸口になるかも知れません。

 

FUJIFILM複合機にジョブフロー設定

サーバ側の受け入れ体制は整ったので、複合機(FUJIFILM C5570を例にします)のWeb UIにアクセスして、FAX受信時のジョブフローを設定します。

管理者アカウントでログインしたら、Appの一覧から Job Flow Sheets を選択。

図2.C5570 Appメニュー

図2.C5570 Appメニュー

Job Flow Sheetリストの Edit ボタンをクリックします。

図3.Job Flow Sheets App

図3.Job Flow Sheets App

既に定義してあるシートを選択。

図4.Job Flow Sheet一覧

図4.Job Flow Sheet一覧

Recipients一番下の Transer via SFTP をクリックします。

図5.Job Flow Sheetの編集

図5.Job Flow Sheetの編集

適当な名前を付け、サーバ名にFQDNとカスタムポート番号、保存先相対パス、ログイン情報を設定します。

図6.SFTP転送の設定

図6.SFTP転送の設定

コピー複合機側の作業は以上です。

 

SSH-RSAを有効化

NextCloud仮想マシンのsshやsftpに対し、既に別のPCから接続に問題がないことは確認済みですが、いざコピー複合機からのアクセスを試行すると失敗してしまいます。この時サーバ側のログには、次のようなエントリが挙がっていました。

複合機側はまだSSH-RSAを使っているようです。これは複合機側の設定で変えられそうにないので、サーバ側で許可するよう、 sshd_config に次の設定を追加します。

なおこの設定は、上述の Matching User 項に入れると怒られるので、不本意ながらグローバルに適用すると、複合機からのアクセスが成功するようになりました。

 

NextCloudへの反映

NextCloudのデータディレクトリへNextCloud以外の手段でコピーされたファイルは、そのままではNextCloud上で見えることはなく、次のコマンドを実行する必要があります。

これでページをリフレッシュすると、ようやく現れました。

図7.NextCloudに現れた受信FAXのPDF文書

図7.NextCloudに現れた受信FAXのPDF文書

SFTPのセッションが切れたら後処理で再スキャンコマンドが動くような仕組みが理想的なのでしょうが、ひとまず単純にcronで定期実行することにします。

 

NextCloudユーザがファイルを消せない

ほっとするのもつかの間、最後にNextCloudへ一般ユーザで入って確認してみると、SFTP経由で転送されたファイルの削除ができません。

ターミナルからフォルダ内の様子を確認すると、

最後の test.txt はNextCloudからアップロードしたテキストファイルで、これはもちろん削除可能です。

sftpを通じてアップロードされたファイルの所有権とパーミッションに原因があるのは明白なので、付け刃的ですが共有フォルダ以下を全て所有者を root:root へ変更して解決します。

 

毎分更新バッチ

以上、SFTPから転送されたファイルに対して必要な処理を次のバッチにまとめ、

cronにスケジュールを登録しました(就業時間中は毎分実行させます)。

 

こうしてFAX受信フォルダの疑似クラウド化は完成しました。今後ユーザからWindowsエクスプローラでの操作の要望が挙がるようならば、WebDAVによる操作を検証してみるつもりです。

 

created by Rinker
¥3,208 (2024/03/05 06:42:18時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA