suzukaの軌跡

知識や感情が入り混じる一つの宇宙

Proxmoxを導入した

Proxmoxとは:

Proxmox VE (仮想化プラットフォーム) - Wikipedia

Proxmox VE (Proxmox Virtual Environment, PVE)はDebianベースのオープンソース仮想化プラットフォームの操作と管理のためのWebインターフェースを持つ仮想アプライアンスである。

ESXiやOpenstackのような仮想VM管理基盤である。

VM基盤を導入しようとしたきっかけ

これまでIntel NUC1台(8Thread/32GB)にUbuntu22.04を導入し、宅内DNSサーバーやSingle node k8sをkubeadmで構築し、様々な遊びをしていた。

k8sはアプリケーションを乗せるために構築するというよりは、様々なCNIを検証したり構築ノウハウを貯めたりと、破壊と創造を繰り返していた。

破壊する際にOSを入れ直すことも多くなり、実機ベースで検証するのにそろそろ限界を感じていたため、仮想マシン技術を用いて破壊と創造の容易性を向上させたくなった。

また、k8sのワークロードを最大化させるためには複数Nodeでクラスタリングを行う必要があるため、シングルノードk8sでは個人的な限界が来ていたため、VMを並べてk8sクラスタを複数nodeで運用したいと考えるようになった。

libvirtを試す

仮想マシンを最速で動かすために必要なものはlibvirtである。 Ubuntu22.04を使用していたため、 apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager を叩けばVM基盤の完成である。(細かいネットワークの設定とかはここでは省きあmす)

以降は virsh を利用し、.qcow2イメージを使いVMを量産するだけで大量のサーバーを用意することができた。

cloudimgを使い、cloud-initを用意し、仮想マシンのインストールを容易にするなどをしていたが、マシンの管理コストが高く感じたため、何かしらアプライアンスを入れたいモチベーションが生まれたため、Proxmoxを導入することとした。

Proxmoxとの出会い

持っている知識の中で、仮想VM基盤として有名なのはESXiやOpenstackだった。どちらも導入やその後の管理コストが決して低くなく、また個人で扱うにはオーバースペックだと感じていたため、導入にためらいがあった。(最近だと企業の政治的な理由などもありなかなか触れづらい部分もあった)

個人でVM基盤を持っている人たちの記事を調べていたところ、Proxmoxを用いた導入記事を多数見つけ、導入の手軽さや管理コストの削減、個人的にほしいと感じた機能だけが実装されたスマートな管理UIに惹かれ、導入を決意。

Proxmox Virtual Environment - Open-Source Server Virtualization Platform に行き、installerとなるisoをダウンロードし、https://rufus.ie/ja/を用いてUSBフラッシュメモリに焼き、bootするだけ。

boot後は非常に簡単なUIに従い、インストールを進める。 https://qiita.com/bashaway/items/8fb7195bd3601dcf7162とかを参考にインストールを実施し、enterpriseなRepositoryをnon-Subscriptionに切り替えたらインストールは完了。

UIでポチポチするだけでVMを用意することができとてもHappy。

VMやLXCコンテナなどを量産し、必要なときに必要な検証環境を用意することができた。

導入後の感想

VMを作成する際にsshしなくてよくなったのは体験としてとても大きく、また複数の実機でクラスタリングしたいとなった場合もUIから設定を投げるだけで良くなったため、管理コストが大きく削減できた。

お一人様環境なため権限も深く考える必要がなく、導入規模に比べてシンプルにVM基盤が運用できていると言えるだろう。

Windows起動時にF2やらDelやらを連打せずにBIOSメニューを起動する

TL; DR

管理者権限で起動したcmdやPowerShellで以下コマンドを実行する

shutdown /r /fw

デフォルトでは1分くらいで再起動する。コマンド実行時に速攻再起動する場合は /t <second> を指定すればよい。

shutdown /r /fw /t 0

登場した引数とそのヘルプ

    /r         コンピューターを完全にシャットダウンして再起動します。
    /fw        シャットダウン オプションと共に使用し、次回は以下で起動します
               ファームウェアのユーザー インターフェイス。
    /t xxx     シャットダウンまでのタイムアウト期間を xxx 秒に設定します。
               有効範囲は 0 から 315360000 (10 年) までで、既定値は 30 です。
               タイムアウト期間が 0 より大きい場合、/f パラメーターが
               暗黙的に指定されます。

RTX830のDNSサーバー設定で覚えておきたいことメモ

TL; DR

YAMAHA 公式Docsは神

www.rtpro.yamaha.co.jp

