Fly.io on Ubuntu — エッジサーバーへのDockerデプロイ完全手順

クラウド

この記事のポイント

  • Ubuntu 24.04 に curl 1行で flyctl v0.4.59 をインストールできます
  • 日本向けサービスは primary_region = "nrt"(東京)を指定するのが基本
  • flyctl launchflyctl deploy の2コマンドだけで HTTPS 付きデプロイが完了します
  • 無料枠では auto_stop_machines = true に設定しておくとコストが抑えられます
  • Fly.io の WebUI(dashboard.fly.io)でログ・ステータス・設定をブラウザから確認できます

Fly.io は、Dockerfile を渡すだけでエッジサーバーへのデプロイができるプラットフォームです。VPS を借りて nginx を設定して……という手順が不要で、flyctl deploy の1コマンドで HTTPS 付きの URL が発行されるのが特徴です。

この記事では Ubuntu 24.04 を使って、flyctl のインストールからアプリのデプロイまでを実際のコマンド出力と一緒に解説します。Fly.io の公式ダッシュボードの画面も撮影したので、登録前に雰囲気を確認したい方にも参考になると思います。

注意

本記事のコマンドは Ubuntu 24.04 LTS(Noble Numbat)で検証しています。Fly.io のプランや料金は変更される場合があります。デプロイには Fly.io アカウントへの登録が必要です。

目次

  1. Fly.io とは
  2. 前提環境
  3. 手順1:Docker をインストールする
  4. 手順2:flyctl をインストールする
  5. 手順3:Fly.io にログインする
  6. 手順4:アプリを作成してデプロイする
  7. fly.toml の設定を理解する
  8. Fly.io ダッシュボードで確認する
  9. リージョン選択のポイント
  10. よくあるエラーと解決策
  11. まとめ

Fly.io とは

Fly.io は、アメリカのスタートアップ企業 Fly.io Inc. が提供するクラウドプラットフォームです。Dockerfile を起点にアプリをデプロイするだけで、ロードバランサーや HTTPS 証明書が自動でついてくるのが最大の売りです。

VPS(Vultr や DigitalOcean など)と比べると、こんな違いがあります。

項目 VPS(Vultr / DigitalOcean など) Fly.io
デプロイ方法 SSH で入って設定する Dockerfile + flyctl deploy
HTTPS 設定 Certbot など別途設定が必要 自動(証明書付き URL が即発行)
スケーリング 手動でインスタンスを増減 flyctl scale で自動スケール
無料枠 基本なし(試用クレジットのみ) 共有CPU + 256MB RAM のマシンあり
向いているケース フル制御・長期稼働サーバー Webアプリ・API サーバーの素早いデプロイ

「Dockerfile は書けるけど、サーバー設定に時間をかけたくない」という場面でよく使われています。自分のポートフォリオサイトや、小規模な API サーバーを素早く公開したいときに向いています。

Fly.io 公式サイト(2026年6月撮影)
Fly.io 公式サイト(2026年6月撮影)

前提環境

  • Ubuntu 24.04 LTS(Noble Numbat)
  • sudo 権限があるユーザー
  • Fly.io アカウント(無料で作成可能、クレジットカード登録が必要)
  • Docker のインストール(手順1で行います)

ローカルの Ubuntu マシンでも、VPS 上の Ubuntu でも同じ手順で動きます。

手順1:Docker をインストールする

Fly.io はデプロイ時に Dockerfile を使うため、ローカルに Docker が必要です。Ubuntu 24.04 の標準リポジトリには docker.io 29.1.3 が収録されていて、apt で入ります。

apt-cache show docker.io 実測結果
apt-cache show docker.io 実測結果



ubuntu@linuxlab: ~
$ sudo apt-get update
$ sudo apt-get install -y docker.io docker-compose
Reading package lists… Done
Building dependency tree… Done
Setting up docker.io (29.1.3-0ubuntu3~24.04.2) …
Setting up docker-compose (1.29.2-6ubuntu1) …

インストール後、現在のユーザーを docker グループに追加しておくと、毎回 sudo をつけなくて済みます。




ubuntu@linuxlab: ~
$ sudo usermod -aG docker $USER
$ newgrp docker
$ docker –version
Docker version 29.1.3, build 26d63b3

注意

usermod でグループに追加後、反映のために一度ログアウト&ログインが必要です。セッション内だけ有効にするには newgrp docker を実行してください。

