ゆう's Blog
CentOS Stream 10 : Node.js + opentype.js( text→path )

① Node.js をインストール

sudo dnf install nodejs

バージョン確認

node -v npm -v

② opentype.js の導入(npm)

Web サーバーの任意のディレクトリで:

npm init -y npm install opentype.js

Cockpit を使わないなら

1. firewalld で 9090 を閉じる

~]# firewall-cmd --permanent --remove-service=cockpit ~]# firewall-cmd --reload

2. Cockpit を完全に無効化する

~]# systemctl disable --now cockpit.socket

もし Cockpit を使いたくなる場面が将来出たら
9090 を閉じたまま SSH トンネル経由でのみアクセスが最も安全。

~]$ ssh -L 9090:localhost:9090 user@server

CentOS Stream 10:phpMyAdmin インストール

# dnf --enablerepo=epel -y install phpMyAdmin

初期設定では localhost のみ許可されているため、外部アクセスを許可します。
追加

# vi /etc/httpd/conf.d/phpMyAdmin.conf

・・・ ・・・ <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 Require local Require ip xxx.xxx.xxx.xxx </Directory> ・・・ ・・・

設定変更を反映。

# systemctl restart httpd

phpMyAdmin のログイン画面にアクセス。
http://<サーバーIP>/phpmyadmin/
MySQL/MariaDB のユーザーでログイン。

CPUコア数だけ並列でビルドする

make -j$(nproc)

:~# wget https://download.imagemagick.org/ImageMagick-6.9.13-52.tar.gz :~# tar xf ImageMagick-6.9.13-52.tar.gz :~# cd ImageMagick-6.9.13-52/ :~/ImageMagick-6.9.13-52# ./configure --prefix=/usr/local/im6 :~/ImageMagick-6.9.13-52# make -j$(nproc) :~/ImageMagick-6.9.13-52# make install

bind と bind-chroot を同時にインストールした際の、正しい初回セットアップ手順

1. パッケージのインストール

dnf install bind bind-chroot bind-utils -y

2. 通常のパスで設定ファイルを編集する

chroot 内のファイルではなく、通常のパスにあるファイルを編集・作成します。
メイン設定ファイルの編集: /etc/named.conf
ゾーンファイルの作成: /var/named/example.com.zone

新しくゾーンファイル等を作成した場合は、必ず BIND が読み込めるように所有権を変更してください。

chown root:named /var/named/example.com.zone chmod 640 /var/named/example.com.zone

3. 設定の構文チェック

# メイン設定のチェック named-checkconf /etc/named.conf # ゾーンファイルのチェック(例) named-checkzone example.com /var/named/example.com.zone

4. 通常の「named」サービスを無効化する

bind-chroot を導入した場合、通常の named サービスは使用しません。競合を防ぐために無効化(disable)状態であることを確認します。

systemctl stop named systemctl disable named

5. 「named-chroot」サービスを起動・有効化する

systemctl enable --now named-chroot

BIND設定更新

BIND を再起動する

systemctl restart named-chroot

named.conf 編集時

rndc reconfig

ゾーンファイル編集時

rndc reload example.com

メールに Certbot

mail.example.com の A レコードが Web サーバーの IP を向いていること。

証明書取得だけならバーチャルホスト不要
mail.example.com が Web 表示できなくても問題なし
404 が出ても Certbot は成功する

PDFをJPEGに変換する(Ghostscript)

:~$ sudo dnf install ghostscript

:~$ ghostscript \ -dNOPAUSE -dBATCH -dSAFER \ -sDEVICE=jpeg \ -dJPEGQ=95 \ -r600 \ -dUseCIEColor \ -dColorConversionStrategy=/sRGB \ -dEmbedAllFonts=true \ -dDownScaleFactor=1 \ -sOutputFile=page-%03d.jpg \ input.pdf

各オプションの意味

● -dNOPAUSE / -dBATCH
複数ページ PDF を処理するための基本動作。
削ると ページごとに停止してしまう。

● -dSAFER
セキュリティ強化。
PHP の exec から呼ぶ場合は必須。
ローカル用途なら外部入力がないため不要。

● -sDEVICE=jpeg
JPEG 出力を指定。

● -dJPEGQ=95
JPEG 品質。
95 は「ほぼ可逆に近い最高品質」。
100 は逆にノイズが増えるので非推奨。

● -r600
600dpi でレンダリング。
300dpi → 印刷品質
600dpi → 文字・図形が非常にシャープ

● -dUseCIEColor / -dColorConversionStrategy=/sRGB
PDF の CMYK → RGB 変換を Ghostscript の CIEColor で高精度に行う。
色ズレを最小化するための必須設定。

● -dEmbedAllFonts=true
フォント埋め込みを強制。
PDF 内のフォントが不完全でも Ghostscript が補完して描画。

● -dDownScaleFactor=1
Ghostscript の内部ダウンサンプリングを無効化。
→ 画質劣化を完全に防ぐ。

● -sOutputFile=page-%03d.jpg
複数ページ PDF に対応。
page-001.jpg / page-002.jpg … のように出力。

上記は Web 用(RGB)。印刷用(CMYK)の場合は下記。

:~$ ghostscript \ -dNOPAUSE -dBATCH \ -sDEVICE=tiff32nc \ -r600 \ -dUseCIEColor \ -dColorConversionStrategy=/CMYK \ -dProcessColorModel=/DeviceCMYK \ -dEmbedAllFonts=true \ -dDownScaleFactor=1 \ -sOutputFile=page-%03d.tif \ input.pdf

● - tiff32nc
TIFF の 32bit CMYK(8bit × 4ch)。
印刷用途で最も安定し、可逆圧縮(LZW/ZIP)も適用可能。

● - 600dpi
印刷の標準は 300dpi ですが、
600dpi は文字・図形が極めてシャープ。

● - ColorConversionStrategy=/CMYK
出力色空間を CMYK に固定。
RGB PDF でも CMYK PDF でも、確実に CMYK で出力。

● - ProcessColorModel=/DeviceCMYK
Ghostscript の内部処理も CMYK に統一。
これがないと内部で RGB→CMYK→RGB→CMYK のような劣化が起きる。

● - UseCIEColor
CIE ベースの色変換で、CMYK→CMYK の色ズレを最小化。

● - EmbedAllFonts=true
フォントが壊れた PDF でも Ghostscript が補完して描画。

● - DownScaleFactor=1
内部ダウンサンプリングを完全無効化。
→ 画質劣化ゼロ。

main.cf と master.cf

main.cf は全体のデフォルト設定
master.cf はポートごとの上書き設定

main.cf

smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination message_size_limit = 10485760 smtpd_tls_security_level = may smtp_tls_security_level = may smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 smtp_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

master.cf(submission 587)

submission inet n - n - - smtpd # -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes

master.cf(smtps 465)

smtps inet n - n - - smtpd # -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

自宅サーバーでの IPv6 設定

DNS だけ手動固定
IPv6 アドレスとゲートウェイは自動

ipv6.method: auto ipv6.addresses: -- ipv6.gateway: --

VPS と違う点
項目自宅サーバーVPS
IPv6 アドレス自動(SLAAC)手動(固定値)
IPv6 ゲートウェイ自動(RA)手動(固定値)
RAルーターが送る多くの VPS は送らない
手動設定の必要性不要必須