カテゴリー: 記録

Ubuntu 24.04.1 LTSへのアップデート

いままで使っていた22.04 LTSからのアップデートを行った。

まず全体を最新の22.04にするためにaptでupgradeを行い、すべてが最新版になっていることを確認。
sudo apt update
sudo apt upgrade

その後、システムのアップグレードコマンドを実行。回答を求められるプロンプトは基本はすべてyで問題なし(ただし説明はきちんと読んで確認しよう。問題ありとわかったらyでなくnを!)。
sudo do-release-upgrade

最終的に再起動して、完了。

再起動後に動作確認。22.04で設定していたうち、はまったのがphpの環境。
https://www.bn-x.net/archives/note/2023/10/459/
で fastcgi_pass unix:/run/php/php8.1-fpm.sock; としていた箇所、phpのバージョンが8.3になったことから、すべて書き直し。/run/php/のディレクトリを確認したところ、/run/php/php-fpm.sock というバージョン表記なしのソケットがあるので、こちらに表記変更。
fastcgi_pass unix:/run/php/php-fpm.sock;

sudo systemctl reload nginx
でnginxを再起動して完了。

ちなみに、正常アップグレードできた環境はVPSの仮想環境にゲストでインストールされていた環境と、Windows11のWSL2の環境のUbuntu 22.04環境。Windows11のWSL1の環境は、現時点(2024/09)では失敗する。


(その後、WSL1のアップグレードはいったんキャンセルされたようです)

Windows11でライセンスキーを確認表示する

Windows11でライセンスキーを確認表示するには、
ターミナルを管理者権限で開いて、コマンドラインに下記を入力

wmic path SoftwareLicensingService get OA3xOriginalProductKey

まあ、普通は、

Windows は、Microsoft アカウントにリンクされたデジタルライセンスによってライセンス認証されています。

のデジタル認証になっていることが多いので、ライセンスキーを入力する機会はほとんどないと思いますが。


なお、wmicのコマンドは、廃止される予定があるようなので、コマンドラインでの確認は、

(Get-WmiObject -query ‘select * from SoftwareLicensingService’).OA3xOriginalProductKey

のPower Shellコマンドのほうがよさそうです。

INTEL N100搭載のmini PCを購入

いままでRyzen7 3750H搭載のmini PCを使用していたが、ファンの音もうるさくなってSSDもくたびれてきたので、リプレース用として購入。
この価格で(購入時はクーポンもあって23,000円程度で購入)、このスペック。セットアップしたが、きちんと動作し、もたつくところもない。

初期のOSは22H2だったので、ちょっと設定に手間取ったが、23H2にアップデートしたあとは問題なく、動作している。

今回購入したAskHandのmini PCは、Windows11 ProのOEM版を搭載しており、きちんと認証が通った。リテールのWindows11 Proの値段が28,380円であるが、そのOSの金額より安い価格でOSつきのハードウェアが購入できるとは、価格破壊もいいところ。

(ライセンスの確認等は「ミニPCガチャ」で、Windowsがボリュームライセンス外れを引いた時の作業メモが詳しい)

Hyper-VでWindows10を動かしたり、WSLでLinuxを動かしたり、Officeを動かしたり。メモリが16Gなので同時に動かすのは厳しいが、それぞれ必要な時に起動させる程度であれば、まったく問題ないレベル。ゲームをしない普段使いなら、この値段、このスペックで充分と思います(と書きながら、普段使いはM1 Macbook Airだったりしますが)。

ちなみに、ストレージはこんな感じ。アイドル時は30度くらいの温度で低温安定。

HWMonitorで見るとこんな感じ。ファンの音が発生しているのに、ファンを認識していない模様(Amazon商品説明欄にも「AskHand専用の冷却ファンと銅製ヒートシンクを含むアップグレードされた冷却システムを搭載しています」と書かれているから、ファンは搭載されているはず)。

さすがにCPUまわりは、ローパワーなのに鞭打って、ずっと稼働している。が、50度前後であまり高温にはなっていない(これはディスプレイを4Kで出力している時、FULL HDの場合はCPUは4つのコア全部が800MHzと最低限のパワーで動作します。流石に4Kはちょっと厳しいようです)。