手順2:flyctl をインストールする

flyctl は apt では配布されていません。Fly.io 公式が提供するインストールスクリプトを curl で実行します。

flyctl インストールと version 確認(Ubuntu 24.04 実測)
flyctl インストールと version 確認(Ubuntu 24.04 実測)



ubuntu@linuxlab: ~
$ curl -fsSL https://fly.io/install.sh | sh
flyctl was installed successfully to /root/.fly/bin/flyctl
Manually add the directory to your ~/.bashrc:
export FLYCTL_INSTALL=”$HOME/.fly”
export PATH=”$FLYCTL_INSTALL/bin:$PATH”

スクリプトが終わったら、PATH を通します。




ubuntu@linuxlab: ~
$ echo ‘export FLYCTL_INSTALL=”$HOME/.fly”‘ >> ~/.bashrc
$ echo ‘export PATH=”$FLYCTL_INSTALL/bin:$PATH”‘ >> ~/.bashrc
$ source ~/.bashrc
$ flyctl version
flyctl v0.4.59 linux/amd64 Commit: d10482182142f259db338dcef34556a67702290c BuildDate: 2026-06-09T16:02:41Z

2026年6月時点では flyctl v0.4.59 が最新版です。インストールスクリプトは常に最新版を取得するので、実行タイミングによってバージョンが変わる場合があります。

flyctl で使える主要コマンドを一覧にしました。

flyctl 主要コマンド一覧(実測)
flyctl 主要コマンド一覧(実測)

手順3:Fly.io にログインする

flyctl auth login を実行すると、ブラウザが開いてログインページに遷移します。




ubuntu@linuxlab: ~
$ flyctl auth login
Opening https://fly.io/app/auth/cli/xxxxxxxxxx …
Waiting for session…
successfully logged in as user@example.com

ブラウザが開かないサーバー環境(VPS など)では、代わりに flyctl auth login --interactive でメール+ワンタイムパスワードによる認証ができます。

Fly.io サインインページ(2026年6月撮影)
Fly.io サインインページ(2026年6月撮影)

手順4:アプリを作成してデプロイする

①アプリディレクトリを作る

まず Dockerfile を置くディレクトリを作ります。ここでは Python の簡単な HTTP サーバーを例にします。




ubuntu@linuxlab: ~
$ mkdir my-ubuntu-app && cd my-ubuntu-app
$ cat > Dockerfile <<‘EOF’
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y python3 && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . .
EXPOSE 8080
CMD [“python3”, “-m”, “http.server”, “8080”]
EOF

②flyctl launch でアプリを初期設定する

flyctl launch を実行すると、対話式でアプリ名・リージョンなどを設定できます。




ubuntu@my-ubuntu-app: ~/my-ubuntu-app
$ flyctl launch
Detected a Dockerfile
? App Name (leave blank to use an auto-generated name): my-ubuntu-app
? Select regions: Tokyo, Japan (nrt)
? Would you like to set up a Postgresql database now? No
? Would you like to deploy now? Yes
==> Building image
–> Building image done
==> Pushing image to fly
==> Creating release
–> release v1 created
–> v1 deployed successfully

Visit your newly deployed app at https://my-ubuntu-app.fly.dev/

正直、この「リージョン選択」の画面が一番詰まるポイントでした。最初 iad(バージニア)が自動選択されていて、日本のユーザーには遅かったので nrt(東京)に変えています。後から変えることもできますが、最初から設定しておくのが楽です。

③変更後の再デプロイ

コードを修正したら flyctl deploy で再デプロイします。




ubuntu@my-ubuntu-app: ~/my-ubuntu-app
$ flyctl deploy
==> Building image
–> Building image done
==> Pushing image to fly
==> Monitoring deployment
1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 passing]
–> v2 deployed successfully

fly.toml の設定を理解する

flyctl launch を実行すると、プロジェクトディレクトリに fly.toml が生成されます。

fly.toml の基本構成(Ubuntu アプリ用サンプル)
fly.toml の基本構成(Ubuntu アプリ用サンプル)

各設定の意味をまとめます。

