最近のUSBハブに苦言を…

ケーブルがコネクター式になってるものがほとんどなくて、本体にケーブルが直付けされているもが大多数。ケーブル断線したらどうすんのって感じだが…
それに、直付けされているものはケーブルが短すぎて、デスクトップで使うことを想定していない。宙吊りで使うのは危険すぎる。
ポート数の少ないノートパソコンにターゲットを絞ってるからとか、USB規格で決められているケーブル長を守らないで使って、動かない!という人を防ぐためなのか知らないけど…
デスクトップ向けでも使いやすいようなハブを作って欲しいな。周辺機器メーカーに届けこの思い。

愛用しているサンワサプライ製ハブ、USB-HAS410BK。コネクター式となっていて、長いケーブルも使える。

パルワールドをLinuxで動かす

そもそも、Steam Deck上のLinuxベースなSteam OSで動いているので、当然動くだろと言えばそうなんだけど、Fedora 41でも確認したので、メモとして残しておく。

Steamとパルワールドがインストールされていることが前提。

ライブラリ上のパルワールドを右クリックして、「プロパティ」をクリック。

「互換性」から、「特定のSteam Play互換ツールの使用を強制する」にチェックし、「Proton Experimental」を選択。

GeForceかつnouveauドライバーの場合は、「一般」→「起動オプション」に下記を追加しないと起動時にフリーズした。

PROTON_HIDE_NVIDIA_GPU=1 %command%

Radeonのamdgpuドライバー、GeForceのプロプライエタリドライバーでは起動オプション不要。(Radeonのプロプライエタリドライバーは試してない)

リモートのLinux版RustDeskの音が途切れ途切れになる問題の対処法

長年にわたって以下の条件を満たすリモートデスクトップソフトを探していて、ついにRustDeskを見つけた。

  • マルチプラットフォーム、最低でもWindows、Linux対応
  • H.264やVPx系のエンコーダー対応で、動画も耐えられる
  • オープンソース

使ってみたところ、すごく良かったのでXRDPからの移行を進めようかと。もっと早く知りたかったよこれ。

更に、

  • GPUによるハードウェアアクセラレーションにも対応。※ただしLinux版はバグがあり、記事作成時点で機能していない模様
  • 試験的機能ではあるがLinux版はWaylandにも対応

セッションブローカーのような役割をするサーバーも存在する。このサーバーソフトも「OSS版」は無料!

HPやソフト内のリンクからたどると有料のPro版に誘導されるけど、OSS版は無料。大事なことなので2回。いやー、いい時代になったよ。

テスト運用中に一つ問題があって、Linuxの仮想マシンをリモート先としてテストしていたんだけど、音がかなり聞き取りづらいほど途切れ途切れになってしまう現象を確認した。

今回はその対処法が見つかったので紹介する。Pipewireのチューニングを行うことで、完璧ではないものの、大きく改善する。Fedora 40、Ubuntu 24.04で動作確認済み。

対処法

  1. リモート先にログインする
  2. ~/.config/pipewire/pipewire-pulse.conf.d/10-rustdesk.confに下記の設定を入力して保存
    pulse.rules = [
        {
            matches = [ { application.name = "RustDesk" } ]
            actions = {
                update-props = {
                    pulse.min.frag = 2048/48000
                    pulse.default.frag = 2048/48000
                }
            }
        }
    ]
  3. 続いて、仮想マシン環境の場合は~/.config/pipewire/pipewire.conf.d/10-vm.confに下記の設定を入力して保存
    context.properties.rules = [
        {   matches = [ { cpu.vm.name = !null } ]
            actions = {
                update-props = {
                    # These overrides are only applied when running in a vm.
                    default.clock.min-quantum = 1024
                }
            }
        }
    ]
  4. 端末を開き、下記を実行
    systemctl --user restart wireplumber pipewire pipewire-pulse
  5. RustDeskで接続中の場合は再接続する

初期状態では96000/48000と非常に大きなバッファが取られていた。

参考

Fedora 40でRustサーバーが落ちる場合の回避策

Fedora 40にアップグレードしてから、起動直後にRustのサーバーがsegmentation faultで落ちる症状が出るようなった。

どうやらFedora 39までOS標準で備わっていたzlibというライブラリが、Fedora 40になってzlib-ngに置き換わっているのが原因の模様。

zlibをビルドしてプリロードしてやると、問題を回避できることが判明。

他にFedora 40で動かないアプリでも使えるかもしれないし、将来、他のディストリビューションで同じような置き換えが起きた際に使えるかもしれない。

ビルド:

mkdir zlib
cd zlib
wget https://www.zlib.net/current/zlib.tar.gz
tar -xvf zlib.tar.gz
cd zlib-1.3.1/
./configure
make

LD_PRELOADを追加してサーバーを起動

LD_PRELOAD=/path/to/zlib/zlib-1.3.1/libz.so ./runds.sh

Carbonを使っている場合は、/carbon/tools/environment.shの下記の行を編集

export LD_PRELOAD="${CARBONENV_BASEDIR}/libdoorstop.so"

export LD_PRELOAD="/path/to/zlib/zlib-1.3.1/libz.so:${CARBONENV_BASEDIR}/libdoorstop.so"

一応zlib-ngでもzlibと互換性を持たせてるらしく、zlib-ng-compatというパッケージもあるが、インストールしても変わらなかった。

Fedoraは先進的で新しい機能とかも早く使えるけど、その分こういうトラブルも起きるんだよね…

自宅サーバーのIPアドレスを隠してサーバーを公開する方法

適当なタイトルが思いつかなかった…

内容としては、クラウド上のVPSにフロントエンドサーバーを建てて、プロキシーのようにフロントエンドサーバーを経由してクライアントと通信させるということ。クライアントから見えるのはフロントエンドサーバーのIPアドレスってわけ。

結構上級者向けの内容。WireGuard、ファイアーウォールやNATの知識があることが前提。

大変参考にした記事: Internet Watch / 清水理史の「イニシャルB」:VPSを使って「マインクラフト」などの自宅ゲームサーバーを安全に公開する方法

ここからいくつかアレンジをしている。

  1. 自宅内のゲームサーバー上に直接WireGuardを置くのではなく、WireGuardで通信するゲートウェイサーバーを、ゲームサーバーとは別に独立して用意する
    →自宅内に複数台のサーバーがあったり、他に管理したいマシンがあるケースに対応できる
  2. ファイアーウォールをufwからnftablesに変更
  3. 普段Fedoraを利用していて、Fedoraで利用する方法も載せたかったので、今回は自宅のVPNゲートウェイをFedoraで構築。コマンドとファイルの配置場所が違うぐらいだけど…
  4. シンプルにするため、ここでは冗長化は扱わない

参考にした記事ではゲームサーバーで利用するケースが想定されているが、ポート番号やプロトコルの設定を変更すれば、様々なアプリケーションに対応可能。話題のパルワールドのサーバーでも、Webサーバーでも利用可能。

続きを読む