Armadilloフォーラム

G3上でのFlask起動について

keiko-502

2025年3月5日 17時58分

お世話になります。

pythonモジュールのFlaskを使用したwebアプリケーションをArmadillo-IoT G3上で
作成,動作させたく,フォーラム(https://armadillo.atmark-techno.com/forum/armadillo/4074)を
参考に作成したのですが,思ったように動作できないため確認させていただければと思います。

とりあえず,Flaskの動作を確認するため,上記フォーラムのように「Hello world」を表示するだけのwebアプリケーションを
作成し,実行したところ,以下のように表示されました。
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5000
* Running on http://12.345.67.8:5000
Press CTRL+C to quit

実行できているように見えるため,「http://12.345.67.8:5000」をウェブブラウザに入力すれば「Hello world」が表示されると思ったのですが,
応答時間が長すぎますの表示となってしまいます。

なお,これはG3のネットワークがLTEのみの状態で起こり,G3をwifiに接続すると上記の実行結果に無線LANのipアドレスでURLが表示され,
実際にそのURLで「Hello world」が表示されることを確認しています。

最終的なシステムを考えたときに,ユーザーがG3を設置する個所にwifi環境が必ずあるとはいえない環境が想定されることから
LTEのみで動作させたいのですが可能なのでしょうか。

以下,製品仕様を記載します。
==========
製品型番:AGX3140
Debian/ABOSバージョン:Debian GNU/Linux 10
カーネルバージョン:4.9.133-at26
3G/LTE モジュール情報 (Debianのみ):Quectel EC25
その他:
==========

コメント

古関です。

使用しているLTE回線はグローバル固定IPが割り当てられいる契約のモノでしょうか?

もしそうであれば、下記を試していただけますでしょうか?

pipでwaitressをインストールして

pip install waitress

以下のようなコードに変えて実行

from flask import Flask
from waitress import serve
 
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello, World!'
 
if __name__ == '__main__':
    serve(app, host='[LTEのグローバル固定IP]', port=5000)

ブラウザから以下にアクセス
http://[LTEのグローバル固定IP]:5000/

お世話になっております。LTE回線についてですが,固定IPを割り当てた契約ではありません。

ご提示いただいたwaitressは固定IPであれば有効なのでしょうか。

古関です。

PC等からArmadillo上のWebサーバーにアクセスしようとしていると考えているのですが、
ArmadilloはPC等から直接アクセス可能なLTE回線内にいる状況でしょうか?

多くのLTE回線はプライベートIPアドレスになっており
外部のネットワークからのhttp接続は出ないものがほとんどで、
グローバルな固定IPの契約のSIMを使うか、閉域網のSIMで同じ閉域網内のPCから接続するか
トンネリングするなどの対応が必要と考えています。

お世話になっております。

ArmadilloのいるLTE回線ですが,PCから直接アクセスはできない状況にいます。

また,おっしゃる通り,G3上でwebサーバーを起動し,PCからアクセスを考えております。

もともと,VScodeでFlaskを使用したwebアプリを作成していたのですが,開発用PC上で実行し,
別のPCでアクセスできることは確認しておりました。しかしながら,ユーザー側での運用を考えたときに,
ユーザー側で実行する必要があると思い,同じアプリをArmadillo内で電源投入と同時に起動できればユーザーの手間が
なくなると考え,今回の確認をさせていただいた次第でした。

プライベートIPアドレスのLTE回線では外部からの接続ができないものがほとんどとのことで,容易でないことから
別の方法を検討したいと思います。

古関です。

グローバルIPのSIMを契約すれば技術的にはできますが、
常にインターネット上からArmadilloにアクセスできる状態になるので
それはそれでセキュリティ的にリスクがあり適切な運用が必要です。
(常にWebページを公開しておくことが目的であればそうするしかない)

もし、必要な時だけhttpアクセスをしたいのであれば、
例えばSORACOM SIM でNapterを使って
普段はプライベートIPで外部からアクセスできない状態に
必要な時だけ一時的にリモートアクセスできるようにするのもアリかもしれません。