Weil Jimmer's BlogWeil Jimmer's Blog


Category:Note

Found 37 records. At Page 1 / 8.

[筆記] 在 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.

[筆記] 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.

[筆記] WireGuard 架設伺服器

2 Comments
-
更新於 2024-12-12 22:35:11

前言

最近要搞 Wireguard 才發現要弄這個好麻煩,之前做過的事都忘光光,在這裡留個筆記,下次直接抄。

伺服端

安裝套件

sudo apt install wireguard

生成私鑰

wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod 600 /etc/wireguard/private.key

生成公鑰

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

設定允許 IPv4 轉發

修改 `/etc/sysctl.conf`

sysctl net.ipv4.ip_forward=1

建立配置文件

sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = 伺服端私鑰
Address = 10.6.0.1/24
DNS = 8.8.8.8
ListenPort = 51820

[peer]
PublicKey = 客戶端公鑰
AllowedIPs = 10.6.0.2/32
PersistentKeepalive = 25

對 Server 來說自己的 IP 為 10.6.0.1,客戶端 IP 為 10.6.0.2。

啟動指令

sudo wg-quick up wg0

關閉指令

sudo wg-quick down wg0

開啟端口 51820 的指令

sudo iptables -I INPUT -p udp -m udp --dport 51820 -j ACCEPT

客戶端

配置文件

[Interface]
PrivateKey = 客戶端私鑰
Address = 10.6.0.2/24
DNS = 8.8.8.8

[Peer]
PublicKey = 伺服端公鑰
AllowedIPs = 10.6.0.0/24
Endpoint = domain.net:51820
PersistentKeepalive = 25

對 Client 來說自己的 IP 為 10.6.0.2,伺服端 IP 為 10.6.0.1。並且,10.6.0.0/24 的路由會通過 wg0 的網路介面。

如果要設定全部流量則是把 AllowedIPs 設定成 0.0.0.0/0

By Weil Jimmer


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

 1 2 3 4 5 6 7 8 /8 頁)下一頁 最終頁

Visitor Count

pop
nonenonenone

Note

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

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

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

歡迎前來本站。

Quotes

我一定會老。

我一定會病。

我一定會死。

人生終須一別。

我們是業的主人。

Search

Music

Life Counter

22787days



Breaths between now and when I die.

Blogging Journey

4970days

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)