[教學] 申請免費 Domain 及創建 Home WebServer 不需在家 expose port forwarding

本帖最後由 javacomhk 於 2023-1-19 02:04 編輯

預告下一篇講 增加 subdomain, nginx fast php server 及 VS Code Server。

申請免費 Domain 及創建Home WebServer 不需在家 expose port forwarding

Step by Step Guide 真正由零開始,最容易的方法(10步就得)去設定免費的自家Home Server 唔使 DDNS 亦唔使 expose home router 的port forwarding.  你只需要安裝免費的 Docker Desktop 及用 browser 去申請及設定 domain name ,dns 及 tunnel.

首先使用 Web Browser 申請免費的服務
(1)申請 免費 domain name
https://freenom.com 申請免費 domain name  (例如 hkhome.tk)

如選擇例如 .tk .ml .ga .cf  ... 等可以選擇免費得到12months free 的 domain name

如新申請是要 verify email 後便可再 Login 後看見 Active 的 Status。


如果你要申請一些其他收費的 domain name 亦可以,但一些例如 3domains.net 的 free domain name 由於不能更改 custom DNS 就不可以使用本帖介紹的方法去申請以下cloudflare 的戶口及服務。

(2)開啟新的 Browser Tab 頁面申請免費 cloudflare 戶口
https://cloudflare.com 申請免費戶口,如新申請是要 verify email 後便可再 Login
輸入你剛才申請好的 domain name (例如 hkhome.tk) 然後選擇 Add site ,選擇最下的免費 Free Plan 選項然後click Continue

拉到下面然後 copy cloudflare 的 2 個 nameservers  準備在第(3) 步使用


(3) 回到 freedom.com 的Bowser 頁面選擇 Manage Domain 及 Management Tools -> Nameservers 及 Use custom nameservers 並輸入 第(2) 步 copy 好的 2個nameservers 最後 click Change Nameservers



(4) 等待 10-15分鐘以上(通常要等較長時間去等待更新nameserver registrars)再回到 cloudflare.com 的 Browser頁面 click Done, check nameservers


選擇 Always Use HTTPS 及 Save 其他都可選擇默認或及後選擇  Finish later


click Check nameservers 直至出現 Great news! Cloudflare is now protecting your site, 代表成功。



此時已成功設立 domain name 及 cloudflare 的 custom DNS,跟著便可以去自家Network設立 cloudflare tunnel 及 Home Server

設立 cloudflare tunnel 目的就係唔想在自己的 home router 去 expose port forwarding,亦唔使設定 dynamic DNS

(5) 回到 cloudflare.com 的Browser頁面左邊的菜單選擇 Zero Trust 及在 Access 內選擇 Tunnels 及 Complete Setup及 設立 Team Name (例如 hkhome)



選擇 Free Plan (只可少於50 users) 及 Process Payment, 雖然選擇 Free Plan 但仍然要輸入 信用卡信息 或 PayPal 都可以


再在 Access 內選擇 Tunnels
Click Create a Tunnel 及輸入自定 Tunnel名稱 例如 hkhometunnel 及 Save tunnel

Choose Your environment 時 選擇 Docker,當然你可以選擇其他 environments,但 Docker 就最容易設立,亦是本帖的示範。
選擇 Docker 後就 copy下面的 code 及 token 以便在自己 Home Server 的 Docker Application 內使用


(6) 在你的 Home Server 電腦安裝 Docker Host。
Linux,Windows,Mac 都可以,例如安裝 Docker Desktop for Linux(x86_64), Windows(x86_64) 或 Mac(Intel/Apple Silicon) 就最方便及容易,Linux 裝 Docker CE 都可以,不過 Docker Desktop 就比較方便及會跟埋 docker compose 及有其他 multi-platform features 或工具可使用。

安裝好 Docker Host 後在 command prompt 內查看本機IP 地址 (例如是 10.0.1.78),測試及啟動 cloudflare tunnel in background 即是要加 -d option 如下:
  1. docker run -d cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhIjoiZmXXXXXXXXXXXXXXX
