ubuntu 21 服務器 安装nginx

哈嘍我是不多BB的未命名

上個視頻說了怎麼買雲服務器

這期視頻教大家在雲服務器上

搭建一個內網穿透服務

最主要的效果就是讓家裡沒有

公網ip的朋友

也能隨時隨地的訪問家裡的NAS

路由器以及等等其他項目

內網穿透的方案

其實市面上不少

那為什麼要自建

這個問題不是三言兩語能說清的

有機會單獨再談

內網穿透開源的方案有好幾個

這期視頻

我們介紹frp 因為它更接地氣一點

就像域名解析

無論你選哪個公司其實都差不多

但花生殼絕對是最接地氣的那一個

frp也同理

你的路由器要是能裝插件

那很有可能就有frp的插件

但其他內網穿透方案就不見得了

我先快速介紹一下基礎原理

有了基礎邏輯在看後面的視頻

可能就沒有那麼困惑了

否則一臉懵逼以後出了問題

沒有判斷和解決的能力

關於互聯網上兩台機器交互的問題

我做個類比

有公網ip代表站在明處

沒公網ip代表站在暗處

兩台設備要交互

要么大家都在明處

互相看得見

要么一台在明處

一台在暗處

由暗處的設備主動聯繫明處的設備

當連接通道建立起來後

雙方就能互相交互了

如果兩台設備都在暗處

那麼互相看不見

也就沒法直接交互

要解決這個問題

必須有一個站在明處的第三方

由明處的第三方給兩台暗處的設備牽手

這樣就能實現兩台暗處的設備互相交互了

現在說frp項目的原理

這個項目分為兩部分

frps和frpc

s指server服務端的意思

c指client的客戶端的意思

服務端需要站在明處

所以frps我們把它部署在雲服務器上

因為雲服務器一般都是獨立公網ip

所以實際上

只要任意一個有公網ip的設備都可以

用來部署frps

因為有供網ip就等於站在明處

frpc作為客戶端一般部署

在沒有公網ip的設備上

實際運用情況

雲服務器部署frps

nas部署客戶端frpc

然後沒有公網ip的nas通過frp

和站在明處的服務器建立了連接通道

以後

其他設備無論你是在明處還是暗處

只要和站在明處的服務器通信

服務器就能做一個第三方幫你們牽手

用戶

訪問有公網ip的frps服務端

fps服務端再把請求轉發給

安裝了frpc的客戶端

最終就實現了任意用戶

訪問沒有公網ip的設備

金山雲的服務器

我提幾個注意事項

首先服務器關機可以重新設置

root用戶密碼

其次是拿到新服務器後

硬盤默認只有20G

你選擇重新安裝系統

可以手動的把硬盤改成50G

服務器第一次啟動後順手複製一下

服務器的公網ip

然後去防火牆設置裡

把常用的80、443、22端口開放一下

80是http的端口

443是https的端口

22是ssh的端口

然後打開ssh工具

新建一個連接名字隨便起

主機把服務器ip粘貼進來

用戶名

root密碼

輸入你設置的

然後點確定就可以

我之前已經連接過了

所以不添加新連接了

然後到github項目頁面

把這個項目下載下來

這裡我選擇linux_amd64

amd64其實就是x86

解壓後看一下里面的文件

frpc和frps其實

都在這個文件夾裡

你運行frps就運行了服務端

你運行frpc就運行了客戶端

後退把文件夾名改一下

然後整個文件夾上傳到root目錄

如果你是一個linux新手

那麼我建議完全照著我這麼來

因為linux是區分大小寫的

你如果全程和我一樣

最後我把我用到的所有腳本和設置好的

配置文檔會放個視頻下方

你下載好就能直接使用

frp的程序上傳到服務器後

我們需要修改一下frps.ini

這個配置文檔

因為我們的服務器需要運行

frp的服務端

所以服務端的運行配置

我們得手動修改一下

怎麼配看一下官方文檔

其實最簡約的配置就只有默認的這一行

指定一個7000端口

但可選配置

我推薦幾個

一是token

設置一個連接認證

密碼不需要自己能記住

因為是一次性的設置

所以越複雜越好

二是配置一下內網穿透

相關數據的展示頁面

數據展示頁面默認的端口是7500

密碼一定要改一下

不然端口讓掃出來這個初始密碼

肯定是保不住的

改好後

一定要主動點保存

不然退出去就全沒了

改好後接著看文檔

第一步操作完

第二步啟動frps

.代表的是當前目錄

當前目錄指的就是frps所在的文件夾

所以我們用cd命令先定位到

