この記事は、「自宅サーバーでWebサイトを作ってみたい初心者」向けの記事です。
- 自宅サーバーって何?
- ラズパイで何ができるの?
- Webサーバーってどう立てるの?
このあたりが まだふわっとしている人 を想定しています。
できるだけ 「何をしているか分からないまま進まない」 ように解説していきます。
今回は長くなるので 前編 です。
用意するもの
物理環境
最低限、以下が必要です。
- サーバー(今回は Raspberry Pi 前提)
- 電源
- ネットワーク接続(有線 or Wi-Fi)
- 初期設定用のPC(OSインストール時に必要)
サーバーの環境
ラズパイ側で以下を済ませておいてください。
- OSのインストール
(Raspberry Pi Imager などを使用) - SSHの有効化
※必須ではないけど、ほぼ必須 - OSの初期設定
(ユーザー名、Wi-Fi設定など) - 必須パッケージのインストール
(ラズパイOSなら大体最初から入ってます)
ここが終わっていればOKです。
サーバー構築(Flaskで最小構成)
今回は Python + Flask を使って、
「とりあえずWebページが見える」状態を作ります。
ターミナルを開く
- ラズパイに直接接続してもOK
- SSH経由でもOK
※ SSHの設定方法は別記事に任せます。
Flaskのインストール
念のため、Flaskを入れておきます。
pip install flask
エラーが出る場合はこちら。
pip install flask --break-system-packages
ラズパイOSの仕様で怒られることがあります。
初心者のうちは深追いしなくて大丈夫です!
作業ディレクトリを作成
mkdir server
cd server
サーバープログラムを作成
nano server.py
以下を入力してください。
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html")
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True, port=5000)
⚠️ 注意ポイント
-
host="0.0.0.0":外部からアクセスできるようにするため -
debug=True:開発用(本番では絶対OFF)
保存方法:
-
Ctrl + X→Y→ Enter
(MacのSSHでもControl + X)
HTMLファイルを作成
mkdir templates
nano templates/index.html
中身は以下。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>ラズパイWebサーバー起動中</p>
</body>
</html>
正直、こんなに長いHTMLじゃなくて全然OKです。
起動確認
python3 server.py
エラーが出なければ起動成功。
一度止めます。
Ctrl + C
IPアドレスを確認する
ifconfig
表示例(伏せ字あり):
eth0:
inet 192.168.xxx.xxx
ここで重要なのは:
-
127.0.0.1ではない -
192.168.xxx.xxxのように、127から始まっていない方
この IPアドレスを覚えてください。
ブラウザからアクセス
もう一度サーバーを起動。
python3 server.py
同じルーターに接続している端末から、
以下にアクセスします。
http://<IPアドレス>:5000
画面が表示されたら成功です 🎉
ルーターの設定(ポートフォワーディング)
⚠️ ここから一気に危険度が上がります
ルーター管理画面へ
ルーターの管理画面は、ルーターの機種・メーカーによって異なります。
よくある例は以下ですが、必ずしも当てはまるとは限りません。
詳しくは各メーカーの取扱説明書をご覧ください。
192.168.0.1192.168.1.1192.168.10.1192.168.100.1
ポートフォワーディング設定
- IPv4 ポートフォワーディングを探す
- 内部IP:ラズパイのIP
- ポート:
5000 - 優先度:5くらい
これで 外部からもアクセス可能 になります。
⚠️ 注意
- Flaskの
debug=Trueのまま公開しない - 本番利用は絶対NG
- あくまで 検証用・学習用
前編まとめ
- ラズパイでWebサーバーは意外と簡単
- Flaskを使うと爆速で確認できる
- IPアドレスとポートの概念が超重要
- ポート開放は便利だけど危険
次回(後編)
後編では、
- セキュリティ最低限どうする?
- ポート5000卒業
- 常時起動
- ドメインの話
この辺をやります。
おわりに
ここまで読んでくれてありがとうございます!
間違い・ツッコミ・改善案は大歓迎です。
👉 続編はこちら