Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Jan 12, 2021 (更新: Dec 25, 2025) - 日記

FRP(Fast Reverse Proxy)入門: ngrok代替のセルフホスト型リバースプロキシ

ngrok の代替になりそうなソフトウェアを探していたらFRPというすごいのを見つけたのでご紹介します。

クイックスタートガイド

項目内容
インストール (Mac)brew install frpc
インストール (Linux)GitHub Releases からバイナリ取得
サーバ起動frps -c frps.toml
クライアント起動frpc -c frpc.toml
設定形式TOML(v0.52.0以降)/ INI(レガシー)

FRPとngrok

とても便利で人気なngrok

手軽に開発機上のサービスをネットに晒すのにngrokというサービスが便利です。私も5年くらい費用を払って使っています。

ngrokについてはたくさんの方が記事を投稿されているので興味のある方は以下を参考にしてください。

Qiita tags/ngrok

FRP(Fast Reverse Proxy)とは?

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

FRP GitHub公式リポジトリ によると、FRPは「NATやファイアーウォールの内側にあるローカルサーバをインターネットに公開するための高速リバースプロキシ」です。

FRPを使えば、ngrokのようなサービスを自前のサーバで構築できます。 オープンソースで無料、自由にカスタマイズ可能なのが最大の特徴です。

FRPにできること

  • 手元のPCをネットに晒す(ngrok的な使い方)
  • 別々のNATやfirewallの中にある2点間の通信

ざっとこんな感じです。

frpsとfrpcのインストール方法

FRPは以下の2つのコンポーネントで構成されています:

  • frps(サーバー側): 外部公開用のリバースプロキシサーバ
  • frpc(クライアント側): ローカルサーバとfrpsを繋ぐクライアント

Linux向けインストール

Go で書かれているため、GitHub Releases から各OS/アーキテクチャ向けのコンパイル済みバイナリを取得するのが最も簡単です。

# 例: Linux amd64版のダウンロード
wget https://github.com/fatedier/frp/releases/download/v0.53.0/frp_0.53.0_linux_amd64.tar.gz
tar -xzf frp_0.53.0_linux_amd64.tar.gz
cd frp_0.53.0_linux_amd64

Mac向けインストール

Homebrewで簡単にインストールできます。

brew install frpc

注意: Homebrewでインストールされるのはクライアント(frpc)のみです。サーバ(frps)が必要な場合は、上記のLinux向け手順と同様にGitHubから取得してください。

FRPの設定

frpsfrpcから7,000番ポート(default)で接続できるところに建てる必要があります。frps, frpcそれぞれに設定ファイルが必要です。

補足(2025年12月更新): FRP v0.52.0以降では、設定ファイル形式がINIからTOMLに変更されました。以下では新旧両方の形式を紹介します。新規セットアップの場合はTOML形式を推奨します。

設定ファイル(TOML形式 - v0.52.0以降推奨)

frps.toml
bindPort = 7000
auth.token = "your-secure-token"
frpc.toml
serverAddr = "frps.example.com"
serverPort = 7000
auth.token = "your-secure-token"

設定ファイル(INI形式 - レガシー)

v0.51.x以前のINI形式
frps.ini
[common]
bind_port = 7000
token = t0k3n
frpc.ini
[common]
server_addr = frps.example.com
server_port = 7000
token = t0k3n

token(またはauth.token)にはfrpsfrpcで共通の推測困難な文字列を設定しておきます。

起動と接続確認

まず以下のようにしてサーバを立ち上げます。

サーバ側にて

# TOML形式(v0.52.0以降)
$ frps -c frps.toml

# INI形式(v0.51.x以前)
$ frps -c frps.ini

クライアント側にて

# TOML形式(v0.52.0以降)
$ frpc -c frpc.toml

# INI形式(v0.51.x以前)
$ frpc -c frpc.ini

クライアント側に以下のようなメッセージが出たらとりあえずインストール完了です。

2021/01/11 16:18:51 [I] [service.go:288] [06845eb1e7aa771a] login to server success, get run id [06845eb1e7aa771a], server udp port [0]

よくある質問

frpsとfrpcの違いは?

  • frps: 外部公開されているサーバで動かすリバースプロキシサーバ
  • frpc: NAT/ファイアウォール内のローカル環境で動かすクライアント

両方を適切に設定することで、ローカルサーバを外部に公開できます。

FRP GitHubの公式版はどこで入手できる?

https://github.com/fatedier/frp/releases から最新版をダウンロードできます。Linux、macOS、Windows、ARM版など多数のプラットフォームに対応しています。

TOMLとINI、どちらの設定形式を使うべき?

v0.52.0以降では必ずTOML形式を使用してください。 INI形式はレガシーサポートのみで、将来的に廃止される予定です。新規セットアップではTOML形式を推奨します。

ngrokとFRPの主な違いは?

項目ngrokFRP
ホスティングSaaS(ngrok社管理)セルフホスト(自分で管理)
コスト月額課金サーバ代のみ(無料)
カスタマイズ制限あり自由
ドメインngrok提供独自ドメイン使用可

FRPシリーズ記事

  1. FRP入門(インストール編) ← 本記事
  2. FRP実践編: SSHアクセスとWebサービス公開の設定方法
  3. FRP実践編その2: 拠点間SSHトンネルの構築

関連記事