跳至正文

Netcup RS 2000 服务器部署 Umami 网站统计工具记录

随着博客访问量的逐步增长,原本部署在低配 VPS 上的 Umami,查询历史访问数据时越来越卡,有时候甚至直接无法加载页面。正好前几天赶上了 Netcup 复活节活动,果断下单了一台美国机房的 RS 2000 服务器,准备将 Umami 迁移到这台配置拉满的新机器上。

本来打算顺带把旧服务器上的数据一并迁移过来,无奈水平有限,尝试了多种办法(包括导出数据库、迁移卷 Volume 等方法),最终都失败了。

其实几个月前也折腾过一次,当时成功了,但没有记录详细步骤,这次只能重新摸索。干脆这次彻底重来,也算是趁机重新梳理一下部署流程。

这次我决定不再使用卷(Volume)持久化数据,而是直接把容器数据挂载到宿主机本地路径,方便后续迁移。

下面正式开始本次 Umami 折腾之旅!


🚀 超强服务器配置

这次购买的是 Netcup RS 2000 G11 SE,性能非常给力,价格也不算便宜(14.19 欧元/月),但以 Umami 这种轻量应用来说,简直绰绰有余。

  • 处理器:AMD EPYC™ 9634
  • CPU 核心数:8 核
  • 内存:16 GB DDR5
  • 硬盘:1TB NVMe SSD

🖥️ 服务器初步设置

登录新服务器,首先进行一波基础配置,主要是为了安全和稳定运行打下基础:

apt update && apt upgrade -y    # 更新系统
apt install ufw -y              # 安装防火墙
ufw allow OpenSSH               # 放行 SSH
ufw enable                      # 开启防火墙
apt install fail2ban -y         # 防止暴力破解
timedatectl set-timezone Asia/Shanghai  # 设置本地时区

🐳 安装 Docker 环境

直接使用官方一键安装脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Docker 安装好后就可以愉快地部署 Umami 了!

📂 项目目录规划

我习惯将 Umami 部署在 /var/docker/umami 目录下,创建目录并进入:

mkdir -p /var/docker/umami
cd /var/docker/umami

📄 docker-compose.yml 配置

创建 docker-compose.yml 文件,内容如下(加入了常用自定义参数):

APP_SECRET 是一个随机生成的、唯一的字符串,用于为 Umami 应用程序的各种安全相关的操作提供密钥。

TRACKER_SCRIPT_NAME 允许您自定义 Umami 网站跟踪脚本的名称。许多广告拦截器(ad blockers)会屏蔽已知名称的跟踪脚本,通过将 TRACKER_SCRIPT_NAME 设置为一个不太常见的名称,可以提高跟踪脚本被加载的可能性,从而更准确地收集网站数据

services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    container_name: umami
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:umami@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: VkWvdZgxUQjT1234567890abcdef
      TRACKER_SCRIPT_NAME: uuzinet
    depends_on:
      db:
        condition: service_healthy
    restart: always

  db:
    image: postgres:15-alpine
    container_name: umami-db
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami
    volumes:
      - /var/docker/umami/postgres:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5

✅ 这里把数据库文件直接挂载到 /var/docker/umami/postgres,以后迁移只需要打包这个文件夹,超级方便!

🌐 配置 Nginx 反向代理(带 HTTPS)

第一步:安装 Nginx

apt install nginx -y
systemctl start nginx
systemctl enable nginx

第二步:添加 Nginx 反向代理配置

假设你的域名是:analytics.example.com,Umami 容器内部监听的是:localhost:3000

创建一个新的配置文件:

nano /etc/nginx/sites-available/umami.conf

填入以下内容(初版,后面加 HTTPS):

server {
    listen 80;
    server_name analytics.example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}


然后启用这个配置:

ln -s /etc/nginx/sites-available/umami.conf /etc/nginx/sites-enabled/

检查 Nginx 配置是否正确:

nginx -t

重启 Nginx:

systemctl reload nginx

现在访问 http://analytics.example.com 应该已经可以看到 Umami 页面了。

第三步:配置 HTTPS(自动续签)


安装 Certbot :

apt install certbot python3-certbot-nginx -y

申请 HTTPS 证书并自动配置 Nginx:

certbot --nginx -d analytics.example.com

Certbot 会自动给你配置好 HTTPS,强制跳转到 443端口。完成后,https://analytics.example.com 就能安全访问了!

Certbot 还自带自动续签任务,手动测试续签是否正常:

certbot renew --dry-run

如果成功,系统已经每天自动检查证书了,真正到期前30天会自动续签,你无需任何手动操作!


🧩 小结

这次迁移 Umami,总结了几个经验:

  • 直接宿主机挂载数据,比用 Volume 卷迁移方便多了。
  • 服务器安全设置一定要做,特别是防火墙、fail2ban、BBR 加速。
  • Nginx + Certbot 搭配部署 HTTPS 非常简单快捷。

Netcup RS 2000 服务器的性能完全满足 Umami 的需求,浏览器打开后台秒加载,以后再也不用忍受低配 VPS 的龟速查询了!

本文标题:Netcup RS 2000 服务器部署 Umami 网站统计工具记录
本文链接:https://uuzi.net/netcup-rs2000-umami-deployment-guide/
本文标签:Netcup服务器、Umami网站统计、VPS搭建教程、Docker部署Umami、服务器性能优化
发布日期:2025年4月26日
更新日期:2025年4月26日
版权声明:兔哥原创内容,版权所有人为本网站作者,请勿转载,违者必究!
免责声明:文中如涉及第三方资源,均来自互联网,仅供学习研究,禁止商业使用,如有侵权,联系24小时内删除!

如本文“对您有用”,欢迎随意打赏兔哥,让我们坚持创作!

   

发表回复

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