Ubuntu 22.04 で Apache の Userdir を有効化し、ユーザーごとの public_html を公開する手順です。Userdir は現在の主流構成というより、ユーザー単位の公開ディレクトリを扱う古典的な設定として位置づけます。
現在の Web サーバー運用では、VirtualHost と DocumentRoot を明示してサイト単位で公開する構成が一般的です。Userdir は学習用途、検証用途、ユーザーごとの簡易公開など、限定的な場面で使うものとして扱う方が安全です。
- Apache Userdir の位置づけ
userdirモジュールの有効化public_htmlの作成と権限- 現在の運用で使う場合の注意点
書籍
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Userdir の位置づけ
| 項目 | 考え方 |
| URL | http://example.com/~user/ のような形式で公開する |
| 公開元 | 各ユーザーのホームディレクトリ配下の public_html |
| 用途 | 学習、検証、限定的なユーザー公開 |
| 注意点 | ホームディレクトリ権限と情報公開範囲に注意する |
前提
Apache がインストール済みであることを前提にします。VirtualHost と DocumentRoot を使う通常の構成は、Apache 基本構築の記事で確認します。
Userdir を有効化する
Apache の userdir モジュールを有効化し、設定を反映します。
sudo a2enmod userdir
sudo systemctl restart apache2.service
systemctl status apache2.service --no-pager公開ディレクトリを作成する
対象ユーザーのホームディレクトリに public_html を作成します。Apache がホームディレクトリをたどれるように、ホームディレクトリには実行権限が必要です。
chmod 711 ~
mkdir -p ~/public_html
chmod 755 ~/public_html確認用 HTML を配置する
public_html に確認用ファイルを配置します。
tee ~/public_html/index.html >/dev/null <<'EOF'
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Apache Userdir Test</title>
</head>
<body>
Apache Userdir is enabled.
</body>
</html>
EOF
chmod 644 ~/public_html/index.htmlブラウザまたは curl で確認する
ユーザー名を URL の ~user 部分に入れて確認します。
curl -I http://example.com/~myadmin/
curl http://example.com/~myadmin/設定ファイルを確認する
userdir モジュールの設定は /etc/apache2/mods-enabled/userdir.conf で確認できます。必要に応じて公開対象や禁止対象を調整します。
apache2ctl -M | grep userdir
cat /etc/apache2/mods-enabled/userdir.confセキュリティ上の注意
- ユーザーのホームディレクトリ配下を Web 公開する構成であることを意識する
- 公開対象は
public_htmlに限定し、不要なファイルを置かない - ホームディレクトリの権限を広げすぎない
- 公開するサーバーでは、VirtualHost と DocumentRoot を明示する構成を優先する
- 検証が終わったら
userdirを無効化する
Userdir を無効化する
不要になった場合は userdir モジュールを無効化して Apache を再起動します。
sudo a2dismod userdir
sudo systemctl restart apache2.service
apache2ctl -M | grep userdir || true現在の運用での扱い
Userdir は Apache の基本機能として残っていますが、現在の本番運用では、サイト単位に VirtualHost と DocumentRoot を定義する方が管理しやすいです。Userdir は、ユーザーごとの簡易公開や学習用途に限定して使うのが現実的です。
まとめ
Ubuntu 22.04 で Apache Userdir を有効化すると、各ユーザーの ~/public_html を /~user/ の形式で公開できます。設定自体は簡単ですが、ホームディレクトリ配下を Web から参照可能にするため、公開範囲と権限の確認が重要です。
本番サイトでは VirtualHost と DocumentRoot を明示する構成を優先し、Userdir は限定的な用途に留めます。検証が終わったら a2dismod userdir で無効化します。

