投稿者: manualmaton Page 38 of 238

Nextcloudの認証強化。(二段階認証アプリの設定)

Nextcloudをインターネット上で公開する場合、ほぼ必須の措置です。

環境

Nextcloud 27.1.3で挙動を確認しました。

二段階認証アプリの有効化

管理>アプリ>「あなたのアプリ」に移動します。

Two-Factor TOTP Providerを「有効にする」をクリックします。

二段階認証の設定

個人>セキュリティに移動します。

  1. 二要素認証の、TOTPを有効化します。
  2. QRコードが表示されるので、外部認証アプリ(Google Authenitcator等)でコードを読み取ります。
  3. 新しく表示されたコードを読み取って「検証」します。

アプリをなくした場合に備え、バックアップコードも作っておきます。

挙動

  1. 別のPC/ブラウザなどでNextcloudサイトにアクセスします。
  2. ユーザ名とパスワードを利用してログインします。
  3. 以下のようにコードの入力画面が出ます。

これで、ある程度の安全性が担保されました。

『Otaru1899』ソロプレイのルールメモ。

ボードゲーム『Otaru1899』購入理由の一つは、『イナゾー拡張』によってソロプレイが可能ということにあります。

このソロプレイのルールをメモしておきます。

ソロ概要

  • オートマカード(最新鋭ロボット「イナゾー」)と対戦を行います。
  • 難易度を3つから選べます。

イナゾーの特徴

  • イナゾーは初期資産も漁船も持ちません。
  • イナゾーは教育の必要がありません。(全て待機状態です)
  • イナゾーは紙幣/資源を持たず、得ることもありません。
    • そのため、農学校、開拓使村のアクションを解決する際、何も行いません。
  • 複数の投資や任命を行うことがあります。

セットアップ

プレイヤーの準備

  1. 共通ボードは1/2人用の面を使います。
  2. 通常通り、プレイヤー用の準備を行います。
  • 初期資産タイルはランダムに2枚引き、1枚を選びます。(そこから示された資源を得ます)
  • プレイヤーの開始時資源は、任意の資源を1つ選びます。

イナゾーの準備

  1. イナゾー用の個人ボードは、ワーカーのみ用意します。これら全てをワーカー置き場に置きます。
  2. ソロカード9枚を用意し、以下の難易度に合わせます。
  3. 上記、用意したソロカードをシャッフルして裏向きに置きます。
  4. 1枚を表向きに置いておきます。

イナゾーの難易度

  • イージー:レベル3のソロカード3枚を箱に戻します。
  • ノーマル:レベル3のソロカード3枚を箱に戻します。イナゾーは15名声点を持った状態でスタートします。
  • ハード:レベル1のソロカード3枚を箱に戻します。イナゾーは15名声点を持った状態でスタートします。

ゲーム進行

プレイヤーの先行でスタートし、互いに手番を繰り返します。

イナゾーの行動基準

イナゾーは、常に「4つのアクションスペースから、そこにある紙幣の金額が一番大きいアクションを実行します。

プレイヤーのターン時の行動

プレイヤーの行動

通常と同じです。

  1. 4種類のアクションエリアから、ポーンを「今置かれていないところ」に移動する。
  2. そこに置かれている紙幣を全て得る。
  3. そのエリアに隣接しているエリアに紙幣コマを1つずつ置く。
  4. エリアに沿ってトラックを動かす。
  5. アクションを実施する。

まで行います。

イナゾーの行動

その後、イナゾーはプレイヤーが選んだアクションを行いますが、以下が異なります。

プレイヤーのアクションが農学校/開拓使村の場合

イナゾーは何も行いません。

プレイヤーのアクションが中央小樽駅の場合
  • ソロカードに書かれた各数字(AP)に従って、小さい方から順に、そのAPを最大限使って実行できる処理を行います。
  • 行える処理がない場合(任命できるスペースが塞がれているなど)、そのAPは飛ばします。(何もしません)
  • イナゾー配下のワーカーは教育の必要がないため、直接、手駒のワーカーを送り込むことができます。
  • 複数の任命を取ることがあります。
  • アクション解決後、ソロカードの裏向きの山から1枚をめくります。
