Ubuntuでサーバーを立てたとき、date コマンドを打ったら UTC のままだった、日本語ファイル名が文字化けした、という経験はないでしょうか。結論から言うと、ロケールは locale-gen + update-locale、タイムゾーンは ln -snf コマンドで変更できます。VPS上でもDockerコンテナ上でも同じ手順です。
この記事では Ubuntu 24.04 LTS の公式 Docker イメージを使い、ロケール確認・日本語ロケール生成・タイムゾーン変更のコマンドを実際に動かした結果を掲載しています。
この記事のポイント
- Ubuntu 24.04 のデフォルトロケールは
C.UTF-8(英語)。日本語にはlocalesパッケージとlocale-gen ja_JP.UTF-8が必要 - タイムゾーンの変更は
sudo ln -snf /usr/share/zoneinfo/Asia/Tokyo /etc/localtimeで UTC → JST に切り替えられる - VPS環境では
timedatectl set-timezone Asia/Tokyoが使いやすい(systemd必須) - Ubuntu 22.04 と 24.04 でロケール・タイムゾーン設定コマンドは共通(実測で確認済み)
- tzdata のバージョンは両バージョンとも
2026a(IANA tz データベース)に更新済み
目次
- ロケールとタイムゾーンとは
- 現在のロケールを確認する
- 日本語ロケールを設定する
- 現在のタイムゾーンを確認する
- タイムゾーンをAsia/Tokyoに変更する
- VPSでのtimedatectl利用(systemd環境)
- Ubuntu 22.04 vs 24.04 比較
- よくあるエラーと解決策
- まとめ
ロケールとタイムゾーンとは
ロケール(Locale)は、言語・文字エンコーディング・通貨・日付形式などを定義する設定です。Ubuntu では LANG 環境変数が中心で、ja_JP.UTF-8 は「日本語・UTF-8エンコーディング」を意味します。
タイムゾーン(Timezone)は、システムクロックとUTCのオフセットを決める設定です。日本標準時(JST)は UTC+9 なので、UTC 09:00 はJSTで 18:00 になります。サーバーログのタイムスタンプや cron のスケジュールに直接影響するため、VPS構築時に必ず設定しておくべき項目です。
注意
本記事のコマンドは Ubuntu 24.04 LTS(Docker公式イメージ ubuntu:24.04)で検証しています。Ubuntu 22.04 でも同じ手順で動作します(実測で確認済み)。
現在のロケールを確認する
手順1:localeコマンドで確認する
まず locale コマンドで現在の設定を確認します。Ubuntu 24.04 の Docker イメージで実行した結果は次のとおりです。

LANG=
LANGUAGE=
LC_CTYPE=”POSIX”
LC_NUMERIC=”POSIX”
LC_TIME=”POSIX”
LC_COLLATE=”POSIX”
LC_MONETARY=”POSIX”
LC_MESSAGES=”POSIX”
LC_ALL=
すべて POSIX(= C言語の標準、英語のみ)と表示されています。これが Ubuntu のデフォルト状態です。
手順2:/etc/default/locale を確認する
システム全体のデフォルト設定は /etc/default/locale に書かれています。
LANG=C.UTF-8
$ locale -a
C
C.utf8
POSIX
実測で確認できたのは、Ubuntu 24.04 の Docker イメージは /etc/default/locale に LANG=C.UTF-8 が設定されている一方、locale -a(利用可能ロケール一覧)には ja_JP.UTF-8 が含まれていません。日本語ロケールを追加するには次の手順が必要です。
日本語ロケールを設定する
手順1:localesパッケージをインストールする
Reading package lists… Done
$ sudo apt-get install -y locales
Unpacking locales (2.39-0ubuntu8.7) …
Setting up locales (2.39-0ubuntu8.7) …
Ubuntu 24.04 では locales パッケージのバージョンは 2.39-0ubuntu8.7(2026-06-13 実測)です。
手順2:ja_JP.UTF-8 ロケールを生成する

Generating locales (this might take a while)…
ja_JP.UTF-8… done
Generation complete.
$ locale -a | grep ja_JP
ja_JP.utf8
locale -a に ja_JP.utf8 が追加されました(UTF-8 → utf8 と表示されるのは正常です)。
手順3:システムデフォルトロケールを変更する
$ cat /etc/default/locale
LANG=ja_JP.UTF-8
update-locale は /etc/default/locale を書き換えます。変更は次回ログイン以降に反映されます。現在のシェルで即座に反映させるには次のコマンドを追加してください。
$ locale | grep LANG
LANG=ja_JP.UTF-8
補足:localectl について
VPS(systemd 環境)では sudo localectl set-locale LANG=ja_JP.UTF-8 コマンドでもロケールを設定できます。ただし Docker コンテナや systemd なしの環境では使えないため、update-locale の方が汎用的です。
現在のタイムゾーンを確認する
手順1:/etc/timezoneとdateで確認する
タイムゾーンを確認する方法はいくつかあります。最もシンプルなのは /etc/timezone と date コマンドです。
Etc/UTC
$ readlink /etc/localtime
/usr/share/zoneinfo/Etc/UTC
$ date
Sat Jun 13 09:58:39 UTC 2026
Ubuntu 24.04 に tzdata をインストールした直後のデフォルトは Etc/UTC(協定世界時)です。/etc/localtime は /usr/share/zoneinfo/Etc/UTC へのシンボリックリンクになっています。
手順2:timedatectl で確認する(VPS向け)
systemd が動いているVPSでは timedatectl コマンドが便利です。
Local time: Sat 2026-06-13 09:58:39 UTC
Universal time: Sat 2026-06-13 09:58:39 UTC
RTC time: Sat 2026-06-13 09:58:39
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
タイムゾーンをAsia/Tokyoに変更する
方法①:lnコマンドで変更する(汎用・推奨)
Docker コンテナ・VPS どちらでも使える方法です。systemd の有無に関係なく動作するため、最も汎用的な手順です。

