内网搭建nextcloud,通过外网端口转发访问

Posted relax1949

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内网搭建nextcloud,通过外网端口转发访问相关的知识,希望对你有一定的参考价值。

 

 

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

使用环境:

  • 物理主机:ubuntu
  • docker
  • 一台能访问的vps

[ 注意:以下所有主机均关闭防火墙操作,如需开启防火墙操作,请先配置防火墙策略 ]

 

 

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

 

4、在浏览器中打开nextcloud,  http://127.0.0.1:3380

技术图片

 

  [ 我们选择mariadb作为存储的数据库,那么下面就先开始安装并创建该数据库 ]

 

5、进入docker容器,配置数据库

# docker exec -it nextcloud /bin/bash

//安装mariadb数据库

# apt install vim mariadb-server

安装完数据库之后,由于没有密码,登录不进数据库;接下来修改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)]> use mysql;

MariaDB [mysql]> create database nextcloud_db;

MariaDB [mysql]> grant all on nextcloud_db.* to ‘nextcloud‘@‘%‘ identified by ‘nextcloud‘;           //授予用户nextcloud在nextcloud_db数据库中所有权限,并设置用户nextcloud密码为"nextcloud",注意:%为任意地方都可以登录,如只需本地登录,则%替换为127.0.0.1

MariaDB [mysql]> flush privileges;

MariaDB [mysql]> 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的ip访问内网的nextcloud          http://vps_ip:9988

然后发现并不能打开,因为需要修改trusted_domians,参照第7步,把vps的ip和端口加进去即可。

 

[ 大功告成 ]

 

以上是关于内网搭建nextcloud,通过外网端口转发访问的主要内容,如果未能解决你的问题,请参考以下文章

医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网

搭建nginx反向代理用做内网域名转发

医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网

内网IP路由器怎么端口映射到外网

如何从外网访问虚拟机中web服务器

如何根据访问的域名来进行内网IP地址与端口的转发