プレイヤーのアクションが基督教会の場合
  • ソロカードに書かれた各数字(AP)に従って、小さい方から順に、そのAPを最大限使って実行できる処理を行います。
  • 行える処理がない場合(APが足りない、タイルが全てなくなった等)、そのAPは飛ばします。(何もしません)
  • 複数の投資を行うことがあります。
  • これによってイナゾーがタイルを得た場合、全て裏向きでイナゾーの脇に置きます。
    • イナゾーは建物の効果を利用せず、有力者の表面から得点を得ることもありません。
  • アクション解決後、ソロカードの裏向きの山から1枚をめくります。

イナゾーのターン時の行動

  • そこにある紙幣の金額が一番大きいアクションにポーンを置きます。
  • そこに置かれている紙幣は全て共通ストックに戻します。(イナゾーは紙幣を得ることも支払うこともありません)
  • 隣接したエリアに紙幣コマを1つずつ置く、エリアに沿ってトラックを動かすまでは同じです。
  • 先のルールに従って、農学校/開拓使村の場合は何もせず、中央小樽駅/基督教会はカードに書かれたAPに従って処理を実行します。

ゲーム中に収穫/決算が発生した場合

収穫時

イナゾーは何も実行しません。

決算時

プレイヤーと同様、通常のルールに従って名声点を得ます。

最終得点計算

中央小樽駅の追加名声点

  • プレイヤーと同様の条件で、通常通り、名声点を得ます。
  • ワーカーを置いている団の得点条件タイルでは、イナゾーは、「それら全ての条件を持っている」ものとします。

タイルの追加名声点

  • イナゾーが獲得した即時有力者タイル1枚ごとに6名声点を得ます。
  • イナゾーが獲得した建物タイル1枚ごとに3名声点を得ます。

勝敗

  • イナゾーがプレイヤーより多くの点数を獲得した
    • プレイヤーの敗北です。
  • イナゾーとプレイヤーが同点
    • プレイヤーの敗北です。
  • イナゾーがプレイヤーより少ない点数を獲得した
    • プレイヤーが勝利します。

ボードゲーム『Otaru 1899』開封と百均グッズによる収納。

「うちばこや」謹製のボードゲーム、『Otaru1899』到着したので、早速の開封です。

コンポーネント

緻密な木駒の美しさは相変わらず。カード類はアドオンのみとなっていて、厚めのしっかりとしたタイルで構成されています。

なにより目を引いたのがオプションで購入したメタルコイン。ずっしりした重さはゲームへの没入感バッチリです。

収納

元の箱に余裕があったので、収納の難易度は中程度。

  • 資源:Case and Case4分割
  • ワーカー:Case and Case 2分割の中身だけ
  • タイル類/金トークン/拡張:TCGケース(スリム)
  • メタルコイン:分割ピルケース
  • その他:タッパー

と、百均グッズで全て収納。

後は実際にプレイを繰り返して、改良をしていきます。

トランクと背景-1-(最初のトライ)

買い物中に、トランク型のストレージを見かけたので「同じ事ができないだろうか?」と試すことにしました。

うまい具合にちょうどいいサイズのトランクがありました。経年変化もナイスです。

試撮影

適当に小物を入れてみます。

座像のようなものは土台を利用して高さを合わせてみます。

手持ちの背景と併せるとこうなりました。

撮影して思ったこと

  • より「箱庭」感が増します。
  • 旅情感や「鞄から飛び出した」見せるディスプレイのようです。

その反面、全てにピントを合わせる分、撮影難易度は飛躍的に上がってきました。

面白い題材ではあるので、もう少し続けていきます。

RabbitMQを検証環境にインストール。

ちょっと検証が必要だったので、RabbitMQのインストールを行いました。

前提

以下の環境で動いています。

  • Ubuntu 20.04
  • Apache 2.4系

また、本件ではリバースプロキシ化も実施するので、

  • それに合わせたドメイン
  • ドメインに沿った証明書

をインストール済みです。

さっくりとした手順

  1. レポジトリを追加します。
  2. RabbitMQをインストールします。
  3. 管理コンソールを有効化します。
  4. 管理コンソールのリバースプロキシ化させます。
  • 参考にしたWebサイト

https://www.vultr.com/docs/install-rabbitmq-server-ubuntu-20-04-lts/

レポジトリを追加します。

  • RabbitMQ追加
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
 echo "deb https://dl.bintray.com/rabbitmq-erlang/debian focal erlang-22.x" | sudo tee /etc/apt/sources.list.d/rabbitmq.list

