バックアップが完了したので、SSDの方にCentOS Stream 9をインストールしていきます。
自宅サーバのスペックは以下の通りです。
CPU | Intel(R) Celeron(R) CPU N3150 |
---|---|
メモリ | 8GB (DDR3 4GB x2) |
HDD/SSD | SSD : Samsung 870 QVO 1TB SATA HDD : TOSHIBA MG06ACA800E 8TB SATA 7200RPM |
LAN | オンボード : Realtek RTL8111H 1000BASE-T 拡張カード : Realtek RTL8125B 2.5GBASE-T |
Bluetooth | USBドングル LBT-UAN05C2/N |
インストールメディア作成
以下のURLから CentOS-Stream-9-latest-x86_64-dvd1.iso をダウンロードして、rufusでUSBメモリに書き込みます。
https://www.centos.org/download/
CentOS Stream 9 インストール
USBブートをさせ、Install CentOS Stream 9を選択。
CENTOS Stream 9 へようこそ。で日本語を選択。
時刻と日付で、日本を選択。
ソフトウェアの選択で、Minimal Installを選択。
インストール先で、標準パーティションを選択し、以下のように指定。
マウントポイント | 容量 |
---|---|
/boot/efi | 2GiB |
/boot | 10GiB |
/ | 419.51GiB(残り全て) |
/home | 500GiB |
※SSDの書き込み量を減らすため、SWAPパーティションは作成しません。
KDUMPで、KDUMPを無効にする。
ネットワークとホスト名で、IPアドレス等を指定。
rootパスワードで、rootパスワードを入力し、パスワードによるroot SSHログインを許可にチェックを入れる。
ユーザーの作成で、一般ユーザーを作成する。
あとはインストールを開始し、終わるのを待つ。
CentOS Stream 9 構築
インストールが完了し、起動したら以降を実施していく。
シェルのコピペの挙動を変更
従来通りにTeratermでコピペができない問題の対処。追加したらSSHを繋ぎなおす。
# vi /etc/inputrc 以下を末尾に追加。 set enable-bracketed-paste off
SELinux無効化
# grubby --update-kernel ALL --args 'selinux=0' # reboot
電源ボタン無効化
これは子供のいたずら防止です。
ボタンを押すのが好きで、よく落とされるので…。
# vi /etc/systemd/logind.conf #HandlePowerKey=poweroff ↓ HandlePowerKey=ignore # systemctl restart systemd-logind
firewalld無効化
nftablesを使用するので、無効化します。
# systemctl stop firewalld # systemctl disable firewalld
HDDマウント
Samba用のHDDを/dataにマウントします。
当初HDD全域をSamba用にしようかと考えていましたが、SSD故障の際にHDDで起動できるようにするために、CentOS Stream 8が入った領域を残すことにしました。
# blkid (対象のUUIDを控える) # vi /etc/fstab (Sambaの領域を指定) UUID=******-****** /data xfs defaults 0 0
最初UUIDではなく、/dev/sdb5 とかで指定していましたが、再起動後にsdaとsdbが入れ替わることがあり、マウントに失敗し、emergency modeに入ってしまいました。
そうならないようにUUIDで指定します。
あと、旧OSであるCentOS Stream 8の / もマウントしておくとバックアップ忘れがあった際に、ファイルのコピーができて便利でした。
# vi /etc/fstab UUID=******-****** /old xfs defaults 0 0
リポジトリ追加
CentOS Stream 8までのPowerToolsが、crbに名前が変わったようです。
# dnf install epel-release epel-next-release # dnf config-manager --set-enabled crb
PHPのためにremiを追加します。
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
シリアルコンソール有効化
# vi /etc/default/grub GRUB_CMDLINE_LINUX="" ↓ GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200" 以下を追加。 GRUB_TERMINAL="serial" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" # grub2-mkconfig -o /boot/grub2/grub.cfg # reboot
rsyslog
自分用のカスタマイズですが、このような設定をしています。
# vi /etc/rsyslog.conf 以下を#### RULES ####の直後に追加 :programname, isequal, "bluetoothd" stop :programname, isequal, "2chproxy.pl" /var/log/2chproxy.log & stop :programname, isequal,"ipsec" stop :programname, isequal, "charon" /var/log/ipsec.log & stop :msg, contains, "nft drop" /var/log/nftables.log & stop :fromhost-ip, isequal, "192.168.0.254" /var/log/ix.log & stop # systemctl restart rsyslog
Tiny Tiny RSS
dockerインストール
# dnf install docker-ce docker-ce-cli containerd.io git # systemctl start docker # systemctl enable docker # curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # chmod +x /usr/local/bin/docker-compose
Tiny Tiny RSSインストール
その後の作業はこちらの記事の通りです。
リストア
バックアップしていたデータベースのリストアは、以下の通り実施します。
以下にバックアップしておいたファイルを転送する。
# ls /var/lib/docker/volumes/ttrss-docker_backups/_data/ ttrss-backup-20230908.sql.gz ttrss-backup-20230908.tar.gz
コンテナ内からリストアする。
# docker-compose exec backups /bin/sh / # ls -t /backups/*.sql.gz /backups/ttrss-backup-20230908.sql.gz / # psql -h db -U $TTRSS_DB_USER $TTRSS_DB_NAME -e -c "drop schema public cascade; create schema public" Password for user postgres: / # zcat /backups/ttrss-backup-20230908.sql.gz | psql -h db -U $TTRSS_DB_USER $TTRSS_DB_NAME Password for user postgres:
PHP 8.1
NextCloud関係で、パッケージを要求されるので、remiのPHP8.1を使用します。
# dnf module reset php # dnf module enable php:remi-8.1 (略) これでよろしいですか? [y/N]: y # dnf install php php-bcmath php-cli php-common php-devel php-fpm php-gd php-gmp php-intl php-ldap php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-apcu php-pecl-zip php-process php-xml php php-bcmath php-cli php-common php-devel php-fpm php-gd php-gmp php-intl php-ldap php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-apcu php-pecl-zip php-process php-xml # systemctl start php-fpm # systemctl enable php-fpm
.conf関連は必要に応じて設定する。
Zabbix 6.0 LTS
Zabbix インストール
# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm # dnf clean all # vi /etc/yum.repos.d/epel.repo (以下を追加) excludepkgs=zabbix* # dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent zabbix-web-japanese
MySQL インストール
# dnf install mysql-server # vi /etc/my.cnf.d/mysql-server.cnf (以下を追加) character-set-server = utf8 innodb_buffer_pool_size=3G innodb_io_capacity=100 innodb_log_file_size=384M innodb_file_per_table=1 join_buffer_size=256K
rootのパスワードは入力し、他は空エンター。
# systemctl start mysqld # systemctl enable mysqld # mysql_secure_installation
リストア
# mysql -uroot -p Enter password: mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> set global log_bin_trust_function_creators = 1; mysql> quit; # mysql -u root -p zabbix < zabbix.dump Enter password:
起動
# ln -s /usr/share/zabbix/ /var/www/html/zabbix # chmod 777 /etc/zabbix/web/ # systemctl start zabbix-agent zabbix-server # systemctl enable zabbix-agent zabbix-server
その他
監視に使っている物をインストール。
dnf install bluez python3-pip lm_sensors hddtemp glib2-devel jq # pip3 install -U setuptools wheel # pip3 install bluepy # sensors-detect --auto
NextCloud
# dnf install wget # wget https://download.nextcloud.com/server/releases/nextcloud-27.0.0.zip # unzip nextcloud-*.zip # cp -R nextcloud/ /var/www/html/ # chown -R nginx. /home/nextcloud/ # chown -R nginx. /var/www/html/nextcloud/ # mysql -u root -p Enter password: mysql> CREATE DATABASE nextcloud CHARACTER SET utf8mb4; mysql> quit; # mysql -u root -p nextcloud < nextcloud.dump Enter password:
以下のファイルをリストアし、適宜修正する。
/var/www/html/nextcloud/config/config.php
nginxの設定を公式を見て修正する。
{}、""、の数、;の後にスペースが入らないよう気を付ける。(ドはまりしました)
# vi /etc/nginx/nginx.conf # systemctl restart nginx
redisとimagickをインストールします。
# yum install php-redis php-pear ImageMagick ImageMagick-devel php-pear # pecl install imagick # echo "extension=imagick.so" > /etc/php.d/20-imagick.ini # systecmctl restart php-fpm # vi /var/www/html/nextcloud/config/config.php (以下を追加) 'memcache.distributed' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => 'localhost', 'port' => 6379, ),
Samba
# dnf install docbook-style-xsl gcc gdb gnutls-devel gpgme-devel jansson-devel \ keyutils-libs-devel krb5-workstation libacl-devel libaio-devel \ libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools \ libxml2-devel libxslt lmdb-devel openldap-devel pam-devel perl \ perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel python3-cryptography \ python3-dns python3-gpgyum install docbook-style-xsl gcc gdb gnutls-devel gpgme-devel jansson-devel \ keyutils-libs-devel krb5-workstation libacl-devel libaio-devel \ libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools \ libxml2-devel libxslt lmdb-devel openldap-devel pam-devel perl \ perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel python3-cryptography \ python3-dns python3-gpg readline-devel rpcgen systemd-devel \ tar zlib-devel python3-devel flex bison dbus-devel python3-markdown # wget https://download.samba.org/pub/samba/stable/samba-4.19.0.tar.gz # tar xf samba-4.19.0.tar.gz # cd samba-4.19.0 # ./configure # make -j 2 # make install
バックアップしておいたファイルを格納する。
/usr/local/samba/etc/smb.conf
/usr/local/samba/private/passdb.tdb
/usr/local/samba/private/secrets.tdb
/etc/systemd/system/nmb.service
/etc/systemd/system/smb.service
# systemctl start smb nmb # systemctl enable smb nmb
nftables
デフォルトの設定ファイルが、/etc/nftables/main.nftに変わったようです。
# vi /etc/sysconfig/nftables.conf #include "/etc/nftables/main.nft" ↓ include "/etc/nftables/main.nft"
デフォルトのテーブル名もnftables_svcに変わっているため、各種それに合わせました。
# vi nft_AcceptCountry.sh #!/bin/sh # IPアドレスリスト作成 IP_LIST=/tmp/cidr.txt if [ ! -f $IP_LIST ]; then wget -q http://nami.jp/ipv4bycc/cidr.txt.gz gunzip -c cidr.txt.gz > $IP_LIST rm -f cidr.txt.gz fi # 既存Accept_Countryをflush nft flush set inet nftables_svc Accept_Country # 新規Accept_Countryを作成 nft add set inet nftables_svc Accept_Country { type ipv4_addr \; flags interval \; } # /tmp/cidr.txtのJPのアドレスをAccept_Countryに追加 for addr in `cat /tmp/cidr.txt|grep ^JP | awk '{print $2}'` do nft add element inet nftables_svc Accept_Country { $addr } done
enp1s0はLAN側、enp2s0はWAN側という使い方をしています。
# systemctl start nftables # sh nft_AcceptCountry.sh # nft add chain inet nftables_svc INPUT { type filter hook input priority filter \; policy drop \; } # nft add rule inet nftables_svc INPUT type filter hook input priority filter; policy drop; # nft add rule inet nftables_svc INPUT iifname { "lo", "enp1s0" } accept # nft add rule inet nftables_svc INPUT ip saddr 192.168.0.0/24 accept # nft add rule inet nftables_svc INPUT ct state established,related accept # nft add rule inet nftables_svc INPUT ip saddr @Accept_Country udp dport { 500, 4500 } accept # nft add rule inet nftables_svc INPUT ip saddr @Accept_Country tcp dport 443 accept # nft add rule inet nftables_svc INPUT ip saddr @Accept_Country ip protocol esp accept # nft add rule inet nftables_svc INPUT iifname "enp2s0" counter log prefix \"[nft drop] : \" # nft add chain inet nftables_svc prerouting { type filter hook prerouting priority 0 \; } # nft add rule inet nftables_svc prerouting ip saddr 192.168.255.0/24 tcp flags syn tcp option maxseg size set 1334 # nft add chain inet nftables_svc postrouting { type filter hook postrouting priority 0 \; } # nft add rule inet nftables_svc postrouting ip daddr 192.168.255.0/24 tcp flags syn tcp option maxseg size set 1334 # nft list ruleset > /etc/nftables/main.nft # systemctl enable nftables
ルールの詳細はこちら。
2chproxy + p2-php(rep2)
以下にバックアップしたディレクトリを格納する。
/usr/local/2chproxy.pl/
/var/www/html/p2-php/
# dnf install perl-HTTP-Daemon perl-libwww-perl perl-YAML-Tiny # vi /etc/systemd/system/2chproxy.service [Unit] Description = 2ch proxy daemon Wants=network-online.target After=network-online.target [Service] ExecStart = /usr/local/2chproxy.pl/2chproxy.pl --config /usr/local/2chproxy.pl/config.yml Restart = always Type = simple [Install] WantedBy = multi-user.target
# systemctl start 2chproxy # systemctl enable 2chproxy # chown nginx. -R /var/www/html/p2-php/
strongSwan
# dnf install bzip2 # wget https://download.strongswan.org/strongswan-5.9.11.tar.bz2 # cd strongswan-5.9.11 # ./configure --prefix=/usr --sysconfdir=/etc --enable-eap-mschapv2 --enable-openssl --enable-eap-identity --enable-aesni # make # make install # cp init/systemd-starter/strongswan-starter.service /etc/systemd/system/
バックアップしておいたファイルを格納する。
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/ipsec.d/
/etc/strongswan.conf
/etc/strongswan.d/
# systemctl start strongswan-starter # systemctl enable strongswan-starter
その他必要になるコマンド類
個人的に使用する物をインストールします。
dig nslookup lsusb patch telnet
# dnf install bind-utils usbutils patch telnet
最後に
CentOS Stream 8の構築のログを残していたので、ある程度スムーズに構築ができました。
使用感ですが、CentOS Stream 9 を使っていても、CentOS Stream 8 と特に変わった感じがありません。
私の使い方では、OSはあまり関係無いようです。