投稿者: manualmaton Page 3 of 237

コラボの統率者デッキ。(統率者メモ:2024/11/03)

「動きが気になる」ということで、ドクター・フー統率者デッキ『タイミーワイミー』購入。

このシリーズの構築済みを全て購入した形になります。

統率者

  • 10代目ドクター/The Tenth Doctor
  • ローズ・タイラー/Rose Tyler

クリーチャー

  • ウィルフレッド・モット/Wilfred Mott
  • アディポーズの子/Adipose Offspring
  • アストリッド・ペス/Astrid Peth
  • マーサ・ジョーンズ/Martha Jones
  • フレッシュの複製体/Flesh Duplicate
  • ドナ・ノーブル/Donna Noble
  • エイミー・ポンド/Amy Pond
  • 9代目ドクター/The Ninth Doctor
  • サリー・スパロウ/Sally Sparrow
  • 人造アノマリー、ジェニー/Jenny, Generated Anomaly
  • ローリー・ウィリアムズ/Rory Williams
  • 11代目ドクター/The Eleventh Doctor
  • ウォードクター/The War Doctor
  • ターディスの魂、イドリス/Idris, Soul of the TARDIS
  • フェイス・オブ・ボー/The Face of Boe
  • 宇宙船内の恐竜/Dinosaurs on a Spaceship
  • ケイト・スチュワート/Kate Stewart
  • アトラクシの管理者/Atraxi Warden
  • タイムビートル/Time Beetle
  • スターホエール/Star Whale
  • 神秘的な預言者/Sibylline Soothsayer
  • ジャドゥーンの執行者/Judoon Enforcers

呪文

  • 皆に命を!/Everybody Lives!
  • すべてが塵と化す/Everything Comes to Dust
  • パンドリカ/The Pandorica
  • リヴァー・ソングの結婚式/The Wedding of River Song
  • 時の裂け目/Crack in Time
  • 4回のノック/Four Knocks
  • 暖炉の少女/The Girl in the Fireplace
  • ナノジーンの変換/Nanogene Conversion
  • 11番目の時間/The Eleventh Hour
  • 歴史はすべて同時に起こっている/All of History, All at Once
  • 恍惚の美/Ecstatic Beauty
  • タイタニック号/RMS Titanic
  • 臆病者+殺人鬼/Coward+Killer
  • わかれ道/The Parting of the Ways
  • 再生の回復/Regenerations Restored
  • 全力で逃げろ/Run for Your Life
  • ドクターの日/The Day of the Doctor
  • ギャリフレイの陥落+終止符を/Gallifrey Falls+No More
  • 回転する暖炉/Rotating Fireplace
  • モメント/The Moment
  • 不定的時間的/Wibbly-wobbly, Timey-wimey
  • サイキックペーパー/Psychic Paper
  • ターディス/TARDIS
  • ソニック・ドライバー/Sonic Screwdriver
  • 命運の掌握/Grasp of Fate
  • 告別/Farewell
  • 時空からの退去/Out of Time
  • 結婚指輪/Wedding Ring
  • 鼓舞のリフレイン/Inspiring Refrain
  • 予言により/As Foretold
  • 自我破摧/Fractured Identity
  • 秘儀の印鑑/Arcane Signet
  • 太陽の指輪/Sol Ring
  • 時計回し/Clockspinning
  • 思考の器/Thought Vessel
  • 精神石/Mind Stone
  • 独創のタリスマン/Talisman of Creativity
  • 稲妻のすね当て/Lightning Greaves
  • 確信のタリスマン/Talisman of Conviction

土地

  • 3:平地/Plains
  • 3:島/Island
  • 3:山/Mountain
  • トレンザロアの時計塔/Trenzalore Clocktower
  • 不吉な墓地/Ominous Cemetery
  • 港町/Port Town
  • 凱旋の神殿/Temple of Triumph
  • 風変わりな果樹園/Exotic Orchard
  • 啓蒙の神殿/Temple of Enlightenment
  • 大草原の川/Prairie Stream
  • 灌漑農地/Irrigated Farmland
  • さびれた浜/Deserted Beach
  • 氷河の城砦/Glacial Fortress
  • 広漠なるスカイクラウド/Skycloud Expanse
  • 天啓の神殿/Temple of Epiphany
  • 凍沸の交錯/Frostboil Snarl
  • 演劇の舞台/Thespian's Stage
  • 怒静の交錯/Furycalm Snarl
  • 作戦室/War Room
  • 灼陽大峡谷/Sunbaked Canyon
  • 日没の道/Sundown Pass
  • 嵐削りの海岸/Stormcarved Coast
  • 焦熱島嶼域/Fiery Islet
  • 進化する未開地/Evolving Wilds
  • 統率の塔/Command Tower
  • 祖先の道/Path of Ancestry
  • 邪神の寺院/Temple of the False God
  • 無限地帯/Myriad Landscape
  • 興隆する絶壁/Thriving Bluff
  • 神秘の僧院/Mystic Monastery
  • ならず者の道/Rogue's Passage

デッキのテーマは作中にも出てくる「タイムトラベル」。時間カウンターの操作により様々なシナジーを生み出していくもの。

その反面、入れられるカードは少なめなので、フレーバーを活かしつつデッキを組み上げていくのが楽しみです。

統率者デッキ、コンボ軸への改良。(統率者メモ2024/11/02)

こちらを元に、少し買い足して以下の形に。

統率者

  • リスの将軍、サワギバ/Chatterfang, Squirrel General ※

デッキ

クリーチャー

  • マリオネットの見習い/Marionette Apprentice ※
  • ズーラポートの殺し屋/Zulaport Cutthroat ※
  • 悲哀の徘徊者/Woe Strider ※
  • 実験的な菓子職人/Experimental Confectioner ※
  • 無情な無頼漢/Ruthless Knave ※
  • 巣穴の魂商人/Warren Soultrader ※
  • ネイディアの夜刃/Nadier's Nightblade ※
  • 無慈悲な略奪者/Pitiless Plunderer ※
  • ヘイゼルの醸造主/Hazel's Brewmaster ○
  • さえずる魔女/Chittering Witch
  • 無情な屍技術師/Ruthless Technomancer ▲
  • 溜め込む親玉/Hoarding Broodlord ▲
  • 金のガチョウ/Gilded Goose
  • 献身のドルイド/Devoted Druid ○
  • ペレグリン・トゥック/Peregrin Took ◎
  • 不屈の補給兵/Tireless Provisioner
  • リスの小走り/Scurry of Squirrels
  • 秘密を知るもの、トスキ/Toski, Bearer of Secrets
  • 永久の証人/Timeless Witness
  • 深き森の隠遁者/Deep Forest Hermit ◎
  • 貪欲なるリス/Ravenous Squirrel
  • 蔦刈りの導師/Vinereap Mentor
  • 甘歯村の断罪人、グレタ/Greta, Sweettooth Scourge
  • 種選奴、カメリア/Camellia, the Seedmiser
  • 根花のヘイゼル/Hazel of the Rootbloom
  • どっきりドングリ団/The Odd Acorn Gang
  • リスの巣の守り手/Drey Keeper ◎
  • ベレドロス・ウィザーブルーム/Beledros Witherbloom
  • 歩行バリスタ/Walking Ballista ○
  • アカデミーの整備士/Academy Manufactor ※
  • カルドーサの鍛冶場主/Kuldotha Forgemaster ◆
  • マイアの戦闘球/Myr Battlesphere ◆

インスタント

  • 命取りの論争/Deadly Dispute
  • 蓄え放題/Cache Grab
  • 切断マジック/Saw in Half ▲
  • 新緑の命令/Verdant Command
  • ウィンドグレイスの裁き/Windgrace's Judgment

ソーサリー

  • リスのお喋り/Chatter of the Squirrel
  • 大渦の脈動/Maelstrom Pulse
  • 群がり庭の虐殺/Swarmyard Massacre
  • 戦争の犠牲/Casualties of War

エンチャント

  • 美食家の才能/Gourmand's Talent ※
  • アクロゾズの約定/Promise of Aclazotz
  • パンくずの道標/Trail of Crumbs
  • 想起の拠点/Bastion of Remembrance ※
  • 獣使いの昇天/Beastmaster Ascension
  • 殺しのサービス/Killer Service
  • 似通った生命/Parallel Lives

アーティファクト

  • 太陽の指輪/Sol Ring
  • 恐竜の遺伝子/Dino DNA ◆
  • 頭蓋骨絞め/Skullclamp
  • ゴルガリの印鑑/Golgari Signet
  • 反発のタリスマン/Talisman of Resilience
  • 秘儀の印鑑/Arcane Signet
  • 忘却の偶像/Idol of Oblivion
  • アシュノッドの供犠台/Ashnod's Altar ◆
  • ヌカコーラ自動販売機/Nuka-Cola Vending Machine ◎
  • ミミックの大桶/Mimic Vat ◆
  • 仮面林の結節点/Maskwood Nexus
  • 前兆の時計/Clock of Omens ◆
  • 囀り吐き/Chitterspitter

プレインズウォーカー

  • 呪われた狩人、ガラク/Garruk, Cursed Huntsman

土地

  • 8:沼/Swamp
  • 8:森/Forest
  • ボジューカの沼/Bojuka Bog
  • 平穏な茂み/Tranquil Thicket
  • 屍花の交錯/Necroblossom Snarl
  • 黄昏のぬかるみ/Twilight Mire
  • 憑依されたぬかるみ/Haunted Mire
  • 汚れた森/Tainted Wood
  • ゴルガリの腐敗農場/Golgari Rot Farm
  • 疾病の神殿/Temple of Malady
  • ラノワールの荒原/Llanowar Wastes
  • ジャングルのうろ穴/Jungle Hollow
  • 草むした墓/Overgrown Tomb
  • 緑ばんだ沼/Viridescent Bog
  • 森林の墓地/Woodland Cemetery
  • 統率の塔/Command Tower
  • 祖先の道/Path of Ancestry
  • 群がりの庭/Swarmyard
  • 不気味な辺境林/Grim Backwoods
  • 新緑の地下墓地/Verdant Catacombs

記号がついているのは、それぞれでシナジーがあるカードです。先述したように、追い込まれた後に無限ライフルーズを決めて勝利。

数で押し包む厳が決まる、割と楽しいデッキです。

Ubuntu24.04にGrowi v7をインストール。

ようやく、Ubuntu24.04にGrowiをインストールできたのでそのメモです。

参考手順:GROWIをUbuntuで構築した

環境

  • Ubuntu 24.04
  • Apache 2.4

の基本的な設定が済んだという状況です。

前提

  • 名前解決できるドメインが用意されている。
  • そのドメインに応じた証明書が用意されている。

さっくりとはならない手順

  1. 必要なパッケージをインストールします。
  2. Node.js/npmをインストールします。
  3. Redis-serverをインストールします。
  4. Javaをインストールします。
  5. ElasticSearch 8をインストールします。
    • ElasticSearchの設定変更を行います。
    • ElasticSearchのプラグインをインストールします。
    • ElasticSearchの設定変更を反映します。
  6. MongoDBをインストールします。
    • MongoDBのデータ格納先を変更します。(オプション)
    • MongoDBの設定変更を反映します。(オプション)
  7. yarnのインストールを行います。
    • turboパッケージをインストールします。
  8. Growiのインストールを行います。
    • yarnを用いてインストールします。
    • アプリのビルドを行います。
    • 自動起動のスクリプトを作成します。
  9. Apacheのリバースプロキシの設定を行います。
  10. ブラウザで初期インストールを行います。

手順

必要なパッケージのインストールを行います。

  • git, buildツールなど
sudo aptitude install build-essential git git-lfs apt-transport-https

※v6系と異なり、git-lfsをインストールしない状態でgit-cloneを行うと正しくビルドが行えません。

node20をインストールします。

  • レポジトリ追加
sudo curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash
  • パッケージアップグレード
sudo aptitude update
  • Node.jsインストール
sudo aptitude install nodejs
  • Node.jsバージョン確認
node -v

2024/10/30現在:v20.18.0

  • npmバージョン確認
npm -v

2024/10/30現在:10.9.0

redis-serverをインストールします。

  • インストール
sudo  aptitude install redis-server
  • 起動確認
systemctl status redis-server

active(running)を確認します。

  • 自動起動有効化
sudo systemctl enable redis-server

Javaをインストールします。

  • インストール
sudo aptitude install openjdk-17-jdk

ElasticSearhをインストールします。

  • OpenJDKインストール
sudo aptitude install openjdk-17-jdk sudo bash -
  • gpg追加
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
  • レポジトリ追加
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
  • パッケージのアップグレード
sudo aptitude update
  • ElasticSearchインストール
sudo aptitude install elasticsearch

※この後、デフォルトパスワードが表示されますが、控えておく程度にしましょう。

JVM設定変更
  • バックアップディレクトリ作成
sudo mkdir /etc/elasticsearch/old

※任意のバックアップディレクトリを指定します。

  • 設定ファイルバックアップ
sudo cp -pi /etc/elasticsearch/jvm.options /etc/elasticsearch/old/jvm.options.$(date +%Y%m%d)
  • 設定ファイル書き換え
echo -e "-Xms256m\n-Xmx256m" | sudo tee -a /etc/elasticsearch/jvm.options
  • 書き換え確認
sudo diff -u /etc/elasticsearch/old/jvm.options.$(date +%Y%m%d) /etc/elasticsearch/jvm.options
  • 差分
+-Xms256m
+-Xmx256m
ElasticSearchの設定変更

※この作業だけ管理者権限で実行します。

  • root昇格
sudo su -
  • 設定ファイルバックアップ
cp -pi /etc/elasticsearch/elasticsearch.yml /path/to/backup/elasticsearch.yml.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • ファイル書き換え
sed -i -e 's/xpack.security.enabled: true/xpack.security.enabled: false/' \
       -e '/xpack.security.http.ssl:/{n; s/  enabled: true/  enabled: false/}' \
       -e '/xpack.security.transport.ssl:/{n; s/  enabled: true/  enabled: false/}' /etc/elasticsearch/elasticsearch.yml
  • 差分確認
diff -u /path/to/backup/elasticsearch.yml.$(date +%Y%m%d) /etc/elasticsearch/elasticsearch.yml
  • 差分
 # Enable security features
-xpack.security.enabled: true
+xpack.security.enabled: false

 xpack.security.enrollment.enabled: true

 # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
 xpack.security.http.ssl:
-  enabled: true
+  enabled: false
   keystore.path: certs/http.p12

 # Enable encryption and mutual authentication between cluster nodes
 xpack.security.transport.ssl:
