随着博客访问量的逐步增长,原本部署在低配 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小时内删除!