[{"data":1,"prerenderedAt":5808},["ShallowReactive",2],{"wiki-page-\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":3,"wiki-doc-items-\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":5748,"language-switcher-data-\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":5792,"wiki-i18n-paths-\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":5807},{"id":4,"title":5,"body":6,"canonicalPath":5729,"chapterDepth":5730,"chapterOrder":5731,"date":5732,"description":31,"docI18nKey":5733,"docKey":5734,"docRoot":5735,"docTitle":5736,"extension":5737,"i18nKey":5738,"isBlogPost":5739,"isWikiDoc":1151,"isWikiIndex":5739,"layout":5740,"legacyPath":5740,"locale":5741,"localeSlug":5742,"meta":5743,"navigation":1151,"path":5729,"seo":5744,"sourcePath":5745,"sourceStem":5738,"stem":5746,"wikiDepth":38,"__hash__":5747},"content\u002F_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0900-其他操作.md","其他操作",{"type":7,"value":8,"toc":5716},"minimark",[9,13,17,25,313,316,389,392,396,400,406,409,412,415,420,423,426,429,435,438,443,446,449,454,457,462,465,468,473,476,481,484,500,503,506,518,521,530,533,536,545,548,557,560,563,572,575,578,597,600,603,612,617,620,623,632,635,644,647,656,659,668,673,676,684,689,692,701,704,712,717,720,729,732,735,739,742,747,750,755,770,775,780,791,796,802,807,822,827,830,835,840,845,853,858,865,870,881,886,889,892,895,898,903,906,928,933,936,945,950,953,977,980,1011,1014,1019,1022,1037,1042,1061,1064,1067,1072,1084,1089,1094,1097,1102,1105,1120,1123,1128,1133,1137,1142,1196,1199,1203,1209,1215,1220,1223,1230,1235,1242,1245,1248,1255,1270,1273,1336,1339,1354,1367,1457,1460,1463,1532,1535,1538,1541,1563,1566,1571,1576,1583,1588,1591,1595,1600,1605,1609,1612,1615,1658,1663,1666,1688,1703,1705,1710,1722,1782,1784,1786,1844,1846,1848,1851,1867,1872,1875,1880,1883,1886,1951,1956,1959,1961,1965,1977,2059,2061,2063,2121,2127,2129,2135,2140,2142,2147,2150,2171,2206,2210,2225,2229,2232,2235,2238,2241,2249,2252,2265,2268,2283,2286,2305,2354,2357,2377,2380,2394,2400,2403,2412,2428,2440,2480,2485,2513,2518,2523,2553,2557,2561,2564,2569,2574,2587,2599,2602,2607,2622,2629,2662,2667,2685,2688,2692,2695,2699,2702,2706,2709,2713,2722,2728,2733,2745,2750,2755,2760,2787,2790,2795,2806,2811,2817,2822,2825,2830,3040,3044,3049,3054,3058,3063,3075,3083,3086,3091,3095,3100,3105,3110,3116,3121,3126,3131,3134,3137,3143,3148,3153,3156,3163,3171,3176,3181,3184,3188,3191,3194,3197,3200,3203,3209,3214,3217,3224,3231,3234,3237,3240,3270,3273,3277,3283,3288,3294,3299,3316,3348,3364,3367,3370,3376,3387,3392,3403,3413,3430,3435,3440,3443,3446,3449,3478,3481,3484,3533,3538,3541,3546,3549,3552,3557,3560,3565,3568,3571,3574,3577,3580,3585,3588,3591,3596,3601,3606,3610,3614,3617,3620,3631,3634,3637,3641,3644,3731,3734,3747,3753,3756,3760,3767,3773,3776,4184,4187,4190,4197,4200,4213,4216,4219,4225,4228,4240,4247,4250,4263,4270,4273,4276,4282,4285,4298,4305,4308,4322,4329,4332,4346,4349,4356,4359,4373,4378,4385,4388,4391,4420,4423,4439,4442,4445,4463,4466,4472,4474,4502,4505,4508,4513,4519,4522,4525,4542,4545,4551,4554,4560,4563,4566,4569,4572,4606,4609,4615,4624,4628,4632,4635,4638,4642,4646,4650,4653,4658,4670,4723,4728,4731,4736,4740,4743,4759,4766,4771,4778,4783,4787,4790,4804,4809,4813,4816,4822,4825,4832,4839,4947,4950,4955,4960,4963,4966,4993,4996,5001,5006,5009,5014,5020,5025,5028,5035,5041,5056,5061,5086,5106,5109,5114,5117,5202,5205,5211,5214,5218,5221,5413,5416,5422,5425,5430,5433,5436,5441,5547,5550,5555,5559,5563,5570,5576,5581,5584,5587,5592,5597,5600,5605,5610,5615,5619,5625,5630,5633,5647,5651,5656,5659,5673,5677,5682,5686,5691,5696,5699,5704,5707,5712],[10,11,12],"h3",{"id":12},"工控機如何連wifi",[14,15,16],"p",{},"當我們工控機從一個環境移動到另一個環境，且新的環境的wifi我們沒有連接過，我們沒有屏幕如何讓工控機連上網呢？",[14,18,19,20,24],{},"進入工控機的硬盤目錄，進入",[21,22,23],"code",{},"\u002Fetc\u002Fnetplan\u002F","，底下有很多yaml,找到一個最符合下方格式的yaml:",[26,27,32],"pre",{"className":28,"code":29,"language":30,"meta":31,"style":31},"language-YAML shiki shiki-themes github-light github-dark","network: \n  version: 2 \n  wifis: \n    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96: \n      renderer: NetworkManager \n      match: \n        name: \"wlan0\" \n      dhcp4: true \n      dhcp6: true \n      access-points: \n        \"EMIS_Vinci_Robocon_5G\": \n          auth: \n            key-management: \"psk\" \n            password: \"vinci666\" \n          networkmanager: \n            uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n            name: \"EMIS_Vinci_Robocon_5G\" \n            passthrough: \n              wifi-security.auth-alg: \"open\" \n              ipv6.addr-gen-mode: \"default\" \n              ipv6.ip6-privacy: \"-1\" \n              proxy._: \"\" \n      networkmanager: \n        uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n        name: \"EMIS_Vinci_Robocon_5G\"\n\n","YAML","",[21,33,34,47,63,71,79,93,101,114,127,139,147,155,163,176,189,197,210,223,231,244,257,270,283,291,303],{"__ignoreMap":31},[35,36,39,43],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"s9eBZ","network",[35,44,46],{"class":45},"sVt8B",": \n",[35,48,50,53,56,60],{"class":37,"line":49},2,[35,51,52],{"class":41},"  version",[35,54,55],{"class":45},": ",[35,57,59],{"class":58},"sj4cs","2",[35,61,62],{"class":45}," \n",[35,64,66,69],{"class":37,"line":65},3,[35,67,68],{"class":41},"  wifis",[35,70,46],{"class":45},[35,72,74,77],{"class":37,"line":73},4,[35,75,76],{"class":41},"    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96",[35,78,46],{"class":45},[35,80,82,85,87,91],{"class":37,"line":81},5,[35,83,84],{"class":41},"      renderer",[35,86,55],{"class":45},[35,88,90],{"class":89},"sZZnC","NetworkManager",[35,92,62],{"class":45},[35,94,96,99],{"class":37,"line":95},6,[35,97,98],{"class":41},"      match",[35,100,46],{"class":45},[35,102,104,107,109,112],{"class":37,"line":103},7,[35,105,106],{"class":41},"        name",[35,108,55],{"class":45},[35,110,111],{"class":89},"\"wlan0\"",[35,113,62],{"class":45},[35,115,117,120,122,125],{"class":37,"line":116},8,[35,118,119],{"class":41},"      dhcp4",[35,121,55],{"class":45},[35,123,124],{"class":58},"true",[35,126,62],{"class":45},[35,128,130,133,135,137],{"class":37,"line":129},9,[35,131,132],{"class":41},"      dhcp6",[35,134,55],{"class":45},[35,136,124],{"class":58},[35,138,62],{"class":45},[35,140,142,145],{"class":37,"line":141},10,[35,143,144],{"class":41},"      access-points",[35,146,46],{"class":45},[35,148,150,153],{"class":37,"line":149},11,[35,151,152],{"class":89},"        \"EMIS_Vinci_Robocon_5G\"",[35,154,46],{"class":45},[35,156,158,161],{"class":37,"line":157},12,[35,159,160],{"class":41},"          auth",[35,162,46],{"class":45},[35,164,166,169,171,174],{"class":37,"line":165},13,[35,167,168],{"class":41},"            key-management",[35,170,55],{"class":45},[35,172,173],{"class":89},"\"psk\"",[35,175,62],{"class":45},[35,177,179,182,184,187],{"class":37,"line":178},14,[35,180,181],{"class":41},"            password",[35,183,55],{"class":45},[35,185,186],{"class":89},"\"vinci666\"",[35,188,62],{"class":45},[35,190,192,195],{"class":37,"line":191},15,[35,193,194],{"class":41},"          networkmanager",[35,196,46],{"class":45},[35,198,200,203,205,208],{"class":37,"line":199},16,[35,201,202],{"class":41},"            uuid",[35,204,55],{"class":45},[35,206,207],{"class":89},"\"6f414fe0-2658-48ff-89ee-c7981b87bc96\"",[35,209,62],{"class":45},[35,211,213,216,218,221],{"class":37,"line":212},17,[35,214,215],{"class":41},"            name",[35,217,55],{"class":45},[35,219,220],{"class":89},"\"EMIS_Vinci_Robocon_5G\"",[35,222,62],{"class":45},[35,224,226,229],{"class":37,"line":225},18,[35,227,228],{"class":41},"            passthrough",[35,230,46],{"class":45},[35,232,234,237,239,242],{"class":37,"line":233},19,[35,235,236],{"class":41},"              wifi-security.auth-alg",[35,238,55],{"class":45},[35,240,241],{"class":89},"\"open\"",[35,243,62],{"class":45},[35,245,247,250,252,255],{"class":37,"line":246},20,[35,248,249],{"class":41},"              ipv6.addr-gen-mode",[35,251,55],{"class":45},[35,253,254],{"class":89},"\"default\"",[35,256,62],{"class":45},[35,258,260,263,265,268],{"class":37,"line":259},21,[35,261,262],{"class":41},"              ipv6.ip6-privacy",[35,264,55],{"class":45},[35,266,267],{"class":89},"\"-1\"",[35,269,62],{"class":45},[35,271,273,276,278,281],{"class":37,"line":272},22,[35,274,275],{"class":41},"              proxy._",[35,277,55],{"class":45},[35,279,280],{"class":89},"\"\"",[35,282,62],{"class":45},[35,284,286,289],{"class":37,"line":285},23,[35,287,288],{"class":41},"      networkmanager",[35,290,46],{"class":45},[35,292,294,297,299,301],{"class":37,"line":293},24,[35,295,296],{"class":41},"        uuid",[35,298,55],{"class":45},[35,300,207],{"class":89},[35,302,62],{"class":45},[35,304,306,308,310],{"class":37,"line":305},25,[35,307,106],{"class":41},[35,309,55],{"class":45},[35,311,312],{"class":89},"\"EMIS_Vinci_Robocon_5G\"\n",[14,314,315],{},"將其改為新wifi的名和密碼：",[26,317,319],{"className":28,"code":318,"language":30,"meta":31,"style":31},"network:\n  version: 2\n  wifis:\n    wlan0:\n      dhcp4: true\n      dhcp6: true\n      access-points:\n        \"EMIS_Vinci_Robocon_5G\":\n          password: \"vinci666\"\n\n",[21,320,321,328,337,343,350,359,367,373,379],{"__ignoreMap":31},[35,322,323,325],{"class":37,"line":38},[35,324,42],{"class":41},[35,326,327],{"class":45},":\n",[35,329,330,332,334],{"class":37,"line":49},[35,331,52],{"class":41},[35,333,55],{"class":45},[35,335,336],{"class":58},"2\n",[35,338,339,341],{"class":37,"line":65},[35,340,68],{"class":41},[35,342,327],{"class":45},[35,344,345,348],{"class":37,"line":73},[35,346,347],{"class":41},"    wlan0",[35,349,327],{"class":45},[35,351,352,354,356],{"class":37,"line":81},[35,353,119],{"class":41},[35,355,55],{"class":45},[35,357,358],{"class":58},"true\n",[35,360,361,363,365],{"class":37,"line":95},[35,362,132],{"class":41},[35,364,55],{"class":45},[35,366,358],{"class":58},[35,368,369,371],{"class":37,"line":103},[35,370,144],{"class":41},[35,372,327],{"class":45},[35,374,375,377],{"class":37,"line":116},[35,376,152],{"class":89},[35,378,327],{"class":45},[35,380,381,384,386],{"class":37,"line":129},[35,382,383],{"class":41},"          password",[35,385,55],{"class":45},[35,387,388],{"class":89},"\"vinci666\"\n",[14,390,391],{},"工控機開機即可連上網。",[10,393,395],{"id":394},"ssh遠程開發","SSH遠程開發",[397,398,399],"h4",{"id":399},"環境準備",[14,401,402],{},[403,404,405],"strong",{},"1.硬件準備",[14,407,408],{},"首先要有一臺工控機（X86小型電腦，專業工控機，樹莓派等等）。",[14,410,411],{},"控制系統的硬件載體是具有多樣性的，常用的多是基於ARM、x86等架構的處理器，比如：PC、工控機、樹莓派、NVIDIA Jetson...。不同的處理器都存在一定的優缺點，PC和工控機，處理器性能強大，但是功耗高、體積大、靈活性差，嵌入式系統則反之。對於我們而言，可以根據機器人平臺的電氣、載重、空間以及用途等諸多要素自主選擇合適的控制系統。",[14,413,414],{},"無論選用何種處理器，只要是要進行機器人的開發，安裝了ROS或者ROS2，那麼對於開發人員而言，在使用上，沒有任何本質的區別，或者換言之，作為軟件工程師，部分場景下無需關注於硬件的選型。",[14,416,417],{},[403,418,419],{},"2.設置固定IP",[14,421,422],{},"遠程連接時，不管使用何種工具，需要根據IP地址定位到被連接的主機，再通過賬號和密碼登錄該主機，因此，我們需要先獲取該IP地址。並且每次連接時，都需要使用到IP，為了保證連接的便利性和穩定性，最好將被連接主機的IP地址設置為固定IP，具體操作如下。",[14,424,425],{},"1.進入設置界面",[14,427,428],{},"啟動被連接的主機（啟動時需要連接顯示器或使用HDMI採集卡，並且配置完SSH遠程訪問之後，可以不再使用顯示器或HDMI採集卡），並進入設置界面。",[14,430,431],{},[432,433],"img",{"alt":31,"src":434},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage332.webp",[14,436,437],{},"2.配置所連接的網絡",[14,439,440],{},[432,441],{"alt":31,"src":442},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage333.webp",[14,444,445],{},"3.設置固定IP",[14,447,448],{},"查看當前IP地址。",[14,450,451],{},[432,452],{"alt":31,"src":453},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage334.webp",[14,455,456],{},"設置固定IP。",[14,458,459],{},[432,460],{"alt":31,"src":461},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage335.webp",[14,463,464],{},"至此，IP配置完畢。",[397,466,467],{"id":467},"環境搭建",[14,469,470],{},[403,471,472],{},"概念",[14,474,475],{},"SSH（Secure Shell）是一種通用的、功能強大的、基於軟件的網絡安全解決方案。計算機每次向網絡發送數據時，SSH都會自動對其進行加密。數據到達目的地時，SSH自動對加密數據進行解密。整個過程都是透明的，使用OpenSSH工具將會增進你的系統安全性。SSH安裝容易、使用簡單。",[14,477,478],{},[403,479,480],{},"實現",[14,482,483],{},"SSH實現架構上分為客戶端和服務器端兩大部分，客戶端是數據的發送方，服務端是數據的接收方，當前場景下，我們需要從本地主機發送數據到遠程主機，那麼本地主機需要安裝並啟動SSH客戶端，而遠程主機則需要安裝並啟動SSH服務端，整個實現具體流程如下：",[485,486,487,491,494,497],"ol",{},[488,489,490],"li",{},"本地主機安裝SSH客戶端，遠程主機安裝SSH服務端；",[488,492,493],{},"遠程主機啟動SSH服務；",[488,495,496],{},"本地主機登陸遠程主機；",[488,498,499],{},"實現數據傳輸。",[14,501,502],{},"1.安裝SSH客戶端與服務端",[14,504,505],{},"默認情況下，Ubuntu系統已經安裝了SSH客戶端，因此只需要在遠程主機安裝SSH服務端即可，安裝命令如下：",[26,507,512],{"className":508,"code":509,"language":510,"meta":511,"style":31},"language-Plain shiki shiki-themes github-light github-dark"," sudo apt install openssh-server\n","Plain","Text",[21,513,514],{"__ignoreMap":31},[35,515,516],{"class":37,"line":38},[35,517,509],{},[14,519,520],{},"如果SSH客戶端需要自行安裝，那麼調用如下命令:",[26,522,524],{"className":508,"code":523,"language":510,"meta":511,"style":31},"sudo apt install openssh-client\n",[21,525,526],{"__ignoreMap":31},[35,527,528],{"class":37,"line":38},[35,529,523],{},[14,531,532],{},"2.遠程主機啟動SSH服務",[14,534,535],{},"遠程主機啟動 ssh 服務命令如下：",[26,537,539],{"className":508,"code":538,"language":510,"meta":511,"style":31},"sudo \u002Fetc\u002Finit.d\u002Fssh start\n",[21,540,541],{"__ignoreMap":31},[35,542,543],{"class":37,"line":38},[35,544,538],{},[14,546,547],{},"啟動後可使用如下命令查看服務是否正常運行：",[26,549,551],{"className":508,"code":550,"language":510,"meta":511,"style":31},"ps -e | grep ssh\n",[21,552,553],{"__ignoreMap":31},[35,554,555],{"class":37,"line":38},[35,556,550],{},[14,558,559],{},"如果啟動成功，會包含 sshd 程序。",[14,561,562],{},"以後需要頻繁的使用ssh遠程登錄，為了簡化實現，可以將遠程主機的ssh服務設置為開機自啟動，命令如下：",[26,564,566],{"className":508,"code":565,"language":510,"meta":511,"style":31},"sudo systemctl enable ssh\n",[21,567,568],{"__ignoreMap":31},[35,569,570],{"class":37,"line":38},[35,571,565],{},[14,573,574],{},"3.本地遠程登錄",[14,576,577],{},"登錄遠程主機可以調用如下命令:",[26,579,583],{"className":580,"code":581,"language":582,"meta":31,"style":31},"language-bash shiki shiki-themes github-light github-dark","ssh -X 用户名@ip地址\n","bash",[21,584,585],{"__ignoreMap":31},[35,586,587,591,594],{"class":37,"line":38},[35,588,590],{"class":589},"sScJk","ssh",[35,592,593],{"class":58}," -X",[35,595,596],{"class":89}," 用户名@ip地址\n",[14,598,599],{},"然後根據提示，錄入登陸密碼，即可成功登錄。",[14,601,602],{},"如果退出，可以調用exit命令：",[26,604,606],{"className":508,"code":605,"language":510,"meta":511,"style":31},"exit\n",[21,607,608],{"__ignoreMap":31},[35,609,610],{"class":37,"line":38},[35,611,605],{},[14,613,614],{},[403,615,616],{},"4.實現數據傳輸",[14,618,619],{},"通過SSH在本地主機只需調用相關指令，便可方便的實現與遠程主機的數據上傳或下載，指令格式如下所示：",[14,621,622],{},"上傳文件指令格式如下：",[26,624,626],{"className":508,"code":625,"language":510,"meta":511,"style":31},"scp 本地文件路径 账号@ip:路径\n",[21,627,628],{"__ignoreMap":31},[35,629,630],{"class":37,"line":38},[35,631,625],{},[14,633,634],{},"上傳文件夾指令格式如下：",[26,636,638],{"className":508,"code":637,"language":510,"meta":511,"style":31},"scp -r 本地文件夹路径 账号@ip:路径\n",[21,639,640],{"__ignoreMap":31},[35,641,642],{"class":37,"line":38},[35,643,637],{},[14,645,646],{},"下載文件指令格式如下：",[26,648,650],{"className":508,"code":649,"language":510,"meta":511,"style":31},"scp 账号@ip:路径 本地文件夹路径\n",[21,651,652],{"__ignoreMap":31},[35,653,654],{"class":37,"line":38},[35,655,649],{},[14,657,658],{},"下載文件夾指令格式如下：",[26,660,662],{"className":508,"code":661,"language":510,"meta":511,"style":31},"scp -r 账号@ip:路径 本地文件夹路径\n",[21,663,664],{"__ignoreMap":31},[35,665,666],{"class":37,"line":38},[35,667,661],{},[14,669,670],{},[403,671,672],{},"優化",[14,674,675],{},"每次遠程登錄時，都需要輸入密碼，使用不方便，可以藉助密鑰簡化登錄過程，實現免密登錄，提高操作效率。實現思想是：生成一對公鑰私鑰，私鑰存儲在本地，公鑰上傳至服務器，每次登錄時，本地直接上傳私鑰到服務器，服務器有匹配的公鑰就認為是合法用戶，直接創建SSH連接即可。具體實現步驟只有兩步：",[485,677,678,681],{},[488,679,680],{},"本地生成密鑰對；",[488,682,683],{},"將公鑰上傳至遠程主機。",[14,685,686],{},[403,687,688],{},"1.生成密鑰對",[14,690,691],{},"本地客戶端生成公私鑰：（一路回車默認即可）",[26,693,695],{"className":508,"code":694,"language":510,"meta":511,"style":31},"ssh-keygen\n",[21,696,697],{"__ignoreMap":31},[35,698,699],{"class":37,"line":38},[35,700,694],{},[14,702,703],{},"上面這個命令會在用戶目錄.ssh文件夾下創建公私鑰：",[485,705,706,709],{},[488,707,708],{},"id_rsa （私鑰）；",[488,710,711],{},"id_rsa.pub (公鑰)。",[14,713,714],{},[403,715,716],{},"2.公鑰上傳",[14,718,719],{},"上傳指令如下：",[26,721,723],{"className":508,"code":722,"language":510,"meta":511,"style":31},"ssh-copy-id -i ~\u002F.ssh\u002Fid_rsa.pub 账号@ip\n",[21,724,725],{"__ignoreMap":31},[35,726,727],{"class":37,"line":38},[35,728,722],{},[14,730,731],{},"上面這條指令是將本地公鑰上傳到遠程主機的ssh目錄下，該目錄下有文件authorized_keys保存了公鑰內容。",[14,733,734],{},"以後再遠程登錄就無需錄入密碼了。",[397,736,738],{"id":737},"使用vscode優化","使用VScode優化",[14,740,741],{},"上一節，我們介紹了ssh遠程連接的使用，但是如果只是純粹使用ssh也存在一些不足，比如：編輯文件內容時，需要使用vi編輯器，且在一個終端內，無法同時編輯多個文件。本節將介紹一更為實用的功能——VSCode結合插件實現遠程開發，這使我們可以以圖形化的方式實現遠程開發，比ssh的使用更方便快捷，可以大大的提高程序開發效率。",[14,743,744],{},[403,745,746],{},"1.準備工作",[14,748,749],{},"VScode遠程開發依賴於ssh，請首先按照上一節內容配置ssh遠程連接。",[14,751,752],{},[403,753,754],{},"2.為VScode安裝遠程開發插件",[14,756,757,758,761,762,765,766,769],{},"啟動VScode，首先點擊側邊欄的擴展按鈕，然後在",[21,759,760],{},"扩展：商店","的搜索欄輸入",[21,763,764],{},"Remote Development","並點擊同名插件，最後在右側顯示區中點擊",[21,767,768],{},"安装","。",[14,771,772],{},[432,773],{"alt":31,"src":774},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage336.webp",[14,776,777],{},[403,778,779],{},"3.配置遠程連接",[14,781,782,783,786,787,790],{},"步驟1：使用快捷鍵",[21,784,785],{},"ctrl + shift + p","打開命令輸入窗口，並輸入",[21,788,789],{},"Remote-SSH:Connect to Host...","，彈出列表中選擇與之同名的選項。",[14,792,793],{},[432,794],{"alt":31,"src":795},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage337.webp",[14,797,798,799,769],{},"步驟2：步驟1完成將彈出一個新的命令窗口如下，選擇下拉列表中的 ",[21,800,801],{},"Add New SSH Host",[14,803,804],{},[432,805],{"alt":31,"src":806},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage338.webp",[14,808,809,810,813,814,817,818,821],{},"步驟3：步驟2完成又將彈出一個新的命令窗口，在其中輸入：",[21,811,812],{},"ssh -X ubuntu@192.168.43.164","，其中，",[21,815,816],{},"ubuntu","需要替換為你的登錄用戶名，",[21,819,820],{},"192.18.43.164"," 則替換為被遠程連接主機的ip地址。",[14,823,824],{},[432,825],{"alt":31,"src":826},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage339.webp",[14,828,829],{},"步驟4：選擇步驟3完成後的彈窗列表中的第一個選項(或直接回車)，即可完成配置，配置成功後會有提示信息。",[14,831,832],{},[432,833],{"alt":31,"src":834},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage340.webp",[14,836,837],{},[432,838],{"alt":31,"src":839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage341.webp",[14,841,842],{},[403,843,844],{},"4.使用",[14,846,847,848,786,850,852],{},"步驟1：繼續使用快捷鍵",[21,849,785],{},[21,851,789],{},"，此時列表中將顯示步驟3中配置的ip地址，直接選擇，選擇後，VScode將打開一個新的窗口。",[14,854,855],{},[432,856],{"alt":31,"src":857},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage342.webp",[14,859,860,861,864],{},"或者，也可以點擊側邊欄的",[21,862,863],{},"远程资源管理器","，在彈出的服務器列表中選擇要連接的服務器，並右擊，選擇在本窗口或新窗口中實現遠程連接。",[14,866,867],{},[432,868],{"alt":31,"src":869},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage343.webp",[14,871,872,873,876,877,880],{},"步驟2：選擇菜單欄的",[21,874,875],{},"文件","下的",[21,878,879],{},"打开文件夹","，在彈窗列表中選擇需要打開的文件夾並點擊確定即可。",[14,882,883],{},[432,884],{"alt":31,"src":885},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage344.webp",[14,887,888],{},"最終，我們就可以像操作本地文件一樣實現遠程開發了。",[10,890,891],{"id":891},"遠程桌面",[14,893,894],{},"因為用X11轉發效率太低太低，所以還是要選用遠程訪問桌面的形式來看Rviz2和Gazebo等等（如果有需求的話）",[14,896,897],{},"我們選擇使用VNC來看。",[485,899,900],{},[488,901,902],{},"安裝VNC服務器：",[14,904,905],{},"這裡以TigerVNC為例進行安裝：",[26,907,909],{"className":580,"code":908,"language":582,"meta":31,"style":31},"sudo apt install tigervnc-standalone-server tigervnc-common\n",[21,910,911],{"__ignoreMap":31},[35,912,913,916,919,922,925],{"class":37,"line":38},[35,914,915],{"class":589},"sudo",[35,917,918],{"class":89}," apt",[35,920,921],{"class":89}," install",[35,923,924],{"class":89}," tigervnc-standalone-server",[35,926,927],{"class":89}," tigervnc-common\n",[485,929,930],{"start":49},[488,931,932],{},"設置VNC密碼：",[14,934,935],{},"為VNC用戶設置密碼，運行以下命令：",[26,937,939],{"className":580,"code":938,"language":582,"meta":31,"style":31},"vncpasswd\n",[21,940,941],{"__ignoreMap":31},[35,942,943],{"class":37,"line":38},[35,944,938],{"class":589},[485,946,947],{"start":65},[488,948,949],{},"配置VNC啟動腳本:",[14,951,952],{},"創建VNC配置文件，在用戶家目錄內的.vnc文件夾中創建啟動文件：",[26,954,956],{"className":580,"code":955,"language":582,"meta":31,"style":31},"mkdir -p ~\u002F.vnc\nnano ~\u002F.vnc\u002Fxstartup\n",[21,957,958,969],{"__ignoreMap":31},[35,959,960,963,966],{"class":37,"line":38},[35,961,962],{"class":589},"mkdir",[35,964,965],{"class":58}," -p",[35,967,968],{"class":89}," ~\u002F.vnc\n",[35,970,971,974],{"class":37,"line":49},[35,972,973],{"class":589},"nano",[35,975,976],{"class":89}," ~\u002F.vnc\u002Fxstartup\n",[14,978,979],{},"在打開的編輯器裡面輸入以下內容（以GNOME為例）：",[26,981,983],{"className":580,"code":982,"language":582,"meta":31,"style":31},"#!\u002Fbin\u002Fsh\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_ADDRESS\ngnome-session\n",[21,984,985,991,999,1006],{"__ignoreMap":31},[35,986,987],{"class":37,"line":38},[35,988,990],{"class":989},"sJ8bj","#!\u002Fbin\u002Fsh\n",[35,992,993,996],{"class":37,"line":49},[35,994,995],{"class":58},"unset",[35,997,998],{"class":89}," SESSION_MANAGER\n",[35,1000,1001,1003],{"class":37,"line":65},[35,1002,995],{"class":58},[35,1004,1005],{"class":89}," DBUS_SESSION_BUS_ADDRESS\n",[35,1007,1008],{"class":37,"line":73},[35,1009,1010],{"class":589},"gnome-session\n",[14,1012,1013],{},"保存並退出（在nano中按Ctrl + O保存，然後按Ctrl + X退出）。",[485,1015,1016],{"start":73},[488,1017,1018],{},"給予執行權限：",[14,1020,1021],{},"為xstartup文件設置執行權限：",[26,1023,1025],{"className":580,"code":1024,"language":582,"meta":31,"style":31},"chmod +x ~\u002F.vnc\u002Fxstartup\n",[21,1026,1027],{"__ignoreMap":31},[35,1028,1029,1032,1035],{"class":37,"line":38},[35,1030,1031],{"class":589},"chmod",[35,1033,1034],{"class":89}," +x",[35,1036,976],{"class":89},[485,1038,1039],{"start":81},[488,1040,1041],{},"啟動VNC服務器：",[26,1043,1045],{"className":580,"code":1044,"language":582,"meta":31,"style":31},"vncserver -geometry 1920x1080 -localhost=0\n",[21,1046,1047],{"__ignoreMap":31},[35,1048,1049,1052,1055,1058],{"class":37,"line":38},[35,1050,1051],{"class":589},"vncserver",[35,1053,1054],{"class":58}," -geometry",[35,1056,1057],{"class":89}," 1920x1080",[35,1059,1060],{"class":58}," -localhost=0\n",[14,1062,1063],{},"geometry 選項指定窗口大小，localhost 選項設為 0 以開放連接。(設為1是隻允許本地連接)",[14,1065,1066],{},"你將看到類似於:1的輸出，這表示VNC會話的顯示編號。例如，如果輸出為:1，則VNC監聽的端口為5901（5900 + 顯示編號）。",[485,1068,1069],{"start":95},[488,1070,1071],{},"查看已開啟的VNC服務器：",[26,1073,1075],{"className":580,"code":1074,"language":582,"meta":31,"style":31},"vncserver -list\n",[21,1076,1077],{"__ignoreMap":31},[35,1078,1079,1081],{"class":37,"line":38},[35,1080,1051],{"class":589},[35,1082,1083],{"class":58}," -list\n",[14,1085,1086],{},[432,1087],{"alt":31,"src":1088},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage345.webp",[485,1090,1091],{"start":103},[488,1092,1093],{},"連接到VNC服務器：",[14,1095,1096],{},"使用VNC客戶端（如vncviewer）連接到VNC服務器，輸入你的服務器IP和端口。例如，如果服務器IP為192.168.31.10，且顯示編號為1，你應該連接到192.168.31.10:1，或者直接輸入192.168.31.10:5901。",[485,1098,1099],{"start":116},[488,1100,1101],{},"停止VNC服務器：",[14,1103,1104],{},"如果需要停止VNC服務器，可以使用以下命令：",[26,1106,1108],{"className":580,"code":1107,"language":582,"meta":31,"style":31},"vncserver -kill :1\n",[21,1109,1110],{"__ignoreMap":31},[35,1111,1112,1114,1117],{"class":37,"line":38},[35,1113,1051],{"class":589},[35,1115,1116],{"class":58}," -kill",[35,1118,1119],{"class":89}," :1\n",[14,1121,1122],{},"將:1替換為你實際使用的顯示編號。",[14,1124,1125],{},[432,1126],{"alt":31,"src":1127},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage346.webp",[14,1129,1130],{},[432,1131],{"alt":31,"src":1132},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage347.webp",[10,1134,1136],{"id":1135},"usb端口設置","USB端口設置",[14,1138,1139],{},[403,1140,1141],{},"首先先配置好權限",[26,1143,1145],{"className":580,"code":1144,"language":582,"meta":31,"style":31},"\n# 将用户权限提高\nsudo usermod -aG dialout $USER\nnewgrp dialout\n\n# 查看下面命令是否输出dialout（若输出才正常）\ngroups\n",[21,1146,1147,1153,1158,1174,1182,1186,1191],{"__ignoreMap":31},[35,1148,1149],{"class":37,"line":38},[35,1150,1152],{"emptyLinePlaceholder":1151},true,"\n",[35,1154,1155],{"class":37,"line":49},[35,1156,1157],{"class":989},"# 将用户权限提高\n",[35,1159,1160,1162,1165,1168,1171],{"class":37,"line":65},[35,1161,915],{"class":589},[35,1163,1164],{"class":89}," usermod",[35,1166,1167],{"class":58}," -aG",[35,1169,1170],{"class":89}," dialout",[35,1172,1173],{"class":45}," $USER\n",[35,1175,1176,1179],{"class":37,"line":73},[35,1177,1178],{"class":589},"newgrp",[35,1180,1181],{"class":89}," dialout\n",[35,1183,1184],{"class":37,"line":81},[35,1185,1152],{"emptyLinePlaceholder":1151},[35,1187,1188],{"class":37,"line":95},[35,1189,1190],{"class":989},"# 查看下面命令是否输出dialout（若输出才正常）\n",[35,1192,1193],{"class":37,"line":103},[35,1194,1195],{"class":589},"groups\n",[14,1197,1198],{},"因為我們插拔USB設備，他的端口號可能會一直變，所以我們要給他的tty起一個固定的別名。",[397,1200,1202],{"id":1201},"根據usb設備綁定端口多個不同設備","根據USB設備綁定端口(多個不同設備)",[14,1204,1205,1208],{},[403,1206,1207],{},"需求："," Ubuntu系統中現接入雷達和智能小車，請為二者綁定端口。",[14,1210,1211,1214],{},[403,1212,1213],{},"實現原理："," 可以通過USB設備本身的“標識”實現端口綁定。",[14,1216,1217],{},[403,1218,1219],{},"流程如下：",[14,1221,1222],{},"（1）.查找設備idVendor和idProduct",[14,1224,1225,1226,1229],{},"接入兩個USB設備，在終端調用指令",[21,1227,1228],{},"lsusb","查看顯示系統中以及連接到系統的USB設備信息。",[14,1231,1232],{},[432,1233],{"alt":31,"src":1234},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage348.webp",[14,1236,1237,1238,1241],{},"如上圖所示，紅色方框內數據為USB設備，ID後面的",[21,1239,1240],{},"1a86:7523","分別為USB的idVendor和idProduct（兩個參數之間使用”：“分隔）。",[14,1243,1244],{},"另外：可以通過重新插拔比較的方式確定哪些數據對應接入的USB設備。",[14,1246,1247],{},"（2）.編寫映射規則",[14,1249,1250,1251,1254],{},"在",[21,1252,1253],{},"\u002Fetc\u002Fudev\u002Frules.d","目錄下新建文件xxx.rules（文件名自定義）",[26,1256,1258],{"className":580,"code":1257,"language":582,"meta":31,"style":31},"sudo vim \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[21,1259,1260],{"__ignoreMap":31},[35,1261,1262,1264,1267],{"class":37,"line":38},[35,1263,915],{"class":589},[35,1265,1266],{"class":89}," vim",[35,1268,1269],{"class":89}," \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[14,1271,1272],{},"輸入如下內容：",[26,1274,1276],{"className":580,"code":1275,"language":582,"meta":31,"style":31},"KERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", MODE:=\"0777\", SYMLINK+=\"mylidar\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"mycar\"\n",[21,1277,1278,1311],{"__ignoreMap":31},[35,1279,1280,1283,1287,1290,1293,1296,1299,1302,1305,1308],{"class":37,"line":38},[35,1281,1282],{"class":45},"KERNEL",[35,1284,1286],{"class":1285},"szBVR","=",[35,1288,1289],{"class":89},"=\"ttyUSB*\",",[35,1291,1292],{"class":589}," ATTRS",[35,1294,1295],{"class":89},"{idVendor}==",[35,1297,1298],{"class":589},"\"10c4\"",[35,1300,1301],{"class":589},",",[35,1303,1304],{"class":89}," ATTRS{idProduct}==\"ea60\",",[35,1306,1307],{"class":89}," MODE:=\"0777\",",[35,1309,1310],{"class":89}," SYMLINK+=\"mylidar\"\n",[35,1312,1313,1315,1317,1319,1321,1323,1326,1328,1331,1333],{"class":37,"line":49},[35,1314,1282],{"class":45},[35,1316,1286],{"class":1285},[35,1318,1289],{"class":89},[35,1320,1292],{"class":589},[35,1322,1295],{"class":89},[35,1324,1325],{"class":589},"\"1a86\"",[35,1327,1301],{"class":589},[35,1329,1330],{"class":89}," ATTRS{idProduct}==\"7523\",",[35,1332,1307],{"class":89},[35,1334,1335],{"class":89}," SYMLINK+=\"mycar\"\n",[14,1337,1338],{},"代碼解釋：",[1340,1341,1342,1345,1348,1351],"ul",{},[488,1343,1344],{},"KERNEL是內核固定名稱，這裡統一是“ttyUSB*”；",[488,1346,1347],{},"MODE是節點權限，通常改為“0777”，表示可讀寫可運行；",[488,1349,1350],{},"SYMLINK是符號連接，即綁定的別名；",[488,1352,1353],{},"ATTRS是設備廠商的唯一標識，idVendor和idProduct正好組成上面通過lsusb查找到的設備ID。",[14,1355,1356,1357,1361,1364],{},"***小提示：***",[1358,1359,1360],"em",{},"一般的USB設備供應商都會提供類似的腳本文件，對於調用者而言，直接複製該文件到",[21,1362,1363],{},"\u002Fetc\u002Fudev\u002Frule.d",[1358,1365,1366],{},"目錄即可。",[1368,1369,1370,1387],"table",{},[1371,1372,1373],"thead",{},[1374,1375,1376,1381,1384],"tr",{},[1377,1378,1380],"th",{"align":1379},"left","設備類型",[1377,1382,1383],{"align":1379},"內核名稱示例",[1377,1385,1386],{"align":1379},"說明",[1388,1389,1390,1402,1413,1424,1435,1446],"tbody",{},[1374,1391,1392,1396,1399],{},[1393,1394,1395],"td",{"align":1379},"USB 串口設備",[1393,1397,1398],{"align":1379},"ttyUSB*",[1393,1400,1401],{"align":1379},"USB 轉串口設備，如 \u002Fdev\u002FttyUSB0",[1374,1403,1404,1407,1410],{},[1393,1405,1406],{"align":1379},"串口設備",[1393,1408,1409],{"align":1379},"ttyS*",[1393,1411,1412],{"align":1379},"物理串口設備，如 \u002Fdev\u002FttyS0",[1374,1414,1415,1418,1421],{},[1393,1416,1417],{"align":1379},"存儲設備",[1393,1419,1420],{"align":1379},"sd*",[1393,1422,1423],{"align":1379},"SCSI 磁盤設備，如 \u002Fdev\u002Fsda",[1374,1425,1426,1429,1432],{},[1393,1427,1428],{"align":1379},"網絡設備",[1393,1430,1431],{"align":1379},"eth*",[1393,1433,1434],{"align":1379},"以太網設備，如 \u002Fdev\u002Feth0",[1374,1436,1437,1440,1443],{},[1393,1438,1439],{"align":1379},"輸入設備",[1393,1441,1442],{"align":1379},"event*",[1393,1444,1445],{"align":1379},"輸入事件設備，如 \u002Fdev\u002Finput\u002Fevent0",[1374,1447,1448,1451,1454],{},[1393,1449,1450],{"align":1379},"藍牙設備",[1393,1452,1453],{"align":1379},"rfcomm*",[1393,1455,1456],{"align":1379},"藍牙串口設備，如 \u002Fdev\u002Frfcomm0",[14,1458,1459],{},"（3）.使規則生效",[14,1461,1462],{},"在終端下輸入如下指令：",[26,1464,1466],{"className":580,"code":1465,"language":582,"meta":31,"style":31},"\n# Ubuntu用下方命令\nsudo service udev reload\nsudo service udev restart\n\n#Fedora用下方命令\nsudo udevadm control --reload\nsudo udevadm trigger\n",[21,1467,1468,1472,1477,1490,1501,1505,1510,1523],{"__ignoreMap":31},[35,1469,1470],{"class":37,"line":38},[35,1471,1152],{"emptyLinePlaceholder":1151},[35,1473,1474],{"class":37,"line":49},[35,1475,1476],{"class":989},"# Ubuntu用下方命令\n",[35,1478,1479,1481,1484,1487],{"class":37,"line":65},[35,1480,915],{"class":589},[35,1482,1483],{"class":89}," service",[35,1485,1486],{"class":89}," udev",[35,1488,1489],{"class":89}," reload\n",[35,1491,1492,1494,1496,1498],{"class":37,"line":73},[35,1493,915],{"class":589},[35,1495,1483],{"class":89},[35,1497,1486],{"class":89},[35,1499,1500],{"class":89}," restart\n",[35,1502,1503],{"class":37,"line":81},[35,1504,1152],{"emptyLinePlaceholder":1151},[35,1506,1507],{"class":37,"line":95},[35,1508,1509],{"class":989},"#Fedora用下方命令\n",[35,1511,1512,1514,1517,1520],{"class":37,"line":103},[35,1513,915],{"class":589},[35,1515,1516],{"class":89}," udevadm",[35,1518,1519],{"class":89}," control",[35,1521,1522],{"class":58}," --reload\n",[35,1524,1525,1527,1529],{"class":37,"line":116},[35,1526,915],{"class":589},[35,1528,1516],{"class":89},[35,1530,1531],{"class":89}," trigger\n",[14,1533,1534],{},"再重新插拔設備即可。",[14,1536,1537],{},"（4）.測試",[14,1539,1540],{},"終端下輸入如下指令",[26,1542,1544],{"className":580,"code":1543,"language":582,"meta":31,"style":31},"ll \u002Fdev | grep ttyUSB\n",[21,1545,1546],{"__ignoreMap":31},[35,1547,1548,1551,1554,1557,1560],{"class":37,"line":38},[35,1549,1550],{"class":589},"ll",[35,1552,1553],{"class":89}," \u002Fdev",[35,1555,1556],{"class":1285}," |",[35,1558,1559],{"class":589}," grep",[35,1561,1562],{"class":89}," ttyUSB\n",[14,1564,1565],{},"運行結果如下：",[14,1567,1568],{},[432,1569],{"alt":31,"src":1570},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage349.webp",[14,1572,1573],{},[432,1574],{"alt":31,"src":1575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage350.webp",[14,1577,1578,1579,1582],{},"也可以多次插拔USB設備，會發現設備端口",[21,1580,1581],{},"ttyUSBn","中的n編號會變動，但是別名是始終可以指向對應的USB設備的。至此，就可以使用別名來關聯所需使用的USB設備了。",[14,1584,1585],{},[403,1586,1587],{},"缺點：",[14,1589,1590],{},"上述實現也存在一定的侷限性，當Ubuntu接入兩臺或多臺相同型號的USB設備時，由於設備ID是一樣的，該種實現方式只會對其中的一臺設備生效，這種情況下，就需要通過第二種策略來實現端口的綁定了。",[397,1592,1594],{"id":1593},"根據主機硬件綁定端口多個相同設備","根據主機硬件綁定端口（多個相同設備)",[14,1596,1597,1599],{},[403,1598,1207],{}," 無人車中現接入一前一後兩臺相同型號的雷達，請為二者綁定端口。",[14,1601,1602,1604],{},[403,1603,1213],{}," USB設備所連接主機的USB接口也是有其“標識”的，可以通過這個標識實現端口綁定。",[14,1606,1607],{},[403,1608,1219],{},[14,1610,1611],{},"（1）.查看所連接的主機USB接口的KERNELS",[14,1613,1614],{},"調用如下指令查看第一臺雷達的USB信息：",[26,1616,1618],{"className":580,"code":1617,"language":582,"meta":31,"style":31},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB0 | grep KERNELS\nudevadm info --attribute-walk --name=\u002Fdev\u002FttyACM0 | grep KERNELS\n",[21,1619,1620,1641],{"__ignoreMap":31},[35,1621,1622,1625,1628,1631,1634,1636,1638],{"class":37,"line":38},[35,1623,1624],{"class":589},"udevadm",[35,1626,1627],{"class":89}," info",[35,1629,1630],{"class":58}," --attribute-walk",[35,1632,1633],{"class":58}," --name=\u002Fdev\u002FttyUSB0",[35,1635,1556],{"class":1285},[35,1637,1559],{"class":589},[35,1639,1640],{"class":89}," KERNELS\n",[35,1642,1643,1645,1647,1649,1652,1654,1656],{"class":37,"line":49},[35,1644,1624],{"class":589},[35,1646,1627],{"class":89},[35,1648,1630],{"class":58},[35,1650,1651],{"class":58}," --name=\u002Fdev\u002FttyACM0",[35,1653,1556],{"class":1285},[35,1655,1559],{"class":589},[35,1657,1640],{"class":89},[14,1659,1660],{},[432,1661],{"alt":31,"src":1662},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage351.webp",[14,1664,1665],{},"調用如下指令查看第二臺雷達的USB信息：",[26,1667,1669],{"className":580,"code":1668,"language":582,"meta":31,"style":31},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB1 | grep KERNELS\n",[21,1670,1671],{"__ignoreMap":31},[35,1672,1673,1675,1677,1679,1682,1684,1686],{"class":37,"line":38},[35,1674,1624],{"class":589},[35,1676,1627],{"class":89},[35,1678,1630],{"class":58},[35,1680,1681],{"class":58}," --name=\u002Fdev\u002FttyUSB1",[35,1683,1556],{"class":1285},[35,1685,1559],{"class":589},[35,1687,1640],{"class":89},[14,1689,1690,1691,1694,1695,1698,1699,1702],{},"運行結果相比較不同的KERNELS，第一臺雷達端口地址為",[21,1692,1693],{},"KERNELS==1-1.3:1.0","，第二個雷達端口地址為",[21,1696,1697],{},"KERNELS==1-1.4:1.0","。可以使用此數據作為不同端口的“",[403,1700,1701],{},"唯一性標識","”。",[14,1704,1247],{},[14,1706,1250,1707,1709],{},[21,1708,1253],{},"目錄下新建文件xxx.rules（文件名自定義），輸入如下內容：",[26,1711,1712],{"className":580,"code":1257,"language":582,"meta":31,"style":31},[21,1713,1714],{"__ignoreMap":31},[35,1715,1716,1718,1720],{"class":37,"line":38},[35,1717,915],{"class":589},[35,1719,1266],{"class":89},[35,1721,1269],{"class":89},[26,1723,1725],{"className":580,"code":1724,"language":582,"meta":31,"style":31},"KERNEL==\"ttyUSB*\", KERNELS==\"1-1.3:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_front\"\nKERNEL==\"ttyUSB*\", KERNELS==\"1-1.4:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_back\"\n",[21,1726,1727,1756],{"__ignoreMap":31},[35,1728,1729,1731,1733,1735,1738,1740,1743,1746,1748,1751,1753],{"class":37,"line":38},[35,1730,1282],{"class":45},[35,1732,1286],{"class":1285},[35,1734,1289],{"class":89},[35,1736,1737],{"class":45}," KERNELS",[35,1739,1286],{"class":1285},[35,1741,1742],{"class":89},"=\"1-1.3:1.0\",",[35,1744,1745],{"class":589}," MODE:",[35,1747,1286],{"class":89},[35,1749,1750],{"class":589},"\"0777\"",[35,1752,1301],{"class":589},[35,1754,1755],{"class":89}," SYMLINK+=\"rplidar_front\"\n",[35,1757,1758,1760,1762,1764,1766,1768,1771,1773,1775,1777,1779],{"class":37,"line":49},[35,1759,1282],{"class":45},[35,1761,1286],{"class":1285},[35,1763,1289],{"class":89},[35,1765,1737],{"class":45},[35,1767,1286],{"class":1285},[35,1769,1770],{"class":89},"=\"1-1.4:1.0\",",[35,1772,1745],{"class":589},[35,1774,1286],{"class":89},[35,1776,1750],{"class":589},[35,1778,1301],{"class":589},[35,1780,1781],{"class":89}," SYMLINK+=\"rplidar_back\"\n",[14,1783,1459],{},[14,1785,1462],{},[26,1787,1788],{"className":580,"code":1465,"language":582,"meta":31,"style":31},[21,1789,1790,1794,1798,1808,1818,1822,1826,1836],{"__ignoreMap":31},[35,1791,1792],{"class":37,"line":38},[35,1793,1152],{"emptyLinePlaceholder":1151},[35,1795,1796],{"class":37,"line":49},[35,1797,1476],{"class":989},[35,1799,1800,1802,1804,1806],{"class":37,"line":65},[35,1801,915],{"class":589},[35,1803,1483],{"class":89},[35,1805,1486],{"class":89},[35,1807,1489],{"class":89},[35,1809,1810,1812,1814,1816],{"class":37,"line":73},[35,1811,915],{"class":589},[35,1813,1483],{"class":89},[35,1815,1486],{"class":89},[35,1817,1500],{"class":89},[35,1819,1820],{"class":37,"line":81},[35,1821,1152],{"emptyLinePlaceholder":1151},[35,1823,1824],{"class":37,"line":95},[35,1825,1509],{"class":989},[35,1827,1828,1830,1832,1834],{"class":37,"line":103},[35,1829,915],{"class":589},[35,1831,1516],{"class":89},[35,1833,1519],{"class":89},[35,1835,1522],{"class":58},[35,1837,1838,1840,1842],{"class":37,"line":116},[35,1839,915],{"class":589},[35,1841,1516],{"class":89},[35,1843,1531],{"class":89},[14,1845,1534],{},[14,1847,1537],{},[14,1849,1850],{},"終端下輸入如下指令，運行結果如下：",[26,1852,1853],{"className":580,"code":1543,"language":582,"meta":31,"style":31},[21,1854,1855],{"__ignoreMap":31},[35,1856,1857,1859,1861,1863,1865],{"class":37,"line":38},[35,1858,1550],{"class":589},[35,1860,1553],{"class":89},[35,1862,1556],{"class":1285},[35,1864,1559],{"class":589},[35,1866,1562],{"class":89},[14,1868,1869],{},[432,1870],{"alt":31,"src":1871},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage352.webp",[14,1873,1874],{},"至此，就可以使用別名來關聯所需使用的USB設備了。",[14,1876,1877,1879],{},[403,1878,1587],{}," USB設備必須連接在主機的指定端口上，否則，會導致端口綁定失敗，或產生邏輯錯誤。(而且增加新設備可能會導致端口改變)",[397,1881,1882],{"id":1882},"根據其他屬性綁定端口",[14,1884,1885],{},"（1）.查看所連接的主機USB接口的信息",[26,1887,1889],{"className":580,"code":1888,"language":582,"meta":31,"style":31},"udevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyACM0)\nudevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyUSB0)\n",[21,1890,1891,1924],{"__ignoreMap":31},[35,1892,1893,1895,1897,1900,1902,1905,1907,1909,1912,1915,1918,1921],{"class":37,"line":38},[35,1894,1624],{"class":589},[35,1896,1627],{"class":89},[35,1898,1899],{"class":58}," -a",[35,1901,965],{"class":58},[35,1903,1904],{"class":45}," $(",[35,1906,1624],{"class":589},[35,1908,1627],{"class":89},[35,1910,1911],{"class":58}," -q",[35,1913,1914],{"class":89}," path",[35,1916,1917],{"class":58}," -n",[35,1919,1920],{"class":89}," \u002Fdev\u002FttyACM0",[35,1922,1923],{"class":45},")\n",[35,1925,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1949],{"class":37,"line":49},[35,1927,1624],{"class":589},[35,1929,1627],{"class":89},[35,1931,1899],{"class":58},[35,1933,965],{"class":58},[35,1935,1904],{"class":45},[35,1937,1624],{"class":589},[35,1939,1627],{"class":89},[35,1941,1911],{"class":58},[35,1943,1914],{"class":89},[35,1945,1917],{"class":58},[35,1947,1948],{"class":89}," \u002Fdev\u002FttyUSB0",[35,1950,1923],{"class":45},[14,1952,1953],{},[432,1954],{"alt":31,"src":1955},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage353.webp",[14,1957,1958],{},"這些數據都是不會變的，所以可以拿這些數據來做標識",[14,1960,1247],{},[14,1962,1250,1963,1709],{},[21,1964,1253],{},[26,1966,1967],{"className":580,"code":1257,"language":582,"meta":31,"style":31},[21,1968,1969],{"__ignoreMap":31},[35,1970,1971,1973,1975],{"class":37,"line":38},[35,1972,915],{"class":589},[35,1974,1266],{"class":89},[35,1976,1269],{"class":89},[26,1978,1980],{"className":580,"code":1979,"language":582,"meta":31,"style":31},"KERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0001\", MODE:=\"0777\", SYMLINK+=\"ttyACM_Lidar\"\nKERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0002\", MODE:=\"0777\", SYMLINK+=\"ttyACM_MCU\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"ttyUSB_IMU\"\n",[21,1981,1982,2010,2036],{"__ignoreMap":31},[35,1983,1984,1986,1988,1991,1993,1995,1997,1999,2002,2005,2007],{"class":37,"line":38},[35,1985,1282],{"class":45},[35,1987,1286],{"class":1285},[35,1989,1990],{"class":89},"=\"ttyACM*\",",[35,1992,1292],{"class":589},[35,1994,1295],{"class":89},[35,1996,1325],{"class":589},[35,1998,1301],{"class":589},[35,2000,2001],{"class":89}," ATTRS{idProduct}==\"55d4\",",[35,2003,2004],{"class":89}," ATTRS{serial}==\"0001\",",[35,2006,1307],{"class":89},[35,2008,2009],{"class":89}," SYMLINK+=\"ttyACM_Lidar\"\n",[35,2011,2012,2014,2016,2018,2020,2022,2024,2026,2028,2031,2033],{"class":37,"line":49},[35,2013,1282],{"class":45},[35,2015,1286],{"class":1285},[35,2017,1990],{"class":89},[35,2019,1292],{"class":589},[35,2021,1295],{"class":89},[35,2023,1325],{"class":589},[35,2025,1301],{"class":589},[35,2027,2001],{"class":89},[35,2029,2030],{"class":89}," ATTRS{serial}==\"0002\",",[35,2032,1307],{"class":89},[35,2034,2035],{"class":89}," SYMLINK+=\"ttyACM_MCU\"\n",[35,2037,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056],{"class":37,"line":65},[35,2039,1282],{"class":45},[35,2041,1286],{"class":1285},[35,2043,1289],{"class":89},[35,2045,1292],{"class":589},[35,2047,1295],{"class":89},[35,2049,1325],{"class":589},[35,2051,1301],{"class":589},[35,2053,1330],{"class":89},[35,2055,1307],{"class":89},[35,2057,2058],{"class":89}," SYMLINK+=\"ttyUSB_IMU\"\n",[14,2060,1459],{},[14,2062,1462],{},[26,2064,2065],{"className":580,"code":1465,"language":582,"meta":31,"style":31},[21,2066,2067,2071,2075,2085,2095,2099,2103,2113],{"__ignoreMap":31},[35,2068,2069],{"class":37,"line":38},[35,2070,1152],{"emptyLinePlaceholder":1151},[35,2072,2073],{"class":37,"line":49},[35,2074,1476],{"class":989},[35,2076,2077,2079,2081,2083],{"class":37,"line":65},[35,2078,915],{"class":589},[35,2080,1483],{"class":89},[35,2082,1486],{"class":89},[35,2084,1489],{"class":89},[35,2086,2087,2089,2091,2093],{"class":37,"line":73},[35,2088,915],{"class":589},[35,2090,1483],{"class":89},[35,2092,1486],{"class":89},[35,2094,1500],{"class":89},[35,2096,2097],{"class":37,"line":81},[35,2098,1152],{"emptyLinePlaceholder":1151},[35,2100,2101],{"class":37,"line":95},[35,2102,1509],{"class":989},[35,2104,2105,2107,2109,2111],{"class":37,"line":103},[35,2106,915],{"class":589},[35,2108,1516],{"class":89},[35,2110,1519],{"class":89},[35,2112,1522],{"class":58},[35,2114,2115,2117,2119],{"class":37,"line":116},[35,2116,915],{"class":589},[35,2118,1516],{"class":89},[35,2120,1531],{"class":89},[14,2122,2123,2124],{},"再重新插拔設備即可，或者 ",[403,2125,2126],{},"直接重啟系統。",[14,2128,1537],{},[14,2130,1540,2131,2134],{},[21,2132,2133],{},"ll \u002Fdev | grep ttyUSB","，運行結果如下：",[14,2136,2137],{},[432,2138],{"alt":31,"src":2139},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage354.webp",[14,2141,1874],{},[14,2143,2144,2146],{},[403,2145,1587],{}," 一些設備可能沒有串口號等。",[397,2148,2149],{"id":2149},"其他注意事項",[14,2151,2152,2153,2155,2156,2159,2160,2163,2164,2167,2168,2170],{},"並非所有的USB設備端口號都是",[21,2154,1581],{},"的格式，比如Arduino的端口號可能是",[21,2157,2158],{},"ttyACMn","，而對於USB攝像頭而言，一臺設備則對應兩個端口號，分別是",[21,2161,2162],{},"videon","和",[21,2165,2166],{},"video(n+1)","，並且啟用攝像頭設備一般使用的是",[21,2169,2162],{},"端口，綁定時需要關聯的也是該接口。",[14,2172,2173,2174,2177,2178,2181,2182,2184,2185,2188,2189,2192,2193,2196,2197,2196,2200,2196,2203,769],{},"但是無論是外接何種USB設備，也不管採用上述兩種方案的哪一種進行端口綁定，其原理都是類似的，只是實現細節不同而已。如果是外接的Arduino設備，那麼需要在rules文件中的將",[21,2175,2176],{},"KERNEL==\"ttyUSB*\"","修改為",[21,2179,2180],{},"KERNEL==\"ttyACM*\"","，如果外接的是USB攝像頭，那麼則需要在rules文件中的將",[21,2183,2176],{},"修改為類似於",[21,2186,2187],{},"KERNEL==\"video[0,2,4,6]\"","的格式，其中",[21,2190,2191],{},"video[0,2,4,6]","表示可以綁定的端口為",[21,2194,2195],{},"video0","或",[21,2198,2199],{},"video2",[21,2201,2202],{},"video4",[21,2204,2205],{},"video6",[10,2207,2209],{"id":2208},"linux分區gui工具","Linux分區Gui工具",[26,2211,2213],{"className":508,"code":2212,"language":510,"meta":511,"style":31},"sudo apt install gparted\nsudo dnf install gparted\n",[21,2214,2215,2220],{"__ignoreMap":31},[35,2216,2217],{"class":37,"line":38},[35,2218,2219],{},"sudo apt install gparted\n",[35,2221,2222],{"class":37,"line":49},[35,2223,2224],{},"sudo dnf install gparted\n",[10,2226,2228],{"id":2227},"ddns","DDNS",[10,2230,2231],{"id":2231},"掛載內網網頁",[14,2233,2234],{},"可以把本地的網頁掛載到路由器端，或者同內網段其他設備上，甚至可以掛載在本地。",[14,2236,2237],{},"下面以安卓設備為例子，由於安卓設備暫時不能直接打開html,所以我們可以把html掛載到本地服務器，再通過瀏覽器查看。",[14,2239,2240],{},"由於安卓系統基於Linux內核，所以我們可以下載一個叫termux的app來敲一些Linux命令：",[14,2242,2243],{},[2244,2245,2246],"a",{"href":2246,"rel":2247},"https:\u002F\u002Fgithub.com\u002Ftermux\u002Ftermux-app",[2248],"nofollow",[14,2250,2251],{},"首先打開app後，先更新軟件緩存：",[26,2253,2255],{"className":580,"code":2254,"language":582,"meta":31,"style":31},"pkg update\n",[21,2256,2257],{"__ignoreMap":31},[35,2258,2259,2262],{"class":37,"line":38},[35,2260,2261],{"class":589},"pkg",[35,2263,2264],{"class":89}," update\n",[14,2266,2267],{},"然後換源",[26,2269,2271],{"className":580,"code":2270,"language":582,"meta":31,"style":31},"nano $PREFIX\u002Fetc\u002Fapt\u002Fsources.list\n",[21,2272,2273],{"__ignoreMap":31},[35,2274,2275,2277,2280],{"class":37,"line":38},[35,2276,973],{"class":589},[35,2278,2279],{"class":45}," $PREFIX",[35,2281,2282],{"class":89},"\u002Fetc\u002Fapt\u002Fsources.list\n",[14,2284,2285],{},"將該文件內容替換為下面：",[26,2287,2289],{"className":580,"code":2288,"language":582,"meta":31,"style":31},"deb https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24 stable main\n",[21,2290,2291],{"__ignoreMap":31},[35,2292,2293,2296,2299,2302],{"class":37,"line":38},[35,2294,2295],{"class":589},"deb",[35,2297,2298],{"class":89}," https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24",[35,2300,2301],{"class":89}," stable",[35,2303,2304],{"class":89}," main\n",[1340,2306,2307,2334],{},[488,2308,2309,2310,2312,2313],{},"如果你使用的是",[21,2311,973],{},"編輯器：",[1340,2314,2315,2322,2328],{},[488,2316,2317,2318,2321],{},"按 ",[21,2319,2320],{},"Ctrl+O"," 保存文件。",[488,2323,2317,2324,2327],{},[21,2325,2326],{},"Enter"," 確認文件名。",[488,2329,2317,2330,2333],{},[21,2331,2332],{},"Ctrl+X"," 退出編輯器。",[488,2335,2309,2336,2312,2339],{},[21,2337,2338],{},"vim",[1340,2340,2341,2347],{},[488,2342,2317,2343,2346],{},[21,2344,2345],{},"Esc"," 退出編輯模式。",[488,2348,2349,2350,2353],{},"輸入 ",[21,2351,2352],{},":wq"," 保存並退出。",[14,2355,2356],{},"接下來重新更新軟件源：",[26,2358,2360],{"className":580,"code":2359,"language":582,"meta":31,"style":31},"pkg update && pkg upgrade\n",[21,2361,2362],{"__ignoreMap":31},[35,2363,2364,2366,2369,2372,2374],{"class":37,"line":38},[35,2365,2261],{"class":589},[35,2367,2368],{"class":89}," update",[35,2370,2371],{"class":45}," && ",[35,2373,2261],{"class":589},[35,2375,2376],{"class":89}," upgrade\n",[14,2378,2379],{},"安裝python：",[26,2381,2383],{"className":580,"code":2382,"language":582,"meta":31,"style":31},"pkg install python3\n",[21,2384,2385],{"__ignoreMap":31},[35,2386,2387,2389,2391],{"class":37,"line":38},[35,2388,2261],{"class":589},[35,2390,921],{"class":89},[35,2392,2393],{"class":89}," python3\n",[14,2395,2396,2399],{},[403,2397,2398],{},"通過Termux訪問設備存儲"," ：",[14,2401,2402],{},"如果文件在安卓設備上，可以使用Termux的文件管理器訪問設備的存儲：",[26,2404,2406],{"className":580,"code":2405,"language":582,"meta":31,"style":31},"termux-setup-storage\n",[21,2407,2408],{"__ignoreMap":31},[35,2409,2410],{"class":37,"line":38},[35,2411,2405],{"class":589},[485,2413,2414],{},[488,2415,2416,2399,2419],{},[403,2417,2418],{},"進入HTML文件所在的目錄",[485,2420,2421],{},[488,2422,2423,2424,2427],{},"使用",[21,2425,2426],{},"cd","命令進入HTML文件所在的目錄：",[26,2429,2431],{"className":580,"code":2430,"language":582,"meta":31,"style":31},"cd ~\u002Fyour_html_folder\n",[21,2432,2433],{"__ignoreMap":31},[35,2434,2435,2437],{"class":37,"line":38},[35,2436,2426],{"class":58},[35,2438,2439],{"class":89}," ~\u002Fyour_html_folder\n",[485,2441,2442],{"start":49},[488,2443,2444,2399,2447,2452,2471],{},[403,2445,2446],{},"啟動Python HTTP服務器",[485,2448,2449],{},[488,2450,2451],{},"運行以下命令啟動一個簡單的HTTP服務器：",[26,2453,2455],{"className":580,"code":2454,"language":582,"meta":31,"style":31},"python3 -m http.server 8000\n",[21,2456,2457],{"__ignoreMap":31},[35,2458,2459,2462,2465,2468],{"class":37,"line":38},[35,2460,2461],{"class":589},"python3",[35,2463,2464],{"class":58}," -m",[35,2466,2467],{"class":89}," http.server",[35,2469,2470],{"class":58}," 8000\n",[485,2472,2473],{"start":65},[488,2474,2475,2476,2479],{},"這會在端口",[21,2477,2478],{},"8000","上啟動一個Web服務器。",[1340,2481,2482],{},[488,2483,2484],{},"啟動服務器後，Termux會顯示日誌信息，例如：",[26,2486,2488],{"className":580,"code":2487,"language":582,"meta":31,"style":31},"Serving HTTP on 0.0.0.0 port 8000 (http:\u002F\u002F0.0.0.0:8000\u002F) ...\n",[21,2489,2490],{"__ignoreMap":31},[35,2491,2492,2495,2498,2501,2504,2507,2510],{"class":37,"line":38},[35,2493,2494],{"class":589},"Serving",[35,2496,2497],{"class":89}," HTTP",[35,2499,2500],{"class":89}," on",[35,2502,2503],{"class":58}," 0.0.0.0",[35,2505,2506],{"class":89}," port",[35,2508,2509],{"class":58}," 8000",[35,2511,2512],{"class":45}," (http:\u002F\u002F0.0.0.0:8000\u002F) ...\n",[1340,2514,2515],{},[488,2516,2517],{},"這表示服務器已成功啟動。",[14,2519,2520],{},[403,2521,2522],{},"在瀏覽器中訪問HTML文件",[485,2524,2525],{},[488,2526,2527,2399,2530,2535,2544],{},[403,2528,2529],{},"在同一設備上訪問",[485,2531,2532],{},[488,2533,2534],{},"打開安卓設備上的瀏覽器（如Chrome），輸入以下地址：",[26,2536,2538],{"className":580,"code":2537,"language":582,"meta":31,"style":31},"http:\u002F\u002Flocalhost:8000\n",[21,2539,2540],{"__ignoreMap":31},[35,2541,2542],{"class":37,"line":38},[35,2543,2537],{"class":589},[485,2545,2546],{"start":65},[488,2547,2548,2549,2552],{},"如果HTML文件中有",[21,2550,2551],{},"index.html","，它會自動加載；否則，你需要手動點擊文件鏈接。",[10,2554,2556],{"id":2555},"rustdesk","RustDesk",[397,2558,2560],{"id":2559},"rustdesk無人值守遠程控制","RustDesk無人值守遠程控制",[14,2562,2563],{},"目前rustdesk還沒辦法進行無人值守在wayland下,所以我們需要把登陸密碼,鎖屏和休眠待機全部關掉.",[2565,2566,2568],"h5",{"id":2567},"設置-kde6-自動登錄","設置 KDE6 自動登錄",[485,2570,2571],{},[488,2572,2573],{},"可以先查自己的sddm類型",[26,2575,2577],{"className":580,"code":2576,"language":582,"meta":31,"style":31},"ls \u002Fusr\u002Fshare\u002Fxsessions\u002F\n",[21,2578,2579],{"__ignoreMap":31},[35,2580,2581,2584],{"class":37,"line":38},[35,2582,2583],{"class":589},"ls",[35,2585,2586],{"class":89}," \u002Fusr\u002Fshare\u002Fxsessions\u002F\n",[26,2588,2590],{"className":580,"code":2589,"language":582,"meta":31,"style":31},"ls \u002Fusr\u002Fshare\u002Fwayland-sessions\u002F\n",[21,2591,2592],{"__ignoreMap":31},[35,2593,2594,2596],{"class":37,"line":38},[35,2595,2583],{"class":589},[35,2597,2598],{"class":89}," \u002Fusr\u002Fshare\u002Fwayland-sessions\u002F\n",[14,2600,2601],{},"看哪個會輸出東西,輸出東西的文件夾就是你擁有的sddm,比如xsessions輸出內容的話,那就是x11的sddm,如果wayland-sessions輸出內容的話你就是wayland的sddm.",[485,2603,2604],{"start":49},[488,2605,2606],{},"編輯 SDDM 配置：",[26,2608,2610],{"className":580,"code":2609,"language":582,"meta":31,"style":31},"sudo nano \u002Fetc\u002Fsddm.conf\n",[21,2611,2612],{"__ignoreMap":31},[35,2613,2614,2616,2619],{"class":37,"line":38},[35,2615,915],{"class":589},[35,2617,2618],{"class":89}," nano",[35,2620,2621],{"class":89}," \u002Fetc\u002Fsddm.conf\n",[14,2623,2624,2625,2628],{},"在文件最上面有個",[35,2626,2627],{},"Autologin",",在這個底下加入下面的內容：",[26,2630,2632],{"className":580,"code":2631,"language":582,"meta":31,"style":31},"[Autologin]\nUser=你的用户名\nSession=plasma.desktop   # 或 plasma.desktop（X11），方案一可用 Wayland\n",[21,2633,2634,2639,2649],{"__ignoreMap":31},[35,2635,2636],{"class":37,"line":38},[35,2637,2638],{"class":45},"[Autologin]\n",[35,2640,2641,2644,2646],{"class":37,"line":49},[35,2642,2643],{"class":45},"User",[35,2645,1286],{"class":1285},[35,2647,2648],{"class":89},"你的用户名\n",[35,2650,2651,2654,2656,2659],{"class":37,"line":65},[35,2652,2653],{"class":45},"Session",[35,2655,1286],{"class":1285},[35,2657,2658],{"class":89},"plasma.desktop",[35,2660,2661],{"class":989},"   # 或 plasma.desktop（X11），方案一可用 Wayland\n",[485,2663,2664],{"start":65},[488,2665,2666],{},"保存退出後重啟 SDDM：",[26,2668,2670],{"className":580,"code":2669,"language":582,"meta":31,"style":31},"sudo systemctl restart sddm\n",[21,2671,2672],{"__ignoreMap":31},[35,2673,2674,2676,2679,2682],{"class":37,"line":38},[35,2675,915],{"class":589},[35,2677,2678],{"class":89}," systemctl",[35,2680,2681],{"class":89}," restart",[35,2683,2684],{"class":89}," sddm\n",[14,2686,2687],{},"✅ 開機後自動進入桌面，無需輸入密碼",[2565,2689,2691],{"id":2690},"關閉鎖屏在-kde6-系統設置裡","關閉鎖屏在 KDE6 系統設置裡：",[14,2693,2694],{},"打開 系統設置 → 屏幕鎖定(Screen Locking)\n關閉自動鎖定\n關閉屏幕關閉 \u002F 屏幕保護鎖定\n這樣 RustDesk 可以開機後直接控制桌面，不會被鎖屏阻擋",[2565,2696,2698],{"id":2697},"關閉休眠系統設置-電源管理power-managerment","關閉休眠系統設置 → 電源管理(Power Managerment)",[14,2700,2701],{},"禁用“休眠”或“自動掛起”\n保證電腦開機一直在線，RustDesk 可隨時遠控\n如果必須休眠，可在 BIOS 設置裡禁用休眠，保證開機即聯網",[397,2703,2705],{"id":2704},"rustdesk自建服務器","RustDesk自建服務器",[2565,2707,2708],{"id":2708},"在服務器端安裝",[2710,2711,2712],"h6",{"id":2712},"命令行方式",[485,2714,2715],{},[488,2716,2717,2718],{},"打開官網:",[2244,2719,2720],{"href":2720,"rel":2721},"https:\u002F\u002Frustdesk.com\u002Fdocs\u002Fzh-cn\u002Fself-host\u002F",[2248],[14,2723,2724],{},[432,2725],{"alt":2726,"src":2727},"alt text","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768144998052.webp",[485,2729,2730],{"start":49},[488,2731,2732],{},"用ssh訪問你需要安裝RustDesk的服務器",[26,2734,2736],{"className":580,"code":2735,"language":582,"meta":31,"style":31},"ssh tungchiahui@10.0.0.4\n",[21,2737,2738],{"__ignoreMap":31},[35,2739,2740,2742],{"class":37,"line":38},[35,2741,590],{"class":589},[35,2743,2744],{"class":89}," tungchiahui@10.0.0.4\n",[14,2746,2747],{},[432,2748],{"alt":2726,"src":2749},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768145500558.webp",[485,2751,2752],{"start":65},[488,2753,2754],{},"使用方法二的命令",[14,2756,2757],{},[432,2758],{"alt":2726,"src":2759},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768145605588.webp",[26,2761,2763],{"className":580,"code":2762,"language":582,"meta":31,"style":31},"wget https:\u002F\u002Fraw.githubusercontent.com\u002Ftechahold\u002Frustdeskinstall\u002Fmaster\u002Finstall.sh\nchmod +x install.sh\n.\u002Finstall.sh\n",[21,2764,2765,2773,2782],{"__ignoreMap":31},[35,2766,2767,2770],{"class":37,"line":38},[35,2768,2769],{"class":589},"wget",[35,2771,2772],{"class":89}," https:\u002F\u002Fraw.githubusercontent.com\u002Ftechahold\u002Frustdeskinstall\u002Fmaster\u002Finstall.sh\n",[35,2774,2775,2777,2779],{"class":37,"line":49},[35,2776,1031],{"class":589},[35,2778,1034],{"class":89},[35,2780,2781],{"class":89}," install.sh\n",[35,2783,2784],{"class":37,"line":65},[35,2785,2786],{"class":589},".\u002Finstall.sh\n",[14,2788,2789],{},".\u002Finstall.sh的設置看下一節",[485,2791,2792],{"start":73},[488,2793,2794],{},"配置與查看KEY",[14,2796,2797,2798,2801,2802,2805],{},"這裡如果你是想直接用公網ip則選擇",[21,2799,2800],{},"1)IP",",如果你是DDNS等用域名綁定了IP地址,則選擇",[21,2803,2804],{},"2)",".",[14,2807,2808],{},[432,2809],{"alt":2726,"src":2810},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148704646.webp",[14,2812,2813,2814],{},"這個選",[21,2815,2816],{},"2)No",[14,2818,2819],{},[432,2820],{"alt":2726,"src":2821},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148806049.webp",[14,2823,2824],{},"這個是KEY,要複製下來,等後面軟件配置的時候要用.",[14,2826,2827],{},[432,2828],{"alt":2726,"src":2829},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148866392.webp",[485,2831,2832],{"start":81},[488,2833,2834,2835,2840,2856,2834,2859,2909,2914,2950,2834,2952],{},"配置防火牆",[485,2836,2837],{},[488,2838,2839],{},"如果你是Debian系\n安裝防火牆",[26,2841,2843],{"className":580,"code":2842,"language":582,"meta":31,"style":31},"sudo apt install ufw\n",[21,2844,2845],{"__ignoreMap":31},[35,2846,2847,2849,2851,2853],{"class":37,"line":38},[35,2848,915],{"class":589},[35,2850,918],{"class":89},[35,2852,921],{"class":89},[35,2854,2855],{"class":89}," ufw\n",[2857,2858],"br",{},[26,2860,2862],{"className":580,"code":2861,"language":582,"meta":31,"style":31},"sudo ufw allow 22\n\nufw allow 21114:21119\u002Ftcp\nufw allow 21116\u002Fudp\nsudo ufw enable\n",[21,2863,2864,2877,2881,2891,2900],{"__ignoreMap":31},[35,2865,2866,2868,2871,2874],{"class":37,"line":38},[35,2867,915],{"class":589},[35,2869,2870],{"class":89}," ufw",[35,2872,2873],{"class":89}," allow",[35,2875,2876],{"class":58}," 22\n",[35,2878,2879],{"class":37,"line":49},[35,2880,1152],{"emptyLinePlaceholder":1151},[35,2882,2883,2886,2888],{"class":37,"line":65},[35,2884,2885],{"class":589},"ufw",[35,2887,2873],{"class":89},[35,2889,2890],{"class":89}," 21114:21119\u002Ftcp\n",[35,2892,2893,2895,2897],{"class":37,"line":73},[35,2894,2885],{"class":589},[35,2896,2873],{"class":89},[35,2898,2899],{"class":89}," 21116\u002Fudp\n",[35,2901,2902,2904,2906],{"class":37,"line":81},[35,2903,915],{"class":589},[35,2905,2870],{"class":89},[35,2907,2908],{"class":89}," enable\n",[485,2910,2911],{"start":49},[488,2912,2913],{},"如果你是RHEL系\n安裝防火牆",[26,2915,2917],{"className":580,"code":2916,"language":582,"meta":31,"style":31},"# 如果你是RHEL系\nsudo dnf install firewalld\nsudo systemctl enable --now firewalld\n",[21,2918,2919,2924,2936],{"__ignoreMap":31},[35,2920,2921],{"class":37,"line":38},[35,2922,2923],{"class":989},"# 如果你是RHEL系\n",[35,2925,2926,2928,2931,2933],{"class":37,"line":49},[35,2927,915],{"class":589},[35,2929,2930],{"class":89}," dnf",[35,2932,921],{"class":89},[35,2934,2935],{"class":89}," firewalld\n",[35,2937,2938,2940,2942,2945,2948],{"class":37,"line":65},[35,2939,915],{"class":589},[35,2941,2678],{"class":89},[35,2943,2944],{"class":89}," enable",[35,2946,2947],{"class":58}," --now",[35,2949,2935],{"class":89},[2857,2951],{},[26,2953,2955],{"className":580,"code":2954,"language":582,"meta":31,"style":31},"sudo firewall-cmd --add-port=22\u002Ftcp --permanent\nsudo firewall-cmd --reload\n\nsudo firewall-cmd --add-port=21114-21119\u002Ftcp --permanent\nsudo firewall-cmd --reload\n\nsudo firewall-cmd --add-port=21116\u002Fudp --permanent\nsudo firewall-cmd --reload\n\nsudo systemctl enable --now firewalld\n",[21,2956,2957,2970,2978,2982,2993,3001,3005,3016,3024,3028],{"__ignoreMap":31},[35,2958,2959,2961,2964,2967],{"class":37,"line":38},[35,2960,915],{"class":589},[35,2962,2963],{"class":89}," firewall-cmd",[35,2965,2966],{"class":58}," --add-port=22\u002Ftcp",[35,2968,2969],{"class":58}," --permanent\n",[35,2971,2972,2974,2976],{"class":37,"line":49},[35,2973,915],{"class":589},[35,2975,2963],{"class":89},[35,2977,1522],{"class":58},[35,2979,2980],{"class":37,"line":65},[35,2981,1152],{"emptyLinePlaceholder":1151},[35,2983,2984,2986,2988,2991],{"class":37,"line":73},[35,2985,915],{"class":589},[35,2987,2963],{"class":89},[35,2989,2990],{"class":58}," --add-port=21114-21119\u002Ftcp",[35,2992,2969],{"class":58},[35,2994,2995,2997,2999],{"class":37,"line":81},[35,2996,915],{"class":589},[35,2998,2963],{"class":89},[35,3000,1522],{"class":58},[35,3002,3003],{"class":37,"line":95},[35,3004,1152],{"emptyLinePlaceholder":1151},[35,3006,3007,3009,3011,3014],{"class":37,"line":103},[35,3008,915],{"class":589},[35,3010,2963],{"class":89},[35,3012,3013],{"class":58}," --add-port=21116\u002Fudp",[35,3015,2969],{"class":58},[35,3017,3018,3020,3022],{"class":37,"line":116},[35,3019,915],{"class":589},[35,3021,2963],{"class":89},[35,3023,1522],{"class":58},[35,3025,3026],{"class":37,"line":129},[35,3027,1152],{"emptyLinePlaceholder":1151},[35,3029,3030,3032,3034,3036,3038],{"class":37,"line":141},[35,3031,915],{"class":589},[35,3033,2678],{"class":89},[35,3035,2944],{"class":89},[35,3037,2947],{"class":58},[35,3039,2935],{"class":89},[2710,3041,3043],{"id":3042},"_1panel方式","1Panel方式",[485,3045,3046],{},[488,3047,3048],{},"在面板裡搜RustDesk並安裝",[14,3050,3051],{},[432,3052],{"alt":2726,"src":3053},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146100467.webp",[485,3055,3056],{"start":49},[488,3057,2834],{},[14,3059,3060],{},[432,3061],{"alt":2726,"src":3062},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146828373.webp",[14,3064,3065,3066,3069,3072],{},"添加幾個端口\n",[432,3067],{"alt":2726,"src":3068},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146848849.webp",[432,3070],{"alt":2726,"src":3071},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146858053.webp",[432,3073],{"alt":2726,"src":3074},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146876612.webp",[485,3076,3077],{"start":65},[488,3078,3079,3080],{},"查看KEY\n",[432,3081],{"alt":2726,"src":3082},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146996637.webp",[14,3084,3085],{},"複製KEY",[14,3087,3088],{},[432,3089],{"alt":2726,"src":3090},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147034654.webp",[2565,3092,3094],{"id":3093},"自建服務器後配置rustdesk軟件","自建服務器後配置RustDesk軟件",[485,3096,3097],{},[488,3098,3099],{},"PC端",[14,3101,3102],{},[432,3103],{"alt":2726,"src":3104},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147115389.webp",[14,3106,3107],{},[432,3108],{"alt":2726,"src":3109},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147204480.webp",[14,3111,3112,3113],{},"出現就緒就是配置成功了\n",[432,3114],{"alt":2726,"src":3115},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147547538.webp",[485,3117,3118],{"start":49},[488,3119,3120],{},"移動端",[14,3122,3123],{},[432,3124],{"alt":2726,"src":3125},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768149138253.webp",[14,3127,3128],{},[432,3129],{"alt":2726,"src":3130},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768149199158.webp",[2710,3132,3133],{"id":3133},"注意的問題",[14,3135,3136],{},"如果你是家庭的內網服務器,則需要讓路由器也放行對應端口",[14,3138,3139,3140],{},"找到openwrt防火牆設置,點擊添加\n",[432,3141],{"alt":2726,"src":3142},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148357743.webp",[14,3144,3145],{},[432,3146],{"alt":2726,"src":3147},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148378543.webp",[14,3149,3150],{},[432,3151],{"alt":2726,"src":3152},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148398594.webp",[14,3154,3155],{},"然後還有ipv6也要進行放行，那個debian一般默認ipv6不設防，但是會被上游openwrt防住，所以，要在openwrt裡開啟對應規則。",[14,3157,3158,3159,3162],{},"去",[21,3160,3161],{},"防火墙 - 通信规则","裡添加下面倆配置。",[26,3164,3169],{"className":3165,"code":3167,"language":3168,"meta":31},[3166],"language-text","Allow-RustDesk-IPv6-TCP\nWAN → LAN\n目标：你服务器的ipv6公网\nTCP 21115-21119\n动作：接受转发\n\nAllow-RustDesk-IPv6-UDP\nWAN → LAN\n目标：你服务器的ipv6公网\nUDP 21116\n动作：接受转发\n","text",[21,3170,3167],{"__ignoreMap":31},[14,3172,3173],{},[432,3174],{"alt":31,"src":3175},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1788528028821-5f4711e7.webp",[14,3177,3178],{},[432,3179],{"alt":31,"src":3180},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1788528057933-67c6e554.webp",[14,3182,3183],{},"這樣才可以讓你的服務器端口被真正成功放行.",[10,3185,3187],{"id":3186},"wireguard","WireGuard",[397,3189,3190],{"id":3190},"簡介",[14,3192,3193],{},"WireGuard是用於在室外通過VPN來訪問內網設備的一種工具.",[14,3195,3196],{},"這裡我的教程將會教你如何在室外訪問你家裡的內網設備.",[397,3198,3199],{"id":3199},"我的環境",[2565,3201,3202],{"id":3202},"內網",[14,3204,3205,3206],{},"家庭內網網段:",[21,3207,3208],{},"10.0.0.0\u002F24",[14,3210,3211],{},[432,3212],{"alt":2726,"src":3213},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783171015365.webp",[2565,3215,3216],{"id":3216},"外部設備",[14,3218,3219,3220,3223],{},"如果你是在辦公室等地方鏈接辦公室的wifi,那麼你需要知道",[21,3221,3222],{},"室外内网网段",",如果你直接用手機數據流量的話,那麼什麼都不需要知道.",[14,3225,3226,3227,3230],{},"室外內網網段:",[21,3228,3229],{},"192.168.31.0\u002F24","\n室外數據流量運營商:中國聯通",[397,3232,3233],{"id":3233},"安裝",[2565,3235,3236],{"id":3236},"服務端-軟路由端",[14,3238,3239],{},"SSH登錄OpenWrt，或者用LuCI界面：",[26,3241,3243],{"className":580,"code":3242,"language":582,"meta":31,"style":31},"opkg update\nopkg install wireguard-tools luci-proto-wireguard kmod-wireguard qrencode\n",[21,3244,3245,3252],{"__ignoreMap":31},[35,3246,3247,3250],{"class":37,"line":38},[35,3248,3249],{"class":589},"opkg",[35,3251,2264],{"class":89},[35,3253,3254,3256,3258,3261,3264,3267],{"class":37,"line":49},[35,3255,3249],{"class":589},[35,3257,921],{"class":89},[35,3259,3260],{"class":89}," wireguard-tools",[35,3262,3263],{"class":89}," luci-proto-wireguard",[35,3265,3266],{"class":89}," kmod-wireguard",[35,3268,3269],{"class":89}," qrencode\n",[14,3271,3272],{},"裝完刷新一下瀏覽器LuCI頁面.",[2565,3274,3276],{"id":3275},"客戶端-手機電腦端","客戶端-手機,電腦端",[14,3278,3279],{},[2244,3280,3281],{"href":3281,"rel":3282},"https:\u002F\u002Fwww.wireguard.com\u002Finstall\u002F",[2248],[485,3284,3285],{},[488,3286,3287],{},"Android",[14,3289,3290],{},[2244,3291,3292],{"href":3292,"rel":3293},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.wireguard.android&hl=zh&pli=1",[2248],[485,3295,3296],{"start":49},[488,3297,3298],{},"iOS",[14,3300,3301,3302,3306,3307,3311,3312],{},"美區:",[2244,3303,3304],{"href":3304,"rel":3305},"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],"\n日區:",[2244,3308,3309],{"href":3309,"rel":3310},"https:\u002F\u002Fapps.apple.com\u002Fjp\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],"\n臺區:",[2244,3313,3314],{"href":3314,"rel":3315},"https:\u002F\u002Fapps.apple.com\u002Ftw\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],[485,3317,3318],{"start":65},[488,3319,3320,3321,3326,3343],{},"Linux",[485,3322,3323],{},[488,3324,3325],{},"Fedora",[26,3327,3329],{"className":580,"code":3328,"language":582,"meta":31,"style":31}," sudo dnf install wireguard-tools\n\n",[21,3330,3331],{"__ignoreMap":31},[35,3332,3333,3336,3338,3340],{"class":37,"line":38},[35,3334,3335],{"class":589}," sudo",[35,3337,2930],{"class":89},[35,3339,921],{"class":89},[35,3341,3342],{"class":89}," wireguard-tools\n",[485,3344,3345],{"start":49},[488,3346,3347],{},"Ubuntu\u002FDebian",[26,3349,3351],{"className":580,"code":3350,"language":582,"meta":31,"style":31},"sudo apt install wireguard\n",[21,3352,3353],{"__ignoreMap":31},[35,3354,3355,3357,3359,3361],{"class":37,"line":38},[35,3356,915],{"class":589},[35,3358,918],{"class":89},[35,3360,921],{"class":89},[35,3362,3363],{"class":89}," wireguard\n",[397,3365,3366],{"id":3366},"配置",[2565,3368,3369],{"id":3369},"服務端-初始化配置",[14,3371,3372,3373],{},"在luci界面中,點擊",[21,3374,3375],{},"网络 → 接口 → 添加新接口",[485,3377,3378,3381,3384],{},[488,3379,3380],{},"協議選 WireGuard VPN",[488,3382,3383],{},"名稱填 wg0",[488,3385,3386],{},"點下一步，進到詳情頁",[14,3388,3389],{},[432,3390],{"alt":2726,"src":3391},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783170592021.webp",[14,3393,3394,3395,3398,3399,3402],{},"按照上圖的步驟,依次配置.\n這裡解釋一下.\n監聽端口：",[21,3396,3397],{},"51820","（可自定義，使用一個未被佔用的端口即可,記住這個端口,不懂的話就照我的設置）\nIP地址：",[21,3400,3401],{},"10.10.10.1\u002F24","（VPN內網網段，跟你軟路由的局域網段不能衝突,不懂的話就照我的設置）",[14,3404,3405,3406,3409,3410,3412],{},"你必須確保你的",[21,3407,3408],{},"家庭内网网段","和你的",[21,3411,3222],{},"以及剛才填的那個IP地址不能屬於同一網段.",[14,3414,3415,3416,3418,3419,3421,3422,3418,3424,3426,3427,2805],{},"比如我的",[21,3417,3408],{},"是",[21,3420,3208],{},",而",[21,3423,3222],{},[21,3425,3229],{},",VPN的網段",[21,3428,3429],{},"10.10.10.0\u002F24",[14,3431,3432,3433,2805],{},"然後點擊防火牆設置,選擇",[21,3434,3187],{},[14,3436,3437],{},[432,3438],{"alt":2726,"src":3439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783171881431.webp",[2565,3441,3442],{"id":3442},"服務端-對端配置",[14,3444,3445],{},"這裡配置的就是你的手機\u002F筆記本作為客戶端連進來的信息：",[14,3447,3448],{},"這個界面很方便，LuCI可以直接幫你生成客戶端的密鑰對並直接導出配置文件\u002F二維碼，不需要你手動在手機上先生成公鑰再倒騰過來，效率高很多。按下面順序填：",[485,3450,3451,3454,3457,3460,3463,3466,3469,3472,3475],{},[488,3452,3453],{},"描述\nphone\n（或者你自己好記的名字，比如\"iPhone17\"）",[488,3455,3456],{},"公鑰 + 私鑰 —— 直接點\"生成新的密鑰對\"\n點這個按鈕，系統會自動幫你同時生成一對新的公鑰+私鑰，並自動填到\"公鑰\"和\"私鑰\"兩個框裡。\n這個做法比你自己在手機App裡生成再抄公鑰過來省事得多，因為最後可以直接導出完整配置文件甚至二維碼給手機掃碼導入，私鑰也是配置好的，不用手動輸入。",[488,3458,3459],{},"預共享密鑰(PSK) —— 建議點\"生成預共享密鑰\"\n這是可選的額外加密層，加上更安全（抗未來量子計算破解），點一下\"生成預共享密鑰\"按鈕自動填好即可，不需要手動操作。",[488,3461,3462],{},"允許的IP\n點綠色+號，填：\n10.10.10.2\u002F32\n這是分配給這臺手機的隧道內網IP（如果以後要加第二臺設備，比如筆記本，就用10.10.10.3\u002F32，以此類推）。",[488,3464,3465],{},"為允許的IP創建路由 —— 勾選\n這個決定了服務端要不要給這個IP自動建路由，勾上，否則服務端不知道怎麼把去往10.10.10.2的包轉發給這個peer。",[488,3467,3468],{},"對端地址 (Image 2)\n這個字段填的是客戶端的地址，但因為你的手機是移動設備、IP會變，服務端這邊留空即可，不用填。（這個字段一般是給\"兩個固定IP的服務器互聯\"場景用的，你這種手機\u002F筆記本客戶端場景不需要）",[488,3470,3471],{},"對端端口\n同理，留空或者保持默認51820佔位符不用管，服務端這邊這個字段對客戶端場景沒意義，跳過。",[488,3473,3474],{},"持續保持連接(Persistent Keepalive)\n填：\n25\n因為手機大概率處在NAT環境下（無論是WiFi還是4G\u002F5G），這個值能防止連接因為長時間無流量被NAT設備判定斷開。",[488,3476,3477],{},"保存後 —— 點\"生成配置...\"\n這一步是重點：全部填完先點右下角\"保存\"，保存完之後再進來點 配置導出 那個\"生成配置...\"按鈕，系統會：",[14,3479,3480],{},"自動生成一份完整的客戶端配置文件（包含私鑰、服務端公鑰、Endpoint地址等全部信息）\n通常還會顯示一個二維碼",[14,3482,3483],{},"手機WireGuard App直接掃這個二維碼就能一鍵導入配置，完全不用你手動輸入任何字段，最省事。",[485,3485,3486],{"start":141},[488,3487,3488,3489,3491,3494,3519,3521,3522,3524,3525],{},"填完這些保存之後，點\"生成配置\"",[2857,3490],{},[432,3492],{"alt":2726,"src":3493},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783172425569.webp",[485,3495,3496,3516],{},[488,3497,3498,3499,3503,3504,3507,3508,3511,3512,3515],{},"連接端點 —— 改成DDNS域名\n沒有ddns域名的請看",[2244,3500,3502],{"href":3501},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo#ddns","ddns教程",".\n現在顯示的是 ",[21,3505,3506],{},"112.233.39.5"," 這個具體的公網IPv4，這是系統自動探測到的當前公網IP，但建議改成：",[21,3509,3510],{},"ddns.xxxxxx.cn","\n原因很簡單：家庭寬帶的公網IP大概率是動態的(如果你是中國移動,你完全不需要擔心這件事情,你沒有公網ipv4,你只有公網ipv6)，過一陣子運營商重新分配IP後，這個寫死的IP就失效了，配置文件也就廢了。用DDNS域名的話，只要你路由器上的DDNS客戶端正常更新，域名自動跟著IP變化解析，配置文件永久有效，不用來回改。\n直接把這個下拉框裡的值改成 ",[21,3513,3514],{},"ddns.tungchiahui.cn"," 即可，如果下拉框裡沒有這個選項，看能不能手動輸入替換。",[488,3517,3518],{},"允許的IP —— 這個要看你的使用需求，建議改\n現在是 0.0.0.0\u002F0 + ::\u002F0，意思是全局代理模式：連上VPN後，手機\u002F電腦的所有上網流量（刷網頁、看視頻、聊天全部）都會先繞道回你家裡，再從家裡的網絡出去上網。\n這跟最初的需求（\"在外面訪問家裡NAS\"）不太一致，全局模式的影響：",[2857,3520],{},"✅ 優點：所有流量都通過加密隧道，公共WiFi環境下更安全\n❌ 缺點：手機所有網絡流量的速度都取決於你家寬帶的上傳帶寬，如果你家是常見的百兆寬帶（上傳可能才幾十M甚至更低），刷視頻、下載會明顯變慢；而且家裡NAT要承擔所有流量的轉發壓力",[2857,3523],{},"如果你只是想訪問家裡內網的NAS\u002FPVE\u002FDebian，建議改成分離隧道模式，把這兩行改成：\n10.10.10.0\u002F24\n10.0.0.0\u002F24\n刪掉 0.0.0.0\u002F0 和 ::\u002F0 這兩行（點它們右邊的紅色×號），只保留上面這兩個網段。這樣只有\"訪問家裡內網\"這一類流量才走VPN隧道，其他正常上網流量不受影響，速度不受影響。\n如果你確實希望VPN也當\"全局代理\"用（比如出門用境外的WiFi想用家裡的網絡環境訪問某些內容），那就保留 0.0.0.0\u002F0 不用改。",[485,3526,3527,3530],{"start":65},[488,3528,3529],{},"DNS服務器：10.0.0.1 —— 這是你家庭內網的軟路由的LAN地址，連VPN後用它解析域名沒問題，能順帶解析你家內網可能配置的一些本地域名",[488,3531,3532],{},"地址：10.10.10.2\u002F32 —— 這個就是你想給你的這個手機分配一個VPN網段",[14,3534,3535],{},[432,3536],{"alt":2726,"src":3537},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173072915.webp",[14,3539,3540],{},"然後掏出手機的客戶端,使用QRcode導入配置即可.",[14,3542,3543],{},[432,3544],{"alt":2726,"src":3545},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173937724.webp",[2565,3547,3548],{"id":3548},"服務端-防火牆設置",[14,3550,3551],{},"需要加的規則\n去 網絡 → 防火牆 → 通信規則(Traffic Rules)，點\"添加\"：",[14,3553,3554],{},[432,3555],{"alt":2726,"src":3556},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173591260.webp",[14,3558,3559],{},"名稱：WireGuard（隨便起）\n協議：UDP 或者 TCP\u002FUDP\n源區域：wan\n目標區域：設備(輸入) —— 因為WireGuard監聽的是軟路由本機端口，不是轉發給內網其他設備\n目標端口：51820（跟你wg0接口\"監聽端口\"那裡填的一致）\n操作：接受(Accept)",[14,3561,3562],{},[432,3563],{"alt":2726,"src":3564},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173651000.webp",[14,3566,3567],{},"保存，應用。",[2565,3569,3570],{"id":3570},"客戶端",[14,3572,3573],{},"拿iOS舉例子",[14,3575,3576],{},"我這裡使用數據流量來測試,使用的是中國聯通4G.",[14,3578,3579],{},"像使用普通的VPN一樣打開你導入的這個配置即可.",[14,3581,3582],{},[432,3583],{"alt":2726,"src":3584},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173983036.webp",[397,3586,3587],{"id":3587},"測試",[14,3589,3590],{},"然後可以嘗試訪問你的內網設備,\n比如我的\nopenwrt是10.0.0.1,\npve是10.0.0.2,\nnas是10.0.0.5都可以被正常訪問了.",[14,3592,3593],{},[432,3594],{"alt":2726,"src":3595},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174333555.webp",[14,3597,3598],{},[432,3599],{"alt":2726,"src":3600},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174341112.webp",[14,3602,3603],{},[432,3604],{"alt":2726,"src":3605},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174344742.webp",[397,3607,3609],{"id":3608},"將wireguard交由clash-meta管理可選","將WireGuard交由Clash Meta管理(可選)",[2565,3611,3613],{"id":3612},"將純wireguard配置放入clash-meta","將純WireGuard配置放入Clash Meta",[14,3615,3616],{},"如果手機或電腦上已經長期運行支持Mihomo \u002F Clash Meta內核的客戶端，再單獨啟動WireGuard客戶端會比較麻煩，而且同一臺移動設備通常不能同時啟用兩個VPN隧道。",[14,3618,3619],{},"因此，可以將WireGuard節點直接寫入Clash Meta配置，讓Clash Meta統一負責：",[485,3621,3622,3625,3628],{},[488,3623,3624],{},"普通互聯網流量直連；",[488,3626,3627],{},"家庭內網流量通過WireGuard訪問；",[488,3629,3630],{},"根據規則自動判斷流量應該走哪個出口。",[14,3632,3633],{},"本節只介紹不包含機場或其他代理節點的純WireGuard配置。",[14,3635,3636],{},"配置完成後，不再需要打開獨立的WireGuard客戶端。使用該配置時，應關閉WireGuard App中的隧道，只打開Clash Meta。",[2710,3638,3640],{"id":3639},"查看wireguard客戶端參數","查看WireGuard客戶端參數",[14,3642,3643],{},"先打開已經能夠正常使用的WireGuard客戶端配置，需要記錄以下信息：",[1368,3645,3646,3656],{},[1371,3647,3648],{},[1374,3649,3650,3653],{},[1377,3651,3652],{"align":1379},"Clash Meta字段",[1377,3654,3655],{"align":1379},"WireGuard客戶端中的對應字段",[1388,3657,3658,3668,3678,3691,3701,3711,3721],{},[1374,3659,3660,3665],{},[1393,3661,3662],{"align":1379},[21,3663,3664],{},"server",[1393,3666,3667],{"align":1379},"Peer中的Endpoint域名或公網IP",[1374,3669,3670,3675],{},[1393,3671,3672],{"align":1379},[21,3673,3674],{},"port",[1393,3676,3677],{"align":1379},"Peer中的Endpoint端口",[1374,3679,3680,3685],{},[1393,3681,3682],{"align":1379},[21,3683,3684],{},"ip",[1393,3686,3687,3688],{"align":1379},"Interface中的Addresses，只填寫IPv4地址，不寫",[21,3689,3690],{},"\u002F32",[1374,3692,3693,3698],{},[1393,3694,3695],{"align":1379},[21,3696,3697],{},"private-key",[1393,3699,3700],{"align":1379},"Interface中的Private key",[1374,3702,3703,3708],{},[1393,3704,3705],{"align":1379},[21,3706,3707],{},"public-key",[1393,3709,3710],{"align":1379},"Peer中的Public key，也就是WireGuard服務器公鑰",[1374,3712,3713,3718],{},[1393,3714,3715],{"align":1379},[21,3716,3717],{},"pre-shared-key",[1393,3719,3720],{"align":1379},"Peer中的Preshared key",[1374,3722,3723,3728],{},[1393,3724,3725],{"align":1379},[21,3726,3727],{},"persistent-keepalive",[1393,3729,3730],{"align":1379},"Peer中的Persistent keepalive",[14,3732,3733],{},"這裡最容易弄錯的是兩個公鑰：",[1340,3735,3736,3742],{},[488,3737,3738,3739,3741],{},"Interface中的Public key是當前客戶端的公鑰，不能填入Clash Meta的",[21,3740,3707],{},"；",[488,3743,3744,3745,769],{},"Peer中的Public key才是WireGuard服務器公鑰，需要填入Clash Meta的",[21,3746,3707],{},[14,3748,3749],{},[432,3750],{"alt":3751,"src":3752},"WireGuard客戶端參數位置","%E8%AF%B7%E6%9B%BF%E6%8D%A2%E4%B8%BA%E5%9B%BE%E7%89%87%E5%9C%B0%E5%9D%80",[14,3754,3755],{},"這一張圖同時包含Interface和Peer兩部分，已經足夠說明各個字段應該從哪裡獲取，不需要再增加其他截圖。",[2710,3757,3759],{"id":3758},"創建yaml配置","創建YAML配置",[14,3761,3762,3763,3766],{},"新建一個擴展名為",[21,3764,3765],{},".yaml","的文件，例如：",[26,3768,3771],{"className":3769,"code":3770,"language":3168,"meta":31},[3166],"home-wireguard.yaml\n",[21,3772,3770],{"__ignoreMap":31},[14,3774,3775],{},"寫入下面的模板：",[26,3777,3781],{"className":3778,"code":3779,"language":3780,"meta":31,"style":31},"language-yaml shiki shiki-themes github-light github-dark","# 仅让家庭内网流量通过WireGuard\n# 普通互联网流量保持直连\n# 启用本配置时，不要同时开启独立的WireGuard客户端\n\nmixed-port: 7890\nallow-lan: false\nmode: rule\nlog-level: info\nipv6: true\n\ntun:\n  enable: true\n  stack: mixed\n  auto-route: true\n  auto-detect-interface: true\n\nproxies:\n  - name: 家庭-WG\n    type: wireguard\n\n    # WireGuard客户端Peer中的Endpoint\n    server: ddns.example.com\n    port: 51820\n\n    # WireGuard客户端Interface中的Addresses\n    # 例如原配置为10.10.10.2\u002F32，这里只填写10.10.10.2\n    ip: 10.10.10.2\n\n    # WireGuard客户端Interface中的Private key\n    private-key: \"gBzeTbZH...\"\n\n    # WireGuard客户端Peer中的Public key，即服务器公钥\n    # 不要填写Interface中的客户端公钥\n    public-key: \"UUS0nrKE...\"\n\n    # WireGuard客户端Peer中的Preshared key\n    pre-shared-key: \"NGYvFsCle...\"\n\n    allowed-ips:\n      - 0.0.0.0\u002F0\n\n    udp: true\n    persistent-keepalive: 25\n    mtu: 1380\n\nrules:\n  # 家庭局域网网段\n  - IP-CIDR,10.0.0.0\u002F24,家庭-WG,no-resolve\n\n  # WireGuard隧道网段\n  - IP-CIDR,10.10.10.0\u002F24,家庭-WG,no-resolve\n\n  # 其他网络流量保持直连\n  - MATCH,DIRECT\n","yaml",[21,3782,3783,3788,3793,3798,3802,3812,3822,3832,3842,3851,3855,3862,3871,3881,3890,3899,3903,3910,3923,3933,3937,3942,3952,3962,3966,3971,3977,3988,3993,3999,4010,4015,4021,4027,4038,4043,4049,4060,4065,4073,4082,4087,4097,4108,4119,4124,4132,4138,4146,4151,4157,4165,4170,4176],{"__ignoreMap":31},[35,3784,3785],{"class":37,"line":38},[35,3786,3787],{"class":989},"# 仅让家庭内网流量通过WireGuard\n",[35,3789,3790],{"class":37,"line":49},[35,3791,3792],{"class":989},"# 普通互联网流量保持直连\n",[35,3794,3795],{"class":37,"line":65},[35,3796,3797],{"class":989},"# 启用本配置时，不要同时开启独立的WireGuard客户端\n",[35,3799,3800],{"class":37,"line":73},[35,3801,1152],{"emptyLinePlaceholder":1151},[35,3803,3804,3807,3809],{"class":37,"line":81},[35,3805,3806],{"class":41},"mixed-port",[35,3808,55],{"class":45},[35,3810,3811],{"class":58},"7890\n",[35,3813,3814,3817,3819],{"class":37,"line":95},[35,3815,3816],{"class":41},"allow-lan",[35,3818,55],{"class":45},[35,3820,3821],{"class":58},"false\n",[35,3823,3824,3827,3829],{"class":37,"line":103},[35,3825,3826],{"class":41},"mode",[35,3828,55],{"class":45},[35,3830,3831],{"class":89},"rule\n",[35,3833,3834,3837,3839],{"class":37,"line":116},[35,3835,3836],{"class":41},"log-level",[35,3838,55],{"class":45},[35,3840,3841],{"class":89},"info\n",[35,3843,3844,3847,3849],{"class":37,"line":129},[35,3845,3846],{"class":41},"ipv6",[35,3848,55],{"class":45},[35,3850,358],{"class":58},[35,3852,3853],{"class":37,"line":141},[35,3854,1152],{"emptyLinePlaceholder":1151},[35,3856,3857,3860],{"class":37,"line":149},[35,3858,3859],{"class":41},"tun",[35,3861,327],{"class":45},[35,3863,3864,3867,3869],{"class":37,"line":157},[35,3865,3866],{"class":41},"  enable",[35,3868,55],{"class":45},[35,3870,358],{"class":58},[35,3872,3873,3876,3878],{"class":37,"line":165},[35,3874,3875],{"class":41},"  stack",[35,3877,55],{"class":45},[35,3879,3880],{"class":89},"mixed\n",[35,3882,3883,3886,3888],{"class":37,"line":178},[35,3884,3885],{"class":41},"  auto-route",[35,3887,55],{"class":45},[35,3889,358],{"class":58},[35,3891,3892,3895,3897],{"class":37,"line":191},[35,3893,3894],{"class":41},"  auto-detect-interface",[35,3896,55],{"class":45},[35,3898,358],{"class":58},[35,3900,3901],{"class":37,"line":199},[35,3902,1152],{"emptyLinePlaceholder":1151},[35,3904,3905,3908],{"class":37,"line":212},[35,3906,3907],{"class":41},"proxies",[35,3909,327],{"class":45},[35,3911,3912,3915,3918,3920],{"class":37,"line":225},[35,3913,3914],{"class":45},"  - ",[35,3916,3917],{"class":41},"name",[35,3919,55],{"class":45},[35,3921,3922],{"class":89},"家庭-WG\n",[35,3924,3925,3928,3930],{"class":37,"line":233},[35,3926,3927],{"class":41},"    type",[35,3929,55],{"class":45},[35,3931,3932],{"class":89},"wireguard\n",[35,3934,3935],{"class":37,"line":246},[35,3936,1152],{"emptyLinePlaceholder":1151},[35,3938,3939],{"class":37,"line":259},[35,3940,3941],{"class":989},"    # WireGuard客户端Peer中的Endpoint\n",[35,3943,3944,3947,3949],{"class":37,"line":272},[35,3945,3946],{"class":41},"    server",[35,3948,55],{"class":45},[35,3950,3951],{"class":89},"ddns.example.com\n",[35,3953,3954,3957,3959],{"class":37,"line":285},[35,3955,3956],{"class":41},"    port",[35,3958,55],{"class":45},[35,3960,3961],{"class":58},"51820\n",[35,3963,3964],{"class":37,"line":293},[35,3965,1152],{"emptyLinePlaceholder":1151},[35,3967,3968],{"class":37,"line":305},[35,3969,3970],{"class":989},"    # WireGuard客户端Interface中的Addresses\n",[35,3972,3974],{"class":37,"line":3973},26,[35,3975,3976],{"class":989},"    # 例如原配置为10.10.10.2\u002F32，这里只填写10.10.10.2\n",[35,3978,3980,3983,3985],{"class":37,"line":3979},27,[35,3981,3982],{"class":41},"    ip",[35,3984,55],{"class":45},[35,3986,3987],{"class":58},"10.10.10.2\n",[35,3989,3991],{"class":37,"line":3990},28,[35,3992,1152],{"emptyLinePlaceholder":1151},[35,3994,3996],{"class":37,"line":3995},29,[35,3997,3998],{"class":989},"    # WireGuard客户端Interface中的Private key\n",[35,4000,4002,4005,4007],{"class":37,"line":4001},30,[35,4003,4004],{"class":41},"    private-key",[35,4006,55],{"class":45},[35,4008,4009],{"class":89},"\"gBzeTbZH...\"\n",[35,4011,4013],{"class":37,"line":4012},31,[35,4014,1152],{"emptyLinePlaceholder":1151},[35,4016,4018],{"class":37,"line":4017},32,[35,4019,4020],{"class":989},"    # WireGuard客户端Peer中的Public key，即服务器公钥\n",[35,4022,4024],{"class":37,"line":4023},33,[35,4025,4026],{"class":989},"    # 不要填写Interface中的客户端公钥\n",[35,4028,4030,4033,4035],{"class":37,"line":4029},34,[35,4031,4032],{"class":41},"    public-key",[35,4034,55],{"class":45},[35,4036,4037],{"class":89},"\"UUS0nrKE...\"\n",[35,4039,4041],{"class":37,"line":4040},35,[35,4042,1152],{"emptyLinePlaceholder":1151},[35,4044,4046],{"class":37,"line":4045},36,[35,4047,4048],{"class":989},"    # WireGuard客户端Peer中的Preshared key\n",[35,4050,4052,4055,4057],{"class":37,"line":4051},37,[35,4053,4054],{"class":41},"    pre-shared-key",[35,4056,55],{"class":45},[35,4058,4059],{"class":89},"\"NGYvFsCle...\"\n",[35,4061,4063],{"class":37,"line":4062},38,[35,4064,1152],{"emptyLinePlaceholder":1151},[35,4066,4068,4071],{"class":37,"line":4067},39,[35,4069,4070],{"class":41},"    allowed-ips",[35,4072,327],{"class":45},[35,4074,4076,4079],{"class":37,"line":4075},40,[35,4077,4078],{"class":45},"      - ",[35,4080,4081],{"class":89},"0.0.0.0\u002F0\n",[35,4083,4085],{"class":37,"line":4084},41,[35,4086,1152],{"emptyLinePlaceholder":1151},[35,4088,4090,4093,4095],{"class":37,"line":4089},42,[35,4091,4092],{"class":41},"    udp",[35,4094,55],{"class":45},[35,4096,358],{"class":58},[35,4098,4100,4103,4105],{"class":37,"line":4099},43,[35,4101,4102],{"class":41},"    persistent-keepalive",[35,4104,55],{"class":45},[35,4106,4107],{"class":58},"25\n",[35,4109,4111,4114,4116],{"class":37,"line":4110},44,[35,4112,4113],{"class":41},"    mtu",[35,4115,55],{"class":45},[35,4117,4118],{"class":58},"1380\n",[35,4120,4122],{"class":37,"line":4121},45,[35,4123,1152],{"emptyLinePlaceholder":1151},[35,4125,4127,4130],{"class":37,"line":4126},46,[35,4128,4129],{"class":41},"rules",[35,4131,327],{"class":45},[35,4133,4135],{"class":37,"line":4134},47,[35,4136,4137],{"class":989},"  # 家庭局域网网段\n",[35,4139,4141,4143],{"class":37,"line":4140},48,[35,4142,3914],{"class":45},[35,4144,4145],{"class":89},"IP-CIDR,10.0.0.0\u002F24,家庭-WG,no-resolve\n",[35,4147,4149],{"class":37,"line":4148},49,[35,4150,1152],{"emptyLinePlaceholder":1151},[35,4152,4154],{"class":37,"line":4153},50,[35,4155,4156],{"class":989},"  # WireGuard隧道网段\n",[35,4158,4160,4162],{"class":37,"line":4159},51,[35,4161,3914],{"class":45},[35,4163,4164],{"class":89},"IP-CIDR,10.10.10.0\u002F24,家庭-WG,no-resolve\n",[35,4166,4168],{"class":37,"line":4167},52,[35,4169,1152],{"emptyLinePlaceholder":1151},[35,4171,4173],{"class":37,"line":4172},53,[35,4174,4175],{"class":989},"  # 其他网络流量保持直连\n",[35,4177,4179,4181],{"class":37,"line":4178},54,[35,4180,3914],{"class":45},[35,4182,4183],{"class":89},"MATCH,DIRECT\n",[2710,4185,4186],{"id":4186},"修改模板中的參數",[14,4188,4189],{},"需要按照自己的WireGuard配置修改以下內容。",[14,4191,4192],{},[403,4193,4194,4195],{},"1. ",[21,4196,3664],{},[14,4198,4199],{},"將：",[26,4201,4203],{"className":3778,"code":4202,"language":3780,"meta":31,"style":31},"server: ddns.example.com\n",[21,4204,4205],{"__ignoreMap":31},[35,4206,4207,4209,4211],{"class":37,"line":38},[35,4208,3664],{"class":41},[35,4210,55],{"class":45},[35,4212,3951],{"class":89},[14,4214,4215],{},"改成WireGuard客戶端Peer中Endpoint冒號前面的域名或公網IP。",[14,4217,4218],{},"例如Endpoint為：",[26,4220,4223],{"className":4221,"code":4222,"language":3168,"meta":31},[3166],"ddns.example.com:51820\n",[21,4224,4222],{"__ignoreMap":31},[14,4226,4227],{},"那麼填寫：",[26,4229,4230],{"className":3778,"code":4202,"language":3780,"meta":31,"style":31},[21,4231,4232],{"__ignoreMap":31},[35,4233,4234,4236,4238],{"class":37,"line":38},[35,4235,3664],{"class":41},[35,4237,55],{"class":45},[35,4239,3951],{"class":89},[14,4241,4242],{},[403,4243,4244,4245],{},"2. ",[21,4246,3674],{},[14,4248,4249],{},"填寫Endpoint冒號後面的端口，例如：",[26,4251,4253],{"className":3778,"code":4252,"language":3780,"meta":31,"style":31},"port: 51820\n",[21,4254,4255],{"__ignoreMap":31},[35,4256,4257,4259,4261],{"class":37,"line":38},[35,4258,3674],{"class":41},[35,4260,55],{"class":45},[35,4262,3961],{"class":58},[14,4264,4265],{},[403,4266,4267,4268],{},"3. ",[21,4269,3684],{},[14,4271,4272],{},"填寫WireGuard客戶端Interface中的Addresses，但不要填寫CIDR後綴。",[14,4274,4275],{},"例如原配置是：",[26,4277,4280],{"className":4278,"code":4279,"language":3168,"meta":31},[3166],"10.10.10.2\u002F32\n",[21,4281,4279],{"__ignoreMap":31},[14,4283,4284],{},"Clash Meta中填寫：",[26,4286,4288],{"className":3778,"code":4287,"language":3780,"meta":31,"style":31},"ip: 10.10.10.2\n",[21,4289,4290],{"__ignoreMap":31},[35,4291,4292,4294,4296],{"class":37,"line":38},[35,4293,3684],{"class":41},[35,4295,55],{"class":45},[35,4297,3987],{"class":58},[14,4299,4300],{},[403,4301,4302,4303],{},"4. ",[21,4304,3697],{},[14,4306,4307],{},"填寫WireGuard客戶端Interface中的Private key：",[26,4309,4311],{"className":3778,"code":4310,"language":3780,"meta":31,"style":31},"private-key: \"客户端私钥\"\n",[21,4312,4313],{"__ignoreMap":31},[35,4314,4315,4317,4319],{"class":37,"line":38},[35,4316,3697],{"class":41},[35,4318,55],{"class":45},[35,4320,4321],{"class":89},"\"客户端私钥\"\n",[14,4323,4324],{},[403,4325,4326,4327],{},"5. ",[21,4328,3707],{},[14,4330,4331],{},"填寫WireGuard客戶端Peer中的Public key，也就是服務器公鑰：",[26,4333,4335],{"className":3778,"code":4334,"language":3780,"meta":31,"style":31},"public-key: \"服务器公钥\"\n",[21,4336,4337],{"__ignoreMap":31},[35,4338,4339,4341,4343],{"class":37,"line":38},[35,4340,3707],{"class":41},[35,4342,55],{"class":45},[35,4344,4345],{"class":89},"\"服务器公钥\"\n",[14,4347,4348],{},"不要誤填Interface中的Public key。Interface中的Public key屬於當前客戶端，Peer中的Public key才屬於服務器。",[14,4350,4351],{},[403,4352,4353,4354],{},"6. ",[21,4355,3717],{},[14,4357,4358],{},"填寫WireGuard客戶端Peer中的Preshared key：",[26,4360,4362],{"className":3778,"code":4361,"language":3780,"meta":31,"style":31},"pre-shared-key: \"预共享密钥\"\n",[21,4363,4364],{"__ignoreMap":31},[35,4365,4366,4368,4370],{"class":37,"line":38},[35,4367,3717],{"class":41},[35,4369,55],{"class":45},[35,4371,4372],{"class":89},"\"预共享密钥\"\n",[14,4374,4375,4376,769],{},"WireGuard密鑰是Base64字符串，複製時不要漏掉末尾可能存在的",[21,4377,1286],{},[14,4379,4380],{},[403,4381,4382,4383],{},"7. ",[21,4384,4129],{},[14,4386,4387],{},"將規則中的家庭局域網網段和WireGuard隧道網段改成自己的實際網段。",[14,4389,4390],{},"例如：",[26,4392,4394],{"className":3778,"code":4393,"language":3780,"meta":31,"style":31},"rules:\n  - IP-CIDR,10.0.0.0\u002F24,家庭-WG,no-resolve\n  - IP-CIDR,10.10.10.0\u002F24,家庭-WG,no-resolve\n  - MATCH,DIRECT\n",[21,4395,4396,4402,4408,4414],{"__ignoreMap":31},[35,4397,4398,4400],{"class":37,"line":38},[35,4399,4129],{"class":41},[35,4401,327],{"class":45},[35,4403,4404,4406],{"class":37,"line":49},[35,4405,3914],{"class":45},[35,4407,4145],{"class":89},[35,4409,4410,4412],{"class":37,"line":65},[35,4411,3914],{"class":45},[35,4413,4164],{"class":89},[35,4415,4416,4418],{"class":37,"line":73},[35,4417,3914],{"class":45},[35,4419,4183],{"class":89},[14,4421,4422],{},"表示：",[1340,4424,4425,4431,4436],{},[488,4426,4427,4428,4430],{},"訪問",[21,4429,3208],{},"家庭局域網時走WireGuard；",[488,4432,4427,4433,4435],{},[21,4434,3429],{},"WireGuard隧道網段時走WireGuard；",[488,4437,4438],{},"其他流量全部直連，不經過家庭寬帶。",[2710,4440,4441],{"id":4441},"關於allowed-ips",[14,4443,4444],{},"模板中的：",[26,4446,4448],{"className":3778,"code":4447,"language":3780,"meta":31,"style":31},"allowed-ips:\n  - 0.0.0.0\u002F0\n",[21,4449,4450,4457],{"__ignoreMap":31},[35,4451,4452,4455],{"class":37,"line":38},[35,4453,4454],{"class":41},"allowed-ips",[35,4456,327],{"class":45},[35,4458,4459,4461],{"class":37,"line":49},[35,4460,3914],{"class":45},[35,4462,4081],{"class":89},[14,4464,4465],{},"可以保持不變。",[14,4467,4468,4469,4471],{},"它表示這個WireGuard代理節點能夠承載全部IPv4流量，但實際哪些流量交給WireGuard，仍然由最下面的",[21,4470,4129],{},"決定。",[14,4473,4390],{},[26,4475,4476],{"className":3778,"code":4393,"language":3780,"meta":31,"style":31},[21,4477,4478,4484,4490,4496],{"__ignoreMap":31},[35,4479,4480,4482],{"class":37,"line":38},[35,4481,4129],{"class":41},[35,4483,327],{"class":45},[35,4485,4486,4488],{"class":37,"line":49},[35,4487,3914],{"class":45},[35,4489,4145],{"class":89},[35,4491,4492,4494],{"class":37,"line":65},[35,4493,3914],{"class":45},[35,4495,4164],{"class":89},[35,4497,4498,4500],{"class":37,"line":73},[35,4499,3914],{"class":45},[35,4501,4183],{"class":89},[14,4503,4504],{},"在這套規則下，只有家庭內網和WireGuard隧道網段走WireGuard，其他互聯網流量繼續直連。",[14,4506,4507],{},"需要注意，WireGuard服務端Peer中的Allowed IPs仍然應該是分配給該客戶端的地址，例如：",[26,4509,4511],{"className":4510,"code":4279,"language":3168,"meta":31},[3166],[21,4512,4279],{"__ignoreMap":31},[14,4514,4515,4516,769],{},"不要把WireGuard服務端Peer中的Allowed IPs改成",[21,4517,4518],{},"0.0.0.0\u002F0",[2710,4520,4521],{"id":4521},"導入並測試",[14,4523,4524],{},"將YAML文件導入支持Mihomo \u002F Clash Meta內核的客戶端，然後：",[485,4526,4527,4530,4533,4536,4539],{},[488,4528,4529],{},"關閉獨立的WireGuard客戶端隧道；",[488,4531,4532],{},"在Clash Meta中選擇剛才導入的配置；",[488,4534,4535],{},"使用“規則”模式；",[488,4537,4538],{},"打開Clash Meta連接開關；",[488,4540,4541],{},"訪問家庭內網設備進行測試。",[14,4543,4544],{},"例如訪問軟路由：",[26,4546,4549],{"className":4547,"code":4548,"language":3168,"meta":31},[3166],"http:\u002F\u002F10.0.0.1\n",[21,4550,4548],{"__ignoreMap":31},[14,4552,4553],{},"或者在iOS文件App中連接NAS：",[26,4555,4558],{"className":4556,"code":4557,"language":3168,"meta":31},[3166],"smb:\u002F\u002F10.0.0.5\n",[21,4559,4557],{"__ignoreMap":31},[14,4561,4562],{},"同時可以進入WireGuard服務端，查看對應Peer的Latest Handshake。",[14,4564,4565],{},"如果開啟Clash Meta後握手時間刷新，並且能夠訪問家庭內網設備，就說明配置成功。",[2710,4567,4568],{"id":4568},"常見問題",[14,4570,4571],{},"如果YAML能夠啟動，但無法產生WireGuard握手，優先檢查：",[485,4573,4574,4579,4584,4592,4597,4600,4603],{},[488,4575,4576,4578],{},[21,4577,3707],{},"是否誤填成客戶端公鑰；",[488,4580,4581,4583],{},[21,4582,3697],{},"是否為當前客戶端私鑰；",[488,4585,4586,4588,4589,4591],{},[21,4587,3717],{},"是否完整，末尾的",[21,4590,1286],{},"是否遺漏；",[488,4593,4594,4596],{},[21,4595,3684],{},"是否與服務端分配給該Peer的地址一致；",[488,4598,4599],{},"Endpoint域名和端口是否正確；",[488,4601,4602],{},"軟路由防火牆是否已經放行WireGuard端口；",[488,4604,4605],{},"獨立WireGuard客戶端是否仍然處於開啟狀態。",[14,4607,4608],{},"如果報錯類似：",[26,4610,4613],{"className":4611,"code":4612,"language":3168,"meta":31},[3166],"decode pre shared key: illegal base64 data\n",[21,4614,4612],{"__ignoreMap":31},[14,4616,4617,4618,4620,4621,4623],{},"通常說明",[21,4619,3717],{},"複製不完整，常見原因是末尾的",[21,4622,1286],{},"被遺漏。",[2565,4625,4627],{"id":4626},"將wireguard加入包含代理節點的yaml","將WireGuard加入包含代理節點的YAML",[10,4629,4631],{"id":4630},"alist","Alist",[397,4633,3190],{"id":4634},"簡介-1",[397,4636,3233],{"id":4637},"安裝-1",[397,4639,4641],{"id":4640},"webui","WebUI",[397,4643,4645],{"id":4644},"s3協議","S3協議",[2565,4647,4649],{"id":4648},"開啟s3","開啟S3",[14,4651,4652],{},"先進行使能S3協議。",[14,4654,4655],{},[432,4656],{"alt":31,"src":4657},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154451682-f5d538c1.webp",[14,4659,3158,4660,4663,4664,4667,4668,769],{},[21,4661,4662],{},"\u002Fopt\u002F1panel\u002Fapps\u002Falist\u002Falist\u002Fdata\u002Fdata","目錄修改掉如下圖的設置從",[21,4665,4666],{},"false","改成",[21,4669,124],{},[26,4671,4675],{"className":4672,"code":4673,"language":4674,"meta":31,"style":31},"language-json shiki shiki-themes github-light github-dark","\"s3\": {\n  \"enable\": true,\n  \"port\": 5246,\n  \"ssl\": false\n}\n","json",[21,4676,4677,4685,4697,4709,4718],{"__ignoreMap":31},[35,4678,4679,4682],{"class":37,"line":38},[35,4680,4681],{"class":89},"\"s3\"",[35,4683,4684],{"class":45},": {\n",[35,4686,4687,4690,4692,4694],{"class":37,"line":49},[35,4688,4689],{"class":58},"  \"enable\"",[35,4691,55],{"class":45},[35,4693,124],{"class":58},[35,4695,4696],{"class":45},",\n",[35,4698,4699,4702,4704,4707],{"class":37,"line":65},[35,4700,4701],{"class":58},"  \"port\"",[35,4703,55],{"class":45},[35,4705,4706],{"class":58},"5246",[35,4708,4696],{"class":45},[35,4710,4711,4714,4716],{"class":37,"line":73},[35,4712,4713],{"class":58},"  \"ssl\"",[35,4715,55],{"class":45},[35,4717,3821],{"class":58},[35,4719,4720],{"class":37,"line":81},[35,4721,4722],{"class":45},"}\n",[14,4724,4725],{},[432,4726],{"alt":31,"src":4727},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154352253-3de75e7f.webp",[14,4729,4730],{},"最後點擊重啟。",[14,4732,4733],{},[432,4734],{"alt":31,"src":4735},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154532487-c9f49f91.webp",[2565,4737,4739],{"id":4738},"測試s3鏈接","測試S3鏈接",[14,4741,4742],{},"在部署AList服務器本身敲",[26,4744,4746],{"className":580,"code":4745,"language":582,"meta":31,"style":31},"curl -i http:\u002F\u002F127.0.0.1:5246\u002F\n",[21,4747,4748],{"__ignoreMap":31},[35,4749,4750,4753,4756],{"class":37,"line":38},[35,4751,4752],{"class":589},"curl",[35,4754,4755],{"class":58}," -i",[35,4757,4758],{"class":89}," http:\u002F\u002F127.0.0.1:5246\u002F\n",[14,4760,4761,4762,4765],{},"如果顯示",[21,4763,4764],{},"HTTP\u002F1.1 200 OK","，那證明是OK的。",[14,4767,4768],{},[432,4769],{"alt":31,"src":4770},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154636455-dff7a529.webp",[14,4772,4773,4774,4777],{},"後續我也把他反向代理成了一個域名",[21,4775,4776],{},"s3.tungchiahui.cn","，經測試，也沒毛病：",[14,4779,4780],{},[432,4781],{"alt":31,"src":4782},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787155243623-c19dfc25.webp",[2565,4784,4786],{"id":4785},"配置s3","配置S3",[14,4788,4789],{},"在AList的管理界面找到設置裡的S3,然後點底下的Add來添加哪個路徑為桶：",[1340,4791,4792,4795,4798,4801],{},[488,4793,4794],{},"Name就是桶的名字",[488,4796,4797],{},"Path是你想讓AList的哪個路徑作為桶子的根目錄",[488,4799,4800],{},"S3 access key id 是S3授權ID",[488,4802,4803],{},"S3 secret access key是S3授權密鑰",[14,4805,4806],{},[432,4807],{"alt":31,"src":4808},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154999413-e747a0fd.webp",[2565,4810,4812],{"id":4811},"測試s3","測試S3",[14,4814,4815],{},"先準備好你的配置",[26,4817,4820],{"className":4818,"code":4819,"language":3168,"meta":31},[3166],"Endpoint:\nhttp:\u002F\u002F127.0.0.1:5246\n或者\nhttps:\u002F\u002Fs3.tungchiahui.cn\n\nBucket:\nObjectStorage\n\nAccess Key:\nAList 后台生成的 S3 Access Key ID\n\nSecret Key:\nAList 后台生成的 S3 Secret Access Key\n\nRegion:\nus-east-1\n",[21,4821,4819],{"__ignoreMap":31},[14,4823,4824],{},"使用一個可以使用S3的軟件，比如我使用我做的VScode插件來進行測試。",[14,4826,4827,4828],{},"插件鏈接如下：\n",[2244,4829,4830],{"href":4830,"rel":4831},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=tungchiahui.md-image-uploader",[2248],[14,4833,4834,4835,4838],{},"我把配置填到了VScode中的",[21,4836,4837],{},"settings.json","使用我的插件進行了測試：",[26,4840,4842],{"className":4672,"code":4841,"language":4674,"meta":31,"style":31},"{\n  \"mdImageUploader.s3.accessKeyId\": \"2Vxxxxxxxxxxxxxxxxxxxxxx\",\n  \"mdImageUploader.s3.secretAccessKey\": \"FWx6xxxxxxxxxxxxxxxxxx\",\n  \"mdImageUploader.s3.endpoint\": \"https:\u002F\u002Fs3.tungchiahui.cn\",\n  \"mdImageUploader.s3.region\": \"us-east-1\",\n  \"mdImageUploader.s3.bucket\": \"ObjectStorage\",\n  \"mdImageUploader.cdnUrl\": \"https:\u002F\u002Fcdn.tungchiahui.cn\",\n  \"mdImageUploader.datedUploadPath\": \"\u002Ftungwebsite\u002Fassets\u002Fimages\",\n  \"mdImageUploader.undatedUploadPath\": \"\u002Ftungwebsite\u002Fassets\u002Fimages\u002Fundate\"\n}\n",[21,4843,4844,4849,4861,4873,4885,4897,4909,4921,4933,4943],{"__ignoreMap":31},[35,4845,4846],{"class":37,"line":38},[35,4847,4848],{"class":45},"{\n",[35,4850,4851,4854,4856,4859],{"class":37,"line":49},[35,4852,4853],{"class":58},"  \"mdImageUploader.s3.accessKeyId\"",[35,4855,55],{"class":45},[35,4857,4858],{"class":89},"\"2Vxxxxxxxxxxxxxxxxxxxxxx\"",[35,4860,4696],{"class":45},[35,4862,4863,4866,4868,4871],{"class":37,"line":65},[35,4864,4865],{"class":58},"  \"mdImageUploader.s3.secretAccessKey\"",[35,4867,55],{"class":45},[35,4869,4870],{"class":89},"\"FWx6xxxxxxxxxxxxxxxxxx\"",[35,4872,4696],{"class":45},[35,4874,4875,4878,4880,4883],{"class":37,"line":73},[35,4876,4877],{"class":58},"  \"mdImageUploader.s3.endpoint\"",[35,4879,55],{"class":45},[35,4881,4882],{"class":89},"\"https:\u002F\u002Fs3.tungchiahui.cn\"",[35,4884,4696],{"class":45},[35,4886,4887,4890,4892,4895],{"class":37,"line":81},[35,4888,4889],{"class":58},"  \"mdImageUploader.s3.region\"",[35,4891,55],{"class":45},[35,4893,4894],{"class":89},"\"us-east-1\"",[35,4896,4696],{"class":45},[35,4898,4899,4902,4904,4907],{"class":37,"line":95},[35,4900,4901],{"class":58},"  \"mdImageUploader.s3.bucket\"",[35,4903,55],{"class":45},[35,4905,4906],{"class":89},"\"ObjectStorage\"",[35,4908,4696],{"class":45},[35,4910,4911,4914,4916,4919],{"class":37,"line":103},[35,4912,4913],{"class":58},"  \"mdImageUploader.cdnUrl\"",[35,4915,55],{"class":45},[35,4917,4918],{"class":89},"\"https:\u002F\u002Fcdn.tungchiahui.cn\"",[35,4920,4696],{"class":45},[35,4922,4923,4926,4928,4931],{"class":37,"line":116},[35,4924,4925],{"class":58},"  \"mdImageUploader.datedUploadPath\"",[35,4927,55],{"class":45},[35,4929,4930],{"class":89},"\"\u002Ftungwebsite\u002Fassets\u002Fimages\"",[35,4932,4696],{"class":45},[35,4934,4935,4938,4940],{"class":37,"line":129},[35,4936,4937],{"class":58},"  \"mdImageUploader.undatedUploadPath\"",[35,4939,55],{"class":45},[35,4941,4942],{"class":89},"\"\u002Ftungwebsite\u002Fassets\u002Fimages\u002Fundate\"\n",[35,4944,4945],{"class":37,"line":141},[35,4946,4722],{"class":45},[14,4948,4949],{},"經過測試，文件已經成功被保存到了桶子裡。",[14,4951,4952],{},[432,4953],{"alt":31,"src":4954},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156017266-fa0d943f.webp",[14,4956,4957],{},[432,4958],{"alt":31,"src":4959},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156156306-94170611.webp",[2565,4961,4962],{"id":4962},"創建文件直鏈",[14,4964,4965],{},"去AList後臺",[26,4967,4971],{"className":4968,"code":4969,"language":4970,"meta":31,"style":31},"language-test shiki shiki-themes github-light github-dark","管理\n→ 设置\n→ 全局\n→ 关闭Sign All\n","test",[21,4972,4973,4978,4983,4988],{"__ignoreMap":31},[35,4974,4975],{"class":37,"line":38},[35,4976,4977],{},"管理\n",[35,4979,4980],{"class":37,"line":49},[35,4981,4982],{},"→ 设置\n",[35,4984,4985],{"class":37,"line":65},[35,4986,4987],{},"→ 全局\n",[35,4989,4990],{"class":37,"line":73},[35,4991,4992],{},"→ 关闭Sign All\n",[14,4994,4995],{},"如果開著 Sign All，關掉。因為只要全局 Sign All 開著，下面單獨存儲關簽名也沒用。AList 官方明確說 Sign All 會給所有文件直鏈添加簽名。",[14,4997,4998],{},[432,4999],{"alt":31,"src":5000},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156596929-05141566.webp",[14,5002,5003],{},[432,5004],{"alt":31,"src":5005},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156612532-01b09796.webp",[14,5007,5008],{},"然後找到你的存放AList的桶子的存儲地點進行編輯。",[14,5010,5011],{},[432,5012],{"alt":31,"src":5013},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156652655-1141dad8.webp",[14,5015,5016,5017,769],{},"關閉",[21,5018,5019],{},"启用签名 \u002F Enable signing",[14,5021,5022],{},[432,5023],{"alt":31,"src":5024},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156722613-8c9e13a7.webp",[14,5026,5027],{},"然後保存。",[14,5029,5030,5031,5034],{},"然後你可以通過",[21,5032,5033],{},"![](https:\u002F\u002Falist.tungchiahui.cn\u002Fd\u002FAList文件的路径\u002F文件名.webp)","來訪問文件了。",[14,5036,5037,5040],{},[403,5038,5039],{},"高階操作（可選）","：",[14,5042,5043,5044,5047,5048,5051,5052,5055],{},"把",[21,5045,5046],{},"cdn.tungchiahui.cn","也和",[21,5049,5050],{},"alist.tungchiahui.cn","同源，然後在騰訊雲edgeone里加速，在規則引擎裡新加一個",[21,5053,5054],{},"cdn路径前缀增加","的規則。",[14,5057,5058],{},[432,5059],{"alt":31,"src":5060},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787159371048-e2e3749f.webp",[1340,5062,5063,5068,5074,5080],{},[488,5064,5065,5066],{},"HOST選擇",[21,5067,5046],{},[488,5069,5070,5071],{},"操作選",[21,5072,5073],{},"回源URL重写",[488,5075,5076,5077],{},"類型選",[21,5078,5079],{},"增加路径前缀",[488,5081,5082,5083],{},"增加路徑前綴選",[21,5084,5085],{},"\u002Fd\u002FAList文件的多余路径\u002F",[14,5087,5088,5089,5091,5092,5095,5096,5098,5099,5102,5103,769],{},"比如",[21,5090,5079],{},"我填的",[21,5093,5094],{},"\u002Fd\u002FNAS\u002FObjectStorage","，\n那麼我用",[21,5097,5060],{},"\n將會同等於",[21,5100,5101],{},"https:\u002F\u002Falist.tungchiahui.cn\u002Fd\u002FNAS\u002FObjectStorage\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787159371048-e2e3749f.webp",",\n都會回源到我的",[21,5104,5105],{},"https:\u002F\u002F服务器ip地址\u002Fd\u002FNAS\u002FObjectStorage\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787159371048-e2e3749f.webp",[14,5107,5108],{},"再設置一個緩存規則：",[14,5110,5111],{},[432,5112],{"alt":31,"src":5113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787160214979-6bf621c3.webp",[14,5115,5116],{},"緩存規則可以這樣理解：",[1340,5118,5119,5127,5135,5152,5167,5175],{},[488,5120,5121,5124,5126],{},[403,5122,5123],{},"節點緩存 TTL：30 天",[2857,5125],{},"\nEdgeOne 會把圖片緩存到邊緣節點 30 天。後續訪問優先從 CDN 節點返回，可以明顯減少 AList、服務器 和 服務器寬帶 的壓力。",[488,5128,5129,5132,5134],{},[403,5130,5131],{},"強制緩存：關閉",[2857,5133],{},"\n保持關閉更穩妥。如果源站明確要求某些資源不要緩存，EdgeOne 會尊重源站設置，避免把特殊資源錯誤緩存。",[488,5136,5137,5140,5142,5143,5149,5151],{},[403,5138,5139],{},"Cache Key：查詢字符串全部忽略",[2857,5141],{},"\n例如：",[26,5144,5147],{"className":5145,"code":5146,"language":3168,"meta":31},[3166],"xxx.webp\nxxx.webp?a=1\nxxx.webp?a=2\nxxx.webp?a=3\n",[21,5148,5146],{"__ignoreMap":31},[2857,5150],{},"都會被認為是同一個緩存資源。這樣可以防止別人不斷修改 URL 參數繞過緩存，反覆回源打你的 AList 和 服務器，而我這裡文件還存儲在NAS上，也會進一步防止他反覆打我的NAS。",[488,5153,5154,5157,5159,5162,5163,5166],{},[403,5155,5156],{},"忽略大小寫：關閉",[2857,5158],{},[21,5160,5161],{},"abc.webp"," 和 ",[21,5164,5165],{},"ABC.webp"," 會被當成兩個不同文件，避免不同文件被錯誤合併到同一個緩存。",[488,5168,5169,5172,5174],{},[403,5170,5171],{},"PHP \u002F JSP \u002F ASP \u002F ASPX：不緩存",[2857,5173],{},"\n這些通常屬於動態頁面，單獨設為不緩存可以防止動態內容被 CDN 長時間緩存。對於純圖片 CDN 來說基本屬於防呆設置。",[488,5176,5177,5180,5182,5185,5186,5185,5189,5185,5192,5185,5195,5185,5198,5201],{},[403,5178,5179],{},"圖片瀏覽器緩存 TTL：1 天",[2857,5181],{},[21,5183,5184],{},"jpg","、",[21,5187,5188],{},"png",[21,5190,5191],{},"gif",[21,5193,5194],{},"bmp",[21,5196,5197],{},"svg",[21,5199,5200],{},"webp"," 等圖片會在用戶瀏覽器中緩存 1 天。用戶短時間內重複訪問時，瀏覽器可以直接讀取本地緩存，連 EdgeOne 都不用重新請求。",[14,5203,5204],{},"最終緩存鏈路大致如下：",[26,5206,5209],{"className":5207,"code":5208,"language":3168,"meta":31},[3166],"浏览器\n  ↓ 本地缓存 1 天\nEdgeOne\n  ↓ 节点缓存 30 天\nAList\n  ↓\nNAS\n",[21,5210,5208],{"__ignoreMap":31},[14,5212,5213],{},"絕大多數重複訪問會停在瀏覽器或 EdgeOne，不會真正回源到家裡的 服務器 和 NAS。",[10,5215,5217],{"id":5216},"minio-自建對象存儲","MinIO 自建對象存儲",[397,5219,3190],{"id":5220},"簡介-2",[1368,5222,5223,5236],{},[1371,5224,5225],{},[1374,5226,5227,5230,5233],{},[1377,5228,5229],{},"項目",[1377,5231,5232],{},"騰訊 COS",[1377,5234,5235],{},"自建 MinIO",[1388,5237,5238,5248,5257,5266,5275,5284,5293,5302,5315,5327,5340,5351,5364,5375,5386,5400],{},[1374,5239,5240,5243,5246],{},[1393,5241,5242],{},"對象存儲",[1393,5244,5245],{},"✅",[1393,5247,5245],{},[1374,5249,5250,5253,5255],{},[1393,5251,5252],{},"S3 API",[1393,5254,5245],{},[1393,5256,5245],{},[1374,5258,5259,5262,5264],{},[1393,5260,5261],{},"圖片\u002F附件",[1393,5263,5245],{},[1393,5265,5245],{},[1374,5267,5268,5271,5273],{},[1393,5269,5270],{},"Bucket",[1393,5272,5245],{},[1393,5274,5245],{},[1374,5276,5277,5280,5282],{},[1393,5278,5279],{},"SDK 上傳",[1393,5281,5245],{},[1393,5283,5245],{},[1374,5285,5286,5289,5291],{},[1393,5287,5288],{},"私有對象\u002F簽名 URL",[1393,5290,5245],{},[1393,5292,5245],{},[1374,5294,5295,5298,5300],{},[1393,5296,5297],{},"Versioning",[1393,5299,5245],{},[1393,5301,5245],{},[1374,5303,5304,5307,5310],{},[1393,5305,5306],{},"存儲空間",[1393,5308,5309],{},"騰訊提供",[1393,5311,5312],{},[403,5313,5314],{},"吃你服務器硬盤",[1374,5316,5317,5320,5322],{},[1393,5318,5319],{},"帶寬",[1393,5321,5309],{},[1393,5323,5324],{},[403,5325,5326],{},"吃學校服務器出口帶寬",[1374,5328,5329,5332,5335],{},[1393,5330,5331],{},"高可用",[1393,5333,5334],{},"騰訊負責",[1393,5336,5337],{},[403,5338,5339],{},"你負責",[1374,5341,5342,5345,5347],{},[1393,5343,5344],{},"數據冗餘",[1393,5346,5334],{},[1393,5348,5349],{},[403,5350,5339],{},[1374,5352,5353,5356,5359],{},[1393,5354,5355],{},"硬盤損壞",[1393,5357,5358],{},"雲廠商處理",[1393,5360,5361],{},[403,5362,5363],{},"可能直接丟數據",[1374,5365,5366,5369,5372],{},[1393,5367,5368],{},"運維",[1393,5370,5371],{},"幾乎沒有",[1393,5373,5374],{},"Docker、磁盤、備份、升級、安全都自己搞",[1374,5376,5377,5380,5383],{},[1393,5378,5379],{},"費用",[1393,5381,5382],{},"存儲+流量",[1393,5384,5385],{},"軟件可以自建，但硬盤\u002F服務器\u002F帶寬自己承擔",[1374,5387,5388,5391,5394],{},[1393,5389,5390],{},"CDN",[1393,5392,5393],{},"很容易接騰訊 CDN\u002FEO",[1393,5395,5396,5397],{},"MinIO 本身",[403,5398,5399],{},"不是 CDN",[1374,5401,5402,5405,5408],{},[1393,5403,5404],{},"可控性",[1393,5406,5407],{},"一般",[1393,5409,5410],{},[403,5411,5412],{},"非常高",[397,5414,3233],{"id":5415},"安裝-2",[14,5417,5418,5419,2805],{},"首先你需要服務器上安裝一個",[21,5420,5421],{},"1panel",[14,5423,5424],{},"進入商店,搜索minio.",[14,5426,5427],{},[432,5428],{"alt":31,"src":5429},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787145834399-2d3916b0.webp",[14,5431,5432],{},"點擊安裝.",[14,5434,5435],{},"大多數設置都默認即可,但賬號密碼要自己填寫,這個端口外部訪問這裡,如果你的服務器在內網,可以選擇打開,如果你的服務器的IP是一個公網IP,那麼不建議你打開.",[14,5437,5438],{},[432,5439],{"alt":31,"src":5440},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787145965960-68b6e978.webp",[1368,5442,5443,5453],{},[1371,5444,5445],{},[1374,5446,5447,5450],{},[1377,5448,5449],{},"配置項",[1377,5451,5452],{},"建議",[1388,5454,5455,5465,5473,5481,5489,5499,5509,5521,5529,5537],{},[1374,5456,5457,5460],{},[1393,5458,5459],{},"名稱",[1393,5461,5462],{},[21,5463,5464],{},"minio",[1374,5466,5467,5470],{},[1393,5468,5469],{},"版本",[1393,5471,5472],{},"選 1Panel 當前提供的穩定版本",[1374,5474,5475,5478],{},[1393,5476,5477],{},"用戶",[1393,5479,5480],{},"自己設一個，不要用太簡單的",[1374,5482,5483,5486],{},[1393,5484,5485],{},"密碼",[1393,5487,5488],{},"自己設一個密碼複雜點的",[1374,5490,5491,5494],{},[1393,5492,5493],{},"WebUI 端口",[1393,5495,5496],{},[21,5497,5498],{},"9001",[1374,5500,5501,5504],{},[1393,5502,5503],{},"S3 API 端口",[1393,5505,5506],{},[21,5507,5508],{},"9000",[1374,5510,5511,5514],{},[1393,5512,5513],{},"會話持續時間",[1393,5515,5516,5517,5520],{},"默認 ",[21,5518,5519],{},"12h"," 即可",[1374,5522,5523,5526],{},[1393,5524,5525],{},"啟用 WebUI",[1393,5527,5528],{},"開",[1374,5530,5531,5534],{},[1393,5532,5533],{},"WebUI 動畫",[1393,5535,5536],{},"隨意",[1374,5538,5539,5542],{},[1393,5540,5541],{},"端口外部訪問",[1393,5543,5544],{},[403,5545,5546],{},"建議不開公網暴露,但如果測試的話,先開公網暴露也可以.",[14,5548,5549],{},"最後點擊安裝.",[14,5551,5552],{},[432,5553],{"alt":31,"src":5554},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787146064891-460b603b.webp",[397,5556,5558],{"id":5557},"配置minio","配置MinIO",[2565,5560,5562],{"id":5561},"登陸minio","登陸MinIO",[14,5564,5565,5566,5569],{},"在瀏覽器輸入",[21,5567,5568],{},"服务器ip:9001",":",[14,5571,5572,5573],{},"比如我這個內網",[21,5574,5575],{},"10.0.0.4:9001",[14,5577,5578],{},[432,5579],{"alt":31,"src":5580},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147091527-f99d5032.webp",[14,5582,5583],{},"然後登陸賬號密碼.",[2565,5585,5586],{"id":5586},"測試桶",[14,5588,5589,5590],{},"創建一個桶,比如我這裡叫",[21,5591,4970],{},[14,5593,5594],{},[432,5595],{"alt":31,"src":5596},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147218585-a9d82f0b.webp",[14,5598,5599],{},"再隨便上傳一張圖片試試.",[14,5601,5602],{},[432,5603],{"alt":31,"src":5604},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147308943-431e0c9c.webp",[14,5606,5607],{},[432,5608],{"alt":31,"src":5609},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147318544-4cd5e37f.webp",[14,5611,5612],{},[432,5613],{"alt":31,"src":5614},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147349844-1421edc4.webp",[2565,5616,5618],{"id":5617},"測試s3協議","測試S3協議",[14,5620,5621,5622,5569],{},"S3協議的網址應該是",[21,5623,5624],{},"服务器ip:9000",[14,5626,5572,5627],{},[21,5628,5629],{},"10.0.0.4:9000",[14,5631,5632],{},"在你電腦上測試 S3 API 健康狀態：",[26,5634,5636],{"className":580,"code":5635,"language":582,"meta":31,"style":31},"curl -i http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Flive\n",[21,5637,5638],{"__ignoreMap":31},[35,5639,5640,5642,5644],{"class":37,"line":38},[35,5641,4752],{"class":589},[35,5643,4755],{"class":58},[35,5645,5646],{"class":89}," http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Flive\n",[14,5648,4761,5649,4765],{},[21,5650,4764],{},[14,5652,5653],{},[432,5654],{"alt":31,"src":5655},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147506873-538da12a.webp",[14,5657,5658],{},"同樣，測試下面這個是否S3就緒：",[26,5660,5662],{"className":580,"code":5661,"language":582,"meta":31,"style":31},"curl -i http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Fready\n",[21,5663,5664],{"__ignoreMap":31},[35,5665,5666,5668,5670],{"class":37,"line":38},[35,5667,4752],{"class":589},[35,5669,4755],{"class":58},[35,5671,5672],{"class":89}," http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Fready\n",[14,5674,4761,5675,4765],{},[21,5676,4764],{},[14,5678,5679],{},[432,5680],{"alt":31,"src":5681},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147577638-0f060165.webp",[2565,5683,5685],{"id":5684},"接入alist測試","接入AList測試",[14,5687,5688],{},[432,5689],{"alt":31,"src":5690},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787148971335-5ead1508.webp",[14,5692,5693],{},[432,5694],{"alt":31,"src":5695},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787149002738-17bac9d7.webp",[14,5697,5698],{},"這個一定要開著。",[14,5700,5701],{},[432,5702],{"alt":31,"src":5703},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787149013096-2f2eba16.webp",[14,5705,5706],{},"配置完後，可以返回文件列表，發現剛才的文件可以被正常查看了。",[14,5708,5709],{},[432,5710],{"alt":31,"src":5711},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787149035102-0dba3465.webp",[5713,5714,5715],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":31,"searchDepth":49,"depth":49,"links":5717},[5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728],{"id":12,"depth":65,"text":12},{"id":394,"depth":65,"text":395},{"id":891,"depth":65,"text":891},{"id":1135,"depth":65,"text":1136},{"id":2208,"depth":65,"text":2209},{"id":2227,"depth":65,"text":2228},{"id":2231,"depth":65,"text":2231},{"id":2555,"depth":65,"text":2556},{"id":3186,"depth":65,"text":3187},{"id":4630,"depth":65,"text":4631},{"id":5216,"depth":65,"text":5217},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo",0,"0900","2024-03-30","wiki\u002F2024-03-30-linux-jiao-cheng","zh-tw:2024-03-30-linux-jiao-cheng","\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng","Linux教程","md","wiki\u002F2024-03-30-Linux教程\u002F0900-其他操作",false,null,"zh-TW","zh-tw",{},{"title":5,"description":31},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0900-其他操作","B9FBBT0BiXrEIELtw1rbImv7yEl6cxeaIt8RapexX6o",[5749,5754,5759,5764,5769,5774,5779,5784,5789,5790],{"path":5750,"stem":5751,"title":5752,"date":5732,"chapterOrder":5753,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0100-fa-xing-ban-tui-jian","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0100-发行版推荐","發行版推薦","0100",{"path":5755,"stem":5756,"title":5757,"date":5732,"chapterOrder":5758,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0200-linux-zhuang-ji-jiao-cheng","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0200-Linux装机教程","Linux裝機教程","0200",{"path":5760,"stem":5761,"title":5762,"date":5732,"chapterOrder":5763,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0300-an-zhuang-bi-bei-pei-zhi","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0300-安装必备配置","安裝必備配置","0300",{"path":5765,"stem":5766,"title":5767,"date":5732,"chapterOrder":5768,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0400-ming-ling-jiao-cheng-chang-qi-ji-lei","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0400-命令教程(长期积累)","命令教程(長期積累)","0400",{"path":5770,"stem":5771,"title":5772,"date":5732,"chapterOrder":5773,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0500-ge-zhong-huan-jing-pei-zhi","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0500-各种环境配置","各種環境配置","0500",{"path":5775,"stem":5776,"title":5777,"date":5732,"chapterOrder":5778,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0600-qi-ta-ke-xuan-pei-zhi","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0600-其他可选配置","其他可選配置","0600",{"path":5780,"stem":5781,"title":5782,"date":5732,"chapterOrder":5783,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0700-qemu-kvm-xu-ni-ji","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0700-QEMU-KVM虚拟机","QEMU-KVM虛擬機","0700",{"path":5785,"stem":5786,"title":5787,"date":5732,"chapterOrder":5788,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0800-tuo-zhan-gong-neng","_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002F0800-拓展功能","拓展功能","0800",{"path":5729,"stem":5746,"title":5,"date":5732,"chapterOrder":5731,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":5739},{"path":5735,"stem":5791,"title":5736,"date":5732,"chapterOrder":5740,"chapterDepth":5730,"docKey":5734,"docRoot":5735,"docTitle":5736,"isWikiDoc":1151,"isWikiIndex":1151},"_i18n\u002Fzh-tw\u002Fwiki\u002F2024-03-30-Linux教程\u002Findex",{"variants":5793},[5794,5797,5800,5803,5804],{"path":5795,"localeSlug":5796,"i18nKey":5738},"\u002Fen-us\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","en-us",{"path":5798,"localeSlug":5799,"i18nKey":5738},"\u002Fzh-hant\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-hant",{"path":5801,"localeSlug":5802,"i18nKey":5738},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-hk",{"path":5729,"localeSlug":5742,"i18nKey":5738},{"path":5805,"localeSlug":5806,"i18nKey":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-cn",[5795,5745,5798,5745,5801,5745,5729,5745,5805,5745],1788531310958]