前言
此篇文章由零開始設定Linux主機、安裝Docker,並設定Reversy Proxy
Reverse Proxy(反向代理),可以比喻為一棟樓的大門管理員
當一個包裏送至管理員,管理員會依照地址將之轉送給後方的住戶
當一個Web Request送至Reverse Proxy,Reverse Proxy會依照URL將之轉送給後方的伺服器
使用docker技術,能在同一台機器上配置多個伺服器,且不會互相干擾
此套ReverseProxy可在docker compose up時建立路由,自動申請及Renew SSL證書
我個人的所有網路服務都是配合此套ReverseProxy做建置,特撰此文以做前導
流程簡述
- 起一台新的Linux
- 安裝docker、docker-compose
- git clone下Reverse Proxy之建置檔案
- docker-compose up -d
建置
Linux主機
-
起一台Linux做Main Server,理論上任何能裝Docker的arm64 linux都行
我個人是用Digital Ocean,最便宜的方案每個月6美元 (4美元的方案請略過它)
這裡我選一台Unbuntu x64 LTS
這是老牌的主機商,在業界有信譽有口碑,比國內的主機商穩定得多
亞洲可選的資料中心在新加坡,對台灣連線速度佳,沒有什麼奇怪的問題
透過上方推廣鏈結註冊,你會拿到60天內200美元的試用額度,而這足夠玩遍所有功能
DigitalOcean的註冊優惠都是這個價,用我的推廣就當成是對我小額贊助吧 -
由後台從Consle連入,把SSH port改為自設的port
vi /etc/ssh/sshd_config
service ssh restart
如果你使用 22.10 版本以上的 Ubuntu,改用這個方式更改 SSH port
https://askubuntu.com/a/1439482 -
注意UFW是否有擋port
ufw status
如果它是inactive以外的狀態,請上網找Ubuntu UFW
相關文章做調整
需開放80、443和自設的SSH port -
若是租用VPS,建議關了UFW,用VPS後台的Firewall功能即可
-
SSH Client,以root連入,推薦用MobaXterm
小小建議
可以開一個3GB的Volume做Swap,比加RAM便宜得多喔
建立Volume的說明,還有Swap的說明
Docker安裝
可參閱官方文件
若有更新,請以官方文件為準
-
(選)全面更新
sudo apt-get update && sudo apt-get upgrade -y
-
安裝必要組件
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
-
加入gpg key
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
-
加入repo庫
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
安裝Docker和Docker compose plugin
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
-
測試
docker --version docker compose version
安裝成功,印出版本號
Reverse Proxy建置
請用root連入或是su
docker所有操作都需要root權限,且docker-compose file我會建議放在root家目錄下
- cd到root家目錄
cd
-
git clone專案
git clone https://github.com/jim60105/docker-ReverseProxy.git
-
啟動nginx reverse proxy
docker-compose -f ./docker-ReverseProxy/docker-compose.yml up -d
Reverse Proxy之使用
請對每個後端服務添加以下環境變數- VIRTUAL_HOST: 要導向此container的網址
- LETSENCRYPT_HOST: SSL證書之網域、別名
- LETSENCRYPT_EMAIL: SSL證書申請人email,到期日近會有通知。請正確填寫,似乎不能變更
- (選)LETSENCRYPT_TEST: 申請測試證書。請給true/false。因正式申請有嘗試次數上限、申請數量上限,請在最後上線前再轉false
networks: proxy-tier
,就像這樣
就這麼簡單(╹ڡ╹ )
附註: docker-compose
vs docker compose
(中間的-號)
- docker-compose: Compose v1,是以python寫的,穩定。最後一版是 v1.29.2
- docker compose: Compose v2,是以golang重寫的,其設計能從v1無痛轉移,大部份的參數相同,但目前不太穩定。
Windows Docker Desktop新舊都有內建,可在設定中開啟v2
v2不像v1是獨立程式,而是docker-cli plugin
其餘差異見官方文件。
compose-switch: 以docker-compose
執行docker compose
網路上舊的command都是docker-compose
,因為command不同,沒辦法copy & paste直接用,造成不少困擾。官方做了 compose-switch 工具來解決這個問題。它可以在下command執行docker-compose
時改叫docker compose
來用。
需注意,compose-switch是「以docker-compose
來呼叫v2」,而不是執行v1,v2和v1有若干不同。
curl -fL https://raw.githubusercontent.com/docker/compose-switch/master/install_on_linux.sh | sh update-alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/compose-switch 99測試
docker-compose version安裝成功,印出版本號
附註: 常用docker指令
docker ps -a
docker volume ls
docker volume prune
docker-compose build
docker-compose config
docker-compose up -d
docker-compose -f <路徑> up -d
docker-compose down
docker-compose logs
docker logs <container name>
docker-compose restart
docker exec -it <container name> <指令>
您好,我想要用我的synology nas來自動youtube直播錄影,已於nas安裝docker,並試著用SSH以root權限連入,鍵入docker --version及docker-compose --version都有回傳版本號。
回覆刪除接著進行Reverse Proxy建置要cd到root家目錄,想請問也是在同上鍵入docker --version的地方鍵入cd嗎?我鍵入cd後,沒有回傳任何東西也沒感覺任何路徑的資訊,一樣只有root@ip:~#這樣而已。
接著git clone專案,鍵入git clone…(下略),卻回傳-ash: git: command not found
想請問一下這樣是哪邊操作的問題呢?請您協助解惑,非常感謝您!
~就是家目錄
刪除在套件中心安裝Git Server就有git了
這是基礎Linux知識問題