再インストールなどの場合は、ドライバを別途インストールする必要があるようですが、この配布先がOneDriveに共有になっていて、セキュリティの面でちょっと怖いところもありますね。

Ubuntu設定メモ

Ubuntuのサーバ設定で主なポイントをメモします。

TimezoneがUTCになっていたので東京に変更。

# timedatectl set-timezone Asia/Tokyo

ホスト名を正しくつける。

# hostnamectl set-hostname www.example.com

Firewallはincomingだけ制御できればいいので、ufwでお手軽設定。80と443を開け、22をlimit設定。limit設定で不正アタック時に自動でブロックする設定になる。

# ufw enable

# ufw allow 80

# ufw allow 443

# ufw limit 22

# ufw status numbered

MySQL 8.xをインストール。

# apt install mysql-common mysql-client mysql-server

PHPは必要なモジュールをあれこれインストール。

# apt install php-fpm php-mbstring php-mysql php-pgsql php-sqlite3 php-xml php php-all-dev php-apcu php-apcu-all-dev php-bcmath php-bz2 php-cli php-cgi php-common php-curl php-date php-dev php-gd php-imagick php-imap php-json php-mail php-mail-mime php-mbstring php-memcache php-memcache-all-dev php-mongodb php-mongodb-all-dev php-mysql php-pclzip php-pear php-pgsql php-php-gettext php-ramsey-uuid php-random-compat php-readline php-redis php-redis-all-dev php-soap php-snmp php-tidy php-uuid php-uuid-all-dev php-xml php-xml-rpc2 php-xmlrpc php-yaml php-yaml-all-dev php-zip php8.1-opcache

Webサーバはnginxをインストール。

# apt install nginx

php-fpmのインストール規定の設定がソケットになっているのでnginxからの接続をIPアドレスからソケットに変更。

#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;

/etc/nginx/conf.d/ssl.confから抜粋

MySQLはrootアカウントでアクセスしてユーザー設定する。MySQLのrootは初期状態でパスワードなし、Linuxのrootでアクセスするとそのまま繋がる。

# mysql -u root mysql

MYSQL> CREATE DATABASE データベース名;
MYSQL> CREATE USER ‘ユーザー名’ IDENTIFIED BY ‘パスワード’;

MYSQL> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,LOCK TABLES,CREATE VIEW, SHOW VIEW ON データベース名.* TO ‘ユーザー名’;

FreeBSD環境でApache 2.4 / PHP 8.2 / Let’s Encrypt / HTTP2を設定する

FreeBSDで、Let’s EncryptでTLS(SSL)の証明書を設定し、HTTP2プロトコルを有効にしたWebサーバを、Apache 2.4とPHP 8.2で作成する。

以下、簡単な手順を記述。

root権限でpkgで必要なものをインストールする。PHPの追加パッケージはお好みで。

pkg install  php82 php82-gd php82-mbstring php82-mysqli php82-pgsql
pkg install apache24 ap24-mod_http2
pkg install py39-certbot py39-certbot-apache

/etc/rc.conf にApache Web Serverの起動設定を行う。

apache24_enable="YES"

Apache Web Serverを起動する。ここではhttpのみの起動となる。

/usr/local/etc/rc.d/apache24 start

Let’s Encryptの実行をして証明書を取得する。httpでサーバにアクセスがあるので、Apache Web Serverの起動されていることが前提。

certbot certonly --webroot -w /usr/local/www/apache24/data -d www.example.com

crontabで定期的に更新するように設定。

0 9 1,15 * * /usr/local/bin/certbot renew

SSLの設定を行う。

cp /usr/local/etc/apache24/extra/httpd-ssl.conf /usr/local/etc/apache24/modules.d/000_httpd-ssl.conf

SSLの設定ファイルをコピーして編集する。Let’s Encryptで作ったキーファイルを指定

SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.example.com/cert.pem"
SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.example.com/privkey.pem"
SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.example.com/fullchain.
pem"
ファイル内の書き換える箇所のみ引用

Apacheの設定では、 /usr/local/www/apache24/httpd.conf を書き換えする。

LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
# LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so

mod_mpm_preforkがデフォルトになっているが、これではHTTP2でPHPを実行できないので、mod_mpm_eventを有効にする。

