#author("2026-01-06T01:29:13+00:00","","") #author("2026-01-06T01:29:48+00:00","","") #contents(); ** 障害内容 → 部品交換 [#x9130abc] *** 障害内容(2025/12/23) [#z86c0c94] -EPGStation アプリが表示できなくなった(pukiwiki, samba 等は正常) -reboot すらできなくなった [KGB2] munakata:~$ sudo reboot Broadcast message from root@kgb2 on pts/1 (Tue 2025-12-23 17:52:35 JST): The system will reboot now! Call to Reboot failed: Access denied -- sudo reboot 自体は実行された -- systemd が reboot トランザクションを開始 -- しかし 最後の reboot syscall が拒否された -- systemd-logind は生きている -- しかし reboot.target がロードできない -- そのため Access denied(= 実行不能) - systemdの再インストールを試みたが以下のエラーが出て更新できず dpkg: unrecoverable fatal error, aborting: loading files list file for package 'logrotate': cannot open /var/lib/dpkg/info/logrotate.list (不正なメッセージです) Error: GDBus.Error:org.freedesktop.systemd1.NoSuchUnit: Unit packagekit.service not found. E: Sub-process /usr/bin/dpkg returned an error code (2) -- これは systemd 以前に dpkg のデータベース自体が破損している 状態です。なので reboot.target が無いのも結果であって原因ではありません。 -- rescue 環境で fsck → dpkg 再構築 or OS 再インストール(/data 保持)を ChatGPT に勧められたが - &color(red){起動用メディアの故障率が気になった(あなたのログには、危険信号が揃っています)}; -> &ref(nvme_error.txt); [KGB2] munakata:~$ sudo dmesg | grep -i -E "ext4|nvme|i/o error" [563027.945734] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.946248] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.946961] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.948109] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.948801] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.949384] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.949787] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.950963] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.951360] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [563027.951831] EXT4-fs error (device nvme1n1p2): ext4_dx_find_entry:1798: inode #7602363: block 36: comm dpkg: Directory block failed checksum [616649.534913] EXT4-fs error: 10 callbacks suppressed [616649.534916] EXT4-fs error (device nvme1n1p2): htree_dirblock_to_tree:1109: inode #7602363: block 30417215: comm apport: bad entry in directory: inode out of bounds - offset=88192, inode=1936288814, rec_len=116, size=4096 fake=0 [616649.535380] EXT4-fs error (device nvme1n1p2): htree_dirblock_to_tree:1083: inode #7602363: block 36: comm apport: Directory block failed checksum [616649.535839] EXT4-fs error (device nvme1n1p2): htree_dirblock_to_tree:1083: inode #7602363: block 36: comm apport: Directory block failed checksum [616868.773653] EXT4-fs (nvme0n1p1): error count since last fsck: 5 [616868.773671] EXT4-fs (nvme0n1p1): initial error at time 1761496052: ext4_mb_generate_buddy:1217 [616868.773679] EXT4-fs (nvme0n1p1): last error at time 1766019732: ext4_mb_generate_buddy:1217 [627354.624630] EXT4-fs (nvme1n1p2): error count since last fsck: 129 [627354.624643] EXT4-fs (nvme1n1p2): initial error at time 1765715322: htree_dirblock_to_tree:1083: inode 7602363: block 36 [627354.624658] EXT4-fs (nvme1n1p2): last error at time 1766320222: htree_dirblock_to_tree:1083: inode 7602363: block 36 [630992.102962] EXT4-fs error (device nvme0n1p1): ext4_mb_generate_buddy:1217: group 1805, block bitmap and bg descriptor inconsistent: 32760 vs 32762 free clusters + nvme1n1p2(root)が“進行性”に壊れている EXT4-fs (nvme1n1p2): error count since last fsck: 2 → 25 → 48 → 77 → 106 → 149 ++fsck していないのに エラーカウントが増え続けている ++同じ inode / block を何度も壊す ++👉 メディア上の同一物理領域が不安定 + ext4 の「チェックサム破壊」+「inode out of bounds」 Directory block failed checksum inode out of bounds bad entry in directory ++これはソフトウェアバグではほぼ起きない ++メモリ化けだけでもここまで繰り返さない ++👉 ストレージ層でのビット化けを強く示唆 + dpkg / apport / unattended-upgr が巻き添えで死んでいる comm dpkg comm apport comm unattended-upgr ++ランダムではなく「書き込みが多い領域」から壊れる ++/var/lib/dpkg が最初に死ぬのは典型 - 👉 &color(red){「OS が壊れた」のではなく「OS を載せている床が崩れている」}; - &color(red){起動用メディア(NVMeSSD /dev/nvme)を新品に交換して OS 再インストール}; が最も安全・最短・確実 *** 交換前のディスクレイアウト(実メディアのみ) [#k08b28e3] [KGB2] munakata:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/nvme1n1p2 457G 49G 385G 12% / /dev/nvme1n1p1 1.1G 6.2M 1.1G 1% /boot/efi /dev/nvme0n1p1 3.6T 1.7T 1.8T 49% /dtv_recipe /dev/md0 7.3T 2.9T 4.0T 43% /raid_vol /dev/sdc1 15T 8.3T 5.5T 61% /dtv_h264B /dev/sdd1 13T 5.6T 6.5T 47% /dtv_h264A /dev/sde1 13T 8.1T 4.0T 68% /dtv_h264C *** 交換部品(nvme1n)[#xfbeb089] - 現状 / ディレクトリは 50G 程度しか消費していないので、512G→256Gのサイズダウンを行った - fanxiang SSD S500 Pro 256GB: NVMe PCIe Gen3.0x4 2800MB/s TLC 3D NAND M.2 2280 内蔵SSD 32Gb/s 200TBW 5年保証 -- &ref(256GNVME.png); ** リカバリー準備 [#s14c1429] *** ファイルバックアップ → / 以外のHDDをすべて切断 [#r9c4e1f1] - /etc 以下 [KGB2] munakatasudo:~$ sudo mkdir -p /raid_vol/reinstall_backup/etc [KGB2] munakatasudo:~$ sudo cp -a /etc /raid_vol/reinstall_backup/ - ユーザー、グループ情報 [KGB2] munakatasudo:~$ getent passwd | sudo tee /raid_vol/reinstall_backup/passwd.txt > /dev/null [KGB2] munakatasudo:~$ getent group | sudo tee /raid_vol/reinstall_backup/group.txt > /dev/null - cron / timers [KGB2] munakatasudo:~$ sudo crontab -l > sudo tee /raid_vol/reinstall_backup/root.cron > /dev/null [KGB2] munakatasudo:~$ crontab -l > /raid_vol/reinstall_backup/munakata.cron - mdadm RAID [KGB2] munakatasudo:~$ sudo mdadm --detail --scan | sudo tee /raid_vol/reinstall_backup/mdadm.conf > /dev/null [KGB2] munakatasudo:~$ sudo mdadm --detail /dev/md0 | sudo tee /raid_vol/reinstall_backup/md0.detail > /dev/null - netplan (network 設定) [KGB2] munakatasudo:~$ sudo cp -a /etc/netplan /raid_vol/reinstall_backup/ - Docker / コンテナ(mirakurun だけ Docker で運用中) -- docker-compose / volumes(overlayfs は再構築されますが volume は残ります) [KGB2] munakatasudo:~$ sudo cp -a /var/lib/docker /raid_vol/reinstall_backup/ [KGB2] munakatasudo:~$ sudo cp -a /etc/docker /raid_vol/reinstall_backup/ ** リカバリー(環境) [#t5bf43aa] *** OS re-install [#p3051c48] - [[Ubuntu 24.04.3 server:https://ubuntu.com/download/server]] を利用 -- [[Release Notes:https://discourse.ubuntu.com/t/ubuntu-24-04-lts-noble-numbat-release-notes/39890]] - NVMeSSD には手動でパーティションを作成 |Partition|Mouont Point|Size|Format|h |nvme0n1p1|未使用|端数(1M)|| |nvme0n1p2|/boot|32G|ext4| |nvme0n1p3|/|残りすべて(206G)|ext4| - Ubuntu serverはOSインストール中にnetplanを利用した固定IP設定を行う [KGB2] munakata:~$/raid_vol/reinstall_backup/etc$ sudo cat netplan/50-cloud-init.yaml # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: enp7s0: addresses: - 192.168.11.20/24 nameservers: addresses: - 192.168.11.1 search: [] routes: - to: default via: 192.168.11.1 version: 2 wifis: {} *** RAID0 [#tff529b9] - RAIDディスクペアを接続した時に sda-sda1-md127 と sdb-sdb1-md127 という2つのボリュームが見える -- RAID1 の メンバーは正しく検出されている -- しかし旧 md0 の名前が引き継がれず system が 一時名 md127 を振った - sda1, sdb1 の UUID が一致していることを確認 [KGB2] munakatasudo:~$ lsblk [KGB2] munakatasudo:~$ cat /proc/mdstat [KGB2] munakatasudo:~$ sudo mdadm --examine /dev/sda1 [KGB2] munakatasudo:~$ sudo mdadm --examine /dev/sdb1 - 自動生成された md127 を停止する [KGB2] munakatasudo:~$ sudo mdadm --stop /dev/md127 - md0 としてRAID0を再構成 [KGB2] munakatasudo:~$ sudo mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 - md0に対してfsckを実行 [KGB2] munakatasudo:~$ sudo fsck.ext4 -f /dev/md0 - 手動マウント [KGB2] munakatasudo:~$ sudo mkdir -p /raid_vol [KGB2] munakatasudo:~$ sudo mount /dev/md0 /raid_vol - 永続化 [KGB2] munakatasudo:~$ sudo mdadm --detail --scan | sudo tee /etc/mdadm/mdadm.conf - initramfs 更新 [KGB2] munakatasudo:~$ sudo update-initramfs -u - 再起動して md0 が正常にマウントされることを確認 *** その他 HDD/SSD リカバリー → ディスク認識 [#pf4cfbda] - 各ドライブを接続し、マウントする前に各パーティションに対して fsck をかける - /boot のフォーマット指定が変わった(FAT32 → ext4) のでUUIDの指定が変わった - fstab のパラメータの ''defaults を間違って default と書いたら'' swap がマウントできなくなり修正に一苦労 - 現状の fstab の設定 # <file system> <mount point> <type> <options> <dump> <pass> /swap.img none swap sw 0 0 /dev/md0 /raid_vol ext4 defaults,nofail 0 0 UUID=26648dca-75d8-474a-8d4e-e4c0661909da / ext4 defaults 0 1 UUID=eefb4256-7f5f-4dd9-9e20-2ef0837a5e68 /boot ext4 defaults 0 1 UUID=2665e64e-338c-43b7-963a-2465a48f973c /dtv_recipe auto nosuid,nodev,nofail 0 0 UUID=673bf4bd-ab71-41e3-adfa-2326241f1152 /dtv_h264A auto nosuid,nodev,nofail 0 0 UUID=ddf9c10e-9018-4a38-aecb-d94eccf8f061 /dtv_h264B auto nosuid,nodev,nofail 0 0 UUID=6c0e0325-f4b9-4fb4-84b3-e9c31adb5a5b /dtv_h264C auto nosuid,nodev,nofail 0 0 *** sshd 有効化 [#nee85bf8] - ssh-server のインストール(インストーラで対応済の可能性もある) [KGB2] munakatasudo:~$ sudo apt install openssh-server - 設定情報はバックアップから戻す(/etc/ssh/sshd_config) -- ssh ポート = 8722 -- rootによるログイン禁止 -- &color(red){パスワードによるログイン禁止}; -- 公開鍵方式のログインのみ受付 - 認証情報は home/munakata/.ssh の下に残っている - 自動起動設定(systemd サービス登録) [KGB2] munakatasudo:~$ sudo systemctl enable ssh [KGB2] munakatasudo:~$ sudo systemctl start ssh - 設定確認 [KGB2] munakatasudo:~$ sshd -t Missing privilege separation directory: /run/sshd というエラーが出るが、ssh接続中でないので /run 以下のディレクトリーが無いため(正常) 実験用に /run/sshd を作成して再テスト [KGB2] munakatasudo:~$ sudo mkdir -p /run/sshd [KGB2] munakatasudo:~$ sudo chmod 755 /run/sshd [KGB2] munakatasudo:~$ sudo sshd -t 何も表示されなければ OK *** ネットワークインターフェースの調整 [#z79c9620] - NVMe交換の影響か、PCIの番号割り当てが変化したようで、ネットワークインターフェース名が変わった(enp6s0→enp7s0) - 結果として優先LANが活性化できず、ネットがダウンした状態 - /etc/netplan/50-cloud-init.yaml を編集して、正しいインターフェース名を再設定した - ネットワークステータス確認 [KGB2] munakata:~$ networkctl status ● Interfaces: 3, 2, 1 State: routable Online state: online Address: 192.168.11.20 on enp7s0 172.17.0.1 on docker0 fe80::9e6b:ff:fe93:286b on enp7s0 Gateway: 192.168.11.1 on enp7s0 DNS: 192.168.11.1 8.8.8.8 Search Domains: hmuna.com 12月 25 14:36:18 kgb2 systemd-networkd[987]: lo: Gained carrier 12月 25 14:36:18 kgb2 systemd-networkd[987]: Enumeration completed 12月 25 14:36:18 kgb2 systemd[1]: Started systemd-networkd.service - Network Configuration. 12月 25 14:36:18 kgb2 systemd-networkd[987]: enp7s0: Configuring with /run/systemd/network/10-netplan-enp7s0.network. 12月 25 14:36:18 kgb2 systemd[1]: Starting systemd-networkd-wait-online.service - Wait for Network to be Configured... 12月 25 14:36:18 kgb2 systemd-networkd[987]: enp7s0: Link UP 12月 25 14:36:21 kgb2 systemd-networkd[987]: enp7s0: Gained carrier 12月 25 14:36:22 kgb2 systemd-networkd[987]: enp7s0: Gained IPv6LL 12月 25 14:36:22 kgb2 systemd[1]: Finished systemd-networkd-wait-online.service - Wait for Network to be Configured. 12月 25 14:36:23 kgb2 systemd-networkd[987]: docker0: Link UP *** samba 有効化 [#r900dffc] - バックアップから設定を戻す(&ref(smb.conf,center,/etc/samba/smb.conf);) [KGB2] munakatasudo:~$ sudo cp -a /raid_vol/reinstall_backup/etc/samba /etc/ [KGB2] munakatasudo:~$ sudo chown -R root:root /etc/samba [KGB2] munakatasudo:~$ sudo chmod 755 /etc/samba - ユーザー確認と追加(Linux ユーザーとは別に設定必要) [KGB2] munakatasudo:~$ getent passwd munakata(passwd ファイル内のmunakataエントリーの表示) [KGB2] munakatasudo:~$ sudo smbpasswd -a munakata(samba パスワードの設定) [KGB2] munakatasudo:~$ sudo smbpasswd -e munakata() - smbd/mnbd の自動起動設定 [KGB2] munakatasudo:~$ sudo systemctl enable smbd nmbd [KGB2] munakatasudo:~$ sudo systemctl start smbd nmbd - ローカルでログイン確認 -- パスワード(Ubuntu と同じ)でログインして一覧が見れればOK [KGB2] munakatasudo:~$ smbclient -L localhost -U munakata Password for [TEAMSPRIT\munakata]: Sharename Type Comment --------- ---- ------- HDR_Recipe Disk magu's HDR space HDR_264A Disk magu's encoded video HDR_264B Disk magu's encoded video2 HDR_264C Disk magu's encoded video3 winshare Disk Ubuntu <-> Windows file exchange peewee Disk pee wee tree2 IPC$ IPC IPC Service (kgb2 server (Samba, Ubuntu)) SMB1 disabled -- no workgroup available *** APCUPS(自動シャットタウン) [#zb2408ce] - USB接続確認(最初、ケーブルが抜けていた) [KGB2] munakata:~$ lsusb | grep American Bus 001 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply - /etc/apcupsd/apcupsd.confの設定を修正(DEVICEは空欄、/dev/ttyS0 は間違い) [KGB2] munakata:~$ sudo systemctl restart apcupsd [KGB2] munakata:~$ sleep 2 [KGB2] munakata:~$ apcaccess APC : 001,036,0858 DATE : 2025-12-26 14:04:19 +0900 HOSTNAME : kgb2 VERSION : 3.14.14 (31 May 2016) debian UPSNAME : kgb2 CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2025-12-25 14:36:22 +0900 MODEL : APC RS 550S STATUS : ONLINE <----------- 読めてる LINEV : 100.0 Volts <----------- 読めてる LOADPCT : 16.0 Percent <----------- 読めてる BCHARGE : 100.0 Percent <----------- 読めてる TIMELEFT : 5.5 Minutes MBATTCHG : 5 Percent MINTIMEL : 3 Minutes MAXTIME : 0 Seconds SENSE : Medium LOTRANS : 82.0 Volts HITRANS : 123.0 Volts ALARMDEL : No alarm BATTV : 13.7 Volts LASTXFER : Automatic or explicit self test NUMXFERS : 0 TONBATT : 0 Seconds CUMONBATT: 0 Seconds XOFFBATT : N/A SELFTEST : NO STATFLAG : 0x05000008 SERIALNO : 3B1824X71423 BATTDATE : 2018-06-16 NOMINV : 100 Volts NOMBATTV : 12.0 Volts NOMPOWER : 330 Watts FIRMWARE : 941.c6 .A USB FW:c6 END APC : 2025-12-26 14:04:55 +0900 -- バッテリー稼働が 3分以上 or 残量5%以下 → apcupsd が shutdown 発行 *** タイムゾーン設定、タイムソース設定 [#hac6598b] - JSTにタイムゾーンを設定(デフォルトはUTC) [KGB2] munakata:~$ timedatectl set-timezone Asia/Tokyo [KGB2] munakata:~$ timedatectl Local time: 金 2025-12-26 14:15:30 JST Universal time: 金 2025-12-26 05:15:30 UTC RTC time: 金 2025-12-26 05:15:30 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no - タイムソース Chrony のインストールと有効化 [KGB2] munakata:~$ sudo apt install chrony [KGB2] munakata:~$ sudo systemctl enable chrony [KGB2] munakata:~$ sudo systemctl start chrony [KGB2] munakata:~$ [KGB2] munakata:~$ chronyc tracking Reference ID : A0107185 (v160-16-113-133.ntp.tky2s.rnode.jp) Stratum : 3 Ref time (UTC) : Fri Dec 26 05:10:53 2025 System time : 0.000173699 seconds fast of NTP time Last offset : +0.000241416 seconds RMS offset : 0.000129010 seconds Frequency : 5.812 ppm fast Residual freq : +0.006 ppm Skew : 0.041 ppm Root delay : 0.009385331 seconds Root dispersion : 0.000646178 seconds Update interval : 1033.5 seconds Leap status : Normal [KGB2] munakata:~$ chronyc sources -v .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^- alphyn.canonical.com 2 10 377 101m -66us[ +74us] +/- 97ms ^- prod-ntp-5.ntp4.ps5.cano> 2 10 377 645 +3848us[+4087us] +/- 111ms ^- prod-ntp-4.ntp1.ps5.cano> 2 10 377 342 +3914us[+3914us] +/- 111ms ^- prod-ntp-3.ntp4.ps5.cano> 2 10 377 511 +3695us[+3936us] +/- 111ms ^- x.ns.gin.ntt.net 2 10 377 928 +3152us[+3387us] +/- 92ms ^- time.cloudflare.com 3 10 377 311 +4046us[+4046us] +/- 58ms ^* v160-16-113-133.ntp.tky2> 2 10 377 467 +624us[ +865us] +/- 4724us ^+ tokyo.timeadjust.org 2 10 377 1185 +94us[ +325us] +/- 5064us *** ロケール(日本語)の設定 [#ib5b4c20] - 日本語ロケールの生成 [KGB2] munakata:~$ sudo apt update [KGB2] munakata:~$ sudo apt install -y locales [KGB2] munakata:~$ sudo locale-gen ja_JP.UTF-8 [KGB2] munakata:~$ locale -a | grep ja_JP ja_JP.utf8 - システムのデフォルトロケールを設定 [KGB2] munakata:~$ sudo update-locale LANG=ja_JP.UTF-8 *** [[Ubuntu pro:https://ubuntu.com/pro/]] (Live Patch,..) 登録 [#j793ab20] - &ref(Upro1.png); - &ref(Upro2.png); *** raid1 の自動再チェックのインターバル修正 [#f2fabb8a] - raid1 の自動再構成インターバルは systemd の User Timer で設定する - デフォルトは1ヵ月周期だが、これを3ヵ月、半年などに変更する - 現在の設定の確認 [KGB2] munakata:~$ systemctl list-timers mdcheck_start.timer NEXT LEFT LAST PASSED UNIT ACTIVATES Sun 2026-02-01 20:05:52 JST 3 weeks 6 days Sun 2026-01-04 17:48:29 JST 14h ago mdcheck_start.timer mdcheck_start.service 1 timers listed. Pass --all to see loaded but inactive timers, too. - 設定可能なインターバル |目的|設定|h |半年に1回|OnCalendar=semiannually| |3ヶ月に1回|OnCalendar=quarterly| |年1回|OnCalendar=yearly| |毎月第1日曜 3:00|OnCalendar=Sun *-*-1..7 03:00| - 設定ファイルを変更(下のサンプル部分を変更しても反映されない点に注意、ファイルに書いてある通り) [KGB2] munakata:~$ sudo systemctl edit mdcheck_start.timer ### Editing /etc/systemd/system/mdcheck_start.timer.d/override.conf ### Anything between here and the comment below will become the contents of the drop-in file [Timer] OnCalendar= OnCalendar=semiannually ### Edits below this comment will be discarded ### /usr/lib/systemd/system/mdcheck_start.timer # # This file is part of mdadm. # # # # mdadm is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by # # the Free Software Foundation; either version 2 of the License, or # # (at your option) any later version. # # [Unit] # Description=MD array scrubbing # # [Timer] # OnCalendar=Sun *-*-1..7 1:00:00 # RandomizedDelaySec=24h # Persistent=true # # [Install] # WantedBy=mdmonitor.service # Also=mdcheck_continue.timer - 変更を反映し、正しく更新されたか確認する [KGB2] munakata:~$ sudo systemctl daemon-reload [KGB2] munakata:~$ sudo systemctl restart mdcheck_start.timer [KGB2] munakata:~$ systemctl list-timers mdcheck_start.timer NEXT LEFT LAST PASSED UNIT ACTIVATES Wed 2026-07-01 10:38:42 JST 5 months 24 days Sun 2026-01-04 17:48:29 JST - mdcheck_start.timer mdcheck_start.service 1 timers listed. Pass --all to see loaded but inactive timers, too. *** fail2ban の設定 [#d9710b7e] - インストール [KGB2] munakata:~$ sudo apt update [KGB2] munakata:~$ sudo apt install fail2ban - 設定 (jail.conf は上書きされるので /etc/fail2ban/jail.local を作成して編集する) [DEFAULT] # ログは journalctl を使う(Ubuntu 24.04 の標準) backend = systemd # 初回:10分(デフォルト)、再犯:20分 → 40分 → … → 最大1週間 bantime.increment = true bantime.factor = 2 bantime.max = 1w # 1 IP あたりの最大失敗回数 maxretry = 5 # 監視時間(秒) findtime = 600 # BAN 対象 banaction = iptables-multiport [sshd] enabled = true port = 8722 filter = sshd logpath = %(sshd_log)s - 有効化、永続化と起動確認 [KGB2] munakata:~$ sudo systemctl restart fail2ban [KGB2] munakata:~$ sudo systemctl enable fail2ban Synchronizing state of fail2ban.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable fail2ban [KGB2] munakata:~$ sudo systemctl status fail2ban ● fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; preset: enabled) Active: active (running) since Tue 2026-01-06 10:22:46 JST; 17s ago Docs: man:fail2ban(1) Main PID: 1484190 (fail2ban-server) Tasks: 5 (limit: 37649) Memory: 19.7M (peak: 22.2M) CPU: 157ms CGroup: /system.slice/fail2ban.service └─1484190 /usr/bin/python3 /usr/bin/fail2ban-server -xf start 1月 06 10:22:46 kgb2 systemd[1]: Started fail2ban.service - Fail2Ban Service. 1月 06 10:22:46 kgb2 fail2ban-server[1484190]: 2026-01-06 10:22:46,451 fail2ban.configreader [1484190]: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto' 1月 06 10:22:46 kgb2 fail2ban-server[1484190]: Server ready - ban ステータス確認 [KGB2] munakata:~$ sudo fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd [KGB2] munakata:~$ sudo fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 193.233.230.243 - 手動操作(緊急対応 等) -- 手動で BAN する方法 sudo fail2ban-client set sshd banip 1.2.3.4 -- 手動で UNBAN する方法(重要) sudo fail2ban-client set sshd unbanip 1.2.3.4 -- 全解除(緊急時) sudo fail2ban-client unban --all ** リカバリー(アプリ) [#b8921f81] *** Apache2 [#m4cd07ad] - 素の Apache2 インストール [KGB2] munakata:~$ sudo apt install apache2 [KGB2] munakata:~$ sudo systemctl enable apache2 [KGB2] munakata:~$ sudo systemctl start apache2 - php 関連のインストール [KGB2] munakata:~$ sudo apt install php libapache2-mod-php php-mbstring php-xml php-gd php-curl [KGB2] munakata:~$ sudo apt install php-mbstring - 登録済サイトの復旧 [KGB2] munakata:~$ sudo cp -a /raid_vol/reinstall_backup/etc/apache2/sites-available/* /etc/apache2/sites-available/ [KGB2] munakata:~$ sudo a2ensite (実際の登録サイト) - モジュールの有効化 [KGB2] munakata:~$ sudo a2enmod rewrite [KGB2] munakata:~$ sudo a2enmod php8.3 [KGB2] munakata:~$ sudo a2enmod ssl [KGB2] munakata:~$ sudo a2enmod proxy [KGB2] munakata:~$ sudo a2enmod proxy_http - サーバー証明書 -- 以前利用していた証明書を戻す -- Let's Encrypt インストール -- Let's Encrypt 自動更新管理 - 設定確認 [KGB2] munakata:~$ sudo apachectl configtest [KGB2] munakata:~$ sudo systemctl reload apache2 *** Pukiwiki [#ub00b630] - 今回の復旧戦略は「当時想定されていなかった組み合わせ」 -- PukiWiki 1.4系 -- PHP 8.3 -- 絶対パス構成 -- DATA_HOME 分離 元々動作していた環境(=設定)をそのまま復元するだけで動作と期待したが、&color(red){pukiwiki 1.5.4 は php8.1 対応だが、インストールした時点の Ubuntu 24.04 の&br; php が 8.3 にバージョンアップされた影響で今回大幅な設定変更が必要}; だった。 [KGB2] munakata:~/Downloads$ php -v PHP 8.3.6 (cli) (built: Jul 14 2025 18:30:55) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.6, Copyright (c) Zend Technologies with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies - インストール -- 既にWeb上の [[公式サイト:https://pukiwiki.sourceforge.io/]] からは Pukiwiki をダウンロードすることができなくなっていた。 -- 現状の最新(=最終?)バージョンは 1.5.4、ダウンロード済だった 1.5.4 を利用することにした。 [[ダウンロードサイト:https://pukiwiki.sourceforge.io/?PukiWiki/Download/1.5.4]] --- &ref(pukiwiki-1.5.4_utf8.zip); -- pukiwiki.ini.php 内のデータ保存保存場所の指定 ///////////////////////////////////////////////// // Directory settings I (ended with '/', permission '777') // You may hide these directories (from web browsers) // by setting DATA_HOME at index.php. define('DATA_DIR', DATA_HOME . 'wiki/' ); // Latest wiki texts define('DIFF_DIR', DATA_HOME . 'diff/' ); // Latest diffs define('BACKUP_DIR', DATA_HOME . 'backup/' ); // Backups define('CACHE_DIR', DATA_HOME . 'cache/' ); // Some sort of caches define('UPLOAD_DIR', DATA_HOME . 'attach/' ); // Attached files and logs define('COUNTER_DIR', DATA_HOME . 'counter/' ); // Counter plugin's counts define('PLUGIN_DIR', DATA_HOME . 'plugin/' ); // Plugin directory --- DATA_HOME は index.php で指定される。 --- &color(red){今回、DATA_HOME に /raid_vol/puki_data/ を指定し、シンボリックリンクは削除した}; --- &color(red){結果的に /var/www/html/pukiwiki から wiki, attach, backup などのデータ保存用ディレクトリーは無くなった}; - ディレクトリー構成(プログラム本体、データ):プログラム本体は /var/www/html/pukiwiki に配置した上でデータ系ディレクトリを削除 [KGB2] munakata:~$ ls -la /var/www/html/pukiwiki/ total 208 drwxr-xr-x 4 www-data www-data 4096 12月 30 18:26 . drwxr-xr-x 4 root root 4096 12月 25 12:05 .. -rw-r--r-- 1 www-data www-data 1157 1月 31 2020 .htaccess -rw-r--r-- 1 www-data www-data 564 4月 29 2005 .htpasswd -rw-r--r-- 1 www-data www-data 18009 8月 29 2004 COPYING.txt -rw-r--r-- 1 www-data www-data 11136 3月 21 2022 INSTALL.txt -rw-r--r-- 1 www-data www-data 2770 3月 27 2022 README.en.txt.zip -rw-r--r-- 1 www-data www-data 16026 3月 22 2022 README.txt -rw-r--r-- 1 www-data www-data 1259 3月 27 2022 UPDATING.en.txt.zip -rw-r--r-- 1 www-data www-data 15290 3月 14 2022 UPDATING.txt -rw-r--r-- 1 www-data www-data 7425 12月 30 18:26 default.ini.php -rw-r--r-- 1 www-data www-data 17161 1月 29 2022 en.lng.php lrwxrwxrwx 1 root root 25 12月 24 23:22 image -> /raid_vol/puki_data/image -rw-r--r-- 1 www-data www-data 754 12月 25 08:46 index.php -rw-r--r-- 1 www-data www-data 896 12月 25 07:27 index.php_test -rw-r--r-- 1 www-data www-data 19920 1月 12 2022 ja.lng.php -rw-r--r-- 1 www-data www-data 14027 1月 11 2022 keitai.ini.php drwxr-xr-x 2 www-data www-data 4096 3月 27 2022 lib drwxr-xr-x 2 www-data www-data 4096 12月 25 15:56 plugin -rw-r--r-- 1 www-data www-data 22118 12月 25 15:35 pukiwiki.ini.php -rw-r--r-- 1 www-data www-data 1536 12月 3 2014 rules.ini.php lrwxrwxrwx 1 root root 24 12月 24 23:22 skin -> /raid_vol/puki_data/skin -rw-r--r-- 1 www-data www-data 11949 3月 27 2022 wiki.en.zip - データは別の場所(/raid_vol/puki_data)に配置 [KGB2] munakata:~$ ls -la /raid_vol/puki_data/ total 764 drwxrwxr-x 10 www-data www-data 4096 12月 25 08:50 . drwxr-xr-x 8 root root 4096 12月 23 18:06 .. -rw-rw-r-- 1 www-data www-data 34 2月 8 2023 .htaccess drwxrwxr-x 2 www-data www-data 643072 12月 30 19:16 attach drwxrwxr-x 2 www-data www-data 20480 12月 30 19:12 backup drwxrwxr-x 2 www-data www-data 20480 12月 30 19:25 cache drwxrwxr-x 2 www-data www-data 4096 1月 7 2020 counter -rw-r--r-- 1 www-data www-data 7424 1月 11 2022 default.ini.php drwxrwxr-x 2 www-data www-data 20480 12月 30 19:08 diff drwxrwxr-x 3 www-data www-data 4096 2月 8 2023 image -rw-r--r-- 1 www-data www-data 14027 1月 11 2022 keitai.ini.php lrwxrwxrwx 1 root root 29 12月 25 08:50 plugin -> /var/www/html/pukiwiki/plugin -rw-r--r-- 1 www-data www-data 1536 12月 3 2014 rules.ini.php drwxrwxr-x 2 www-data www-data 4096 2月 22 2024 skin drwxrwxr-x 2 www-data www-data 20480 12月 30 19:08 wiki - &color(red){pukiwiki.ini.php} の変更内容(特別な内容はない)}; --> &ref(pukiwiki.ini.php); -- 管理者名の変更 => munakata -- 管理者パスワードの変更 => !frex7785 -- FrontPage の変更 => KGB --- 差分 [KGB2] munakata:~/wk/pukiwiki-1.5.4_utf8$ diff pukiwiki.ini.php /var/www/html/pukiwiki/pukiwiki.ini.php 122c122 < $modifier = 'anonymous'; --- > $modifier = 'munakata'; 128c128,129 < $defaultpage = 'FrontPage'; // Top / Default page --- > //$defaultpage = 'FrontPage'; // Top / Default page > $defaultpage = 'KGB'; // Top / Default page 192c193,194 < $adminpass = '{x-php-md5}!'; --- > //$adminpass = '{x-php-md5}!'; > $adminpass = '{x-php-md5}' . md5('!freedman7785'); - &color(red){index.php の変更内容(データディレクトリの指定、php8.3 対策)}; --> &ref(index.php); -- DATA_HOME に /raid_vol/puki_data を指定 -- php8.3 に起因するエラーを抑止 --- 変更後の index.php [KGB2] munakata:~/wk/pukiwiki-1.5.4_utf8$ cat /var/www/html/pukiwiki/index.php <?php error_reporting(E_ERROR | E_PARSE); chdir(__DIR__); // PHP8対策:未定義定数を潰す define('PKWK_OPTIMISE', 0); // absolute paths define('DATA_HOME', '/raid_vol/puki_data/'); define('LIB_DIR', __DIR__ . '/lib/'); define('INI_FILE', __DIR__ . '/pukiwiki.ini.php'); // language (this tree uses docroot/*.lng.php) define('LANG_FILE', __DIR__ . '/ja.lng.php'); define('LANG_FILE_HINT', __DIR__ . '/ja.lng.php'); define('UA_INI_FILE', __DIR__ . '/default.ini.php'); //define('RULES_FILE', __DIR__ . '/rules.ini.php'); //define('UA_INI_FILE', array( // 'default' => __DIR__ . '/default.ini.php', // 'keitai' => __DIR__ . '/keitai.ini.php', // 'rules' => __DIR__ . '/rules.ini.php', //)); require(LIB_DIR . 'pukiwiki.php'); ?> *** [[mirakurun (TVチューナーサーバー)/ EPGStation(TV録画アプリ)>HomeTV6]] [#jd28c3d7] ** リカバリー(運用系) [#sb78b4eb]