インストールを実施します。

  • レポジトリを追加したのでパッケージのアップデート
sudo aptitude update
  • RabbitMQのインストール
sudo apt-get install rabbitmq-server -y --fix-missing
  • インストール確認
systemctl status rabbitmq-server.service 

Active(Running)を確認します。

  • サービス有効化
sudo systemctl enable rabbitmq-server

RabbitMQの管理コンソールを有効化します。

  • コンソール有効化
sudo rabbitmq-plugins enable rabbitmq_management
  • 管理者とパスワード設定
sudo rabbitmqctl add_user admin password

ユーザー名(admin)やパスワード(password)は環境に合わせて適切なものを設定してください。

  • 管理権限付与
sudo rabbitmqctl set_user_tags admin administrator

adminの部分はユーザー名を指定します。

  • 管理コンソールアクセス確認

ブラウザから

http://サーバのIP:15672

と入れることでログインできるようになります。

リバースプロキシの実施

  • ログ格納ディレクトリの追加
sudo mkdir /var/log/mq_console

適切なディレクトリを指定してください。

  • ディレクトリの所有者変更
sudo chown www-data:www-data mq_console
  • 設定ファイル作成
  • 作成するファイル(要管理者権限)
/etc/apache2/site-available/rabbitmq.conf
  • 作成内容
<VirtualHost _default_:80>
    # ドメイン名を指定します
    ServerName 【hoge.example.com】
    # HTTPアクセスを強制的にHTTPSにリダイレクトします
    RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost _default_:443>
    # ドメイン名を指定します
    ServerName 【hoge.example.com】
    # アクセスログを指定します
    CustomLog /var/log/mq_console/console_access.log combined 
    ErrorLog /var/log/mq_console/console_error.log

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

# SSL証明書を指定します
SSLCertificateFile /etc/certs/hoge.example.com.crt
# 秘密鍵を指定します
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'

    ProxyPass / http://localhost:15672/
    ProxyPassReverse / http://localhost:15672/


</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
  • 設定ファイル追加
sudo a2ensite rabbitmq.conf
  • 設定確認
sudo apache2ctl configtest

Syntax OKを確認します

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

ブラウザから

設定したドメインにアクセスし、以下の画面を確認します。

  1. 設定した管理者アカウントでログインできること
  2. 以下の管理コンソールが出ること

PHPモジュール一覧を表示するスクリプト。

Webアプリをサーバに設置する際、有効、無効になっているモジュールの一覧が欲しいときがあります。

そういうときはphp.infoを使うのが手っ取り早いとは思いますが、セキュリティ上、それらをWebサイトに設置するのは好ましくありません。

そこで、以下のスクリプトをChatGPTに指示しながら出力しました。

スクリプト

  • php_modules.sh
#!/bin/bash

echo "PHP モジュール一覧を表示します。以下のオプションを選択してください。"
echo "0(またはエンターのみ): 全ての一覧を表示"
echo "1: 有効なモジュールのみを表示"
echo "2: 無効なモジュールのみを表示"

read -p "選択: " choice

case "$choice" in
  1)
    echo -e "\n有効なモジュールのみ表示:"
    enabled_modules=$(php -r '$count=0; $modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { if (extension_loaded($extension)) { echo $extension . ": Enabled\n"; $count++; } } echo $count;')
    echo "有効なものは${enabled_modules}件です"
    ;;
  2)
    echo -e "\n無効なモジュールのみ表示:"
    disabled_modules=$(php -r '$count=0; $modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { if (!extension_loaded($extension)) { echo $extension . ": Disabled\n"; $count++; } } echo $count;')
    echo "無効なものは${disabled_modules}件です"
    ;;
  *)
    echo -e "\n全てのモジュールを昇順で表示:"
    php -r '$modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { echo $extension . ": " . (extension_loaded($extension) ? "Enabled" : "Disabled") . "\n"; }'
    ;;
esac
  • スクリプトに実行権限付与
chmod +x php_modules.sh

スクリプトの動き

  • 実行
./php_modules.sh
  • 実行結果抜粋
PHP モジュール一覧を表示します。以下のオプションを選択してください。
0(またはエンターのみ): 全ての一覧を表示
1: 有効なモジュールのみを表示
2: 無効なモジュールのみを表示
選択: 

