2021年5月23日,Qnap NAS 中使用docker-compose实现WordPress和Nginx Proxy Manager反向代理

起因,以前已经在Qnap NAS上安装Wordpress以及数据库开始了个人的家庭主页,成功后端口号不是80端口所以在通过域名访问必须在后面加上端口号,非常麻烦。因此想是否能够有什么能够实现不加端口访问个人域名的方法(前提条件是80,443端口可以访问,香港没有禁止)。经过查阅资料和几天的折腾终于实现,从docker安装Nginx失败到docker-compose的易于部署,网上可能一些高手觉得非常简单的东西基本一笔带过,这里作为小白希望能够记录下每一步及关键点给大家参考。

家里的NAS是威联通的TS-453B,通过在上面通过docker部署frps服务器已经实现了香港和内地的frpc内网穿透,于是想着如何也能实现直接域名访问,决定docker-compose部署和使用Nginx的反向代理功能。

第一步,提前申请好域名并准备必要的工具软件。由于NAS一般是Linux操作系统,而docker-compose使用命令行方式容易操作一点,因此需要SecureCRT(Windows下支持SSH(SSH1和SSH2)的终端仿真程序) 和winSCP(Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端)。当然也可以使用其它的相同功能的软件。

第二步,下载并编辑可用的YAML文件来创建docker-compose.我使用Nginx proxy manager 和 WordPress的YAML 文件内容如下:

Nginx的YAML文件

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    restart: always
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  db:
    image: 'jc21/mariadb-aria:latest'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'xxx'
      MYSQL_DATABASE: 'xxx'
      MYSQL_USER: 'xxx'
      MYSQL_PASSWORD: 'xxx'
    volumes:
      - ./data/mysql:/var/lib/mysql

WordPress的YAML文件

services:
   db:
     image: mysql:5.7
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: xxxxxx
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: xxxxxx
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: xxxxxx
       WORDPRESS_DB_NAME: wordpress

volumes:
  db_data: {} 

YAML 是专门用来写配置文件的语言,非常简洁和强大。不是很懂,只是按照网上的文件稍作修改。文件中的xxx及xxxxxx可以更换成你自己的用户名及密码。

第三步,通过winSCP将这两个文件上传至NAS上指定的不同目录中,注意最好为每一个docker-compose建一个目录,避免目录混乱,修改文件名称为docker-compose.yml(这是默认的文件名称,当然也使用其它名称也行,但部署时就需要特别指明),权限按照下图设置就可以了

第四步,用SecureCRT去SSH到NAS中的指定目录中,可以看到上传的docker-compose.yml,确认后输入命令docker-compose up -d部署服务,如下图

正常情况下Nginx Proxy Manager服务就部署成功了,在浏览器中输入http://nas的IP地址应该就可以看到一个默认的页面,说明安装成功了

网页中有Nginx Proxy Manager的链接,想深入学习的可以去看看。

在NAS上也可以看到运行情况以及通过命令docker container ls查看运行状态

第五步,按照上面步骤部署wordpress。这里重点来了,安装后不要用浏览器进行配置,要先在开始安装好的Nginx Proxy Manager( http://nas的IP地址:81)先配置好后在进行配置。

完成上面的配置后,然后就可以设置wordpress, 就可以不加端口号使用Nginx Proxy Manager反向代理实现域名访问个人主页。

最后,Nginx Proxy Manager反向代理功能强大,你可以代理所有的服务器访问,包括Nginx Proxy Manager服务自身。

后记,解决一个困扰了许久的问题,就是Docker Console不显示日志和GUI不能正常显示的问题,最终在Custom Locations中设置成功

Share

You may also like...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注