用户工具

站点工具


使用docker配置vps

这是本文档旧的修订版!


使用 Docker 配置 VPS

今天我正式把自己的网页使用 Docker 来管理配置。并且,把域名里的子目录全部改成了二级域名的格式,因为用同一套 Nginx 给不同的子目录做配置实在是太麻烦了,不如通过二级域名反代到不同的本地服务上,更加清晰、优雅。 — 刘丰 2024/08/13 09:47

服务器配置

我在一台Linode新的VPS实例上进行操作实验,测试成功后在目前部署在腾讯云的服务器上面进行了配置。两者的操作系统都是 Debian 12(测试过 Ubuntu 24.04 出过问题),登录后先更新系统,创建普通用户。

如果需要配置服务器时区,可以使用这里的命令。

安装 Docker

Docker 在软件仓库有多个版本,我最终选择了官网上的安装方式

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
 
# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

配置 Nginx Proxy Manager

Nginx Proxy Manager(NPM)是一个通过 web 前端进行 Nginx 配置的工具,我这次刚刚知道。有了它就不需要自己编写 Nginx 的配置文件了,这还不算厉害,它可以自动配置 Let's Encrypt 的加密证书就让我很震惊了。因为我之前几次配置失败,很多就是 SSL 配置不好的原因。

这篇文章写得非常详细,我就是按照里面的方法进行安装的。

首先创建服务的配置文件夹:

mkdir -p ~/docker/npm

在这个文件夹里面创建 Docker Compose 配置文件:

services:
  app:
    image: 'chishin/nginx-proxy-manager-zh:release'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    # network_mode: "host"

我是用的汉化的版本,因此镜像名称与官方网站上的不一样。据网站上说:中文镜像并没有重新构建后端代码,由Dockerfile-zh文件可以得知,中文镜像基于官方镜像替换前端代码来实现的,所以中文版本的全部功能与官方版本完全相同,只是显示界面的文字不同的区别。

最后在同一文件夹中启动服务:

sudo docker compose up -d

正常情况下,访问 http://liuf.net:81 就可以进入 NPM 的管理后台,第一次登录的用户名是admin@example.com,密码是changme,进去后会让你设置名称、邮箱与管理员密码。但是,我在腾讯云上面配置好后遇到了无法访问的情况,最终发现是腾讯云默认有防火墙,只开通了几个端口。在腾讯云的后台把81端口开放后就可以访问了。

配置通配符证书

NPM可以给每一个创建的子域名申请SSL证书,但是更推荐为自己的根域名申请一个通配符证书。一般来说,我的经验是进入NPM后第一件事,先申请证书。这篇文章中说的挺详细,可以参考执行。我遇到的问题就是选中了使用DNS认证后,选择我进行域名解析的供应商DNSPod,之后需要填写认证信息。邮件是我的电子邮箱,下面的token一定不要与DNSPod中的腾讯云API弄混了,我一开始就犯了这个错误,导致一直不通过。做好正确的id与token配置后,就可以顺利进行了。此外,我看网上的案例,域名那里要填*.liuf.net, liuf.net两个,我一开始忘记了不带星的,但也没有遇到问题。后来还是按照网上说的,带星的不带星的都放上去了。我还没有找到明确的这样做的原因,但印象里之前很早配置VPS的时候这样弄过,好像为了规避什么问题,所以我也这样做了。

配置 NPM 前端入口

为了方便使用并且提升安全性,配置个NPM的前端入口。在域名解析那里加一个npm.liuf.net的二级域名,解析到服务器的IP地址,然后在NPM后台新增一个代理服务,在*详细内容*选项卡中,配置域名为npm.liuf.net,协议默认为http即可,转发主机配0.0.0.0,转发端口设81。下方的缓存资源、阻止常见漏洞、支持WebSockets三个选项都打开。在*SSL*选项卡中,SSL证书选择刚创建的*.liuf.net, liuf.net,下方的强制SSL,支持HTTP/2选项卡都打开,之后点保存,即可通过npm.liuf.net这个域名来访问NPM管理后台。

配置 WordPress

配置 DokuWiki

使用docker配置vps.1723608542.txt.gz · 最后更改: 2024/08/14 12:09 由 liuf