作者: MirageKnight 時間: 2018-5-22 16:22 標題: Qnap docker 的V2ray + NGINX + 本機Letsencrypt 設定過程.
本帖最後由 MirageKnight 於 2018-5-22 17:04 編輯
原本無諗住寫. 因為實在太多文字. 加上唔係咁多人有咁樣的需要. 我沒有高級技巧, 全手動多. 當中可能有錯漏. 所以唔包一定得.
但過程就係咁上下. 有錯漏請自行post 出來問, 或指出, 我會修正. 還有所用到的 program/coding都非本人所有.
其實用到咁煩主要係可以同時一張cert幾個唔同的DDNS共用. 最好其中一個係大陸的DDNS.
作者: MirageKnight 時間: 2018-5-22 16:23
本帖最後由 MirageKnight 於 2018-5-22 16:28 編輯
NGINX config folder 比較麻煩. 有很多files, 也不會自動generate. 所以要先裝一次tar 了整個config出來.
裝完後, 在按落 nginx container那個command propmpt.
- cd /etc/nignx
- tar -zcvf nginx-config.tar.gz .
- cd /usr/share/nginx/html
- tar -zcvf html.tar.gz .
- exit
進入 volumes. 分別建立 "nginx/conf, nginx/web, nginx/conf/certs" 這3個folder.
在 "nginx/conf" 內copy nginx container 那個config tar file出來和解壓.
- docker cp nginx-1:/etc/nginx/nginx-conf.tar.gz .
- tar -zxvf nginx-conf.tar.gz .
- rm nignix-conf.tar.gz
- docker cp nginx-1:/usr/share/nignx/html/html.tar.gz .
- tar -zxvf html.tar.gz .
- rm html.tar.gz
安裝時. 請用以下設定要點.
1. 請在advanced setting 的network 在用 "Bridge" mode, static ip. 如下圖
2. 在share folder setting在參照自己本機setting. 建立如圁中NGINX的兩個mount potin.
這樣以後要修改東西東不用copy 到 nginx的container內.
接下來便是停了nginx container. 修改configuration. 因為是由零開始. 所以config 會一步一步的加上去. 這是用來拿LetsEncrypt部份設定.
用你的方法來修改在"/share/Container/volumes/nginx/conf"(或你本機相關的folder)那個"nginx.conf". 如下.
- user nginx;
- worker_processes 1;
- events {
- worker_connections 1024;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
-
- server {
- listen 80;
- listen [::]:80;
- server_name abcd.ddnsdomain.com;
- # return 404 coz hosting nothing.
- location / {
- return 404;
- }
- # letsencrypt web challenge page
- location ^~ /.well-known/acme-challenge/ {
- default_type "text/plain";
- root /usr/share/nginx/html/letsencrypt;
- }
- # for security
- location = /.well-known/acme-challenge/ {
- return 404;
- }
- }
- }
如果沒有錯漏. nginx 可以起動了. 下一part 便是LetEncrypt. 等到LetEncrypt 和 V2RAY 完成. 還會動新大改動一次ngnix 的 config.
https://www.hkepc.com/forum/attachment.php?aid=2060654&k=e87f0bf62c0b1fc0b6795c5b21e1e675&t=1781472092&sid=8yrleD89C

https://www.hkepc.com/forum/attachment.php?aid=2060655&k=fe3ca1168af46b2a1ec3ba4641b303c6&t=1781472092&sid=8yrleD89C

作者: MirageKnight 時間: 2018-5-22 16:23
本帖最後由 MirageKnight 於 2018-5-22 16:31 編輯
先用"File Station" Create 一個 "LetsEncrypt" 的Share folder. 在"LetsEncrypt" 內再create "certs"和"acme-tiny"這兩個folder.
上網到 "https://github.com/Yannik/qnap-letsencrypt". 我很懶寫scrip. 主要是要"renew_certificate.sh" 和 "openssl.cnf" 這兩個 file. 分別點click落去. copy and paste 落text editor. save 落去 "LetsEncrypt"內.
跟着到"https://github.com/diafygi/acme-tiny". 這次不用copy and paste. 這裡有"release" download. Click 落網頁內的 release link. download 最新版便可以. 將它unzip 到"acme-tiny"內.
以下大部份都是翻譯acme-tiny和yannik 的readme....
第一步是generate 一條 accout key. 如果你本身有letsencrypt 可以用返. 如果你知我在說什麼...不知的講就跟住做....
ssh 到 qnap nas.
到"/share/LetsEncrypt/certs" 內.
- openssl genrsa 4096 > account.key
# Generate a domain private key (if you haven't already)
- openssl genrsa 4096 > domain.key
- openssl req -new -sha256 -key domain.key -subj "/CN=yoursite.myqnapcloud.com" > domain.csr
- cp ../openssl.cnf openssl-csr-config.cnf
- printf "subjectAltName=DNS:yoursite.myqnapcloud.com,DNS:yoursite.3322.com, yoursite.no-ip.com" >> openssl-csr-config.cnf
- openssl req -new -sha256 -key keys/domain.key -subj "/" -reqexts SAN -config openssl-csr-config.cnf > domain.csr
第三步是修改renwew_certificate.sh.
回到"/share/LetEncrypt"
用TextEditor. 開啟"renew_certificate.sh"
修改到這樣...
- #!/bin/bash
- set -e
- # do nothing if certificate is valid for more than 30 days (30*24*60*60)
- echo "Checking whether to renew certificate on $(date -R)"
- [ -s /share/LetsEncrypt/certs/signed_chain.crt ] && openssl x509 -noout -in /share/LetsEncrypt/certs/signed_chain.crt -checkend 2592000 && exit
- if python -c "import SimpleHTTPServer" 2> /dev/null; then
- PYTHON=python
- elif "$(/sbin/getcfg Python Install_Path -f /etc/config/qpkg.conf)/bin/python2" -c "import SimpleHTTPServer" 2> /dev/null; then
- PYTHON="$(/sbin/getcfg Python Install_Path -f /etc/config/qpkg.conf)/bin/python2"
- elif "$(/sbin/getcfg Python Install_Path -f /etc/config/qpkg.conf)/src/bin/python2" -c "import SimpleHTTPServer" 2> /dev/null; then
- PYTHON="$(/sbin/getcfg Python Install_Path -f /etc/config/qpkg.conf)/src/bin/python2"
- elif "$(/sbin/getcfg Python3 Install_Path -f /etc/config/qpkg.conf)/python3/bin/python3" -c "import http.server" 2> /dev/null; then
- PYTHON="$(/sbin/getcfg Python3 Install_Path -f /etc/config/qpkg.conf)/python3/bin/python3"
- else
- echo "Error: You need to install the python 2.7 or 3.5 qpkg!"
- exit 1
- fi
- echo "Renewing certificate..."
- #echo "Stopping Qthttpd hogging port 80.."
- #/etc/init.d/Qthttpd.sh stop
- #mkdir -p tmp-webroot/.well-known/acme-challenge
- #cd tmp-webroot
- #"$PYTHON" ../HTTPServer.py &
- #pid=$!
- #cd ..
- #echo "Started python HTTP server with pid $pid"
- export SSL_CERT_FILE=cacert.pem
- #請自行修改相關pathing
- "$PYTHON" /share/LetsEncrypt/acme-tiny/acme_tiny.py --account-key /share/LetsEncrypt/certs/account.key --csr /share/LetsEncrypt/certs/domain.csr --acme-dir /share/Container/volumes/nginx/web/letsencrypt/.well-known/acme-challenge > /share/LetsEncrypt/certs/signed_chain.crt
- echo "Downloading intermediate certificate..."
- wget --no-verbose -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > /share/LetsEncrypt/certs/intermediate.pem
- #cat /share/LetsEncrypt/certs/signed_chain.crt /share/LetsEncrypt/certs/intermediate.pem > /share/LetsEncrypt/certs/chained.pem
- # copy cert and key to NGINX and restart it. 請自行修改相關pathing, nginx container 個名等等...
- cp /share/LetsEncrypt/certs/domain.key /share/Container/volumes/nginx/conf/certs/domain.key
- cp /share/LetsEncrypt/certs/signed_chain.crt /share/Container/volumes/nginx/conf/certs/signed_chain.crt
- docker container restart nginx-main
- # copy new cert for qnap server.
- echo "Stopping stunnel and setting new stunnel certificates..."
- /etc/init.d/stunnel.sh stop
- cat /share/LetsEncrypt/certs/domain.key /share/LetsEncrypt/certs/signed_chain.crt > /etc/stunnel/stunnel.pem
- cp /share/LetsEncrypt/certs/intermediate.pem /etc/stunnel/uca.pem
- echo "Done! Service startup and cleanup will follow now..."
- /etc/init.d/stunnel.sh start
- #kill -9 $pid || true
- #rm -rf tmp-webroot
- #/etc/init.d/Qthttpd.sh start
第四步. 試行...
萬事俱備. 可以試行了. 希望大家都沒有問題.
- mv /etc/stunnel/stunnel.pem /etc/stunnel/stunnel.pem.orig (backup)
好像要chomd 744 renew_certificate.sh 先.
- ./renew_certificate.sh
順利完成後, 你會發現"certs" folder內. 會多了"signed-chain.crt", "intermediate.pem" 這兩個 files.
設定crontab. 便可以自動update LetsEncrypt cert.
加以下的cronjob到 "/etc/config/crontab"
- 30 3 * * * cd /share/LetsEncrypt/ && ./renew_certificate.sh >> ./renew_certificate.log 2>&1
- crontab /etc/config/crontab
- /etc/init.d/crond.sh restart
作者: MirageKnight 時間: 2018-5-22 16:23
本帖最後由 MirageKnight 於 2018-5-22 16:33 編輯
V2RAY 算是最易的一部份了.
我建議安裝official v2ray那個版本. 最新最update的.
首先在"/share/Container/volumes" 加一個 "v2ray" folder. v2ray folder內加一個"conf"
在 "conf" 用 text editor edit 一個config file. 如果你已經有V2RAY docker. 你可以由container copy 出來. 參考在nignx那部份.
修改它變成行websock. 我的config file 如下.
- {
- "log" : {
- "access": "/var/log/v2ray/access.log",
- "error": "/var/log/v2ray/error.log",
- "loglevel": "warning"
- },
- "inbound": {
- "port": 46889,
- "protocol": "vmess",
- "settings": {
- "clients": [
- {
- "id": "27c05b31-fd5e-4dbf-xxxx-9ba9d14f80be", #請用自己的uuid. 我估你知係乜來. 唔知google 下
- "level": 1,
- "alterId": 64
- }
- ]
- },
- "streamSettings": {
- "network": "ws",
- "security": "auto",
- "wsSettings": {
- "connectionReuse": false,
- "path": "/letmefree/"
- }
- }
- },
- "outbound": {
- "protocol": "freedom",
- "settings": {}
- },
- "inboundDetour": [
- {
- "protocol": "shadowsocks",
- "port": 184774,
- "settings": {
- "method": "aes-256-cfb",
- "password": "your password for SS backup connection",
- "udp": true,
- "level": 1
- }
- },
- {
- "protocol": "shadowsocks",
- "port": 18471,
- "settings": {
- "method": "aes-256-cfb",
- "password": "your password for SS backup connection",
- "udp": true,
- "level": 1
- }
- }
- ],
- "outboundDetour": [{
- "protocol": "blackhole",
- "settings": {},
- "tag": "blocked"
- }],
-
- "routing": {
- "strategy": "rules",
- "settings": {
- "rules": [{
- "type": "field",
- "ip": [
- "0.0.0.0/8",
- "10.0.0.0/8",
- "100.64.0.0/10",
- "127.0.0.0/8",
- "169.254.0.0/16",
- "172.16.0.0/12",
- "192.0.0.0/24",
- "192.0.2.0/24",
- "192.168.0.0/16",
- "198.18.0.0/15",
- "198.51.100.0/24",
- "203.0.113.0/24",
- "::1/128",
- "fc00::/7",
- "fe80::/10"
- ],
- "outboundTag": "blocked"
- }]
- }
- }
- }
有了config file. 那便開始安裝.
在安裝時一樣是用Bridge mode. 也設是一個在host的folder 給它作config file mount point.
如圖.
如果config file沒有問題. V2RAY 便順利完成. 最最後一步. 修改NGINX config.
用text editor 修改"/share/Container/volumes/nginx/conf/nginx.conf".
以下config只作參考.
- user nginx;
- worker_processes 1;
- events {
- worker_connections 1024;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
-
- #這樣的設定會redirect 所有80 port 的http. 去 443 port 的https. 請放心. letsencrp 支援 https 的 challange的.
- server {
- listen 80;
- listen [::]:80;
- server_name yoursite.myqnapcloud.com;
- return 301 https://yoursite.myqnapcloud.com$request_uri;
- }
- server {
- listen 443 ssl http2;
- listen [::]:443;
- server_name yoursite.myqnapcloud.com;
- ssl on;
- ssl_certificate /etc/nginx/certs/signed_chain.crt;
- ssl_certificate_key /etc/nginx/certs/domain.key;
- ssl_session_timeout 10m;
-
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
- ssl_prefer_server_ciphers on;
-
- # proxy your web site, 修改當中的 "https://" 去你的web server https port. 如果你沒有host webserver. 可以改成" return 404;:
- location / {
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Host $host;
- proxy_pass https://your.nas.webpage.https.ip.address:8080/;
- }
- # letsencrypt web challenge page
- location ^~ /.well-known/acme-challenge/ {
- default_type "text/plain";
- root /usr/share/nginx/html/letsencrypt;
- }
- # for security
- location = /.well-known/acme-challenge/ {
- return 404;
- }
- # for V2RAY. 請跟足那幾句" proxy_" setting. 這樣nginx才會用websock pass data 去V2RAY. 自行修改"proxy_pass" 到 你的V2RAY docker ip 和 listen port.
- location /letmefree/ {
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header Host $http_host;
- proxy_pass http://v2raydockerip:46889;
- }
-
- }
- }
你可以用不同的 V2RAY client來試了.
記得要enable "MUX".
address入返你個DDNS或ip.
v2ray 的PORT 是443.
用返和server一樣的UID 和alterid.
security 用 "aes-128-cfb"
network 選 "ws/websock"
path 入返你在nginx和v2ray 一樣的patch . 上面用 "/letmefree/"
tls 請選 "tls".
咁樣就完成.
https://www.hkepc.com/forum/attachment.php?aid=2060659&k=8cf5b61dab623d9d9140f0b85e553f70&t=1781472092&sid=8yrleD89C

