Weil Jimmer's BlogWeil Jimmer's Blog


Category:Experience

Found 57 records. At Page 1 / 12.

[筆記] 在 DGX Spark 上架設 Sunshine + Moonlight 串流遠端桌面

No Comments
-
更新於 2026-03-30 21:38:39

前言

最近收了一台微星的 DGX Spark (MSI EdgeExpert),搞遠端桌面其實有點花費時間,寫這篇作為筆記。以免日後忘記。

安裝

我按照這篇直接運行指令安裝:

https://github.com/eelbaz/dgx-spark-headless-sunshine

git clone https://github.com/eelbaz/dgx-spark-headless-sunshine.git
cd dgx-spark-headless-sunshine
sudo ./configure_headless_sunshine.sh

基本上就大功告成!

但是配對 Pin 網址是 localhost 才能配對,如果輸入 IP 訪問的話,會有一些問題。需要改一些配置。

修改 CSRF Allowed Origin

nano ~/.config/sunshine/sunshine.conf

插入類似下面的新行,允許私有 IP。

csrf_allowed_origins = https://192.168.0.100:47990

這樣就可以直接透過 https://192.168.0.100:47990 連線不會出問題。

解析度

默認我沒有插入 HDMI 時,由於讀不到 HDMI 螢幕,所以我的默認解析度是 1600 x 900,我需要手動修改回 1920 x 1080。

可以修改 /etc/X11/xorg.conf 的配置。

找到各區塊,修改如下:

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Virtual"
    ModelName      "Headless"
    HorizSync      28.0 - 80.0
    VertRefresh    48.0 - 75.0
    Modeline       "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA GB10"
    Option         "AllowEmptyInitialConfiguration" "True"
    Option         "VirtualHeads" "1"
    Option         "ConnectedMonitor" "DFP-0"
    Option         "Coolbits" "28"
    Option         "ModeValidation" "NoMaxPClkCheck, NoEdidMaxPClkCheck, NoVesaModes, NoXServerModes, AllowNonEdidModes"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "MetaModes" "HDMI-0: 1920x1080_60.00 +0+0"
    SubSection     "Display"
        Virtual     1920 1080
        Depth       24
    EndSubSection
EndSection

重新啟動 GDM,即可生效。

sudo systemctl restart gdm

完成

之後每次開機默認就是 1080P 解析度,並自動開啟 Sunshine 軟體,允許透過 Moonlight 存取 DISPLAY :0。

By Weil Jimmer


This entry was posted in General, DGX, Experience, Note By Weil Jimmer.

[筆記] pfSense NUT 設定教學 - Network UPS Tools 完整配置指南

No Comments
-
更新於 2025-12-25 19:13:08

由於 UPS 的設定比較麻煩,這篇文章作為筆記紀錄目前的設定,預防未來忘記怎麼設定 NUT 服務。

安裝第三方 Package

設定

從「服務」找到 UPS 後,點 UPS Settings 開始填入配置。

我目前是 Local USB 的狀態,讓 UPS 透過 USB 線直連 pfSense。

品牌則是 Cyberpower CP1500PFCLCDa TW,這邊驅動選 usbhid,vendorid 則是 0764,僅限我這款 UPS 是這樣,其他的型號,可能需要透過 lsusb 之類的方法查到 VID 為多少。

在我的例子中,interruptonly 這個詞在 pfSense 版本 2.8.1 後必須要加入,否則無法正常運作。


port = auto
vendorid = 0764
interruptonly

upsmon.conf


DEADTIME 15
POWERDOWNFLAG /var/run/nut/killpower

ups.conf


maxretry = 99999
debug = 9

upsd.conf


LISTEN 0.0.0.0 3493

upsd.users

建立 NUT 使用者帳號,以便其他需要監測 UPS 的服務能夠連線上這台 NUT 伺服器。


[upsuser]
  password = MY_SECRET_PASSWORD
  upsmon master

完成

之後可以看到目前 UPS 的電量、剩餘時間等狀態,之後就可以設定 NAS 上的 UPS 服務或個人電腦的 UPS 監測服務。

By Weil Jimmer


This entry was posted in General, Experience, The Internet, Note, OpenWrt, Tools By Weil Jimmer.

拋棄 OpenWrt 遷移到 pfSense:搭建 Wireguard VPN 與 VLAN 網路隔離實戰筆記

No Comments
-
更新於 2025-09-20 00:12:30

前言

用了將近一兩年的 Openwrt 後,個人覺得 Openwrt 還是有不少令人遺憾的點,正因為這些原因我才遷移到 pfSense。

首先是 Openwrt 對於防火牆規則設置的侷限性,優先級有點混亂,讓我又愛又恨,不能說多糟糕,但一旦網路規則一多後,實在沒有 pfSense 那麼好用,pfSense 對於規則的優先級比較簡單明瞭。

第二點,也是我遷移的最主因,對於雙層路由器的網路結構來說,在 Openwrt 設置 VPN 路由會很麻煩很麻煩。

所以我就搬到 pfSense 了,剛開始會有一天的陣痛期,因為要熟悉新的設定,而且 pfSense 太多太多設置可以調了,非常非常的細,很多非常專業的功能。設置沒有像 Openwrt 那樣容易上手。但熟悉後,就會覺得很舒服了。

雖然 pfSense 太過專業複雜,但我最終還是選用了 pfSense。

網路配置

首先介紹帶有 VPN 的基礎網路配置:(如下圖)

希望實現的目標

  1. 在 LAN1 下,所有設備能夠通過路由器上設置的 VPN 上網。
  2. 在 LAN1 下,限制特定的 PC 才有權限訪問一級路由所在的網段 (192.168.0.0/24)。
  3. 在 LAN2 下,所有設備走正常的 WAN 路由上網,不經過 VPN。

Openwrt 的行為

在這種狀況下,一旦設置完 wg0 (VPN)介面,會路由 0.0.0.0/0 的流量,導致,PC (192.168.10.100) 將會失去能夠連線 192.168.0.0/24 的能力,Openwrt 會根據路由規則把目的地為 192.168.0.1 的封包送到遠端伺服器(VPN伺服器)。那自然而然會無法訪問 192.168.0.1。

如果要允許 192.168.10.100 前往 192.168.0.1 該怎麼辦?在開啟 kill-switch 時,防火牆規則是禁止 LAN1 轉發到 WAN 的,所以需要再新增規則允許 192.168.10.100 轉發到 192.168.0.1。不過,即使這麼設置仍然也不能訪問 192.168.0.1。

新增好防火牆規則,只是理論上轉發封包到 192.168.0.1,實際上要不要轉發封包到 WAN 並不是單單依靠防火牆規則。因為路由規則不是這樣寫的,所以實際上不會轉發封包到 WAN。所以還要再裝其他東西,例如 Policy Base Routing,非常的繁瑣,安裝好後,還要再一個一個輸入 IP 和目的地,很麻煩。

不然就是要建立一個新的路由表,指定 192.168.0.0/24 要走 WAN 介面,然後把這個路由規則套用在 LAN1 下,並且優先級要高於預設的路由表,如此一來才會生效。

但這些設置非常靠北,最終讓我棄坑 Openwrt。而 pfSense 呢?非常簡單,也無需再安裝第三方路由規則的套件。

pfSense 的行為

首先介紹一下 pfSense 的優勢。

pfSense 的防火牆規則可以使用別名將 IP 段綁成一起,並且也能再把多個別名綁定成一組別名,所以要設置防火牆非常輕鬆。

第二點,pfSense 可以在防火牆 NAT 轉換那邊直接設置轉發 LAN1 的流量到 wg0。這個設定並不會影響 LAN1 能不能前往 192.168.0.0/24 的能力,如果有設置允許的規則的話,仍然是可以正常訪問到 192.168.0.0/24,我覺得光是這一點就已經贏了 Openwrt。

完全不需要再去考慮的路由的問題,畢竟底層已經不是 iptables,而是 FreeBSD 的 Packet Filter (PF)。

因此,我只要在 NAT 設定 LAN1 轉發到 WG0,然後允許 LAN1 前往 * (任意地址),這樣 LAN1 也能訪問一級路由器的網段,可以自由的到 Server-1、Server-2,而且訪問網際網路時,遠端伺服器看到 LAN1 PC 的 IP 會是 VPN 伺服器的 IP。

可以完美實現我想要的功能,並且幾乎不需要什麼太難的設定,也不用燒腦的思考路由規則。在 pfSense 的防火牆規則中,最上面先寫的,優先級最高,逐一往下執行,如果規則匹配該流量,就直接執行該規則,進行放行或阻止。

下面介紹怎麼配置。

設置 Wireguard

新增 Tunnel

如下圖範例,我已經先創建了,基礎的 Tunnel,並填入 Private Key。

建立 Peer

將伺服端 IP (EndPoint) 和公鑰填入。Allowed IP 可以放心的填 0.0.0.0/0,不用像 Openwrt 會需要搞一堆麻煩的路由規則。

建立 WG0 介面

將 tun_wg0 加入到自己建立的介面 WG0 中。

建立 Gateway

需要在 Gateway 新增新的 wg0 介面,作為 WAN 端的可選路由,之後可以在 NAT 中選擇。