-  enabled: true
+  enabled: false
  • rootから抜ける
exit
ElasticSearchのプラグインを追加
  • analysis-kuromoji インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
  • analysis-isu インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
自動起動設定反映
  • 起動
sudo systemctl start elasticsearch
  • 起動確認
systemctl status elasticsearch

active(running)を確認します。

  • 自動起動有効化
sudo systemctl enable elasticsearch

MongoDBインストール

レポジトリ追加

  • 必要パッケージインストール
sudo aptitude install gnupg
  • gpg追加
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
   --dearmor
  • レポジトリ追加
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
MongoDBインストール
  • パッケージのアップグレード
sudo aptitude update
  • MongoDBインストール
sudo aptitude install mongodb-org
保存先変更(オプション)

MongoDBの格納先を、冗長化構成されているパーティションにするため対応しました。

  • 格納ディレクトリ作成
sudo mkdir /home/mongodb

保存先を変えたいところにします

  • 所有者変更
sudo chown -R mongodb:mongodb /home/mongodb
  • 所有者変更確認
ls -ld /home/mongodb
  • 設定ファイルのバックアップ取得
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • バックアップ確認
sudo diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)

バックアップが保存されたか、差分がないことで確認します。

  • ファイル書き換え
sudo sed -i 's/dbPath: \/var\/lib\/mongodb/dbPath: \/home\/mongodb/' /etc/mongod.conf
  • 差分確認
sudo diff -u /path/to/backup/mongod.conf.$(date +%Y%m%d) /etc/mongodb.conf
  • 差分
-  dbPath: /var/lib/mongodb
+  dbPath: /home/mongodb
自動起動有効
  • mongodサービス起動
sudo systemctl start mongod
  • サービス起動確認
systemctl status mongod

active (running)を確認します

  • 自動起動有効化
sudo systemctl enable mongod

yarnインストール

  • npmでyarnインストール
sudo npm install -g yarn
  • turboインストール

※Growi v6.1.0から必須パッケージとなりました。

sudo yarn global add turbo

Growiインストール

  • git clone
sudo git clone https://github.com/weseek/growi /home/www-data/growi

※任意のディレクトリを指定します。

  • ディレクトリ移動
cd /home/www-data/growi && pwd

先ほどcloneしたディレクトリです。

  • チェックアウト
sudo git checkout -b v7.0.23 refs/tags/v7.0.23

2024/10/30現在の最新版をチェックアウトします。

  • yarnによるインストール
sudo yarn

CPUのスペックによっては相当な時間がかかります。

  • ビルド
sudo yarn app:build

v7からこの操作が必要です。やはり時間がかかります。

自動起動スクリプトの作成

  • systemd作成
cat <<- __EOF__ | sudo tee -a /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=【/home/www-data/growi】

[Service]
ExecStart=【/home/www-data/growi/】growi-start.sh
Restart=no
Type=simple

[Install]
WantedBy=multi-user.target
__EOF__

※【】内を、git cloneしたディレクトリにします。

  • Growiインストールディレクトリに作成
  • 教義・信仰に沿ったエディタで作成します。
  • ファイル名:growi-start.sh
  • growiを配置したディレクトリ内に作成します。
#!/bin/bash
cd 【/home/www-data/growi】
NODE_ENV=production \
AUDIT_LOG_ENABLED=true \
FORCE_WIKI_MODE=private \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=[任意の文字列] \
npm start

※【】内を、git cloneしたディレクトリにします。
[]内には任意の文字列を入れます。 例:PASSWORD_SEED=GOLDEN_SEED

また、オプションなどは好みに応じて指定してください。(今回はs3互換クラウドストレージに保存するため、ファイルのアップロードを自由選択にしています。)

  • 権限変更
sudo chmod +x /home/www-data/growi/growi-start.sh
  • systemd設定反映
sudo systemctl daemon-reload
  • growi有効化
sudo systemctl start growi.service
  • growi有効化確認
systemctl status growi.service

active(running)を確認

  • 自動起動有効化
sudo systemctl enable growi.service

Apacheによるリバースプロキシの設定

  • モジュールインストール
sudo a2enmod proxy_http rewrite
  • apache再起動
sudo systemctl restart apache2.service
  • ログ保存ディレクトリ作成
suod mkdir /var/log/growi/
  • 所有者変更
sudo chown -R www-data:www-data /var/log/growi
  • 設定ファイル作成
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/growi.conf
<VirtualHost _default_:80>
    ServerName 【hoge.example.com】
    # ドメイン名を指定します
    RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>

<VirtualHost _default_:443>
    ServerName 【hoge.example.com】
    # ドメイン名を指定します
    CustomLog /var/log/growi/growi_access.log combined 
    ErrorLog /var/log/growi/growi_error.log

#SSL設定
  SSLEngine on
    Protocols h2 http/1.1
  # SSLを有効化します

SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します

    # Header に Host: example.com を追加するため
    ProxyPreserveHost On
    # HTTPS利用時: Header に x-forwarded-proto: https を追加するため
    RequestHeader set x-forwarded-proto 'https'
    # Apache では static assets で 304 が返らないことがあるので ETag を無効化する
    <ifModule mod_headers.c>
            Header unset ETag
    </ifModule>
    FileETag None

    # socket.io の path を rewrite する
    RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
    RewriteCond %{QUERY_STRING} transport=websocket    [NC]
    RewriteRule /(.*) ws://localhost:3000/$1 [P,L]

    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/

</VirtualHost>

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off
__EOF__

【】内を自分の環境に変更してください。

※Ubuntu22.04の時と異なり、socket.ioのpathは公式ドキュメント通りで正常に動作しています。

  • 設定反映
sudo a2ensite growi.conf
  • コンフィグ確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Apache2再起動
sudo systemctl restart apache2.service

Growiインストール確認

http://設定したドメイン でアクセスします。

この初期サイトが表示されたらインストール完了です。

サーバSSH接続時に「REMOTE HOST IDENTIFICATION HAS CHANGED」のエラーメッセージが出たときの対処。

再インストールしたLinuxサーバに対して、Linuxクライアントから公開鍵認証でSSH接続を行ったところ以下のメッセージが出ました。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:********************************
Please contact your system administrator.
Add correct host key in /home/hoge/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/hoge/.ssh/known_hosts:2
Host key for hoge.example.com has changed and you have requested strict checking.
Host key verification failed.

それに備えて秘密鍵を新しいものに差し替えていましたが、サーバが再インストール前の公開鍵情報を覚えていたという形です。

「SSHホスト鍵が変わってるよ!」と怒られたときの対処

上記そのものズバリの解決策がありましたので、これに沿って対応していきます。

エラーが起きたLinuxクライアントで

ssh-keygen -R hoge.example.com

を実行するだけ。(ホスト名は自分の環境に合わせます)

# Host hoge.example.com found: line 1
# Host hoge.example.com found: line 2
/home/hoge/.ssh/known_hosts updated.
Original contents retained as /home/hoge/.ssh/known_hosts.old

のメッセージが出てきたら対処完了です。

改めて、新たな秘密鍵を用いて

ssh -i /path/to/private/key/hoge.exammple.com.key hoge@hoge.example.com

等としてssh接続を行い、

This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

と、無事に接続ができました。

2024年10月のボドゲ・統率者記録。

平日休みにボードゲームを行いました。

カヴェルナ 洞窟対決

ソロではわりとやっていましたが、対人は初。アクションの取り合いでままならない状況がありましたが、素点の高い部屋を建てられた分、8点差で勝利。

資源管理とアクションの読み合いが楽しいいいゲームです。

統率者

《根花のヘイゼル》より《リスの大将軍、サワギバ》の報が組みやすいコンボがあると気づき、こちらに差し替え。

残り5点まで追い詰められた状態で無限宝物&無限死亡誘発が決まりなんとか勝てました。

このサワギバデッキは動きも好きなので、もう少し詰めていきます。

撮影台、新調。

5年ぐらい前に買っておいて3年前に故障。その後、長らく使っていなかったアイテムを新調しました。

こちらの撮影台。

折りたたみ式で、

展開、セットアップすると天井のライトと反射板で覆われた撮影ボックスになります。

早速、撮影してみました。

  • 構図決めが楽になった
  • より強い光で、1/6でも捉えやすくなった

が利点ですが、上から光が降り注ぐ関係上、顔に影が着くのが問題。ここをすこし直していくのが課題です。

Ubuntu24.04に導入したnginxをバーチャルホスト化。

概要

Ubuntu24.04にリポジトリを利用して追加したnginxは、apacheのようにバーチャルサイトが最初から備わっていませんでした。

そこで、その設定を施します。

バーチャルサイトの設定ファイル格納ディレクトリの作成

sudo mkdir -p /etc/nginx/sites-available
sudo mkdir -p /etc/nginx/sites-enabled
ls -ld /etc/nginx/sites*

sites-availablesites-enabledディレクトリがあることを確認します。

バーチャルサイト有効化

  • ファイルバックアップ
sudo cp -pi /etc/nginx/nginx.conf /path/to/backup/directory/nginx.conf.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • ファイルバックアップ確認
diff -u /path/to/backup/directory/nginx.conf.$(date +%Y%m%d) /etc/nginx/nginx.conf

差分がなければバックアップは成功です。

  • ファイル書き換え
sudo sed -i '/http {/a \    include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf
  • ファイル書き換え確認
diff -u /path/to/backup/directory/nginx.conf.$(date +%Y%m%d) /etc/nginx/nginx.conf

以下の差分を確認します。