https://www.hkepc.com/forum/attachment.php?aid=2060660&k=2b7b39ec21946c25c8d980e9b4d80213&t=1781472092&sid=8yrleD89C

作者: MirageKnight 時間: 2018-5-22 16:23
本帖最後由 MirageKnight 於 2018-5-23 00:55 編輯
大至上就是這樣. 如果你係docker 高手. 可以用docker compose 搞好野D config.
還有就是活用 docker share host volume/foder功能. 有好多docker 好好用.
如果你是用qnapcloud 係可以用 nginx 來proxy 返去 NAS 那個apache server.
account key 可以keep 住用, domain key 一樣. 除非你加個D domain 有變. 如果有變只要重做 generate domain.csr個一part. run 個script 就得. 當然要remark 一 remark check cert到期先來regernate. regernate完又記得 delete返remark.... set好cron job. 每日都會都同check . 張cert到期日少個30日會連上letsencrypt 做renew.
順帶一提. V2RAY 的 vmess 時有time stamp. 所以 client 同 server 唔好有超過5分鐘的時差相距.
作者: SamSo 時間: 2018-5-22 16:42
Good!!
作者: st1000 時間: 2018-5-22 16:51
回覆 5# MirageKnight
thank you for share
作者: 國大代表 時間: 2018-5-22 16:56
Synology 是否差不多設定程序
作者: MirageKnight 時間: 2018-5-22 16:59
係. 如果大至上係一樣. 但pathing 會好唔同.
作者: buddy25 時間: 2018-5-23 10:01
thx ching
研究下, 希望識
作者: ShekBoy 時間: 2018-5-23 11:08
synology系統預設係用nginx,應該用唔到你依個方法,多數要大改

