內網搭建nextcloud,通過vps的端口轉發進行訪問


 

 

---------使用docker搭建nextcloud---------

使用環境:

  • 物理主機:ubuntu
  • docker
  • 一台能訪問的vps
  • 如需要使用https,參考這里:https://certbot.eff.org/lets-encrypt/debianbuster-apache

[ 注意:以下所有主機均關閉防火牆操作,如需開啟防火牆操作,請先配置防火牆策略 ]

 

 

1、docker搜索nextcloud

# docker search nextcloud

   

2、下載nextcloud

# docker pull nextcloud

 

3、運行nextcloud,將主機的3380端口映射到docker容器中的80端口。

# docker run -d --name nextcloud --hostname="nextcloud" -p 3380:80 nextcloud

 

[ 溫馨提示:可以映射文件夾到物理機,便於操作,參考命令   docker run -d --hostname="nextcloud" --name="nextcloud" -v /home/anonymous/docker/nextcloud/root:/root -v /home/anonymous/docker/nextcloud/data:/var/www/html/data -p 62080:80 -p 62443:443 -p 62036:3306 nextcloud ]

 

4、在瀏覽器中打開nextcloud,  http://127.0.0.1:3380

 

  [ 我們選擇mariadb作為存儲的數據庫,那么下面就先開始安裝並創建該數據庫 ]

 

5、進入docker容器,配置數據庫

# docker exec -it nextcloud /bin/bash

//安裝mariadb數據庫

# apt update

# apt install vim mariadb-server

如果能直接進入數據庫,則直接修改密碼即可,不需要再進行下列-----------------框住的設置

# /etc/init.d/mysql start       //啟動數據庫

# mysql -u root 

MariaDB [(none)]> use mysql;

MariaDB [mysql]> alter user 'root'@'localhost' identified by '123456';

----------------------------------------------------------------------------------------------------------

安裝完數據庫之后,由於沒有密碼,登錄不進數據庫;接下來修改mariadb的root密碼

# /etc/init.d/mysql stop        //先停止mysql

# mysqld_safe --skip-grant-tables &      //注意, & 意思是在背景運行,如果不加& ,那么可以再打開一個終端運行下面的命令

# mysql -u root      //不加 -p 可以直接進入到mysql數據庫,再使用下面的命令修改密碼

 

// 連接到數據庫中,設置數據庫用戶root的新密碼

MariaDB [(none)]> use mysql;

MariaDB [mysql]> update user set password=password("123456") where User='root';          //舉例,密碼設置為123456

------------------------------------------------------------------------------------------------------------------------------

MariaDB [mysql]> flush privileges;
MariaDB [mysql]> quit;

// 重啟后,即可登錄數據庫:

# /etc/init.d/mysql restart
# mysql -uroot -p

然后輸入密碼即可進入到數據庫中:

 

// 為nextcloud創建數據庫:

MariaDB [(none)]> create database nextcloud_db;

MariaDB [(none)]> grant all on nextcloud_db.* to 'nextcloud'@'%' identified by 'nextcloud';           //授予用戶nextcloud在nextcloud_db數據庫所有表的所有權限,並設置用戶nextcloud密碼為"nextcloud",注意:%為任意地方都可以登錄,如只需本地登錄,則%替換為127.0.0.1

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> quit;

[ 以上創建了數據庫名:nextcloud_db     用戶:nextcloud     密碼:nextcloud ]

 

6、創建nextcloud帳號,並填寫以上所創建的數據庫相關的信息。

 

7、安裝nextcloud完成。

注意:默認只允許本機訪問nextcloud,即使用 http://127.0.0.1:3380 地址訪問,假如主機的ip地址為:192.168.1.2,那么想在外部(如同網段的手機)使用192這個地址是不能訪問nextcloud的,需要在docker中的nextcloud進行配置,

在trusted_domians處增加一欄即可:

1 => '192.168.1.2:3380' ,

 # vim /var/www/html/config/config.php  

  

在外部(如同一網段中的手機或者其他電腦)使用使用地址  http://192.168.1.2:3380    也可以訪問。

  

接下來,我們使用vps端口轉發功能,通過vps的ip及轉發的端口訪問內網的nextcloud

8、使用ssh反向隧道

在物理主機(不是docker中的nextcloud)中運行命令,前提是物理主機要預先安裝有openssh-server。

ssh -fNR 9988:localhost:3380 root@vps_ip

// 參數說明    -f 為背景運行      N為不打開命令行界面       R為使用反向隧道

// 9988為本地物理機的外網訪問端口,用於與vps通信

// localhost:3380   為物理機的3380端口

// 整條命令的意思是:vps通過訪問9988端口,由於端口轉發,所以9988端口流量轉發到3380端口,再由於3380端口被映射到dockder中的80端口。總的來說,通過vps的9988端口可以直接訪問到docker中nextcloud的80端口。

 

9、在vps主機上開啟端口轉發功能

編輯 /etc/ssh/sshd_config

去掉注釋,並把 no 改為 yes,這一步很關鍵,沒有開啟端口轉發,訪問網頁會提示拒絕訪問。

  

10、使用vps的ip訪問內網的nextcloud          http://vps_ip:9988

然后發現並不能打開,因為需要修改trusted_domians,參照第7步,把vps的ip和端口加進去即可。

 

[ 大功告成 ]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM