この文書は、Dell Latitude E5420(Ubuntu 24.04 LTS)を自宅サーバー「ピノキオ2世号」として運用し、
動的IP回線でも pinocchio.mydns.jp というホスト名で、HTTP/HTTPS でインターネット公開するまでの作業記録です。
pinocchio.mydns.jp)pinocchio.mydns.jp) に結びつけるための無料サービスです。
MasterID : mydns798820
Domain : pinocchio.mydns.jp
今回の例では mydns798820 が MasterID です。
MyDNS.JP の「Domain Info」画面で、サブドメイン名を直接入力します。
pinocchio.mydns.jp最低限の設定は以下の通りです(実際の画面をテキスト化したイメージ):
Domain*
pinocchio.mydns.jp
MX (FQDN) Priority
. 0 ← メールは使わない(Null MX)
Hostname* Type* Content Target ID
* A (空欄) mydns798820
(必要なら他に www や mail も設定)
ip link
ifconfig # または
ip a
例:
(base) murata@LatitudeE5420:~$ ifconfig
enp10s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.194 netmask 255.255.255.0 broadcast 192.168.1.255
ether b8:ac:6f:cb:db:62 txqueuelen 1000 (イーサネット)
...
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.71 netmask 255.255.255.0 broadcast 192.168.1.255
...
enp10s0 が有線LAN、wlp2s0 が無線LAN。enp10s0) を使うのが安定です。家庭内 LAN は 192.168.1.x のネットワークとし、サーバーには次のIPを割り当てる運用としました。
192.168.1.202
この固定化は、ルーターのDHCP静的割り当て機能(MACアドレスに対してIPを常に固定)を使うのが簡単・安全です。
Ubuntu 側は通常通り DHCP でIPを取得しつつ、ルーター側で「特定MACには常に 192.168.1.202 を配る」とします。
確認例:
(base) murata@LatitudeE5420:~$ ip a show enp10s0
2: enp10s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP ...
inet 192.168.1.202/24 brd 192.168.1.255 scope global dynamic noprefixroute enp10s0
valid_lft 12393sec preferred_lft 12393sec
Windows 側のコマンドプロンプトからのSSHログイン例:
C:\Users\mitsuo> ssh murata@192.168.1.202
murata@192.168.1.202's password:
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-51-generic x86_64)
...
(base) murata@LatitudeE5420:~$
ssh-keygen -R IPアドレス で known_hosts から古い鍵を消してから接続し直します。
sudo apt update
sudo apt install apache2
systemctl status apache2
ブラウザから、LAN内PCで次のURLを開きます:
http://192.168.1.202/Apache のデフォルトページが表示されれば OK です。
状態確認:
sudo ufw status
例:
状態: 非アクティブ
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
curl -4 ifconfig.me
出力例:
(base) murata@LatitudeE5420:~$ curl -4 ifconfig.me
218.42.96.86
nslookup pinocchio.mydns.jp
出力例:
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: pinocchio.mydns.jp
Address: 218.42.96.86
curl -4 ifconfig.me で表示されたグローバルIPと、
nslookup pinocchio.mydns.jp の Address が一致していれば、
MyDNS 側の設定とIPアドレス通知が正しく機能しています。
MyDNS.JP では、次のような URL にアクセスすると、現在のグローバルIPアドレスを通知できます。
https://www.mydns.jp/directip.html?MID=MasterID&PWD=パスワード
実際の例:
curl "https://www.mydns.jp/directip.html?MID=mydns798820&PWD=あなたのログインパスワード"
成功時には、次のようなHTMLが返ってきます。
Login and IP address notify OK.
login_status = 1.
MASTERID :
mydns798820
IPv4 ADDRESS:
218.42.96.86
ACCESS DAYTIME:
2025/12/26 01:12:38 UTC
REMOTE ADDRESS:
218.42.96.86
PWD= に指定します。
/home/murata/mydns_update.sh を作成し、次のような内容を書き込みます。
#!/bin/bash
# MyDNS.JP に現在のグローバルIPアドレスを通知するスクリプト
# MasterID と PWD は自分のアカウント情報に合わせて書き換える
MYDNS_MID="mydns798820"
MYDNS_PWD="ここにMyDNSのログインパスワード"
# IPv4 アドレスを通知
curl -4 "https://www.mydns.jp/directip.html?MID=${MYDNS_MID}&PWD=${MYDNS_PWD}"
chmod +x /home/murata/mydns_update.sh
murata ユーザーの crontab を編集します。
crontab -e
初回はエディタ選択画面が出るので、数字の 1 を押して nano を選びます。
ファイル末尾に次の行を追記します(例:毎日 朝3時に通知):
# m h dom mon dow command
0 3 * * * /home/murata/mydns_update.sh >> /home/murata/mydns_update.log 2>&1
編集後、保存して終了します(nanoなら Ctrl+O → Enter → Ctrl+X)。
crontab -l
例:
(base) murata@LatitudeE5420:~$ crontab -l
# m h dom mon dow command
0 3 * * * /home/murata/mydns_update.sh >> /home/murata/mydns_update.log 2>&1
手動でスクリプトを実行してみます。
/home/murata/mydns_update.sh
ログファイルを確認します:
cat /home/murata/mydns_update.log
また、curl -4 ifconfig.me と nslookup pinocchio.mydns.jp で、
IPアドレスが一致していることも合わせて確認します。
RX-600KI の設定画面にブラウザからアクセスし、ポートマッピング(NAPT)設定を行います。
ルーターによっては、反映のために再起動が必要な場合があります。
IP電話などへの影響がある場合は、LANケーブルを一時的に外すなど、慎重に作業します。
まずパッケージ情報を更新し、Certbot と Apache 用プラグインをインストールします。
sudo apt update
sudo apt install certbot python3-certbot-apache
Ubuntu の Apache で SSL を扱うために、モジュールとデフォルトSSLサイトを有効化します。
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl reload apache2
sudo ss -tlnp | grep 443
例:
LISTEN 0 511 *:443 *:* users:(("apache2",pid=12557,fd=6),...)
これが表示されれば、Apache は HTTPS 用の入口(玄関)を開いています。
いよいよ、Let's Encrypt から正式な証明書を取得します。
sudo certbot --apache -d pinocchio.mydns.jp
途中で次のような質問が出ます:
YY or N証明書取得に成功すると、次のようなログが表示されます:
Requesting a certificate for pinocchio.mydns.jp
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/pinocchio.mydns.jp/fullchain.pem
Key is saved at: /etc/letsencrypt/live/pinocchio.mydns.jp/privkey.pem
This certificate expires on 2026-03-27.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
We were unable to find a vhost with a ServerName or Address of pinocchio.mydns.jp.
Which virtual host would you like to choose?
...
1: 000-default.conf | | | Enabled
2: default-ssl.conf | | HTTPS | Enabled
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Successfully deployed certificate for pinocchio.mydns.jp to /etc/apache2/sites-enabled/default-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://pinocchio.mydns.jp
/etc/letsencrypt/live/pinocchio.mydns.jp/fullchain.pem/etc/letsencrypt/live/pinocchio.mydns.jp/privkey.pem
Certbot は systemd のタイマーにより定期的に更新を試みます。
有効期限(おおよそ90日)前に自動更新されるため、基本的には放置で構いません。
https://pinocchio.mydns.jphttps://pinocchio.mydns.jp/~user00/ などサブディレクトリも確認します。
LINE などで URL を送信すると、ページ内容のプレビューが表示され、
実際に外部から閲覧できていることを確認できます。
サーバー時刻が正しく NTP 同期されているか確認します。
timedatectl
例:
Local time: 木 2025-12-25 11:01:55 JST
Universal time: 木 2025-12-25 02:01:55 UTC
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
ここで System clock synchronized: yes となっていれば、
cron や証明書の更新など、時刻に依存する処理も安心して任せることができます。
OS 再起動:
sudo reboot
再起動後に確認するポイント:
systemctl status apache2)curl -4 ifconfig.me でグローバルIPを確認nslookup pinocchio.mydns.jp が同じIPを指しているかcrontab -l で IP通知の設定が残っているかip link # インターフェース一覧
ip a # IPアドレス確認
ifconfig # 旧来の表示(必要なら)
curl -4 ifconfig.me # 自分のグローバルIPv4アドレス
nslookup pinocchio.mydns.jp # DNSで引いたIPアドレス確認
systemctl status apache2 # Apacheの状態
sudo ss -tlnp | grep 80 # 80番ポートの待ち受け確認
sudo ss -tlnp | grep 443 # 443番ポートの待ち受け確認
timedatectl # 時刻とNTP同期の確認
/home/murata/mydns_update.sh # 手動でIPを通知
crontab -e # cron編集
crontab -l # cronの一覧
sudo certbot --apache -d pinocchio.mydns.jp # 初回の証明書取得
sudo certbot renew --dry-run # 更新テスト
ls -l /etc/letsencrypt/live/pinocchio.mydns.jp # 証明書の確認
以上が、「1週間かけても終わらなかったかもしれない作業」を、
実際にやりきった記録です。
このHTMLをベースに、将来「小テスト成績管理システム」や
別のサーバー(ピノキオ3世号…)を立ち上げるときにも、
経験とノウハウの“設計図”として使い回せるはずです。