+    include /etc/nginx/sites-enabled/*;

サンプルのhtmlファイルを作る

ファイル格納ディレクトリは自分の環境に合わせます。

sudo -u www-data tee /home/www-data/index.html > /dev/null <<EOL
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Welcome to example.com!</h1>
<p>This is a sample page served by Nginx.</p>
</body>
</html>
EOL

サンプルのバーチャルサイトを作成する

ファイル名やserver_nameは自分の環境に合わせます。

  • 設定ファイル作成
sudo tee /etc/nginx/sites-available/sample.conf > /dev/null <<EOL
server {
listen 80;
server_name example.com www.example.com;

root /home/www-data;
index index.html index.htm;

location / {
try_files \$uri \$uri/ =404;
}

# セキュリティ設定
# サーバー情報を隠す
server_tokens off;

# MIMEタイプの設定
include /etc/nginx/mime.types;
default_type application/octet-stream;

# XSS対策
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";

# ファイルのアップロードサイズ制限
client_max_body_size 1M;

# ログの設定
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
EOL

設定ファイル有効化

  • シンボリックリンク作成
sudo ln -s /etc/nginx/sites-available/sample.conf /etc/nginx/sites-enabled/
  • 構文確認
sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

を確認します。

  • サービス再起動
sudo systemctl restart nginx.service

設定したURLでアクセスできることを確認します。

これで、バーチャルサイトが設定されました。

Ubuntu 24.04にnginxを導入する。

概要

好みはapacheではありますが、セットアップしたばかりのUbuntuサーバの性能を鑑みてnginxを入れていきます。

さっくりとした手順

  1. インストールに必要なパッケージを入れます。
  2. nginxのリポジトリーを追加します。
  3. インストールを行います。
  4. 基本的な設定を行います。

必要なパッケージの導入とリポジトリー追加

  • 必要なパッケージの導入
sudo aptitude install curl gnupg2 ca-certificates lsb-release
  • リポジトリ追加
echo "deb http://nginx.org/packages/ubuntu/ $(lsb_release -cs) nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

nginxインストール

  • パッケージのアップデート
sudo aptitude update
  • nginxインストール
sudo aptitude install nginx
  • インストール確認
nginx -v

nginx version: nginx/1.26.2を確認します。(2024/10/25現在)

  • サービス起動
sudo systemctl start nginx.service
  • サービス起動確認
systemtl status nginx.service

active(running)を確認します。

初期設定(オプション)

ここからは筆者の好みの問題です。

オプション:nginxの実行をwww-dataに変更する

  • ファイルバックアップ
sudo cp -pi /etc/nginx/nginx.conf /path/to/backup/directory/nginx.conf.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • ファイルバックアップ確認
diff -u /path/to/backup/directory/nginx.conf.$(date +%Y%m%d) /etc/nginx/nginx.conf

差分がなければバックアップは成功です。

  • ファイル書き換え
sudo sed -i 's/user  nginx;/user  www-data;/g' /etc/nginx/nginx.conf
  • ファイル書き換え確認
diff -u /path/to/backup/directory/nginx.conf.$(date +%Y%m%d) /etc/nginx/nginx.conf

以下の差分を確認します。

-user  nginx;
+user  www-data;
  • サービス再起動
sudo systemctl restart nginx.service
  • サービス再起動確認
systemctl status nginx.service

active(running)`を確認します。

オプション:Web格納ディレクトリを作成する

  • web格納ディレクトリを作成
sudo mkdir -p /home/www-data
sudo chown -R www-data:www-data /home/www-data
sudo chmod -R 755 /home/www-data

オプション:passwdファイルの書き換え

※システム全体のアカウントを制御する重要なファイルです。取り扱いは慎重に行ってください。※

  • バックアップ作成
sudo cp -pi /etc/passwd /path/to/backup/directory/passwd.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • バックアップ作成確認
diff -u /path/to/backup/directory/passwd.$(date +%Y%m%d) /etc/passwd

エラーがなければバックアップは成功です。

  • ファイル書き換え
sudo sed -i 's|/var/www|/home/www-data|' /etc/passwd
  • 書き換え確認
diff -u /path/to/backup/directory/passwd.$(date +%Y%m%d) /etc/passwd

以下の差分を確認します。

-www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
+www-data:x:33:33:www-data:/home/www-data:/usr/sbin/nologin

差分がこの2つだけであることを確認できたら設定完了です。

備考

この手順ではnginxのバーチャルサイトまではサポートしていないので、後述します。

WordPressの設定変更:Confファイルによるセキュリティ設定

apacheのバーチャルファイルにセキュリティ設定を追加します。

バーチャルサイトの設定ファイルバックアップ

  • バックアップ
sudo cp -pi /etc/apache2/sites-avaiable/wordpress.conf /path/to/backup/directory/wordpress.conf.$(date +%Y%m%d)

ファイル及びバックアップディレクトリは自分の環境に合わせます。

  • diffによる差分確認
diff -u /path/to/backup/directory/wordpress.conf.$(date +%Y%m%d) /etc/apache2/sites-avaiable/wordpress.conf

エラーがなければバックアップは成功です。

バーチャルサイトの設定ファイル編集

DocumentRootの項目に、以下のように編集します。/home/www-data/wordpressの部分は自分の環境に合わせます。

ここでは、サーバのリソースを食い潰し、robots.txtを無視するクローラーを止めることにしています。

また、こういったクローラーであることを隠し、ユーザーエージェントを偽装するIPもレンジでブロックしています。

    DocumentRoot /home/www-data/wordpress
    <Directory /home/www-data/wordpress>
        Options -Indexes
        Options FollowSymLinks
        AllowOverride All
        ## スパムクローラーを拒否
        SetEnvIfNoCase User-Agent "facebookexternalhit/1.1" spam_crawler
        SetEnvIfNoCase User-Agent "SemrushBot/7~bl" spam_crawler
        SetEnvIfNoCase User-Agent "AhrefsBot" spam_crawler
        SetEnvIfNoCase User-Agent "MJ12bot" spam_crawler
        SetEnvIfNoCase User-Agent "DotBot" spam_crawler
        SetEnvIfNoCase User-Agent "Baiduspider" spam_crawler
        SetEnvIfNoCase User-Agent "YandexBot" spam_crawler
        SetEnvIfNoCase User-Agent "Sogou web spider" spam_crawler
        SetEnvIfNoCase User-Agent "Exabot" spam_crawler
        SetEnvIfNoCase User-Agent "MegaIndex.ru" spam_crawler
        SetEnvIfNoCase User-Agent "SeznamBot" spam_crawler
        SetEnvIfNoCase User-Agent "BLEXBot" spam_crawler
        SetEnvIfNoCase User-Agent "Bytespider" spam_crawler
        SetEnvIfNoCase User-Agent "DataForSeoBot" spam_crawler
        SetEnvIfNoCase User-Agent "serpstatbot" spam_crawler
        SetEnvIfNoCase User-Agent "SeekportBot" spam_crawler
        SetEnvIfNoCase User-Agent "index.community crawler" spam_crawler
        SetEnvIfNoCase User-Agent "PetalBot" spam_crawler
     <RequireAll>
      Require all granted
      ##スパムクローラーを拒否
      Require not env spam_crawler
        #偽装エージェントを拒否
        Require not ip 190.92.0.0/16
        Require not ip 159.138.0.0/16
        Require not ip 166.108.0.0/16
        Require not ip 124.243.0.0/16
        Require not ip 114.119.0.0/16
        Require not ip 119.8.0.0/16
        Require not ip 110.238.0.0/16
        Require not ip 217.113.194.0/24
        Require not ip 34.123.0.0/16
     </RequireAll>
    ## 設定ファイルのアクセス拒否
     <Files wp-config.php>
      Require all denied
     </Files>
     <Files xmlrpc.php>
      Require all denied
     </Files>
     ## キャッシュを有効
     ExpiresActive On
     ExpiresByType image/jpg "access plus 1 year"
     ExpiresByType image/jpeg "access plus 1 year"
     ExpiresByType image/gif "access plus 1 year"
     ExpiresByType image/png "access plus 1 year"
     ExpiresByType text/css "access plus 1 month"
     ExpiresByType application/pdf "access plus 1 month"
     ExpiresByType text/x-javascript "access plus 1 month"
     ExpiresByType application/x-shockwave-flash "access plus 1 month"
     ExpiresByType image/x-icon "access plus 1 year"
     ExpiresDefault "access plus 2 days"
    </Directory>
     <Files xmlrpc.php>
      Require all denied
     </Files>

は運用に合わせて無効化の可否を決めてください。

  1. モバイルアプリからのリモート投稿ができなくなります。
  2. ピンバックとトラックバックを受け付けることができなくなります。
  3. Jetpackの一部機能が動作しなくなります。
  4. その他、リモート投稿や自動投稿のプラグインが影響を受けます。

編集後、

diff -u /path/to/backup/directory/wordpress.conf.$(date +%Y%m%d) /etc/apache2/sites-avaiable/wordpress.conf

として、上記の差分が出ることを確認します。

設定反映

  • 設定有効
sudo a2ensite wordpress.conf

→ 一時的に無効にしている場合

  • 構文確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Apache2再起動
sudo systemctl restart apache2.service

その後、Wordpressが正常に閲覧できることを確認します。

確認後、追加のセキュリティ設定を行わないのであれば、

sudo a2dissite wordpress.conf
sudo systemctl restart apache2.service

として、無用な攻撃を防ぎます。

Ubuntu 24.04にWordPressをインストール。

概要

CMSの代名詞、Wordpressをきちんとした手順で書いていなかったのでこの機会にメモを残します。

手順が比較的簡単なだけに狙われやすいのも納得。

なので、ここではインストールだけではなく、セキュリティ対策を含めて実施します。

環境

  • Ubuntu 24.04
  • Apache 2.4
  • MySQL
  • PHP 8.3

前提

  • Apacheの初期設定は完了しています。
  • mod_securityが稼働しています。
  • 適切に名前解決できることが条件です。(DNS設定済み)
  • 証明書は適切なものを準備済みです。

さっくりとした手順

  1. WordPress用のデータベースを作成します。
  2. WordPressのプログラムを配置します。
  3. WordPressをWebサービスで動かす設定を行います。
  4. WordPressをブラウザでインストールします。
  5. インストール後、一度、設定を解除します。

※Wordpressは非常に狙われやすいWebアプリです。そのため、安定稼働するまでは設定をするたびにWebサービスから切り離します。

DB作成

  • MySQLログイン
mysql -u root -p
  • DB作成
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

DB名(mt)は自分の環境に合わせます。

  • ユーザー作成
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'your_password';

ユーザー(wpuser)やパスワードは自分の環境に合わせます。適正なパスワードを設定してください。

  • 権限委譲
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
  • 設定反映、MySQLログアウト
FLUSH PRIVILEGES;
exit

作成したDB確認

  • MovableTypeのユーザーでログイン
mysql -u wpuser -p
  • DB確認
SHOW DATABASES;

WordPressのDBがあることを確認します。

  • DB切り替え
use wordpress;
  • DBの文字コード確認
SHOW VARIABLES LIKE 'character_set_database';

Valueutf8mb4であることを確認

  • DBの照合順序確認
SHOW VARIABLES LIKE 'collation_database';

Valueutf8mb4_binであることを確認

exit

WordPress取得

  • 作業ディレクトリに移動
cd /hoge && pwd

任意のディレクトリを指定します。

  • wget
wget https://wordpress.org/latest.tar.gz
  • ファイルの解凍
tar -xzvf latest.tar.gz
  • ファイルの所有権変更
sudo chown -R www-data:www-data wordpress
  • www-dataディレクトリに移動
sudo mv wordpress /home/www-data/wordpress

自分の環境に合わせます。

WordPressWebサイト設定編集

ログ格納用のディレクトリ作成

  • ログ格納ディレクトリ作成
sudo mkdir -p /var/log/wordpress
  • ログ格納ディレクトリの所有者変更
sudo chown www-data:www-data /var/log/wordpress

WordPressのバーチャルサイト作成

  • /etc/apache2/site-available配下に、wordpress.confを管理者権限で作成し、以下のように編集していきます。
<VirtualHost *:80>
    # ドメイン名を指定します
    servername hoge.example.com
    # HTTPアクセスを強制的にHTTPSにリダイレクトします
    RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
    # ドメイン名を指定します
    ServerName hoge.example.com
    CustomLog /var/log/wordpress/wp_access.log combined
    ErrorLog /var/log/wordpress/wp_error.log


    # WordPressを配置したディレクトリを指定します。
    DocumentRoot /home/www-data/wordpress
    <Directory /home/www-data/wordpress>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    #セキュリティヘッダー付与

    Header always set Strict-Transport-Security "max-age=63072000"
    Header set X-Content-Type-Options "nosniff"
    Header always append X-Frame-Options "SAMEORIGIN"
    Header set X-XSS-Protection "1; mode=block"


#SSL設定
  SSLEngine on
    Protocols h2 http/1.1
    SSLCertificateFile /path/to/ssl/certificate.crt
    SSLCertificateKeyFile /path/to/ssl/private.key
   # 証明書と秘密鍵のパスを指定します

    # Mod_Security設定
    SecRuleEngine DetectionOnly
    # Webでインストールを行うため、最初は検知モードに設定します。
    ## ファイルのアップロードをできるようにします。
    SecRequestBodyInMemoryLimit 524288000
    SecRequestBodyLimit 524288000

    ## テスト用の検知パラメーター
    SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"


</VirtualHost>

# これらのセクションはSSL暗号化強度を高めるための記述です
# </VirtualHost>の外側に書くことにご注意ください

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

設定ファイル有効化

  • コンフィグ読み込み
sudo a2ensite wordpress.conf
  • 構文確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Webサービス再起動
sudo systemctl restart apache2.service
  • Webサービス再起動確認
systemctl status apache2.service

ブラウザから確認

ブラウザで設定したURLにログインします。

インストール画面が出てきます。言語を選びContinueをクリックします。

ボタンをクリックします。

設定したDB名、ユーザー、パスワードを入力します。

DBと接続されると、以下が表示されます。インストール実行をクリックします。

サイト名などを入れていきます。

ここまで出たらOKです。

インストール後の処理(一時停止)

圧倒的なシェアを誇るWordpressは攻撃者が真っ先に狙うサービスです。
そのため、安定稼働するまでは確認後に一度停止して、物理的なアクセスを防ぎます。

  • バーチャルサイトの設定ファイル無効化
sudo a2dissite wordpress.conf
  • 構文確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Webサービス再起動
sudo systemctl restart apache2.service
  • Webサービス再起動確認
systemctl status apache2.service

無効化後、上記の設定ファイルで指定したURLにアクセスできないことを確認します。

Page 3 of 237

Powered by WordPress & Theme by Anders Norén