全てのモジュールを昇順で表示:
Core: Enabled
FFI: Enabled
(略)

と、これでモジュールのチェックを事前に行うことが可能になりました。

Tips:apacheバーチャルサイトのオフオン(切り替え)

ちょっとした小技が役立ったのでメモに残しておきます。

環境

  • Ubuntu 20.04系
  • Apache 2.4系

で、バーチャルサイトでサイトを検証していました。

背景

検証で動かしているWebアプリAがaaa.hoge.comで動いていました。

そこに、同じ環境でWebアプリBを動かす需要がありました。

本来なら、DNSで

  • aaa.hoge.com
  • bbb.hoge.com

とするところ、

  • DNS登録が間に合わない
  • 2つ同時に動かせるようなスペックではない

という背景がありました。そこで、「一度WebアプリAを無効にしつつ、WebアプリBをaaa.hoge.com」として動かすようなすり抜けを使いました。

さっくりとした手順

  1. WebアプリAの設定ファイルを無効化します。
  2. WebアプリBの設定ファイルを作成します。
  3. WebアプリBを有効にします。

前に動いているサイトの無効化

sudo a2dissite app_a.conf

sudo systemctl restart apache2.service

WebアプリB用の設定ファイル作成

  • /etc/apache2/sites-available/app_b.conf

に以下のように作っていきます。

略
<VirtualHost *:443>
    # ドメイン名を指定します
    ServerName aaa.hoge.com
    # アプリB用のログディレクトリを指定します。
    CustomLog /var/log/nextcloud/nextcloud_access.log combined
    ErrorLog /var/log/nextcloud/nextcloud_error.log

    # アプリB用のドキュメントルートディレクトリを指定します。
  # アプリAno参照ドキュメントとは違うディレクトリにします
    DocumentRoot /home/www-data/nextcloud
    <Directory /home/www-data/nextcloud>
        Options -MultiViews
        AllowOverride All
        Require all granted
    </Directory>
略

サイトBを有効化します。

sudo a2ensite app_b.conf

sudo apache2ctl configtest

sudo systemctl restart apache2.service

動作を確認します。

aaa.hoge.com(など、今までアプリAが動いていたサイトのドメインで)アプリBのサイトが動くようになれば成功。

一時的な手段ではありますが、効果はありました。

合間のソロゲー。

週末、様々な作業の裏でやっていたソロのボードゲームです。

ダイスセトラーズ

「思いっきりダイスを振りたい」ということでセレクト。

久しぶりにプレイして勘が取り戻せなかった&ボットに高得点の土地を取られて敗北。

クランズ・オブ・カレドニア

こちらの記事を書いているさなか、「キッチリと文書通りに動くか」の検証のためにプレイしました。

最初は176点取れたと思っていましたが、ラウンドごとの栄光点に誤り。「1つごとに2点/3点」ではなく、「2つごとに」だったため、147点と、ギリギリ熟練者でした。

ただ、これに関しては戦略のコツがつかみかけてきたのでまだ余地はあります。

ヌースフィヨルド

船を造らず漁獲量を増やしていくコンボのお陰で19金を得られたのですが、いかんせん、船の点数が取れなかったのが足を引っ張りました。

まだまだ楽しめるソロゲーはあるので、新作は余り手を出さずに既存策で遊んでいるという形です。

本と教室。

このスタジオツアーに訪れたことがきっかけで、「もう一度『ハリー・ポッター』シリーズを履修したい」って気概が生まれました。

そのさなか、「室内の撮影にも使える」と思って手に入れたのがこちらです。

レゴ:『魔法薬学』

レゴブロックと『ハリー・ポッター』シリーズのコラボ品。劇中に出て来た魔法薬学の教室を組み立てるというものです。

開封

中はざっとこんな感じ。これを組み立てていきます。

組み立て

教室の壁となる本の表紙を組み立て

壁や仕切りもできあがっています。薬品ボトルの一部はブロックで表現です。

完成

完成にそれほど時間は掛かりませんでした。

劇中での雰囲気をそのままにレゴに落とし込まれたという形です。

変形収納

最大の特徴はこのように全てが本の一部として収納できること。

普段はコンパクトで、展開も簡単というギミックは気に入りました。

背景としての転用

そして、「魔法薬学」を最初に選んだのはこの錬金術としての背景に使えるという目論見からでした。

