ここ最近、Shopifyというオンラインショップのサービスについて調べている。
注文後の処理データを現状の業務ソフトにスムーズに渡したいのだが、よい知恵が浮かばない。
APIを使うには自分のスキルが足りたい。かといって手動でダウンロードしてファイル名を変えて保存場所を変えてといったことを手作業を毎日やるのは無駄だ。
そんな時、ShopifyのアプリExcelifyを使うと、注文データをCronのように定期的にQNAPにダウンロード&ファイル保存して、そのファイルにAccessからリンクテーブルを張って注文データ処理を楽にできる、ということが分かった。
もしこれができれば、えらいこっちゃ。理想通りだ。
使用機器など
ファイルサーバ:QNAP(TS-251A)
ルータ:YAMAHA NVR500
■1日目はFTPにチェレンジしてNG
DDNSは3年前に購入したときに、ホスト名をもらうところまでやっていたみたいで、その点についてはスキップする。どうやったか思い出せないので。ともかく、それっぽい名前がすでに取得してあるのは確認できた。
QNAP側は、コントロールパネルから、FTPサービスを有効にする。
・FTP用アカウントとしてwebuserというユーザ名を新規に作って登録。まずはホスト名+アカウント+パスワードでFileZillaからFTPを試すも、当然、NG。
・調べると、まずはルータの設定がなってないみたい。ルータは業者さんに取り付け・設定してもらったため、ログインする方法さえ知らなかった。当然UPnPの状態を事前に確認していなかった。
・難儀だったが、ipconfigでルータのIPを調べ、ユーザー名もパスワードもなしにして接続を試したら、無事ログインできた。
以下を参考に、UPnPを有効にした
YAMAHA NVR500 UPnP無効化 | インターネット接続解説ブログKAGEMARU-info
ちょっとは変わったかなと、再度FileZillaでFTPを試したところ、デフォルト(パッシブモード)では接続できなかったが、アクティブモードでは接続できた。
プチ感動。
なぜパッシブではNGなのだろうと、何度も接続してそのFileZillaの左の窓に出てくるメッセージプロセスを眺めていると、DDNS(Dynamic DNS)経由でのQNAPへのアクセス時に、IPアドレスがローカルの値で返しているんでNGだ的な意味のメッセージを返してきていた。。
ちなみにここで、ExcelifyのFTPのコマンドラインも試したが、当然、接続できなかった。コマンドラインにパッシブ/アクティブのオプションなりスイッチなりを含ます手があればよいのだが、素人なのでわからなかった。
ここまでで、終業時間が来てしまい、また疲れてもいたので、明日に仕切り直しにした。
うまくいかない場合の代替案も一応、考えた。
QNAPにはダウンロードステーションというアプリがあって、FTPサーバからダウンロードできる。QNAP Turbo NAS Software User Manual
これなら、冗長ではあるけど、Shopify(Excelify) -> 会社のレンタルサーバー -> QNAPという流れで、できるかも。
明日試してみよう、と、ここまでで本日は終了。
(追記:この後読めばわかるけど、うまくいったので、結局ダウンロードステーションアプリは試すことがなかった)
■2日目はSFTPにチェレンジしてOK
SFTPについての知識がゼロなので、まずは勉強。
FTPS、SFTPの違いって? – Qiita
あとは手当たり次第にやってみた感じ。 QNAP側は、コントロールパネルから「SSH接続を許可する」と「SFTPを有効にする」にチェック。(この画面に管理者だけがリモートログインできる、とあるので後述するけどadminでないとダメみたい)
FileZillaにSFTPの項目があったので、そこにホスト名とアカウントとパスワードを入れて、接続してみるも、当然うまくいかず。
上記ページに「SSHを介してファイル転送を行うプロトコル」とあったので、QNAPのSSHに関する項目を探して、設定してみる。
1日目は、FTP専用アカウントとしてwebuserというユーザ名を登録していたのだが、SFTPではログインできなかった。後で調べたら、SFTPはAdminでしかログインできないことが分かったので、アカウントをパスワードをadminのそれにしたところ、接続できた。
感動。
■気がかり
NASは固定IPにしていないけど、DDNSのアプリで自動設定になっている? 停電後に接続できないことがあればこのせいかも
QNAPのシステム-セキュリティ-許可/拒否リストに登録されている内容を定期的に確認する。
QNAPが「不正アクセスがあったかもよ」といった内容のWarnignメールを送ってくるようになった。便利だけど心配が募る。
一応、IPブロック間隔を「期間なし」(不正アクセスの条件に合致したらその時から期間を設けずに拒否)にした。