作者: MirageKnight 時間: 2018-5-23 12:34
本帖最後由 MirageKnight 於 2018-5-23 12:41 編輯
咁只係要知nginx個config file 同 web page folder. 修改就得. nginx 個config file 好易明. 直成唔使裝都得. 但係起個docker ngnix又唔會有問題. 記住係行bridge mode 唔係 host. bridge mode 下 新的nginx 有自己的ip and port. 你係router 開個80 同 443 比docker的 nginx就得. 如果你係host緊web page. 可以redirect/proxy 返去 NAS 本身的nginx....
作者: ShekBoy 時間: 2018-5-23 13:23
咁只係要知nginx個config file 同 web page folder. 修改就得. nginx 個config file 好易明. 直成唔使裝 ...
MirageKnight 發表於 2018-5-23 12:34
synology個docker gui冇得set ip...應該要整就要咩都ssh command...
同埋試過v2ray行bridge嘅話會上唔到網, 睇返nginx log見到成堆
[error] "5位數字"#"5位數字": *"6位數字" recv() failed (104: Connection reset by peer) while reading response header from upstream, client: "IP", server: "域名", request: "GET /ray HTTP/1.1", upstream: "http://127.0.0.1:"port"/"v2raypath"", host: "域名"
唔知係咪我client冇開MUX問題定點...
本身自己有用開web server所以唔想搞到咁麻煩, 但係synology本身個nginx config我都唔知佢係整到點, 然後依家就一直棘住咗

