#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]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS