準備するもの#
正常に動作する古いスマートフォン新しいスマートフォンでも可
termux アプリ
ドメインfreenom で無料のものがある
cloudflare アカウントとドメインのプロキシ
termux で Linux をインストール#
私がデモするスマートフォンは Android 11 です
インストールが完了したら termux を開きます
openssh をインストール#
スマートフォンの操作が難しいので、ssh を使うことにしました。自分でスマートフォンを操作できると思う方はインストールしなくても大丈夫ですし、他の ssh をインストールしたい方も同様です。
アプリを開いたらpkg install openssh
と入力します。ここはスクリーンショットを撮り忘れました。
インストールが完了したらpasswd
と入力してパスワードを設定します。
次にsshd
と入力して openssh を起動します。
whoami
と入力してユーザー名を取得します。
ifconfig
と入力して IP アドレスを取得します。
コンピュータから ssh 接続#
ポートは ssh サービスのポートで、openssh のデフォルトポートは 8022 です。
コンピュータでssh -p ポート 取得したユーザー名@ipアドレス
と入力して接続します。
Linux をインストール#
接続したらbash <(curl -L gitee.com/mo2/linux/raw/2/2)
と入力して Linux をインストールします。
他のインストール方法があればそれでも構いません。別の方法の場合はここをスキップできます。
ここで最初の proot コンテナを選択します。
おそらく再度コンテナを選択する画面が表示されるかもしれませんが、具体的にはスクリーンショットを撮り忘れましたので、最初の proot コンテナを選択すれば大丈夫です。
ここで最初の neon を選択します。
フォントはお好みで選んでください。
最初のものを選択します。
最初のものを選択します。
ここでどの Linux を使いたいか選んでください。ただし、cloudflare の公式ドキュメントではいくつかの Linux のみがサポートされています。
その後は適当にクリックすれば大丈夫です。
この画面で vnc をインストールすることをお勧めします。後で cloudflare にブラウザでログインする必要があり、グラフィカルインターフェースが必要です。
Web サービスをインストールして起動#
自分で検索してください。
cloudflared をインストール#
どれを選べばよいかわからない場合は、cloudflare パッケージリポジトリをクリックします。
自分のオペレーティングシステムに応じて選択し、公式ドキュメントに従ってコマンドを入力しますここはスクリーンショットを撮り忘れました
ログインとトンネルの作成#
次にリモートデスクトップ接続を開きます。
ターミナルでcloudflared tunnel login
と入力します。
リンクが表示されるので、そのリンクをクリックしてログインします。
ログインしたら、ターミナルでリンクをクリックして開き、自分のドメインを選択します。
vnc は少し遅いので、ssh ターミナルに戻り、cloudflared tunnel create トンネル名
と入力してトンネルを作成します。トンネル名は自由に付けてください!微信画像_20221215164726.png
次に、cloudflared tunnel list
と入力して、成功したかどうかを確認し、トンネルの ID をコピーします。
ドメインをバインド#
次に、cloudflared tunnel route dns トンネル名 ドメイン
と入力してバインドします。
トンネル名は先ほど作成したトンネルで、ドメインは自分のドメインです。
設定ファイルに書き込む#
nano ~/.cloudflared/config.yml
と入力して以下の設定を書き込みます。
tunnel: <トンネルID>
credentials-file: /root/.cloudflared/<トンネルID>.json
protocol: http2
originRequest:
connectTimeout: 30s
noTLSVerify: false
ingress:
- hostname: <ドメイン>
service: http://localhost:ポート
- service: http_status:404
複数のポートを開きたい場合は、以下の画像のように書いてください。
保存したら、nano /etc/systemd/system/cloudflared.service
と入力します。
書き込みます。
[Unit]
Description=cloudflared
After=network.target
[Service]
TimeoutStartSec=0
Type=notify
ExecStart=/usr/bin/cloudflared --loglevel debug --transport-loglevel warn --config /root/.cloudflared/config.yml tunnel run <トンネル名>
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
改行しないことに注意してください。
保存します。
サービスを起動#
systemctl enable cloudflared --now
と入力します。
成功をテスト#
ウェブサイトを開いて、通過が成功したかどうかを確認します。
その他#
他のサービスもサポートされています。詳細はドキュメントを参照してください。
ssh アクセスにはローカルターミナルの設定が必要です。
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/use_cases/ssh/
ssh ブラウザアクセスは cloudflare の zero パネルで設定する必要があります。ドキュメントを自分で確認するか、別の投稿を作成します。
実際に termux で web サービスを起動し、Linux 内でも通過アクセスできることが確認できたので、ソフトウェアに限らず、スマートフォンに ksweb をインストールすれば同様のことができるかもしれません。