在區域網路中存取 ServBay 本機開發環境
對於小型開發團隊或需要跨設備測試的個人開發者而言,能夠在區域網路(LAN)內存取其他成員或設備上的 ServBay 本機開發環境是一項常見且重要的需求。ServBay 設計上支援大多數核心服務通過區域網路存取,但某些服務需額外設定以確保安全與可用性。
本文將詳細介紹如何於區域網內設定與存取 ServBay 的網站與資料庫服務。
前置條件
在嘗試通過區域網存取 ServBay 服務之前,請確保符合下列條件:
- 網路連接: 提供 ServBay 服務的電腦(以下稱為「主機」)與存取端電腦(以下稱為「客戶端」)位於同一區域網之內。
- 主機 IP 位址: 知曉主機於區域網中的內部 IP 位址。您可於主機的網路設定中查詢此資訊。
- 防火牆設定: 若主機作業系統啟用了防火牆,您需允許外部連線存取 ServBay 使用的重要埠號(如 HTTP 通常為 80,HTTPS 為 443,MySQL 為 3306,PostgreSQL 為 5432,Redis 為 6379 等)。請根據開放服務的需求,於防火牆開放相應埠號,並可設定存取控制列表(ACL)以限制允許的 IP 範圍(如有需要)。
網站 (Website)
通過 ServBay 設定的本地網站,預設通常會監聽主機的所有網路介面(即 0.0.0.0
或 *
),讓區域網內的其他設備可直接存取。ServBay 採用 Caddy 或 Nginx 作為 Web 伺服器,其預設設定即如此。
然而,若要在客戶端瀏覽器中以網域名稱存取這些網站,訪客需於所用系統正確設定網域名稱的 DNS 解析。若您的本地網站使用由 ServBay 產生的 SSL 憑證(強烈推薦),訪客還需安裝 ServBay 的根憑證,才能避免瀏覽器出現安全警告。
以下以範例說明設定流程:
- 主機區域網 IP:
10.0.0.3
- ServBay 網站網域:
servbay.demo
- 網站根目錄:
/Applications/ServBay/www/servbay.demo
設定網域名稱解析(DNS)
客戶端需知道網域 servbay.demo
對應主機的 IP 位址 10.0.0.3
。常見設定方式有兩種:
修改客戶端的 Hosts 檔案: 這是最直接且簡單的方法,適用於少數幾台設備。
- 在客戶端找到 Hosts 檔案:
- macOS/Linux:
/etc/hosts
- Windows:
C:\Windows\System32\drivers\etc\hosts
- macOS/Linux:
- 以管理員身分開啟 Hosts 檔案,並於檔案末尾新增一行:
10.0.0.3 servbay.demo
1 - 儲存檔案。此後,客戶端輸入
servbay.demo
就會解析到10.0.0.3
。
- 在客戶端找到 Hosts 檔案:
於區域網內 DNS 伺服器上設定: 若您的區域網路已有 DNS 伺服器(如路由器內建 DNS 功能或專用 DNS 伺服器),可於其上新增一筆
servbay.demo
的 A 紀錄,指向主機 IP10.0.0.3
。如此一來,所有透過該 DNS 伺服器的區域網設備皆可正常解析此網域。
發佈與安裝 ServBay 用戶根憑證(SSL)
ServBay 本機開發環境內建強大的 PKI 功能,可產生自有根憑證(ServBay User CA)用於簽發本地網站的 SSL 憑證。當客戶端透過 HTTPS 存取此類網站時,需信任 ServBay User CA,否則將出現安全警告。
您需將 ServBay User CA 匯出,並分發給區域網內的訪客,指導他們於作業系統或瀏覽器中安裝與信任此根憑證。
詳細憑證匯出及安裝方法,請參考 ServBay 文件中「SSL 憑證管理」相關章節,特別是匯出憑證以及於作業系統/瀏覽器中安裝部分。
資料庫
ServBay 支援多種資料庫服務,如 MySQL、MariaDB、PostgreSQL、MongoDB,以及記憶體型資料庫 Redis、Memcached。不同資料庫預設監聽的網路介面與權限管理方式皆有所不同。
MySQL / MariaDB
MySQL 與 MariaDB 於 ServBay 預設為監聽所有網路介面(0.0.0.0
),因此理論上預設就接受區域網來的連線。
然而,MySQL/MariaDB 有嚴格的使用者權限認證機制。即使網路層已放行,存取者也需以被授權的用戶名和密碼(並允許其 IP 來源)才能順利連線。
預設的 root
帳號通常僅允許從 127.0.0.1
或 localhost
登入。若要開放給區域網使用,需建立新用戶或調整現有用戶權限,讓其可由特定 IP、或通用 IP (%
) 進行連線。
例如,建立一名 servbay-demo
用戶,並允許其從區域網任意 IP (%
) 存取指定資料庫:
-- 假設您已以 root 或具足夠權限的用戶登入
CREATE USER 'servbay-demo'@'%' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON `your_database_name`.* TO 'servbay-demo'@'%';
FLUSH PRIVILEGES;
2
3
4
請依實際需求替換 'your_strong_password'
與 your_database_name
。
重要提醒: 允許用戶從任意 IP(%
)連線且賦予廣泛權限有安全風險。在正式環境或非完全信任的區域網,建議僅允許特定已知 IP(如 'servbay-demo'@'10.0.0.5'
)連線,或採用 VPN 等更安全的連接方式。
ServBay 支援重設 MySQL、MariaDB 的 root
密碼,若需管理用戶權限,可透過此功能或入端工具操作。
Redis
Redis 在 ServBay 預設僅監聽本地回環地址(127.0.0.1
),即不接受區域網連線。這樣的設計主要出於安全考量,因為 Redis 預設並未啟用密碼驗證。
如需開放 Redis 區網存取,必須修改 Redis 設定檔 redis.conf
。
您可經由下列兩種方式達成:
1、透過 ServBay 的 UI 介面操作
- 啟動 ServBay,於左側導航點選
資料庫
->Redis
- 於右側界面勾選
Require Password
,並於旁側輸入框設定密碼 - 點選
儲存
2、手動修改 redis.conf
(不建議)
- 於 ServBay 應用內查找 Redis 設定檔位置(一般位於安裝目錄,如
/Applications/ServBay/etc/redis/redis.conf
)。 - 使用文字編輯器開啟
redis.conf
。 - 尋找
bind 127.0.0.1
這一行。 - 修改為
bind 0.0.0.0
,或直接註解掉(# bind 127.0.0.1
),讓 Redis 監聽所有可用網路介面。 - 【極度重要】 尋找
requirepass
那一行(可能已註解),取消註解並設定強密碼:嚴禁在未設密碼情況下將 Redis 暴露於區域網或公網,否則風險極大!requirepass your_very_strong_redis_password
1 - 儲存
redis.conf
。 - 於 ServBay 介面重啟 Redis 服務,設定生效。
現在,客戶端可用主機的區域網 IP 與您設定的密碼來連線 Redis。
PostgreSQL
PostgreSQL 在 ServBay 預設同樣只監聽本地回環地址(127.0.0.1
),預設不開放區域網連線。
如需開放區域網存取,需調整兩個關鍵設定檔:postgresql.conf
、pg_hba.conf
。
於 ServBay 查找 PostgreSQL 的設定檔路徑(如
/Applications/ServBay/etc/postgresql/postgresql.conf
、/Applications/ServBay/etc/postgresql/pg_hba.conf
)。調整
postgresql.conf
:- 以文字編輯器開啟
postgresql.conf
。 - 尋找
listen_addresses
設定(可能已註解)。 - 取消註解,並設為
'*'
,讓 PostgreSQL 監聽所有可用網路介面:listen_addresses = '*'
1 - 儲存檔案。
- 以文字編輯器開啟
調整
pg_hba.conf
:- 以文字編輯器開啟
pg_hba.conf
。該檔控制哪些主機、用戶、資料庫、用哪種驗證方式連接。 - 加入一行,開放區域網段連線。例如允許
10.0.0.0/24
網段所有用戶用密碼認證連接所有資料庫:# TYPE DATABASE USER ADDRESS METHOD host all all 10.0.0.0/24 md5
1
2TYPE
:host
代表走 TCP/IP 連接DATABASE
:all
允許所有資料庫,您可指定特定名稱USER
:all
允許所有使用者,或指定特定帳號ADDRESS
:10.0.0.0/24
乃例子,允許10.0.0.1
至10.0.0.254
,亦可指單一 IP,或用0.0.0.0/0
放行所有 IPv4(不建議,除非另有防火牆保護)METHOD
:md5
表示密碼需經過 MD5 加密進行認證。這是遠端連線推薦方式。請勿用如trust
(無密碼信任,絕不適用遠端連線)或password
(明文密碼,不安全)
- 儲存檔案。
- 以文字編輯器開啟
於 ServBay 介面重啟 PostgreSQL,使設定生效。
現在,客戶端可用主機區網 IP、有權限的 PostgreSQL 用戶名與密碼來連接 PostgreSQL。
ServBay 除了支援重設 PostgreSQL 的 root
(postgres)密碼外,亦可透過端工具進行用戶權限管理。
Memcached
Memcached 是高效能分散式記憶體快取系統,設計極為簡單,沒有內建身份驗證機制。
因此,除非您有其他網路安全機制(如僅允許信任內部服務存取或經防火牆嚴格管控),否則強烈不建議直接將 Memcached 暴露於區域網、公網。
在 ServBay,您可設定 Memcached 監聽區域網 IP,但請徹底了解與接納相關資安風險。預設為僅監聽本地迴圈介面。修改監聽地址方式類似 Redis,需編輯 Memcached 設定檔,但請銘記無密碼保護。
安全注意事項
在區域網內開放本機開發環境服務雖利於團隊協作與跨設備測試,但亦帶來潛在資安風險。請特別注意下列幾點:
- 防火牆: 一直使用防火牆限制對 ServBay 主機已開埠的存取。僅允許信任的區域網 IP 段連線。
- 強密碼: 為各資料庫(MySQL/MariaDB/PostgreSQL)及 Redis 設定強密碼,並定期更換。
- 最小權限原則: 資料庫用戶只給所需最低權限。切勿用全權用戶(如
root
或postgres
)從遠端日常連線。 - Memcached 資安: 再次強調,Memcached 缺乏安全機制,勿隨意於區網暴露。考慮 SSH 隧道或其他更安全的連線方式。
- 作業系統更新: 保持 ServBay 主機的作業系統、ServBay 平台與軟體套件隨時更新,取得最新安全修補。
依循上述步驟及安全建議,您即可在區域網中更安全、有效地共享及存取 ServBay 本機開發環境。