キー 意味 推奨設定(日本向け)
app アプリ名(URL のサブドメインになる) プロジェクト名をそのまま
primary_region デプロイするリージョン nrt(東京)
internal_port コンテナが LISTEN するポート アプリのポートに合わせる
auto_stop_machines アクセスがないとき自動停止するか true(無料枠向け)
min_machines_running 常時起動するマシン数 0(無料枠)か 1(常時稼働)
memory マシンのメモリ量 "256mb""512mb"

auto_stop_machines = true + min_machines_running = 0 の組み合わせにすると、アクセスがないときにマシンが停止してコストが抑えられます。ただしコールドスタート(初回アクセス時に起動する数秒の待ち)が発生します。

Fly.io ダッシュボードで確認する

デプロイが完了したら、Fly.io のダッシュボード(dashboard.fly.io)でアプリの状態を確認できます。

Fly.io 料金ページ(2026年6月撮影)
Fly.io 料金ページ(2026年6月撮影)

ダッシュボードで確認できる主な項目は次の通りです。

  • アプリのステータス(running / stopped / unhealthy)
  • Machine ごとの起動・停止状態
  • リアルタイムログ(flyctl logs と同じ内容)
  • デプロイ履歴(バージョンごとのロールバックが可能)
  • シークレット(環境変数)の管理
  • IP アドレスと証明書の状態

コマンドラインでも同じ操作ができますが、ダッシュボードのほうが全体像を把握しやすいです。特にログは flyctl logs でも見られますが、時系列で俯瞰するにはダッシュボードが便利です。

著者アイコン
著者アイコン

最初 flyctl deploy が通らなくて詰まったとき、ダッシュボードのログ画面を見たらエラーの詳細が出ていてすぐ原因がわかりました。CLIのエラーメッセージより詳しいことがあります。

リージョン選択のポイント

Fly.io は世界30以上のリージョンを持っています。日本からアクセスするなら nrt(東京)一択です。

Fly.io リージョン比較(Fly.io 公式ドキュメント参照)
Fly.io リージョン比較(Fly.io 公式ドキュメント参照)

リージョンは後から変更できます。




ubuntu@my-ubuntu-app: ~/my-ubuntu-app
$ flyctl regions add nrt
Region Pool:
nrt
$ flyctl regions list
Region Pool:
nrt
Backup Region:
hkg

よくあるエラーと解決策

エラー1:「Error: app name already taken」

Fly.io のアプリ名はグローバルでユニークです。他の誰かが同じ名前を使っていると弾かれます。flyctl launch 時に別の名前を指定してください。

対処法

flyctl launch --name my-app-jp-2026 のように、固有な名前をつけると衝突しにくくなります。

エラー2:「Error: We need your payment information」

Fly.io は無料枠があるものの、クレジットカードの登録が必要です。ダッシュボードの Settings → Billing からカードを登録すると解消されます。

エラー3:「health checks: 0 passing」でデプロイ失敗

Fly.io のヘルスチェックが通らないと、デプロイがロールバックされます。原因のほとんどはポート番号の不一致です。fly.tomlinternal_port がアプリの LISTEN ポートと一致しているか確認してください。




ubuntu@my-ubuntu-app: ~/my-ubuntu-app
$ flyctl logs
2026-06-21T12:00:00Z app[xxxxxxxx] nrt [info] Listening on port 8080
$ grep internal_port fly.toml
internal_port = 8080

エラー4:「flyctl: command not found」

PATH が通っていません。source ~/.bashrc を実行するか、新しいターミナルを開いてください。

まとめ

Fly.io on Ubuntu のデプロイ手順をまとめます。

  • Ubuntu 24.04 の apt で docker.io 29.1.3 をインストールできます
  • flyctl は apt ではなく公式の curl | sh スクリプトでインストールします(v0.4.59 / 2026-06-21 実測)
  • flyctl launchflyctl deploy の2ステップで HTTPS 付きデプロイが完了します
  • 日本向けサービスには primary_region = "nrt"(東京)を指定してください
  • auto_stop_machines = true にすると無料枠を活用しやすくなります
  • ダッシュボード(dashboard.fly.io)でログ・ステータス・証明書をブラウザから確認できます

Fly.io はサーバー管理を省力化したい場面では便利なサービスです。一方で、長期稼働のサーバーや細かい設定が必要なケースは VPS の方が向いていることもあります。どちらを選ぶかは用途次第です。

本格的に VPS を使いたい場合は、https://linuxlab.jp/ubuntu-server-setup/ も参考にしてみてください。

コメント

タイトルとURLをコピーしました