plausible在linux上部署的关键难点在于配置细节:base_url须为完整https域名,secret_key_base需用openssl生成,admin_user/password建议显式设置;启动后需检查容器状态、postgresql数据目录权限、nginx反代header透传及云平台多层防火墙。

Plausible 在 Linux 上部署不难,但容易卡在几个关键点:环境变量写错、端口没暴露、HTTPS 没配好导致前端脚本加载失败,或者数据库初始化卡住。直接上手就行,别被“开源”两个字吓住。
docker-compose.yml 里哪些字段不能照抄
你复制的 docker-compose.yml 很可能来自某篇教程,但里面几个字段必须改,否则服务起不来或登录不了:
-
BASE_URL必须是带协议的完整域名(如https://stats.example.com),不能写成http://localhost:8000或 IP 地址——否则前端统计脚本会因跨域或混合内容被浏览器拦截 -
SECRET_KEY_BASE要用openssl rand -hex 64生成,不能留空、不能复用别人示例里的值,否则重启后 session 失效、登录态丢失 -
ADMIN_USER和ADMIN_PASSWORD建议显式声明,否则默认是admin/admin,首次登录后必须改,但改之前没人提醒你,容易误以为账号错了 - 如果只跑单机测试,
ports映射写成- "8000:8000"就够;但若后面要配 Nginx 反代,这里建议改成- "127.0.0.1:8000:8000",避免端口直接暴露在公网
启动后打不开页面?先查这三件事
执行 docker-compose up -d 后访问不了 http://your-ip:8000,别急着重装,按顺序检查:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 运行
docker-compose ps,确认plausible和postgres都是Up状态;如果postgres是Restarting,大概率是volumes目录权限不对(Ubuntu 下常见,用sudo chown -R $USER:$USER ./data ./postgres修复) - 运行
docker logs plausible,重点看有没有FATAL: database files are incompatible with server或waiting for postgres...——前者说明 PostgreSQL 数据目录被旧版本污染,删掉./postgres重来;后者说明依赖没等齐,加depends_on并设healthcheck更可靠 - 用
curl -v http://localhost:8000/healthz(在服务器本地执行)验证服务是否真在监听。返回200 OK说明容器内没问题,问题出在网络层:检查 Ubuntu 的ufw是否开着、云服务商安全组是否放行了对应端口
用 Nginx 反向代理时 HTTPS 怎么配才不翻车
直接用 HTTP 暴露 8000 端口风险高,也影响前端脚本加载。Nginx 是最稳妥的出口,但配置有坑:
- 必须把
BASE_URL改成https://stats.example.com,且 Nginx 的server_name要完全匹配,否则 Plausible 后端生成的重定向 URL 会跳回 HTTP - 反代配置里一定要加这两行,否则实时统计和事件上报会 400:
proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-For $remote_addr; - Let’s Encrypt 申请证书前,确保域名 DNS 已解析到服务器 IP,且 Nginx 的 80 端口已开放——Certbot 会走 HTTP-01 挑战,不靠 443
- 如果用了 Cloudflare 等 CDN,记得在 Nginx 里把
X-Real-IP改成读$http_cf_connecting_ip,否则所有访问都显示为 Cloudflare 的 IP
外网访问不到?别只盯 Docker
很多人配完一切正常,但从公司或手机连不上,其实和 Plausible 本身无关:
- 家用宽带:绝大多数运营商封了 80/443,也屏蔽了其他常用端口。想外网访问,要么换支持 IPv6 的线路,要么用内网穿透(如
frp、ngrok),别硬扛 NAT - 云服务器:除了安全组,还要看实例所在 VPC 的网络 ACL 是否放行、子网路由表是否指向互联网网关
- 路由侠这类工具虽能用,但它依赖 Windows 管理端生成安装码,Linux 服务器上跑
docker run --net=host容易和宿主机端口冲突,建议单独开一台小内存 Windows 虚拟机专跑它 - 最省事的方案:买个便宜域名 + 莱卡云/腾讯云轻量服务器(自带备案和公网 IP),再配 Nginx + Let’s Encrypt,比折腾穿透稳定得多
真正麻烦的从来不是安装命令本身,而是每个环节的隐式依赖:Docker 的用户权限、PostgreSQL 的数据目录状态、Nginx 的 header 透传、云厂商的多层防火墙……漏掉任意一环,都会让你在登录页卡住,反复怀疑是不是镜像坏了。










