Table of Contents
需求
需要用 Tecent Cloud Server, Local Server, 域名实现:
- WordPress
- Overleaf
- Git Server
- SSH 域名连接
部署准备工作
注意持久化存储!!!
Tecent Cloud Server
- Docker + Docker-Compose
- 利用 docker-compose 部署 Nginx Proxy Manager
-
创建 nginx-proxy-manager 文件夹
mkdir ~/nginx-proxy-manager cd ~/nginx-proxy-manager vim docker-compose.yml
-
配置 docker-compose.yml
version: "3" services: nginx_manager: # network_mode: web image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '443:443' - '81:81' 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 depends_on: - db db: # network_mode: web image: 'jc21/mariadb-aria:latest' restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' volumes: - ./data/mysql:/var/lib/mysql
-
启动服务
docker-compose up -d
- 打开 UI 界面 ${IP}:81 (注意此时需要将 81 添加到腾讯云防火墙策略,后面删除)
-
Add Proxy Host : 将提前设置的二级域名解析 nginx.xxx.xx(nginx.mingzailao.live)映射到http://nginx_proxy_manager_nginx_manager_1 (端口 81)
- 配置 ssh 证书(可以自动申请 Let's Encrypt 证书也可以用 custom Tencent Cloud 证书)
- 添加 Save
- 这样就可以通过访问 https://nginx.xxx.xx (https://nginx.mingzailao.live) 访问刚才的界面. 将 81 端口从防火墙策略中删除.
-
-
- 利用 docker-compose 部署 frp-server
-
创建 frps 文件夹
mkdir frps cd frps vim docker-compose.yml
-
配置 docker-compose.yml
version: '3.3' services: frps: restart: always volumes: - './frps.ini:/etc/frp/frps.ini' container_name: frps ports: - 5443:5443 # 这里可以多暴露一些端口出来,当然这些端口都需要在Tencent Cloud 防火墙中设置一下 - 6000:6000 image: snowdreamtech/frps # 将网络设置为nginx_proxy_manager_default networks: default: external: name: nginx_proxy_manager_default
-
配置文件 frps.ini
[common] # 5443 监听端口需要暴露出来 bind_port= 5443 kcp_bind_port = 5443 dashboard_user= xxxxxxxxxxxxxxxxxxxx dashboard_pwd= xxxxxxxxxxxxxxxxxxxx # 这里的9527 是UI 端口不需要暴露出来,由于和Nginx Proxy Manager 在同一个网络下,可以直接用容器名访问 dashboard_port=9527 # 这里的token 和frp-client 对应就好,可以尽量设置复杂一些 token = xxxxxxxxxxxxxxxxxxxx
-
启动服务
docker-compose up -d
-
Local Server
- Docker + Docker-Compose
- 利用 docker-compose 部署 frp-client
-
创建 frpc 文件夹
mkdir ~/frpc cd ~/frpc vim docker-compose.yml
-
配置 docker-compose.yml
version: '3.3' services: frpc: restart: always network_mode: host volumes: - './frpc.ini:/etc/frp/frpc.ini' container_name: frpc image: snowdreamtech/frpc
-
配置文件 frpc.ini
# frpc.ini [common] server_addr = xx.xx.xx.xx # Cloud Server IP server_port = 5443 # 之前暴露出来的5443 端口 token = xxxxxxxxxxxxxxxxxxxx # 之前frp-server 设置的token # 若果需要管理多个ssh ,[ssh] 需要改为[ssh2],[ssh3]...,对应的端口不要冲突即可 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 # 这个服务的端口 remote_port = 6000 # 这个可以随意设置,只要不冲突就可以 [overleaf] type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 20080 # overleaf 是一个UI 的形式,我们直接将这个端口在内部传给nginx proxy manager 即可 和9527 端口不暴露同理. 不用在frps 服务中暴露这个端口.
-
启动服务
docker-compose up -d
-
方案
WordPress
部署在 Tencent Cloud Server 上
Cloud Server
-
创建 blog 文件夹
mkdir ~/blog cd ~/blog vim docker-compose.yml
-
配置 docker-compose.yml
version: '3' services: wpdatabase: image: mysql:latest volumes: - ./db_data:/var/lib/mysql - ./db/mysql.cnf:/etc/my.cnf restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: xxxxxxxxxxxxxxxxxxxx # 注意和下面保持一致 wordpress: #network_mode: web depends_on: - wpdatabase image: wordpress:latest volumes: - ./wordpress_data:/var/www/html restart: always ports: - 10080:80 environment: WORDPRESS_DB_HOST: wpdatabase:3306 WORDPRESS_DB_USER: wordpress # 上面配置的mysql用户 WORDPRESS_DB_PASSWORD: xxxxxxxxxxxxxxxxxxxx networks: default: external: name: nginx_proxy_manager_default
-
启动服务
docker-compose up -d
- Add Proxy Host (打开 https://nginx.mingzailao.live )
-
将提前设置的域名解析 xxx.xx(mingzailao.live)映射到http://blog_wordpress_1 (端口 80)
-
配置 ssh 证书(可以自动申请 Let's Encrypt 证书也可以用 custom Tencent Cloud 证书)
- 添加 Save
-
Overleaf
Overleaf 相对的复杂一些,主要涉及到 frp 端口转发. 实际上就是 Cloud server 监听 Local server
在 Local Server 部署 overleaf 参见:
https://github.com/overleaf/toolkit/blob/master/doc/quick-start-guide.md
注意部署完升级下 texlive
https://github.com/overleaf/toolkit/blob/master/doc/ce-upgrading-texlive.md
这里 overleaf 的端口设置可以随意设置, 然后记得在本立的 frp-client 添加服务.也就是上面的 frpc.ini 中写过的 overleaf 服务.
[overleaf] type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 20080 # overleaf 是一个UI 的形式,我们直接将这个端口在内部传给nginx proxy manager 即可 和9527 端口不暴露同理. 不用在frps 服务中暴露这个端口.
通过二级域名的方式将 Cloud server 中的 9527 也可以分配给 frp.mingzailao.live(frp.xx.xx). 这样可以直接打开 https://frp.mingzailao.live 查看
然后通过二级域名的方式将 overleaf.mingzailao.live 分配给 frpc.ini 中的 remote_port 端口,此时的 container 名称 用frps 即可.