作者: MirageKnight 時間: 2018-5-23 13:32
本帖最後由 MirageKnight 於 2018-5-23 13:42 編輯
synology個docker gui冇得set ip...應該要整就要咩都ssh command...
同埋試過v2ray行bridge嘅話會上 ...
ShekBoy 發表於 2018-5-23 13:23
你係nginx 同 v2ray config 中. 那個 address path. 唔好跟出面個D setting 如 "/abcd". 係nginx同v2ray 內都用. "/abcd/" 尾個一個 "/" 好重要.....
還有點解會redirect 去 local host ? 你個 v2ray docker 都係用host mode network ?
你用那一個client ? android 的V2rayNG 和IOS 的shadowrocket都有. 唔係server setting內的. 係main menu 右上角個 ":" setting內的.
作者: ShekBoy 時間: 2018-5-23 16:13
你係nginx 同 v2ray config 中. 那個 address path. 唔好跟出面個D setting 如 "/abcd". 係nginx同v2ray ...
MirageKnight 發表於 2018-5-23 13:32
有冇"/"都一樣...
v2ray用host network冇問題, 用bridge就出error, 剛剛試咗填v2ray個docker ip出第二個error
[error] 21380#21380: *382839 connect() failed (111: Connection refused) while connecting to upstream, client: "IP", server: "域名", request: "GET /path/ HTTP/1.1", upstream: "http://"dockerip->172.17.0.4":"v2ray port"/path/", host: "域名"
用v2rayng, 開咗MUX一樣
作者: MirageKnight 時間: 2018-5-23 16:25
本帖最後由 MirageKnight 於 2018-5-23 16:37 編輯
你試下telnet 去 v2ray個 docker 個ip 同 listen port.. 有沒有connection 返是refuse. 因為nginx 試咗connect去你個v2ray但無返應.
如你 v2ray 係 192.168.1.100:48495 . 咁 "telnet 192.168.1.100 48495" 個screen 會有返應唔係refuse to connect.
作者: ShekBoy 時間: 2018-5-23 16:36
你依個係 nginx 個log/console msg
見唔見依D ??
48.62.211.61 - - [23/May/2018:01:43:08 +0800] "GET / ...
MirageKnight 發表於 2018-5-23 16:25
v2ray容器行bridge先會有類似error, 即係上面講嗰兩個
另外我見容器係bridge係冇得指定ip, 你qnap嗰個docker可以咁神奇...
作者: MirageKnight 時間: 2018-5-23 16:39
本帖最後由 MirageKnight 於 2018-5-23 16:52 編輯
本身docker係可以brdige mode同nat mode 下set fixed ip 的. 只係S記無加依D工能係佢個UI.
作者: MirageKnight 時間: 2018-5-23 16:48
本帖最後由 MirageKnight 於 2018-5-23 17:42 編輯
如果行唔都brdige mode. v2ray 行返host mode都不緊. 起碼nginx 同v2ray 有connection. error 104. 你enable 咗 MUX, 同 係client select 返"TLS"個field 係TLS就應該無問題. 佢TLS個field明陰人. nginx出 error 111. 應該係v2ray 無接到佢D connection.
跟返我個v2ray config 個 段 "ws" setting. 個 "path" 一定要同 nginx config 一樣會出 104 error.
還有可試係在client create 一個新的 connection config. 由頭做做一次setting. 因為我都試過出好多104 error. 可能係版本問題. D舊版client 原本D setting 用係新版本新問題的.
作者: ShekBoy 時間: 2018-5-23 18:11
本身docker係可以brdige mode同nat mode 下set fixed ip 的. 只係S記無加依D工能係佢個UI. ...
MirageKnight 發表於 2018-5-23 16:39
我轉咗用portainer管理docker但係network set完ip部署就出error
google過先知話bridge mode唔可以set ip
https://www.hkepc.com/forum/attachment.php?aid=2060870&k=9cc37282db7c6ff14ddd1255210d8f1b&t=1781472092&sid=8yrleD89C