需要注意的一點是:必須打勾 Disable Gateway Monitoring Action,No action will be taken on gateway events. The gateway is always considered up.,打勾這個選項才能避免當 VPN 連線中斷時,被切換到 WAN 的流量,導致 IP 洩漏。

基本上 Wireguard VPN 到這步就差不多準備就緒。

設置 NAT

在我這裡,我將 LAN 用 VLAN 分割成五個網段,其中 OPT1 就是 LAN1,直接在 NAT address 那設定成 WG0 address,其餘其他內網維持 WAN address 就相當於沒有走 VPN 的通道。

設置防火牆規則

這裡我的設定非常簡單。

  1. 第一條,允許 LAN1 到 LAN1。
  2. 第二條,允許管理員的 IP 可以訪問到上級網段。
  3. 第三條,禁止 LAN1 訪問所有內部網路 (例如 LAN1、LAN2、LAN3 等等)。
  4. 第四條,允許 LAN1 到任何地方。

稍微介紹一下為何這麼設定。

首先 PF 默認是全部拒絕,所以如果沒有設定允許訪問外網的規則的話,會不能上網。因此規則裡面必須要有一條是允許前往任何地方,這條規則就是第四條,被我擺在最後面。

再來就是,因為 PF 沒有【網路隔離】的概念,如果設置了允許前往任何地方,那麼 LAN1 也能訪問 LAN2 也能訪問 LAN3 等等,而我需要隔離所有內網,所以我設定了第三條規則,禁止訪問內部網路。

最後,因為禁止訪問內部網路,所以 LAN1 也無法訪問 LAN1,因此需要再加一條 LAN1 可以訪問 LAN1 的規則,我放在第一條,所以會被最優先執行。

至於第二條允許管理員 IP 訪問上游網路,則是用來指定特定的 IP 可以訪問 192.168.0.0/24 網段,避免下面的裝置有能力對我其他網路設備展開攻擊或滲透。

測試

下圖中,vm301 是一台虛擬機器,位於 192.168.10.100 (LAN1),如果我給它加入到管理員 IP 白名單中的話,它就能夠 ping 通上級網路 (192.168.0.0/24)。

並且在外網來看,它的真實 IP 為 185.xxx.xxx.xxx (是 VPN 的 IP)。我自己的公網 IP 是 220 開頭。

如果我將 vm301 的內網 IP 從管理員白名單中移除,它就沒辦法訪問 192.168.0.0/24 的網段,而且從外網看,它的真實 IP 仍然是 185.xxx.xxx.xxx (是 VPN 的 IP)。

總結

經過幾個月的使用體驗後,pfSense 的防火牆規則給我的感覺是非常的非常的舒服,不像 Openwrt 那樣太簡陋,pfSense 防火牆非常多設定可以設置,既強大又簡單明瞭。

By Weil Jimmer


This entry was posted in General, Experience, The Internet, Note, OpenWrt By Weil Jimmer.

在 Meta Quest 3 安裝 Google 注音中文輸入法完整教學 - 支援 2D 和 VR 應用程式 (全局輸入法)

No Comments
-
更新於 2025-06-08 22:55:35

前言

我覺得 Meta 不開放中文根本就是歧視中文母語使用者。內建鍵盤竟然沒有任何中文輸入法可以選擇,也無從安裝,安裝得用非常麻煩的方法,類似利用漏洞,真的很可惡。

明明底層是安卓系統,偏偏不開放直接讓人安裝 APK,故意把鍵盤設定拿掉,太噁心了。

啟用開發人員模式

我目前的 Meta Quest 3 版本號碼是 v77.0,先確定版本號沒問題再試。不確定未來會不會修掉,也許未來就不能改了,使用後記得要關閉更新。

首先,開啟手機上的 「Meta Horizon」 App,然後點自己頭盔的圖示按鈕。

頭盔要開機能和手機連線,接著點「頭戴式裝置設定」,再點「開發者模式」,啟用開發人員模式。

安裝能夠 side load APK 的軟體

我是使用「Mobile VR Station」,可以在商店中搜尋到。

安裝完後,點開,選擇 Android 配置精靈。

點顯示所有選項。

請求權限

這時候應該會有彈窗,都按允許,接著換下一個也點點看。

都開啟後,應該能夠開啟安卓內建的【文件】。

使用那個 App 到 Downloads 資料夾安裝 Quest助手(APK)。

https://quest.vrzwk.cn/

接著安裝各種輸入法的 APK,例如 Google注音輸入法 APK。

開啟 Quest助手

點開設定 App,這邊沒辦法截圖,就只能口頭說了,從【系統】,找到【鍵盤】,接著選擇啟用剛剛安裝的 Google注音輸入法。