複製代碼
此Home Server電腦要持續運行 cloudflare tunnel 及以下的 server applications 以確保外界可以連接相關 web 服務。

(7) 跟著回到 cloudflare browser頁面 在剛才新建的 Tunnel 內的 Public Hostname 頁面 tab 內輸入自定義的subdomain name (例如 wordpress)及 domainname (例如 hkhome.tk)

輸入你的 Home Server的 IP 地址(從第6步得到) 及 輸入自定義的 port number (例如是 8000),如選擇 Service HTTPS 並在下面選擇 No TLS Verify。


(8) 在你的 Docker server machine 設立 webserver 例如 ngnix 又或例如設立 Wordpress server 方法如下。

參考 https://catalins.tech/how-to-run-wordpress-locally-on-macos-with-docker-compose/
創建 docker-compose.yaml 文件
使用第7步的自定義 port number (例如 8000)去設定 wordpress server
根據以上這篇 在m1 mac 的 docker 下運行就要用 docker desktop for m1 的 multi-platform features 行 x86_64 code 就要加上這句
platform: linux/x86_64
或者根據這篇 https://betterprogramming.pub/my ... m1-mac-e55cbe093d4c 講用 mariadb 10.3 或 biarms/mysql:5.7 for arm64
  1. version: "3.9"
  2. services:
  3.   db:
  4.     image: mysql:5.7
  5.     volumes:
  6.       - db_data:/var/lib/mysql
  7.     restart: always
  8.     environment:
  9.       MYSQL_ROOT_PASSWORD: pass1
  10.       MYSQL_DATABASE: wordpress_local
  11.       MYSQL_USER: wordpress_db_user
  12.       MYSQL_PASSWORD: pass2

  13.   wordpress:
  14.     depends_on:
  15.       - db
  16.     image: wordpress:latest
  17.     volumes:
  18.       - wordpress_data:/var/www/html
  19.     ports:
  20.       - "8000:80"
  21.     restart: always
  22.     environment:
  23.       WORDPRESS_DB_HOST: db
  24.       WORDPRESS_DB_USER: wordpress_db_user
  25.       WORDPRESS_DB_PASSWORD: pass2
  26.       WORDPRESS_DB_NAME: wordpress_local
  27. volumes:
  28.   db_data: {}
  29.   wordpress_data: {}
複製代碼
#  啟動 wordpress server
docker-compose up -d



(9) 在手機外網測試你設定好的的 Web Server 例如輸入
https://wordpress.hkhome.tk

(10) 如要增加其他 subdomain 及 webserver / web service只要選擇輸入不同的 subdomain, Server IP 地址或 port number 及只要重覆 第 (7) 至 (9) 步去設定及測試便可。

預告下一篇講 增加 subdomain, nginx fast php server 及 VS Code Server。
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

申請免費 Domain 及創建Home WebServer 不需在家 expose port forwarding

Step by Step Guide 真正由零開 ...
javacomhk 發表於 2022-12-20 10:15



    cloudflare tunnel 送BANDWIDTH 咁豪...

TOP

docker can use synology ?

TOP

docker can use synology ?
hkechung 發表於 2022-12-20 16:21



    I don't have synology, but I think synology doesn't have this cloudflare tunnel package in the distro.

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

回覆 3# hkechung

Just test it with Synology.
It work fine. :)  Thanks

TOP

雖然選擇 Free Plan 但仍然要輸入 信用卡信息 或 PayPal

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

同 技術 無關: 這一步 小人 覺得 有 啲 危險... 即是 佢 可以 扣咗錢 才 講數?
正常 免費的 應 不須 填 任 ...
toylet 發表於 2022-12-21 09:26



    你可以用 paypal link to debit card

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

Cloudfare 都是 可以 先 扣錢?
佢 想 實名 不是 問題, 不過 以 付款方法 做 就... Well... ...
toylet 發表於 2022-12-21 15:02



    debit card 內有幾多錢,你可以控制架嘛。debit card balance 唔會扣到負數架!

TOP