frps的上級目錄

然後執行官網的啟動命令

提示權限不足

我們右鍵賦一下權限

然後重新執行

現在服務端就啟動成功了

但這是一個前台運行的模式

我們再把它設置成開機自動後台運行

ctrl+c 結束現在的進程

否則沒法輸入新命令

先執行第一行命令

這是一個給linux系統添加

開機啟動設置的命令

按字母i 進入插入模式

然後把啟動規則粘貼進來

按esc 退出插入模式

輸入命令:wq 保存並退出

開機規則添加好後把規則應用一下

至此

開機啟動就設置好了

輸入reboot 命令

重啟服務器

等待重啟的時候

到金山雲防火牆裡

把服務端剛才設置的幾個端口開放一下

建議新建一個frp的安全組

以後所有和frp相關的端口都

設置到這個分組裡

這樣隨著服務器裝的東西越來越多

我們的端口管理才不會混亂

新建了安全組以後

千萬要記住

還得把需要應用這個安全組的

服務器添加進來

到此全部和服務器相關的設置就都搞定了

現在開始搞NAS上的客戶端frpc

我先介紹一下這台nas的情況

因為我家裡是有公網ip的

所以為了模擬出沒公網ip的環境

視頻裡這個nas是

我虛擬機搭建的

在有公網ip的環境下

我設置一個端口轉發就能實現

外網訪問虛擬機的需求

但我為了模擬沒外網

所以路由器並沒有設置端口轉發

因此這台虛擬機搭建的NAS 是徹徹底底

屬於暗處的一台設備

下面我們進入正題

先在NAS上創建一個文件夾

用來存放frpc的配置文檔

之後配置文件

我們要和docker項目做掛載

frpc的配置模板

官方文檔裡也有範例

這裡需要注意一下官方的範例

type是http

但我建議大家使用tcp

並且在tcp模式下最後一行的自定義域

也可以直接刪掉

但我錄視頻的時候忘記刪了

雖然它不影響使用

服務器地址寫你frps的公網ip地址

因為我綁定了域名

所以寫域名

服務器端口寫frps裡

設置的端口默認是7000

token連接認證也是

frps裡設置的兩邊必須一樣

這部分是具體的應用設置

其實frp這個項目也是反向代理的原理

本地ip可以寫127.0.0.1

也可以直接寫內網ip

甚至你還能寫內網

其他設備的ip 一樣可以生效

內網端口我寫5001

這是dsm默認的https端口

因為我打算內網穿透後就直接用

域名走https訪問

遠程端口的服務器端口我寫443

這樣我通過域名加443端口

就等於訪問了虛擬機nas的5001

由於443是隱藏端口

訪問的時候可以不輸入

所以就實現了端口隱藏

最後一行直接刪掉

原因不重複了

當客戶端frpc配置文檔設置好後

我們開始設置客戶端程序

打開docker註冊表

搜frp

下載frpc這個項目

千萬別下載成frps

到映像裡等下載完成

雙擊開始ubuntu 21 vps 安裝 Nginx

名字隨便起個能分辨的

卷這裡把剛才修改的配置文檔掛載一下

裝載路徑照著我填

其餘不用動

直接下一步應用

frpc一定要確認一下

是否啟動成功了

因為frpc如果連接不上frps

或者有一些其他狀況

那麼frpc啟動後的

幾秒鐘就會自動關閉

所以這個時候排查問題就得靠日誌文件

比如最新的日誌

顯示代理成功開啟

說明frpc目前是正常運行狀態

比如我前面有一條錯誤日誌

顯示7000端口連接超時

那麼你就可以根據這個提示來排查問題了

7000端口既然超時

那就去檢查一下服務器7000

端口是不有問題

我當時之所以有這條錯誤

是因為7000端口忘記在

金山雲平台開放了

現在來試一下效果

輸入域名

提示不安全

我們域名的證書在群暉裡應用一下

如果不會上傳證書

視頻下方有我新手教學

刷新頁面

此時已經成功訪問虛擬機搭建的NAS了

能遠程訪問nas

只是我們最基本的需求

接下來教你怎麼訪問nas上的其他項目

以jellyfin為例

因為這個例子很經典

可以看到jellyfin

默認的地址是http的

如果我們用域名訪問

瀏覽器會強制走https

而這個項目它又不支持https

所以就導致無法遠程用域名訪問

所以這是一個核心問題

如果不解決nas上大量的http

項目你都沒法用

打開反向代理新增

描述起個能分辨的

這裡我把配置文檔打開

對著跟你講

新增一個配置

括號裡的配置名可以隨便寫