その目論見は当たったのが嬉しいところです。

ボードゲーム『クランズ・オブ・カレドニア』ソロプレイのルール確認。

ソロプレイ時にルールブックを参照しすぎたため、紙の劣化が激しくなってきました。そのため、ここに記します。

ソロプレイ時のセットアップ

ソロゲームの違い

  • ソロ専用の特殊ダイスを2つ用います。
  • 交易ボーナスは発生しません。
  • 特殊ダイスによって相場が変わります。
  • ソロ専用のスコアがあります。
ソロゲームで用いる特殊ダイス

準備

  1. マップは2人用に準拠します。霧がかかったエリアを使うことはできません。
  2. 市場ボード/輸出ボードは2人用を用います。
  3. ソロプレイ用の輸出ボックスタイルを使います。
  4. 氏族とスタートタイルの組み合わせは2つ用意して、どちらか1つを決めます。
  5. 配置コスト「£1」の部分に、別の色の駒を置きます。その駒にプレイヤーは駒を置くことはできません。
  6. プレイヤーは、別の色の駒が置かれたエリア以外のところに配置してゲームスタートです。
£1で置ける安いエリアは塞がれます。ただでさえ厳しい資金繰りが更に辛くなります。

ゲーム進行

ラウンドは通常通り行います。改良を2つ連続で行うといったアクションを連続で行うことが可能です。売買を行った場合に、市場価格を変動させるのを忘れないようにしましょう。

パスを行った場合、ボーナスとして£16を得ます。

パスのあと、通常通り生産とラウンドごとの得点計算を行います。

追加フェイズ-1- 市場フェイズ

2〜5ラウンドの開始時、「市場フェイズ」が追加されます。特殊ダイスを2つ振ります。

商品が書かれたダイスの分、+3〜-3まで書かれたダイス:その値分だけ、以下のルールに従って上下します。

  • ダイスで出た商品が市場ボードの中間価格(〔〕でくくられたエリア)にある場合:
    • もう一つのダイスの出目に従い、価格を上下させます。(+2が出たら2上昇、-1だったら1下降)
  • ダイスで出た商品が市場ボードの高価格帯(〔〕でくくられたエリアより上)にある場合:
    • + / - の値は無視し、出た数だけ商品価格を下げます。
  • ダイスで出た商品が市場ボードの低価格帯(〔〕でくくられたエリアより下)にある場合:
    • + / - の値は無視し、出た数だけ商品価格を上げます。
この例の場合、羊毛の価格が-3されます。

この手順を3回繰り返します。このフェイズ中、この方法で価格の変動があった商品があった場合、もう一度商品ダイスのみを振り直します。

追加フェイズ-2- 輸出契約の補充フェイズ

まず、輸出ボードのすべてのマスに輸出契約タイルを補充します。

次に追加フェイズ1で最後に振った+ / - のダイスの出目を確認し、その目に対応するタイルを取り除きます。(例:+2の場合、中断の右のタイルが取り除かれます)

得点計算

5ラウンドが終了したら、上記の追加フェイズは行わず、最終得点フェイズに入ります。

以下の独自ルールがあります。

輸出の追加得点

達成した契約の数に応じて追加の勝利点を得ます。

  • 輸出契約を7つ以上履行した:12勝利点
  • 輸出契約を6つ履行した:8勝利点
  • 輸出契約を5つ履行した:4勝利点

4つ以下の場合の追加勝利点はありません。

入植地の追加得点

2〜4人時と異なり、「船舶輸送力でつながっている入植地のひとかたまり」を参照します。(つまり、川や湖で離れた箇所でも、ゲーム中に得た輸送能力が繋がっていれば“つながっている”とみなします)

  • 14以上の入植地:18勝利点
  • 11〜13の入植地:12勝利点
  • 8〜10の入植地:6勝利点

7以下の場合の追加勝利点はありません。

得点ごとに得られる称号

上記の追加得点を考慮した上で、以下の称号を得ます。

獲得勝利点得られる称号
0〜115初心者
116〜130新人
131〜145平均的
146〜160熟練者
161以上天才!

スコアテンプレート

https://barrel.reisalin.com/books/1ff8a/page/ea5d2

こちらにスコア用のテンプレートを用意しています。マークダウン形式でエクスポート可能です。

Page 38 of 238

Powered by WordPress & Theme by Anders Norén