WAVE Log
ホームサーバー

使っていない古いノートPCでホームサーバーとやらを建てています。
内輪だけ向けの Web サーバーと、ファイル移動とかチョッとしたファイルの共有のためのファイルサーバーです。

OS は、CentOS Stream 9 です。
x86-64-v2 がサポートされていないといけないようなので、「How do I check if my CPU supports x86-64-v2?」にあるスクリプトを使わせてもらって予め確認してみました。

インストール時のネットワーク設定

とりあえずの設定。
IPv4 だけ、こんな感じで。メソッド(M)は「手動」。

ネットワーク設定

インストール時のネットワーク設定は最小限の設定だったので、IPv4 と IPv6 の DNS 設定を追加変更しています。

接続名を確認

~]# nmcli connection show NAME UUID TYPE DEVICE enp3s0 c8168cd0-8c76-4702-8069-cfd757218542 ethernet enp3s0 lo 768182fa-da2f-4ab9-a45d-91f9646b8340 loopback lo

設定

~]# nmcli connection modify "enp3s0" ipv4.dns "1.1.1.1 8.8.8.8 9.9.9.9" ~]# nmcli connection modify "enp3s0" ipv4.ignore-auto-dns yes ~]# nmcli connection modify "enp3s0" ipv6.dns "2606:4700:4700::1111 2001:4860:4860::8888 2620:fe::fe" ~]# nmcli connection modify "enp3s0" ipv6.ignore-auto-dns yes

※ Public DNS
1. Cloudflare(1.1.1.1 / 2606:4700:4700::1111)
2. Google(8.8.8.8 / 2001:4860:4860::8888)
3. Quad9(9.9.9.9 / 2620:fe::fe)

設定反映

~]# nmcli connection up "enp3s0"

確認

~]# nmcli connection show "enp3s0" | grep dns

ノートPC用設定

サーバー用途で使うノートPCなので、閉じてもスリープさせないために下記設定をしています。

~]# vi /etc/systemd/logind.conf

HandleSuspendKey=ignore HandleHibernateKey=ignore HandleLidSwitch=ignore

反映。

~]# systemctl restart systemd-logind.service

メール

OP25B(Outbound Port 25 Blocking)規制のため、メール送信ができなかったので、Postfix から Gmail 経由でメールを送信するようにしています。※ From アドレスが Gmail になります。

Gmail を経由させるには「アプリパスワード」を使った認証が必要で、Gmail の「アプリパスワード」は、2段階認証を設定していないと作成できません。

アプリを選択で「メール」を選択。デバイスを選択で「その他(名前を入力)」を選択。

生成したアプリパスワードを元に、Gmail の SMTP 認証情報ファイルを作成。

~]# vi /etc/postfix/gmail

[smtp.gmail.com]:587 <Gmailのアドレス>:<Gmailのアプリパスワード>

パーミッションを設定。

~]# chmod 600 /etc/postfix/gmail

Postfix 用の DB ファイルを生成。

~]# postmap /etc/postfix/gmail

Postfix の設定ファイルの最終行に以下の設定を追加。

~]# vi /etc/postfix/main.cf

relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/gmail smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain smtp_use_tls = yes

設定反映。

~]# systemctl reload postfix

PHP

8.2 を入れました。

リスト表示。

~]# dnf module list php

8.2 をデフォルトとして設定してインストール。

~]# dnf module enable php:8.2 ~]# dnf install php php-gd php-json

バージョン確認。

~]# php -v

確認。(現在ロードしているすべてのモジュールの名前を表示)

~]# php -m

tinytag インストール

MP3 ファイルのメタデータを読み込むために tinytag というライブラリをインストールしています。

~]# dnf install python3-pip

~]# pip3 install tinytag

自己署名証明書で SSL 化

ちょっと意外なところで SSL 化を要求された(※)ので、自己署名証明書で https アクセスできるようにしました。

※ JavaScript でクリップボードへテキストをコピーするのに、「Clipboard API」とやらを使っているのですが、コイツが SSL に対応したページでないと動作しないのですわ。
Uncaught TypeError: Cannot read properties of undefined (reading 'writeText')

mod_ssl インストール。

~]# dnf -y install mod_ssl

秘密鍵と自己署名証明書を作成。(入力したのは3ヶ所、あとはエンター。)

~]# openssl req -x509 -sha512 -nodes -days 3650 -newkey rsa:2048 -keyout private.key -out server.crt Generating a 2048 bit RSA private key ‥‥‥‥‥ ‥‥‥‥‥ Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Tokyo Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:homeserver Email Address []:

鍵と証明書を SSL 設定ファイル(/etc/httpd/conf.d/ssl.conf)にデフォルトで書かれているパス,ファイル名で(上書き)保存しちゃう。

~]# mv server.crt /etc/pki/tls/certs/localhost.crt ~]# mv private.key /etc/pki/tls/private/localhost.key

設定反映。

~]# systemctl reload httpd

ポート開放。

~]# firewall-cmd --add-service=https --zone=public --permanent ~]# firewall-cmd --reload

ルータの DNS サービスの機能

ルータは NURO 光の F660A を使っているのですが、「アプリケーション」-「DNSサービス」で「ドメイン名の設定」と「ホスト名設定」をしてホスト名とドメイン名でアクセスできるようにしました。特に必要ではないのですが、その方が感じなので。ドメイン名は本当はキチンと取得しないといけないのでしょうが、文字数を2文字にして絶対に登録されていないドメイン名を設定しています。(.com, .net などは3文字以上)

Samba でファイルサーバー

Samba インストール。

~]# dnf install samba samba-client

共有フォルダ作成。

~]# mkdir /home/share ~]# chmod 777 /home/share

設定ファイル編集。

~]# vi /etc/samba/smb.conf

変更追加

「workgroup」には、Windows のワークグループ名を指定する。

・・・ ・・・ [global] workgroup = SAMBA ↓↓↓ workgroup = WORKGROUP map to guest = bad user unix charset = UTF-8 dos charset = CP932 hosts allow = 192.168.1. 127. ・・・ ・・・ [Share] path = /home/share writable = yes guest ok = yes guest only = yes create mode = 0777 directory mode = 0777

起動およびファイアウォールで Samba を許可。

~]# systemctl enable --now smb nmb ~]# firewall-cmd --add-service=samba --zone=public --permanent ~]# firewall-cmd --reload

クライアント側の設定。

Windows :
「PC」フォルダで右クリック→「ネットワークの場所を追加する」
Fedora :
「他の場所」-「サーバーアドレスを入力…」に「smb://~」を入力して「接続」をクリック。