EMCola 浪迹于互联网世界,混迹于天地之间,关注网络空间、人生点滴、思想星光 EMCola is my space for my life & my idea & knowledge
2023年2月9日 星期四
Docker install Trojan-go Xray
2023年2月2日 星期四
在 Docker 中為 Brother DCP-T310 安裝 CUPS 驅動程序
本指南將引導您如何在 Docker 容器中設定 CUPS 服務,並為 Brother DCP-T310 多功能印表機安裝驅動程序。由於 Brother DCP-T310 沒有官方的 64 位 Linux 驅動程序,我們將利用 Brother 官方提供的安裝腳本來解決此問題。
必要條件:
- 已安裝 Docker 和 Portainer (或 Docker CLI)。
- Brother DCP-T310 印表機已連接到您的主機。
步驟 1:部署 CUPS Docker 容器
我們將使用 olbat/cupsd
映像來創建 CUPS 服務容器。
使用 Portainer 部署 (推薦):
- 登入您的 Portainer 儀表板。
- 導航到 "Containers" (容器) -> "Add container" (添加容器)。
- Image (映像): 輸入
olbat/cupsd
- Name (名稱): 輸入
cupsd
(或其他您喜歡的名稱) - Port mappings (端口映射):
- 將
631
(Host) 映射到631
(Container)。這將允許您通過主機的 631 端口訪問 CUPS 網頁介面。
- 將
- Volumes (儲存卷):
- Bind (綁定): 將
/var/run/dbus
(Host) 映射到/var/run/dbus
(Container)。這是為了讓 CUPS 能與主機的 D-Bus 系統通信,尤其對於 USB 設備管理很重要。 - Bind (綁定): 將
/dev/bus/usb
(Host) 映射到/dev/bus/usb
(Container)。這一步至關重要,它允許容器直接訪問主機的 USB 設備,包括您的印表機。
- Bind (綁定): 將
- Runtime & Resources (運行時與資源):
- 勾選 "Privileged mode" (特權模式)。由於容器需要直接訪問 USB 設備和底層系統資源,特權模式是必需的。
使用 Docker CLI 部署:
在您的終端機中運行以下命令:
docker run -d \
-p 631:631 \
-v /var/run/dbus:/var/run/dbus \
-v /dev/bus/usb:/dev/bus/usb \
--name cupsd \
--privileged \
olbat/cupsd
步驟 2:在 CUPS 容器內安裝 Brother DCP-T310 驅動程序
由於 Brother DCP-T310 沒有現成的 64 位驅動程序,我們需要進入容器內部,執行 Brother 官方提供的安裝腳本。
-
進入 CUPS 容器的 Shell:
- 使用 Portainer: 導航到 "Containers" (容器),找到您的
cupsd
容器,點擊其名稱,然後點擊 "Console" (控制台) 或 "Exec console" (執行控制台),選擇sh
或bash
。 - 使用 Docker CLI:
Bash
docker exec -it cupsd bash
- 使用 Portainer: 導航到 "Containers" (容器),找到您的
-
下載並運行 Brother 印表機安裝程序: 在容器的 Shell 內,依序執行以下命令:
Bash# 下載 Brother 官方安裝腳本 wget https://download.brother.com/welcome/dlf006893/linux-brprinter-installer-2.2.3-1.gz # 解壓縮 gzip -d linux-brprinter-installer-2.2.3-1.gz # 賦予執行權限並運行安裝腳本 # 當腳本提示您輸入印表機名稱時,輸入 "DCP-T310" bash linux-brprinter-installer-2.2.3-1 DCP-T310
注意:
- 安裝腳本會引導您完成安裝過程。當提示您選擇印表機型號時,請確認輸入
DCP-T310
。 - 腳本可能會詢問您是否要安裝相關依賴、配置網路等,請根據提示操作。通常,對於 USB 連接,您可能需要選擇 USB 或自動檢測選項。
- 安裝腳本會引導您完成安裝過程。當提示您選擇印表機型號時,請確認輸入
-
退出容器 Shell: 完成驅動程序安裝後,輸入
exit
退出容器的 Shell。
步驟 3:在 CUPS 伺服器中添加印表機
現在驅動程序已經安裝在容器中,您可以通過 CUPS 網頁介面添加您的印表機。
-
訪問 CUPS 網頁介面: 在您的網頁瀏覽器中打開
http://127.0.0.1:631
(如果您的 Docker 主機 IP 地址不是127.0.0.1
,請替換為實際 IP)。 -
登入 CUPS 介面: 點擊 "Administration" (管理)。當要求輸入使用者名和密碼時:
- 使用者名稱:
print
- 密碼:
print
- 使用者名稱:
-
添加印表機: 在 "Administration" 頁面下,點擊 "Printers" (印表機) 部分的 "Add Printer" (添加印表機)。
- CUPS 應該會自動檢測到通過 USB 連接的 Brother DCP-T310。選擇它並繼續。
- 按照提示命名您的印表機,添加描述和位置。
- 在驅動程序選擇步驟,CUPS 應該會推薦已安裝的 Brother DCP-T310 驅動程序。選擇它並完成設置。
完成這些步驟後,您的 Brother DCP-T310 印表機應該就能通過 CUPS 伺服器(運行在 Docker 容器中)正常工作了。您可以嘗試列印測試頁來確認其功能。
2023年1月20日 星期五
Ubiquiti EdgeRouter X (ERX) 路由器 IPv6 配置指南 (適用於 PPPoE 環境)
如何在 Ubiquiti EdgeRouter X (ERX) 上配置 IPv6,主要針對 PPPoE 連接類型。內容涵蓋了 MSS Clamping 的調整、DHCPv6-PD 配置以及一些常見問題的解決方案。
重要提示:
- 在進行任何配置更改之前,建議您備份當前的路由器配置。
- 操作前請確保您對 EdgeOS 的基本操作有一定了解。
1. MSS Clamping 配置 (firewall/options/mss-clamp6)
MSS (Maximum Segment Size) Clamping 對於 IPv6 流量的穩定性至關重要,尤其在 PPPoE 環境下。不正確的 MSS 值可能導致部分網站或服務無法正常訪問。
- 路徑:
Config Tree
->firewall
->options
->mss-clamp6
- 建議值:
1432
- 計算方式: 標準 PPPoE 環境的 IPv6 MSS 值通常為
1500 (MTU) - 8 (PPPoE Header) - 40 (IPv6 Header) - 20 (TCP Header) = 1432
。
- 計算方式: 標準 PPPoE 環境的 IPv6 MSS 值通常為
- 故障排除: 如果設置為
1432
後仍出現問題 (例如部分網頁無法加載),您可以嘗試將 MSS 值進一步調小,例如1382
。這是因為某些服務提供商或網路環境可能存在更嚴格的限制。
2. DHCPv6-PD (Prefix Delegation) 配置 (內網 IPv6 分配)
DHCPv6-PD 允許路由器從 ISP 獲取一個 IPv6 前綴,並將其分配給內網設備。這對於在多個內網段分配 IPv6 地址特別有用。
- 路徑:
interfaces
->ethernet
->eth0
(或您的 PPPoE 介面) ->pppoe
->0
(或您的 PPPoE 連接號) ->dhcpv6-pd
->pd
->0
(第一個前綴委派) - 配置詳細:
- interface (內網介面): 點擊進入此項,為您希望啟用 IPv6 的內網介面進行配置。
- host-address:
- 單個內網段: 如果您只有一個內網 IPv6 段 (例如
192.168.1.x
),設定為::1
。這表示該介面將獲得從委派前綴派生出的第一個可用地址。 - 多個內網段: (如您所提到的
192.168.1.x
和192.168.2.x
) 您需要為每個內網介面配置不同的prefix-id
。
- 單個內網段: 如果您只有一個內網 IPv6 段 (例如
- prefix-id:
- 如果您只有一個內網段,設定為
:1
。 - 如果您有兩個內網段,例如一個
192.168.1.x
對應eth1
,另一個192.168.2.x
對應eth2
(或其他 VLAN 介面),您可以將eth1
的prefix-id
設為:1
,將eth2
的prefix-id
設為:2
。這樣,每個內網段都會獲得一個獨立的/64
IPv6 前綴。
- 如果您只有一個內網段,設定為
- service: 選擇
slaac
(Stateless Address Autoconfiguration)。這允許內網設備通過路由通告自動配置 IPv6 地址,而無需 DHCPv6 伺服器。
- host-address:
- 委派前綴大小調整:
- 路徑: 在點開
pd/0
後,您可能會看到/64
。 - 修改: 將其修改為
/60
。這將請求 ISP 提供一個更大的前綴 (包含 16 個/64
子網),以便您可以為多個內網介面分配獨立的/64
地址段而不會報錯。
- 路徑: 在點開
- interface (內網介面): 點擊進入此項,為您希望啟用 IPv6 的內網介面進行配置。
3. 外網 IPv6 地址配置 (interfaces/ethernet/eth0/pppoe/0/ipv6)
這部分配置確保路由器的 PPPoE 介面能夠獲取到其自身的 IPv6 地址。
- 路徑:
interfaces
->ethernet
->eth0
(或您的 PPPoE 介面) ->pppoe
->0
(或您的 PPPoE 連接號) ->ipv6
- 配置:
- address: 點擊
+
添加。這會讓路由器從 ISP 自動獲取 IPv6 地址。 - enable: 點擊
+
啟用 IPv6 功能。
- address: 點擊
4. 完成設置與應用
- 預覽並應用: 完成上述所有設置後,點擊頁面底部的
Preview
(預覽) 查看所有待應用的更改,然後點擊Apply
(應用) 使配置生效。
5. DNS 服務與 IPv6 相關優化
如果 IPv6 DNS 服務不穩定,導致網頁載入緩慢或卡頓,您可以考慮啟用 no-dns
選項。
- 路徑:
interfaces
->ethernet
->eth0
(或您的 PPPoE 介面) ->pppoe
->0
(或您的 PPPoE 連接號) ->ipv6
- 選項: 啟用
no-dns
選項。- 作用: 這樣路由器就不會向客戶端分發 ISP 提供的 IPv6 DNS 服務器地址,而是依賴其他方式 (例如客戶端使用其自身的 IPv4 DNS 服務器,或您在路由器上配置其他可靠的公共 IPv6 DNS,如 Google DNS
2001:4860:4860::8888
和2001:4860:4860::8844
)。
- 作用: 這樣路由器就不會向客戶端分發 ISP 提供的 IPv6 DNS 服務器地址,而是依賴其他方式 (例如客戶端使用其自身的 IPv4 DNS 服務器,或您在路由器上配置其他可靠的公共 IPv6 DNS,如 Google DNS
6. 無 DHCPv6-PD 的情況 (IPv6 NDP 解決方案)
如果您的 ISP 沒有提供 DHCPv6-PD,而僅僅通過 IPv6 NDP (Neighbor Discovery Protocol) 分配地址,您可以考慮在 EdgeRouter X 上安裝 ndppd
(Neighbor Discovery Protocol Proxy Daemon) 來實現。
- 背景: 在 OpenWRT 環境中,這通常通過安裝
ndppd
套件來實現,它會將外網 (例如eth0
) 接收到的 NDP 請求轉發到內網 (例如br-lan
)。 - EdgeRouter X 實現:
- EdgeRouter X 運行的是 EdgeOS (基於 Debian 的 Vyatta 分支)。
- 您需要 SSH 登入路由器,然後嘗試安裝
ndppd
。 - 安裝命令 (可能需要先更新 apt 源並獲取 root 權限):
Bash
sudo apt update sudo apt install ndppd
- 配置
ndppd
: 安裝完成後,您需要手動編輯ndppd
的配置文件 (通常在/etc/ndppd.conf
),指定要代理的介面 (外網介面和內網介面),並啟動服務。這部分配置會更複雜,需要參考ndppd
的文檔或相關教程。
注意: 這種情況相對複雜,且 ndppd
並非 EdgeOS 的預設套件。在嘗試此方法之前,請確保您已了解相關風險,並知道如何通過 SSH 恢復路由器。
通過遵循以上步驟,您應該能夠在 Ubiquiti EdgeRouter X 上成功配置 IPv6,享受更快的網路連接並為未來的網路趨勢做好準備。
2020年2月23日 星期日
$ sudo service apache2 restart Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
$ sudo service apache2 restart
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
虽然找到了许多网友的解决办法,但是没有一个全套解决办法,只好耐心一个合着试验,最终解决了。
1、重新安装apache2
$ systemctl restart apache2
$ journal -xe
$ sudo apt-get purge apache2
$ sudo apt autoremove apache2
$ sudo apt-get purge apache2
$ sudo apt-get purge apache2*
$ sudo apt-get install apache2
$ sudo service apache2 start
2、重点在这里:重新安装了apache2,网站正常访问了,但是php却无法正常运行,
问题是这个
php7.3没有运行,
所以:sudo a2enmod php7.3
但是出现如下提示:
Considering dependency mpm_prefork for php7.3:
Considering conflict mpm_event for mpm_prefork:
ERROR: Module mpm_event is enabled - cannot proceed due to conflicts. It needs to be disabled first!
Considering conflict mpm_worker for mpm_prefork:
ERROR: Could not enable dependency mpm_prefork for php7.3, aborting
所以接着:
sudo a2dismod mpm_event
Module mpm_event disabled.
To activate the new configuration, you need to run:
systemctl restart apache2
OK,解决了
2020年1月1日 星期三
installing boost 166
CMake Error
是一個非常典型的庫版本不匹配問題。錯誤訊息清楚地表明,您的系統上安裝的 Boost 庫版本是 1.65.1
,但您正在嘗試編譯的項目(看起來是 Trojan)要求至少 1.66.0
。
您提供的解決方案是正確且詳盡的:手動下載、編譯並安裝所需版本的 Boost 庫。
我將幫您將這些步驟整理成一份更清晰、更易於遵循的指南,並補充一些常見的注意事項和命令解釋。
解決 CMake 錯誤:Boost 版本不匹配問題
當您在編譯項目時遇到 CMake Error: Could NOT find Boost: Found unsuitable version "1.65.1", but required is at least "1.66.0"
這樣的錯誤,這表示您的系統上安裝的 Boost 庫版本不符合項目要求。解決方法是手動安裝符合要求的 Boost 版本。
以下是詳細的步驟:
步驟 1:下載所需版本的 Boost 庫
-
訪問 Boost 官方網站: 前往 Boost 官方下載頁面:
https://www.boost.org/users/download/ -
選擇版本: 查找並下載符合項目要求或更高版本的 Boost。例如,如果項目要求
1.66.0
,您可以下載1.66.0
或任何更新的版本(例如1.70.0
、1.75.0
等)。通常,選擇最新的穩定版本是個不錯的選擇,除非項目明確指定了特定版本。- 您會看到類似
boost_1_xx_0.tar.gz
或boost_1_xx_0.zip
的壓縮包。推薦下載.tar.gz
格式。
- 您會看到類似
-
下載到您的伺服器: 您可以使用
wget
命令直接在伺服器上下載:Bash# 示例:下載 Boost 1.76.0 (請替換為您下載的實際版本號) wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz
(請將 URL 替換為您實際下載的版本鏈接)
步驟 2:解壓縮 Boost 庫
-
創建一個臨時目錄 (可選,但推薦):
Bashmkdir ~/boost_install mv boost_1_xx_0.tar.gz ~/boost_install/ cd ~/boost_install/
(將
boost_1_xx_0.tar.gz
替換為您下載的實際文件名) -
解壓縮文件:
Bashtar -zxvf boost_1_xx_0.tar.gz
這會創建一個名為
boost_1_xx_0
的目錄。 -
進入解壓縮後的目錄:
Bashcd boost_1_xx_0
步驟 3:編譯和安裝 Boost 庫
Boost 的編譯過程分為兩步:bootstrap
和 b2 install
。
-
運行
bootstrap.sh
: 這個腳本會生成b2
(或bjam
) 可執行文件,它是 Boost 的構建系統。Bash./bootstrap.sh
- 提示: 您可以運行
./bootstrap.sh --help
查看更多選項,例如指定編譯器、安裝路徑等。但對於大多數情況,直接運行即可。
- 提示: 您可以運行
-
運行
b2 install
: 這將編譯 Boost 庫並將其安裝到系統的默認位置。Bashsudo ./b2 install
- 注意: 這個過程會耗費一些時間,具體取決於您的系統性能。
- 默認安裝路徑:
- 頭文件 (headers):
/usr/local/include/boost
- 編譯後的庫文件 (libraries):
/usr/local/lib
- 頭文件 (headers):
步驟 4:重新運行 CMake 配置
在 Boost 庫安裝完成後,返回到您項目 (例如 Trojan) 的 build
目錄,然後重新運行 CMake 配置命令。
-
返回項目
build
目錄:Bashcd /root/trojan/build
(請替換為您實際的項目
build
目錄路徑) -
重新運行 CMake:
Bashcmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
現在,CMake 應該能夠找到並使用您剛剛安裝的符合版本要求的 Boost 庫,並且配置過程應該會成功完成。
故障排除 (如果 CMake 仍然找不到 Boost):
如果重新運行 CMake 後仍然遇到 Boost 找不到的問題,可能是因為 CMake 仍然優先使用了舊版本的 Boost 或沒有正確識別新安裝的路徑。您可以嘗試以下方法:
-
清除 CMake 緩存: 在
build
目錄中,刪除CMakeCache.txt
文件和CMakeFiles
目錄,然後重新運行 CMake。Bashrm CMakeCache.txt rm -rf CMakeFiles/ cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
-
手動指定 Boost 路徑 (如果需要): 如果 CMake 仍然無法找到,您可以手動指定 Boost 的根目錄和庫目錄給 CMake。
Bashcmake .. \ -DBOOST_ROOT=/usr/local \ -DBOOST_INCLUDEDIR=/usr/local/include \ -DBOOST_LIBRARYDIR=/usr/local/lib \ -DENABLE_MYSQL=OFF \ -DENABLE_SSL_KEYLOG=ON \ -DFORCE_TCP_FASTOPEN=ON \ -DSYSTEMD_SERVICE=AUTO
BOOST_ROOT
: 指向 Boost 的安裝根目錄,通常是/usr/local
。BOOST_INCLUDEDIR
: 指向 Boost 頭文件所在的目錄,通常是/usr/local/include
。BOOST_LIBRARYDIR
: 指向 Boost 庫文件所在的目錄,通常是/usr/local/lib
。
通過這些詳細步驟,您應該能夠成功解決 Boost 版本不匹配的問題,並繼續編譯您的項目。
2019年5月13日 星期一
Fedora iptable firewalld selinux
Fedora Server 30 防火牆配置詳解
您在 Fedora Server 30 上遇到的遠程連接問題是許多初次接觸 firewalld
的用戶會遇到的典型障礙。以下是您解決問題的邏輯以及一些相關的說明:
1. 理解 firewalld
與 iptables
firewalld
(Firewall Daemon): 這是 Fedora 等 RHEL 系發行版推薦和預設的動態防火牆管理工具。它通過區域(zones)來管理網絡連接,並可以動態地添加或刪除規則,而無需重載整個防火牆。它的底層確實使用iptables
或nftables
。iptables
(IP Tables): 這是 Linux 核心自帶的網絡包過濾工具。它通過一系列的「規則鏈」來控制數據包的流向。iptables-services
是一個包,提供了管理這些規則的服務。
您遇到的問題: 默認情況下,firewalld
會啟用一些基本規則,阻止外部對大部分端口的訪問,這導致像 httpd
、plexmediaserver
這些服務無法從外部訪問。即使服務本身啟動了,防火牆也會攔截流量。
2. 您的解決步驟分析
您的操作思路是:禁用複雜的 firewalld
,回歸到更直接、可控的傳統 iptables
,並將其清空以解除所有限制。
systemctl stop firewalld
: 這是關鍵的第一步,它會立即停止firewalld
服務,並移除其當前的防火牆規則。dnf install iptables-services
: 安裝傳統的iptables
服務。這個包包含了iptables
命令工具和用於保存/載入規則的服務腳本。- 重啟系統: 這一點很重要。重啟系統後,
firewalld
不會再次啟動,而iptables-services
則會接管防火牆管理。通常情況下,新安裝的iptables-services
默認會從一個空的規則集開始。 systemctl restart iptables
: 確保iptables
服務啟動並載入任何已配置的規則(此時通常是空的)。systemctl stop iptables
: 這一步有點特別。它會停止iptables
服務,但不會清除當前生效的iptables
規則。換句話說,此時內核中的iptables
規則仍然是您停止服務前所設定的狀態。iptables -L -n
: 顯示當前內核中實際生效的iptables
規則。您的輸出顯示所有鏈的策略都是ACCEPT
,且沒有任何自定義規則。這意味著所有流量都被允許通過。
3. 您的結論與注意事項
您的結論:「這樣,就可以放心使用firewalld」
這句話可能存在筆誤,因為您實際上是禁用了 firewalld
並使用了 iptables
。在您完成這些步驟後,您的系統防火牆已經處於 完全開放 的狀態,任何端口的流量都可以進入或離開。
重要注意事項:
- 安全性風險: 您的當前配置 (
Chain INPUT (policy ACCEPT)
) 意味著您的伺服器對外部是完全開放的,沒有任何防火牆保護。這對於生產環境來說是非常危險的,因為它暴露了所有服務,可能成為攻擊的目標。 - 推薦做法:
- 如果傾向於使用
firewalld
: 建議重新啟用firewalld
(systemctl start firewalld && systemctl enable firewalld
),然後學習如何使用firewall-cmd
命令來開啟您需要的特定端口和服務。例如:Bashsudo firewall-cmd --permanent --add-service=http # 允許 HTTP (80 端口) sudo firewall-cmd --permanent --add-port=32400/tcp # 允許 Plex (默認 32400 端口) sudo firewall-cmd --reload # 重新載入規則
- 如果堅持使用
iptables
: 您應該學習如何添加必要的iptables
規則來只開放您需要的端口,並拒絕其他所有流量。這比firewalld
更複雜,需要手動管理規則文件。 例如,要允許 SSH 和 HTTP 流量: 請注意,上述Bash# 允許已建立的連接 iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # 允許 SSH (22 端口) iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允許 HTTP (80 端口) iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允許 HTTPS (443 端口) iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允許 Plex (例如 32400 端口) iptables -A INPUT -p tcp --dport 32400 -j ACCEPT # 拒絕其他所有進入的流量 (非常重要!) iptables -P INPUT DROP # 保存規則 iptables-save > /etc/sysconfig/iptables # 啟用 iptables 服務以在重啟時載入這些規則 systemctl enable iptables systemctl start iptables
iptables
規則是示例,您需要根據實際需求進行調整。
- 如果傾向於使用
2019年4月16日 星期二
大乐透号码选取器
大乐透号码选取器 (带历史记录) 大乐透号码选取器 前区号码 (5个,01-35) ...
-
如何在 Ubiquiti EdgeRouter X (ERX) 上配置 IPv6,主要針對 PPPoE 連接類型。內容涵蓋了 MSS Clamping 的調整、DHCPv6-PD 配置以及一些常見問題的解決方案。 重要提示: 在進行任何配置更改之前,建議您備份當前的路由器配置。...
-
Forget your Calibre-Web administrator password? No problem! If you're running Calibre-Web via Docker, you can easily reset it using a co...
-
Micro:bit to Scratch Requirements Install Scratch Link