【初学者向け】ローカルで動作するRailsアプリを配布なしで外部に公開できる？



## はじめに
開発プロセスにおいて、しばしば直接の配布せずにローカル環境で動作しているアプリケーションを外部から確認する必要性が出てきます。本記事では、ngrokを用いてローカルで動作しているRailsアプリケーションをパブリックWeb URLで確認する方法を説明します。

## 手順

### 1) ngrok会員登録
まず ngrokで無料アカウントを作成し、アカウントの認証トークンを取得します。

![Screen Shot 2023-10-15 at 19.16.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3529304/1b7a0b7f-a451-a089-79c5-477830404676.png)


### 2) ngrok設置
OSに応じてngrokクライアントライブラリをダウンロードします。

#####  MacOS
```shell
brew install ngrok/ngrok/ngrok
```

##### Windows(Chocolatey)
```shell
choco install ngrok
```

他のダウンロード方法は、以下のリンクを参考にしてください。
https://ngrok.com/download

### 3) ngrokエージェントの連動
ターミナルで以下のコマンドを実行して、1)で取得したngrok認証トークンを設定します。

```shell
ngrok config add-authtoken TOKEN
```

### 4) ngrok実行
認証トークンが設定されると、ローカルで動作されているアプリケーションのトンネルを開始できるようになります。localhostのポート3443でトンネルを開始するには、以下のコマンドを実行するだけです。

```shell
ngrok http 3443
```

##### 実行結果
```shell
ngrok                                                                                                                                                                               (Ctrl+C to quit)
                                                                                                                                                                                                    
Introducing Always-On Global Server Load Balancer: https://ngrok.com/r/gslb                                                                                                                         
                                                                                                                                                                                                    
Session Status                online                                                                                                                                                                
Account                       Ngrok (Plan: Free)                                                                                                                                           
Update                        update available (version 3.3.5, Ctrl-U to update)                                                                                                                    
Version                       3.3.2                                                                                                                                                                 
Region                        Japan (jp)                                                                                                                                                            
Latency                       20ms                                                                                                                                                                  
Web Interface                 http://127.0.0.1:4040                                                                                                                                                 
Forwarding                    https://some_random_domain.ngrok-free.app -> http://localhost:3443                                                                             
                                                                                                                                                                                                    
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                           
                              0       0       0.00    0.00    0.00    0.00   
```

### 5) RailsにngrokのURL登録
Railsの`config/environments/development.rb`にある`config.hosts`にngrok実行する時に取得したForwardingのホストネームを入力します。

```ruby
config.hosts << "some_random_domain.ngrok-free.app"
```

### 6) NgrokのForwarding URL接続
NgrokのForwarding URL接続して、ローカルでホストされているRailsアプリを確認します。

## 参考
https://ngrok.com/docs/getting-started/#next-steps