然後,從 Quest助手中啟動 Google注音輸入法,點開,會提示彈出輸入法選單,直接選擇 Google注音輸入法。

然後重開機,就有全局 Google注音輸入法了。

完成

更新說明

似乎在 2025/06/04 的 v77.1027 版本中,這個功能被又拿掉了,底層系統現在叫不出切換輸入法的 UI 介面,萬惡的 Meta.,已經升級上去就沒救了。

這邊我有開發一款 App 可以在 Quest3 中使用注音輸入法,但只能在 App 中打好字後,用複製貼上的。畢竟底層不開放,就算真的 Support 輸入法功能也沒意義

有需要可以到這裡下載:https://github.com/WeilJimmer/ChineseInputKeyboardVRApp

By Weil Jimmer


This entry was posted in Android, General, Experience, VR By Weil Jimmer.

[筆記] Git 儲存庫從 SHA256 降級為 SHA1 經驗

No Comments
-
發布於 2025-01-23 00:37:48

前言

昨晚心血來潮,用了 Gitea 建了一個儲存庫,那時候手賤選了 SHA256,想說要用最新的,結果當我寫完專案,想要備份到 Github 上,才發現推送不上去,跳出錯誤。


fatal: the receiving end does not support this repository's hash algorithm
fatal: the remote end hung up unexpectedly

看到關鍵詞 hash algorithm 就知道是選了 SHA256 的黑鍋。

如果遇到,最快的方式是直接建一個新專案,然後 add 全部代碼,然後 commit,這是最快的解法。

當時,就是想要保留歷史紀錄,結果找老半天,沒找到怎麼保留歷史紀錄轉換成 SHA-1 的方法,真的是爬很多資料,試了一堆方法。

下面分享我試成功的命令。

將 SHA256 專案轉成 SHA1 的格式

在 SHA-256 repo 中,export 紀錄。

cd original-repo
git fast-export --all --use-done-feature --reencode=yes > ../export.dat

建立 SHA1 的新專案

cd ../new-repo
rm -rf * .git  # 清空目錄
git init --object-format=sha1

匯入所有歷史紀錄

git fast-import --quiet < ../export.dat

重建 & 清理

git checkout main
git gc --aggressive

重新簽章(非必要)(Rebase)


git rebase --root -i --exec 'git commit --amend --no-edit -S'
# -i 代表互動模式
# --root 從第一個提交開始
# -S 代表用目前的 GPG key 簽署

By Weil Jimmer


This entry was posted in General, Experience, Git, Note By Weil Jimmer.

 1 2 3 4 5 6 7 8 9 10 11 12 /12 頁)下一頁 最終頁

Visitor Count

pop
nonenonenone

Note

不要和愚蠢的人發生爭執。

支持網路中立性.
Support Net Neutrality.

支持臺灣實施
無條件基本收入

歡迎前來本站。

Quotes

我一定會老。

我一定會病。

我一定會死。

人生終須一別。

我們是業的主人。

Search

Music

Life Counter

22791days



Breaths between now and when I die.

Blogging Journey

4966days

since our first blog post.

Words Quiz


Quotes

The strong do what they can and the weak suffer what they must.

Privacy is your right and ability to be yourself and express yourself without the fear that someone is looking over your shoulder and that you might be punished for being yourself, whatever that may be.

It is quality rather than quantity that matters.

I WANT Internet Freedom.

Reality made most of people lost their childishness.

Justice,Freedom,Knowledge.

Without music life would be a mistake.

Support/Donate

This site also need a little money to maintain operations, not entirely without any cost in the Internet. Your donations will be the best support and power of the site.
MethodBitcoin Address
bitcoin1gtuwCjjVVrNUHPGvW6nsuWGxSwygUv4x
buymeacoffee
Register in linode via invitation link and stay active for three months.Linode

Support The Zeitgeist Movement

The Zeitgeist Movement

The Lie We Live

The Lie We Live

The Questions We Never Ask

The Questions We Never Ask

Man

Man

THE EMPLOYMENT

Man

In The Fall

In The Fall

Categories

Android (8)

Announcement (4)

Arduino (2)

Bash (2)

C (3)

C# (5)

C++ (1)

DGX (1)

Experience (57)

Flash (2)

Free (13)

Functions (36)

Games (13)

General (67)

Git (3)

HTML (7)

Java (13)

JS (7)

Mood (24)

NAS (2)

Note (37)

Office (1)

OpenWrt (8)

PHP (9)

Privacy (5)

Product (12)

Python (4)

Software (11)

The Internet (28)

Tools (18)

VB.NET (8)

VR (1)

WebHosting (7)

Wi-Fi (5)

XML (4)