設置されている /usr/local/etc/apache24/modules.d/200_mod_h2.conf を編集する

LoadModule http2_module libexec/apache24/mod_h2.so

/usr/local/etc/apache24/modules.d/001_php.conf というファイルを作成して編集。

HTTP2の環境でのPHPはmod_phpではなく、php-fpmでの実行となる。

LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_http2_module libexec/apache24/mod_proxy_http2.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
<FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

/etc/rc.conf で起動するように設定

php_fpm_enable="YES"

php-fpmを起動し、Apache Web Serverを再起動する。

/usr/local/etc/rc.d/php-fpm start
/usr/local/etc/rc.d/apache24 restart

Speed Wi-Fi 5G X11 NAR01 ファームウェア 2.6.0→2.8.0

https://www.necplatforms.co.jp/support/wimax/x11/index.html

Speed Wi-Fi 5G X11 NAR01のファームウェア 2.6.0が公開されて、アップデート。

ようやく、省電力モードが「エコ」でなく「ハイパフォーマンス」の設定で安定して動作するようになったかも。

あとは、高負荷時の安定性を確認しないといけないですね。ファームウェア2.3.0では、大容量のダウンロードを連続するなど、負荷を連続してかけ続けると通信が途絶えたり、勝手に再起動したりしていたけど、2.6.0では今のところ、安定しているようだが、どうだろうか。

追記:
こちら1週間ほど使っていますが、安定しています。いままでの不安定さが嘘のよう。このまま安定稼働してくれればよいのですが。

追記2:
ファームウェア2.7.0がリリースされました。こちらにアップデートしましたが、安定動作は変わらず、良好。

ファームウェア2.8.0が2023/08/22にリリースされて、最新版に更新。問題なく動作しています。

vsftpd

めげずにCentOS8に設定中

# dnf install vbsftpd
# systemctl start vsftpd
# systemctl enable vsftpd

FreeBSDでのqmail vpopmailのインストール

まずはportsを最新にする

# portsnap all

portsでqmailをmakeする

# cd /usr/ports/mail/qmail
# make config
# make install
qmailのmake config

configはこんな感じで、設定。あれこれ詰め込んでnetqmailを構築する

続いてcheckpasswordとtcpserverをインストール。この2つはデフォルト設定のままで進む

# cd /usr/ports/security/checkpassword
# make install
# /usr/ports/sysutils/ucspi-tcp
# make install

qmailの基本的な設定は割愛。

/var/qmail/rc は、Maildirの形式にする。

# cp /var/qmail/boot/maildir /var/qmail/rc

vpopmailのインストール

# /usr/ports/mail/vpopmail
# make config
# make install
vpopmailのmake config

configはこんな感じで、設定。あれこれ詰め込んでvpopmailを構築する。

起動スクリプトは、あれこれ自前で設定したいので、独自に作成する。

# vi /usr/local/etc/rc.d/qmail
!/bin/sh

# PROVIDE: qmail
# REQUIRE: LOGIN
# KEYWORD: shutdown

#
# Add the following line to /etc/rc.conf to enable qmail:
# qmail_enable="YES"
#

. /etc/rc.subr

name="qmail"
desc="Enable/Disable qmail"
rcvar="qmail_enable"

load_rc_config "$name"

start_cmd="${name}_start"
command="/var/qmail/bin/qmail-start"

extra_commands="stop"
stop_cmd="${name}_stop"

pidfile="/var/run/${name}.pid"
HOSTNAME=hostname

qmail_start(){
    #start qmail daemon
    /var/qmail/rc start

    /usr/local/bin/tcprules /usr/local/vpopmail/etc/tcp.smtp.cdb \
    /usr/local/vpopmail/etc/tcp.smtp.tmp \
    < /usr/local/vpopmail/etc/tcp.smtp

    #start smtpd
    /usr/local/bin/tcpserver -H -R -v -x /usr/local/vpopmail/etc/tcp.smtp.cdb -c 100 -u qmaild -g qmaild 0 25 \
    /var/qmail/bin/qmail-smtpd 2>&1 \
    | /var/qmail/bin/splogger smtpd &

    #start popd
    /usr/local/bin/tcpserver -R -H 0 110 /var/qmail/bin/qmail-popup $HOSTNAME \
    /usr/local/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 \ | /var/qmail/bin/splogger pop3d &

    /bin/pgrep qmail-send > ${pidfile}
    echo "qmail start"
}

