監視カメラからZimaOSにファイルをアップロードする必要がある場合、カメラが対応していればSFTPを使用してください。ZimaOSでは開発者モードからSSHを有効にできるため、別途FTPサーバーをインストールしなくても、暗号化されたSFTP接続を利用できます。
カメラが従来のFTPにしか対応していない場合は、vsftpdなどのコンテナを使用できます。ただし、フォーラムのYAMLではポート20と21しか公開されていませんでした。これはパッシブFTPには不十分な場合があり、報告されている「ディレクトリを読み取れない」という症状から、ホストフォルダーの権限も確認する価値があります。
カメラが対応している場合は、まずSFTPを使用する
現在のZimaOS SSHセットアップガイドでは、ZimaOSのインターフェースからSSHを有効にする方法を説明しています。SFTP対応クライアントは通常、SSH経由でZimaOSのアドレスに接続します。一般的にはポート22を使用し、接続先のパスへの権限を持つアカウントで接続します。
SFTPとFTPは異なるプロトコルです。FTPにしか対応していないカメラは、ポートを変更するだけではSFTPを使用できません。
FTPが必要な場合は、パッシブポートも設定する
スレッドで使用されていたコンテナはfauria/vsftpdでした。そのvsftpdコンテナのドキュメントでは、PASV_MIN_PORTやPASV_MAX_PORTなどのパッシブモード用変数について説明されており、対応するポート範囲も公開する必要があると記載されています。
LAN上のカメラの場合、FTPサービスは信頼できるローカルネットワーク内に限定してください。通常のFTPでは認証情報やファイル転送が暗号化されないため、パブリックインターネットに直接公開しないでください。
バインドしたアップロードフォルダーを確認する
フォーラムの例では、ZimaOSのホストディレクトリを/home/vsftpdにマッピングしていました。Dockerのバインドマウントはホストのファイルシステムを直接使用するため、コンテナプロセスにも、そのディレクトリに対する互換性のある所有者設定と権限が必要です。
ログインには成功するのに、一覧表示やアップロードに失敗する場合は、ホストパスが存在すること、コンテナからそのパスが見えること、FTPユーザーに書き込み権限があることを確認してください。カメラを重要なアーカイブに接続する前に、一時フォルダーでテストしてください。
実用的なテスト手順
- カメラがSFTPに対応しているか、FTPのみに対応しているかを確認する。
- LAN上のデスクトップクライアントから、同じ認証情報でテストする。
- アップロードをテストする前に、ディレクトリ一覧を表示できることを確認する。
- FTPのパッシブモードでは、設定したパッシブポート範囲を公開する。
- デスクトップでのテストが成功してから、同じホスト、ポート、ユーザー、パスをカメラに入力する。
デバイス接続ガイドでは、ローカルネットワークに適した接続方法を選ぶための追加情報を提供しています。