作者: ShekBoy 時間: 2018-5-23 18:16
如果行唔都brdige mode. v2ray 行返host mode都不緊. 起碼nginx 同v2ray 有connection. error 104. 你enabl ...
MirageKnight 發表於 2018-5-23 16:48
主要本身係可以行到bridge但係自己唔得唔忿氣
作者: MirageKnight 時間: 2018-5-23 18:20
我轉咗用portainer管理docker但係network set完ip部署就出error
google過先知話bridge mode唔可以set ip ...
ShekBoy 發表於 2018-5-23 18:11
你本身個network ip range 係乜? 你set 個乜ip 比個bridge mode 下的docker container ??
我唔知S記係點. 但docker 本身係bridge mode下唔一定用dhcp來攞ip. 可以set fixed ip.
作者: ShekBoy 時間: 2018-5-23 18:32
你本身個network ip range 係乜? 你set 個乜ip 比個bridge mode 下的docker container ??
我唔知S記係 ...
MirageKnight 發表於 2018-5-23 18:20
192.168.8.x,諗著set 192.168.8.x,synology bridge係172.17.0.x,兩個都set過都係報依個error
作者: MirageKnight 時間: 2018-5-23 22:04
192.168.8.x,諗著set 192.168.8.x,synology bridge係172.17.0.x,兩個都set過都係報依個error ...
ShekBoy 發表於 2018-5-23 18:32
咁真係唔知S記的Docker點set了.
作者: ShekBoy 時間: 2018-5-23 22:19
唔知會唔會同docker版本有關,synology個docker舊到阿媽都唔認得

作者: ShekBoy 時間: 2018-5-30 20:48
想請問下你android開mux連住 speedtest會唔會test upload嗰時話網絡有問題?
我一定要熄mux先test到
作者: MirageKnight 時間: 2018-5-30 20:54
依樣唔知. 但一關MUX. v2ray 會出好多connnect fail msg. 但連線速度又唔太大分別咁
.
作者: ShekBoy 時間: 2018-5-30 20:56
oh, thx
作者: 张无忌 時間: 2018-6-15 08:31
本帖最後由 张无忌 於 2018-6-15 08:35 編輯
回覆 3# MirageKnight
CHing你真厉害,还有让更加多members知道怎样set!我自己我也V2Ray server,但是只是斋V2Ray,我也会朝着你的方向走。
有个问题想请教,就是有些member的QNAP NAS如TS-410,firmware里的App Centre没有Container Station,是否自己能自己安装docker呢?
(在你的帖子可以学到很多东西,再次谢谢。)


