最近因為某種原因,開始研究了使用 Docker 來架設各種服務。由於之前沒怎麼接觸過 Docker,所以踩了蠻多坑。
而其中一個最近自己剛弄好的服務就是 v2ray + MTProto,其實我 VPN 應該是不需要用到 v2ray 的,因為有用 IKEv2 已經夠了。不過由於 Telegram 在台灣的連線速度有點悲劇,據說用 MTProto 架設 Proxy 會比較快一點,所以我就在我的 VPS 上面弄了一個看看。
因為之前有亂裝東西導致 VPS 裡面一堆垃圾,變得不穩定而且一堆設定檔案在系統裡面的不好經驗,所以這次打算改用 Docker 來改善這個問題。結果看來看去看了兩個多小時還是沒搞定,最後終於弄懂,所以寫一篇文章來紀錄一下,如何真正的「使用 Docker 一個指令安裝 v2ray + MTProto」。
先裝 Docker
首先當然要先裝 Docker 嘛,所以 apt-get install docker.io
指令是少不了的。安裝好之後建議做這個教學的「Manage Docker as a non-root user」部分。
修改設定檔
接著,把我的設定檔案複製下來,貼到系統的 /etc/v2ray/config.json
,並建立 /var/log/v2ray
資料夾。
如果你只要純粹的 v2ray,不需要 Telegram 代理伺服器(MTProto),則刪除 config.json 中任何有包住 tag 為 tg-in
或 tg-out
的 { } 段落。
接著看到 port 的部分,我們的 v2ray 是用 9487 port,MTProto 則是 9453 port,這兩個先記住,但所有 port 都可以隨便改成你喜歡的。
clients 裡面的 ID 務必換掉,請用這個產生器產生,我們使用的 vmess 連線是檢查 UUID ,你可以把他當作是一種密碼。
MTProto 的 secret 則是 32 bit 的 hex,建議可以隨便丟個字串去算 MD5 拿結果出來用就好。(嗯...所以...)
如果你任何有改動建議去 https://jsonlint.com 檢查一下格式是否正確。
真 · 一個指令
一個指令下載並執行 v2ray 的映像:
docker run -d --name v2ray --cap-add=NET_ADMIN --restart=always -p 9487:9487/tcp -p 9453:9453/tcp -v /etc/v2ray:/etc/v2ray -v /var/log/v2ray:/var/log/v2ray v2fly/v2fly-core
port 那邊改成你自己設定的數字。下完指令後輸入 docker container list
檢查 container 是否有在運作「並且沒有一直自動重啓」,或者輸入 docker logs v2ray
看看有沒有出現紀錄錯誤,如果一切正常就完成了。
VMessAEAD
2022 年之後新版本 v2ray-core 預設開啟 VMessAEAD,在 client 如果連不上的話,試著把 server 跟 client 的 alterId 都設為 0,並且使用支援 VMessAEAD 的 client(例如 macOS 就用 ClashX,不要再用 V2RayX)
發佈留言