qmail_stop(){
    killall tcpserver
    killall qmail-send
    echo "Shutting down pop & smtp"
}

run_rc_command "$1"
# chmod 0755 /usr/local/etc/rc.d/qmail
# echo qmail_enable=\"YES\" >> /etc/rc.conf
# echo sendmail_enable=\"NONE\" >> /etc/rc.conf

こんな感じで起動スクリプトを置いて、rc.confで起動設定と、標準のsendmailの停止を設定する。

他のプログラムはpkgでイントールしたいので、qmailとvpopmailはpkgで更新されないようにlockをかける

# pkg lock netqmail-1.06_5
# pkg lock vpopmail-5.4.33_3

以上で、qmailとvpopmailの基本的なインストールと設定は終了。

WEBブラウザでアカウント管理するならqmailadminをインストールする。

# cd /usr/ports/mail/qmailadmin
# make install

設定は標準のままでインストールまで行う。

Linux環境であれこれ苦労してパッケージ入れたり、自分でコンパイルすることに比べて、FreeBSDでの構築は非常に簡単ですね。

notqmail/vpopmailをCentOS8にインストールする

[2024/02/19追記]
このところ、gmailの設定であれこれ話題になっているDKIMやSPF,DMARCなどはこちら
メールのなりすましを電子署名Domainkeys/DKIMで防ぐ(qmailまとめ)
qmailの情報収集 2019/08/26
を見ておきましょう。以下の手順はあくまでも素のnotqmailのインストール方法になりますので、ご注意ください。

[追記ここまで]

過去の古いOSのサーバから移行することを目的にqmailの環境をもう一度、新しいOSの環境に構築する。

10年近く何も作業していなかった設定方法のため、1から思い出して処理する必要があった。

いまさらqmailを使うのはどうかと思うが、vpopmailとqmailadminでオペレートが楽なのは評価。あと、過去のOSのサーバからの移行がそのままファイルコピーで済むため、postfixの環境に移行より楽。また、プレーンなqmailでなく、フォークされて開発が続けられているnotqmailをインストールすることにした。

コンパイラをいれておく

dnf install gcc.x86_64

notqmailの入手とmake

https://github.com/notqmail/notqmail からnotqmailのソースコードを取得

ユーザーをシステムに設定


# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails

rootアカウントでmakeしてインストール
# make setup check

初回のドメイン設定
# ./config-fast example.com

rcファイルのコピー
# cp home /var/qmail/rc
# chmod 0755 /var/qmail/rc

rcファイル内は、以下のように書き換え
qmail-start ./Mailbox splogger qmail

qmail-start ./Maildir/ splogger qmail

初期の管理アカウントを設定
(外部の他メールアカウントへ転送の例)
# cd ~alias
# touch .qmail-root .qmail-postmaster .qmail-mailer-daemon
# chmod 644 .qmail*
# echo -n ‘xxx@example.com’ > .qmail-root
# echo -n ‘xxx@example.com’ > .qmail-postmaster
# echo -n ‘xxx@example.com’ > .qmail-mailer-daemon

tcpserverの入手とmake

wget https://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

vi error.h で extern int errno; を #include <errno.h> と書き換える

rootアカウントでmakeしてインストール
# make setup check

vpopmailの入手とmake

wget http://jaist.dl.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.33/vpopmail-5.4.33.tar.gz

vpopmailのアカウントを作成
# groupadd vchkpw
# useradd -g vchkpw -s /bin/false -M vpopmail
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
# mkdir /home/vpopmail/etc
# chown vpopmail:vchkpw /home/vpopmail/etc

rootアカウントにて実行
# ./configure –enable-roaming-users=y –enable-relay-clear-minutes=10
# make
# make install-strip

crontabでpop before smtpのデータを10分ごとにリフレッシュ
0-59/10 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

vpopmailへの新規ドメインの追加
# /home/vpopmail/bin/vadddomain example.com

# su – vpopmail
$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘xxx@example.com’ > .qmail
でpostmasterの設定
(他メールへの転送の設定)
この設定がない場合は /home/vpopmail/domains/example.com/postmaster/Maildir/ へのローカル配送される