但一定不能重複

遠程端口443已經給了dsm用了

這裡我改成8096

本地端口5001改成8099

8099你可以隨便捏

只要沒被佔用就行

反向代理這邊協議選https

因為咱們要用https訪問

主機名寫localhost 本機的意思

端口寫8099

目的地協議選http

主機名還是localhost 指向自己

端口8096

這裡有點繞容易反應不過來

如果搞不懂視頻下方有我專門

講解反向代理的視頻

可以去學習一下

因為反向代理是玩NAS重點中的重點

搞不懂吃虧的地方非常多

現在把frpc上剛

設置的8096端口

在雲服務器平台上做個開放

差點忘了重啟docker

每次修改完frpc的

配置文檔都得去重啟

否則不生效

現在試試效果

又提示不安全

解決辦法和之前一樣

還是把證書設置一下

為什麼剛才設置證書的時候

沒有jellyfin的選項

因為jellyfin默認是http的網站

並不需要證書

只有你啟用了反向代理之後(轉換成https後)

才會出現設置證書的選項

此時刷新一下頁面

已經能成功訪問jellyfin與應用證書了

這裡有點慢

應該是因為虛擬機搭建的NAS

性能太弱

反向代理把http轉成https太慢導致的

最後一個大問題

登錄群暉手機應用

我們前頭為了用域名訪問dsm

已經把443映射給5001了

但是現在用域名登錄手機應用

你會發現沒法登錄

這是因為群暉手機app

要求你服務器地址必須是

域名:端口的形式

咱們把端口隱藏了之後

就沒法登錄手機app了

打開frpc配置文檔

新建一段配置

把服務器的5001也映射給5001

這樣服務器的443是nas的5001

服務器的5001同樣是nas的5001

然後慣例金山雲平台開放一下5001端口

nas上的docker重啟一下

回到手機app

服務器地址加上5001端口

再點登錄

此時成功進入文件管理

還有一個數據展示頁面

輸入服務器ip:7500 即可訪問

這個頁面即便你服務器綁定了域名

也沒法用域名:端口號訪問

因為用域名訪問瀏覽器就會走https

然後就會有證書問題

畢竟我們現在是nas上有證書

但服務器上沒證書

這個問題解決是可以解決

但時長關係這裡跳過

因為這個頁面也真不見得常用

最後p2p直通模式

官方說成功率低我也沒搞成功

所以不確定是軟件的問題

還是我自己的問題

這裡我簡單把我的理解說一下

如果有朋友願意嘗試

又看不懂官方文檔

或許對你有幫助

p2p直通模式最大的區別

在於想直通的兩個設備必須

都運行frpc

並且這兩個設備還區分誰是訪問者

所以這個模式我覺得要么

是有多套房子大佬

要么是在辦公室等固定地點可以用用

否則毫無便捷性可言

第一步在frps服務端增加7001端口

雲平台順便也開放一下7100端口

不過需要注意的是7100端口

是udp的協議

之前我們設置的端口都是tcp的協議

nas上複製這一段配置文檔

括號裡的名字我改成p2p

sk也是一個連接認證

因為直通模式端口是永久性對外

所有人開放的

所以設置一個sk驗證機制

保障安全

本地端口我改成5299

這是一個第三方百度雲的docker項目

另一台設備也要啟動frpc

我這裡用我的電腦

啟動一個windows版的frpc客戶端

配置文檔主要得注意

①角色設置成訪問者

②xtcp代理的名字別寫錯了

nas上配置文檔裡寫的p2p

所以服務名字這裡也寫p2p

綁定的ip寫我電腦的ip

綁定的端口隨便寫個沒佔用的

然後啟動電腦上的frpc客戶端

exe文件無法直接運行

這就啟動成功了

最後重啟nas上的frpc客戶端

重啟frps服務端

然後瀏覽器輸入

本機ip:5299

就等於訪問了直通模式下

另一台設備的5299端口

因為我沒有成功

所以不演示了

如果是我用法的問題

歡迎有經驗的朋友留言斧正

最後排坑指南

如果你路由器或軟路由上有frp的插件

那麼也可以通過路由器運行frpc

需要注意的是①留意版本號

比如我這個還是0.20的版本

而我們剛才安裝的已經是0.33了

版本差距太大

已經導致沒法使用了

②簡單設置

我在網上看到很多人反映沒法使用

所以建議使用自定義設置

把frpc.ini 裡的配置文檔

粘貼進來即可

好了

本期內容就全部結束了

求各種姿勢的支持

這個視頻做的真心太累了

我們下期再見吧