はじめに

  1. RTX830を使っている人の記事です。他機種の互換とかはYAMAHA公式docsに書いてるので参照してください。
  2. フレッツ光東 NGN環境のためflets-east.jpが出ていますが、設定内容の本質には影響ありません。事前設定としてIIJプロバイダに対して既にIPoE接続(設定例でdhcp lan2となっているもの)の設定をしています。

DNS設定をする際に最初に把握しておくべきこと

DNSサーバーはリカーシブサーバー機能のみで、ルーター自体がリゾルバとはならない。

DNSディレクティブには、問い合わせ先DNSサーバーを設定するコマンドに優先順位がある

クエリが来たら、下記コマンド順序で評価され、条件がマッチしたDNSサーバーに対して問い合わせが行われる。

  1. dns server select コマンド
  2. dns server コマンド
  3. dns server pp コマンド
  4. dns server dhcp コマンド
  5. なんらかのDHCPで取得したDNSサーバー

dns ディレクティブはおおまかに2種類

selectを使わない3種類

主にコマンド優先順位だけを意識してどれかを設定する。 pp,dhcpは問い合わせるDNSサーバーの参照先を選択するだけだが、優先順位が設定されている。 pp,dhcpを同時に設定しても、ppが優先されすべてのクエリは処理されるためdhcpは使用されない。

  1. dns server コマンド
  2. dns server pp コマンド
  3. dns server dhcp コマンド

selectを使う3種類

<id> の若い順に評価される。pp, dhcp は問い合わせるDNSサーバーの参照先を選択しているだけの認識でよい

  1. dns server select <id> コマンド
  2. dns server select <id> pp コマンド
  3. dns server select <id> dhcp コマンド

使用例

デフォルトはDNSサーバーAを参照し、特定ドメイン(flets-east.jp)だけDNSサーバーBを参照する

select句を使い、特殊な処理を先に書き、デフォルトの処理は後ろにかく。もしくは dns server select 句の後ろの優先順位で設定する。

。 その他のドメイン ( . が指定されているので、前段でマッチしなかったクエリすべて) は、 192.168.0.2 に問い合わせる。

# `.flets-east.jp` ドメインのみ `dhcp lan2` で教えられたDNSサーバー(NGN DNS Server)に問い合わせる
dns server select 500000 dhcp lan2 any .flets-east.jp
# 500000でマッチしなかったクエリはすべて500100の `any .` にマッチし処理される
dns server select 500100 192.168.0.2 any .

dns server <IP> 句でデフォルトDNSサーバーを設定する例

dns server 192.168.0.2
dns server select 500000 dhcp lan2 any .flets-east.jp

PPPoE接続が行われているときだけ、ISPのDNSサーバーを使い、切断時はNGNのDNSサーバーを使う

dns server select 句に、 restrict pp <num> が使用されると、対象のPP接続がactiveな時だけクエリの評価を行うようになる。

# pp1接続がactiveな時に、`any .` なDNSクエリを、pp1から受信したDNSサーバーに問い合わせる
dns server select 500001 pp 1 any . restrict pp 1
# pp1接続がinactiveな時は500001でクエリが処理されないため、 500002で `any .` なDNSクエリを、dhcp lan2から受信したDNSサーバーに問い合わせる
dns server select 500002 dhcp lan2 any .

参考にしたところ

www.rtpro.yamaha.co.jp

https://changineer.info/network/yamaha_router_rtx/yamaha_router_rtx_dns_example.html

さいごに

コマンド体系を紐解いていくと、とても柔軟な設定ができることがわかった。

楽しい。

YubikeyのFIDO2 PINを変更するときにPINをresetしてはいけない

これは自分への戒めを込めた記事です。

TL; DR

  • Yubikey managerのFIDO2 PINをresetすると、FIDO2 security key認証に使われる内部のcredentialが変更され、それまでsecurity-keyを登録していたサイトで使えなくなる
  • 過去のPINを覚えている時は必ず Change PIN から変更する
  • PINを忘れたときだけ、 過去に登録したサイトで利用できなくなるリスクを受容して reset PIN を行う。

おきたこと

  1. YubikeyのPINを変更したい
  2. Yubikey ManagerのFIDO2項目を開く
  3. reset FIDO を選択してしまう
    reset FIDO
  4. それまでSecurity Keyを登録していたサイトで認証できなくなる
  5. AWSにログインできなくなる

ちなみにちゃんと警告してくれていました。 よく見ないほうが悪い。

reset FIDO?

原神を仮想フルスクリーン(ボーダーレス)でプレイする

2024-04-20追記

2024-01-31 ver4.4「彩る紙鳶、春梳きて」のアップデートで、公式機能として仮想フルスクリーンができるようになりました。うれしい!

課題

