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中设置成功