$ cd /home/vpopmail/domains/example.com/
$ echo -n ‘xxx@example.com’ > .qmail-root
でrootアカウントのメールの設定
(他メールへの転送の設定)

インストール済みだったMTAを削除しqmailを設定

すでにインストールされていたposfixを削除
# dnf remove postfix

メール関連のコマンドをsymlinkで設定
# ln -s /var/qmail/bin/qmail-qstat /usr/bin/mailq
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

qmailを起動

Daemontoolsを使わずにいったん仮で起動させてローカルのメールデリバリーを確認する
# sh /var/qmail/rc &

Daemontoolsをインストール

# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
展開したディレクトリが実行ファイルの置き場になり/command/からsymlinkとなるため、コンパイル前に展開場所を/usr/local/などにする。

vi src/error.h で extern int errno; を #include <errno.h> と書き換える
# package/install

systemctl用daemontools を設定

/etc/systemd/system/daemontools.service

[Unit]
Description=daemontools Start supervise
After=getty.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0

[Install]
WantedBy=multi-user.target

# systemctl enable daemontools
# systemctl start daemontools

Daemontoolsでsmtp:qmail/pop3:vpoopmailの待ち受けのtcpserverを設定

/var/superviseに必要なディレクトリを作成

# mkdir -p /var/supervise/qmail
# mkdir -p /var/supervise/smtpd
# mkdir -p /var/supervise/pop3

# vi /var/supervise/qmail/run

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail

# vi /var/supervise/smtpd/run

#!/bin/sh
/usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb \
/home/vpopmail/etc/tcp.smtp.tmp \
< /home/vpopmail/etc/tcp.smtp
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v -x /home/vpopmail/etc/tcp.smtp.cdb -u `id -u vpopmail` -g `id -g vpopmail` 0 smtp \
qmail-smtpd 2>&1  | splogger smtp 3

# vi /var/supervise/pop3/run

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v 0 pop3 qmail-popup `hostname` /home/
vpopmail/bin/vchkpw \
qmail-pop3d Maildir 2>&1  | splogger pop3 3

# chmod 0755 /var/supervise/qmail/run
# chmod 0755 /var/supervise/smtpd/run
# chmod 0755 /var/supervise/pop3/run

あとは、/serviceにリンボリックリンクをつける

# cd /service
# ln -s /var/supervise/qmail .
# ln -s /var/supervise/smtpd .
# ln -s /var/supervise/pop3 .

(qmail付属のmultilogの設定は省略、qmail付属のsploggerに投げているので最低限必要なログはsyslog経由で取得できるはず)

これで起動するので、firewalldで閉めているportを開けよう

# firewall-cmd –add-service=smtp –zone=public –permanent
# firewall-cmd –add-service=pop3 –zone=public –permanent
# firewall-cmd –add-port=587/tcp –permanent

daemontoolsの設定は、このへん参照

https://pocolog.bass-world.net/tech/2018/gmo-cloud-centos7-daemontools-tcpserver/
https://yassu.jp/pukiwiki/index.php?daemontools%A4%C7%A5%ED%A5%B0%B5%AD%CF%BF%A4%C8%A5%D7%A5%ED%A5%BB%A5%B9%B4%C9%CD%FD
http://www.marronkun.net/linux/other/daemontools_000040.html
http://www.emaillab.org/djb/daemontools/daemontools-howto.html
https://www.atmarkit.co.jp/ait/articles/0205/21/news002.html

ezmlmのインストール

# wget http://ezmlm.untroubled.org/archive/7.2.2/ezmlm-idx-7.2.2.tar.gz
# tar xzf ezmlm-idx-7.2.2.tar.gz
# cd ezmlm-idx-7.2.2
# make
# make man
# ./ezmlm-test
# make install

qmailadminのインストール

(設定中:時間がとれなくて作業遅延……)

qmailでよく使うコマンド

キューに入っているメールを確認
/var/qmail/bin/qmail-qread

キューに入っている数を確認
/var/qmail/bin/qmail-qstat

キューの強制再送
kill -s ALRM qmail-send のPID

WordPress事始め

ブログにて、あれこれメモを追加していこうと思い、セットアップしました。