$ sudo apt-get install -y tzdata
Setting up tzdata (2026a-0ubuntu0.24.04.1) …
# /etc/localtime を Asia/Tokyo へ変更
$ sudo ln -snf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ echo ‘Asia/Tokyo’ | sudo tee /etc/timezone
Asia/Tokyo
# 変更を確認
$ cat /etc/timezone
Asia/Tokyo
$ date
Sat Jun 13 18:58:47 JST 2026
実測で確認できました。UTC 09:58:47 から JST 18:58:47(+9時間)に正確に変換されています。date コマンドの出力に JST と表示されれば成功です。
注意:dpkg-reconfigure について
sudo dpkg-reconfigure tzdata コマンドは対話形式でタイムゾーンを選択できますが、サーバーの自動構成スクリプトなど非対話的な環境では使えません。ln -snf + tee の方法は非対話的に実行できるため、スクリプトに組み込む際に適しています。
VPSでのtimedatectl利用(systemd環境)
Vultr・DigitalOcean・ConoHa VPS など systemd が動いているVPSでは、timedatectl コマンドがより直感的です。
$ timedatectl list-timezones | grep Asia/T
Asia/Taipei
Asia/Tashkent
Asia/Tbilisi
Asia/Tehran
Asia/Tokyo
Asia/Tomsk
# タイムゾーンを Asia/Tokyo に設定
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl
Local time: Sat 2026-06-13 18:58:47 JST
Universal time: Sat 2026-06-13 09:58:47 UTC
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
timedatectl set-timezone は ln -snf と /etc/timezone への書き込みを一括で行ってくれます。VPSなら timedatectl の方がシンプルでおすすめです。

Ubuntu 22.04 vs 24.04 比較
Ubuntu 22.04 LTS と Ubuntu 24.04 LTS でロケール・タイムゾーンの設定コマンドに違いがあるか実測で比較しました。

実測の結果、ロケール・タイムゾーンの設定コマンドは 22.04 と 24.04 で完全に共通です。違いは:
- Ubuntu 24.04 は Docker イメージに
/etc/default/locale(LANG=C.UTF-8)がプリインストール済み - Ubuntu 22.04 は
/etc/default/localeが存在しない(localeコマンドの出力が空) - tzdata のバージョンは両方とも
2026a-0ubuntu0.X(IANA tz データベース 2026a)
| 項目 | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
|---|---|---|
| /etc/default/locale | なし(デフォルト) | LANG=C.UTF-8(あり) |
| tzdata バージョン | 2026a-0ubuntu0.22.04.1 | 2026a-0ubuntu0.24.04.1 |
| locales パッケージ | 2.35-0ubuntu3.8 | 2.39-0ubuntu8.7 |
| locale-gen コマンド | 共通 | 共通 |
| timedatectl コマンド | 共通 | 共通 |
| サポート期限 | 2027年4月 | 2029年4月(最大2034年) |
よくあるエラーと解決策
①「cannot change locale」エラー
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = “ja_JP.UTF-8”
are supported and installed on your system.
perl: warning: Falling back to a fallback locale (“en_US.UTF-8”).
このエラーは LANG=ja_JP.UTF-8 を設定しているのに locale-gen ja_JP.UTF-8 を実行していない場合に発生します。
解決策: sudo locale-gen ja_JP.UTF-8 を先に実行してからログインし直してください。
②「No such file or directory: /etc/timezone」
Docker コンテナで tzdata パッケージが未インストールの場合、/etc/timezone が存在しません。
解決策: sudo apt-get install -y tzdata でインストールします。DEBIAN_FRONTEND=noninteractive を付けると対話プロンプトを省略できます。
$ DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
Setting up tzdata (2026a-0ubuntu0.24.04.1) …
③ タイムゾーン変更後も date が UTC のまま
ln -snf で変更しても、ログアウト→ログインしないと TZ 環境変数が古いままになることがあります。
解決策: 変更後に一度ログアウト/ログインするか、exec bash でシェルを再起動してください。また timedatectl を使うと即座に反映されます。
まとめ
Ubuntu 24.04 のロケールとタイムゾーン設定をまとめます。
設定手順まとめ
- ロケール確認:
localeとcat /etc/default/locale - 日本語ロケール追加:
sudo apt install locales→sudo locale-gen ja_JP.UTF-8→sudo update-locale LANG=ja_JP.UTF-8 - タイムゾーン確認:
cat /etc/timezoneまたはdate - タイムゾーン変更(汎用):
sudo ln -snf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime+echo 'Asia/Tokyo' | sudo tee /etc/timezone - タイムゾーン変更(VPS/systemd):
sudo timedatectl set-timezone Asia/Tokyo - 変更確認:
dateコマンドでJSTと表示されればOK
VPSを借りてUbuntuサーバーを構築する際は、インストール直後にロケールとタイムゾーンを設定しておくことで、cron のスケジュールやログのタイムスタンプが日本時間になり、運用が格段に楽になります。
本格的にVPSを借りてサーバーを運用したい方は、以下の比較記事も参考にしてみてください。



コメント