原神は、ゲーム内設定で最大解像度を選択するとフルスクリーンしか選べず、「マルチディスプレイ利用者が別ウインドウのアプリをアクティブにする」「Windowsキーを押す」などの動作で、原神が非アクティブな状態になると画面から消失してしまう。

やりたい

FFXIVやApex Legendsなど、仮想フルスクリーン(ボーダーレス)な状態で原神をプレイしたい

解決法

Borderless Gamingの導入

Borderless GamingをGitHubからダウンロードする。

  • GitHubのリリースからダウンロードする場合は無料。 Codeusa/Borderless-Gaming
  • Steam Apps版も存在している。こちらは作者を支援したい場合、アプリをSteamに統一したい場合など。 Borderless Gaming on Steam

原神の設定

原神のグラフィック設定を、最大解像度(フルスクリーン)にする

フルスクリーンの設定

原神がアクティブな状態で、ALT+ENTERを押して、ウィンドウモードにする

ALT+ENTERを押すとウインドウのバーがでる

(画像の下が見切れているのはマルチディスプレイのレイアウトの問題なので気にしなくてよい)

Borderless Gamingの設定

Borderless Gamingを起動し、原神をFavoritesに設定する

Borderless Gamingの設定

これで仮想フルスクリーンの状態で原神をプレイすることができる。

参考

ShareXでGyazoにアップロードするまで

画像アップロードサービス、皆様は何をお使いでしょうか。

私はこれまで、Windows環境ではずっと ShareX - The best free and open source screenshot tool for Windows を使ってGoogle Photosにアップロードしていましたが、とあるモチベーションでGyazoに切り替えることを決意しました。

ただ、画像編集機能はShareXに慣れてしまっているため、ShareXからGyazoに画像をアップロードすることにして、編集機能をそのまま使い続けようと思います。

ShareXには、Custom Uploader機能があり、好きなリクエストとレスポンスを定義してアップロードすることが出来ます。この機能と、Gyazo APIを用いてGyazoに画像をアップロードしようと思います。

※ShareXは画像に限らず任意のファイルやテキストファイル、URL短縮の機能など、これやりたい!というのをほとんど網羅しているのでWindows環境構築時には導入をお勧めするソフトウェアです

手順

Gyazo側の準備

Gyazo APIへはAccess Tokenを用いてアクセスするため、事前に Application を作成する必要があります。

  1. Gyazo Applications から「New Application」ボタンでアプリケーションを作成します。

f:id:suzutan0s2:20210523030439p:plain
New Application

Nameはお好きな物を、Callback URLはOAuthの認証を行わないため、仮置きのURLを設定します。 ここでは、プレースホルダに設定されていた http://example.com を入力しました。

アプリが作成されたら、アプリ名をクリックし、 Your access token のところにある Generate ボタンから、Access Token を作成します。

f:id:suzutan0s2:20210523030723p:plain
generate access token

Your access tokenのところに長い文字列が表示されていればOKです。このtokenはShareX側の設定で使用するためメモしておきます。(画像でいうと 8685bc~~~ の文字列)

f:id:suzutan0s2:20210523030900p:plain
accesss token

これでGyazo側の設定は完了。

ShareX側の準備

ShareXの基本操作等はここでは割愛します。

日本語表示のShareXでは、 アップロード先 > アップロード先を自分で設定 より、英語表示では Destinations > Custom uploader settings... より、任意のアップロード設定を追加することが出来ます。

以下のCustom Uploader設定のjsonをコピーしてから、 ShareXのImport from clipboard にて設定をインポートしてください。

{
  "Version": "13.4.0",
  "Name": "Gyazo",
  "DestinationType": "ImageUploader",
  "RequestMethod": "POST",
  "RequestURL": "https://upload.gyazo.com/api/upload",
  "Parameters": {
    "access_token": "<access_token_here>"
  },
  "Body": "MultipartFormData",
  "FileFormName": "imagedata",
  "URL": "$json:permalink_url$",
  "ThumbnailURL": "$json:thumb_url$"
}

f:id:suzutan0s2:20210523031448p:plain
Custom uploader settingsのImport

その後、URL parameters の <access_token_here> に、先ほどGyazoの準備で生成したaccess tokenを埋め込みます。

f:id:suzutan0s2:20210523032831p:plain
access_token_here

最後に、ShareXの After capture tasks > Upload image to host にチェックをいれ、

f:id:suzutan0s2:20210523033016p:plain
Upload image to host

Destinations > Image uploader から、 Custom image uploader にチェックをいれ設定完了です。

f:id:suzutan0s2:20210523033139p:plain
image uploader

無事にShareXから画像をアップロードすることが出来ました。

Screenshot - 4c7e81b9045330a267a803117272d620 - Gyazo

gyazo.com