自建短链服务:本地部署 Shlink 管理链接,用 cpolar 给团队临时分享统计数据
自建短链服务本地部署 Shlink 管理链接用 cpolar 给团队临时分享统计数据活动页上线前运营经常会问三个很具体的问题微信群、公众号、邮件里的链接分别有多少人点了点击高峰在哪个时间段老板远程看数据时能不能不让他登录一堆内部系统这类场景不一定要把数据交给第三方短链平台。Shlink 是一个开源自托管短链服务核心能力很直接生成短链、自定义短码、打标签、记录访问次数并在 Web 客户端里查看来源、设备、浏览器、地区等基础统计。本文用 Docker Compose 在本地跑一套 Shlink只创建测试短链和脱敏链接再用 cpolar 开一个短时 HTTPS 入口让运营、市场或老板远程验收统计面板。先把边界说清楚本文只演示测试短链不放真实客户名单、订单参数、内部后台地址不暴露数据库端口、管理密码、服务器目录和 Docker socket不把 Shlink API Key 发到大群cpolar 只短时开放 Web 客户端和 API验收结束立即关闭。长期使用请换正式域名、正式 HTTPS、访问控制、备份、反垃圾策略和权限流程。1. 准备本地目录本文选择 Shlink 作为主角不做 YOURLS 横评。Shlink 服务端负责短链跳转和统计Shlink Web Client 负责可视化管理。数据库用 MariaDB只在 Docker 内部网络里访问不映射到宿主机端口。新建目录mkdir -p ~/demo/shlink-short-url cd ~/demo/shlink-short-url生成一组演示用密码和 API Keyopenssl rand -base64 24 openssl rand -hex 32把生成结果分别填到下面的MARIADB_PASSWORD和INITIAL_API_KEY。API Key 相当于管理凭证只给参与验收的人短时使用。2. 编写 Docker Compose创建docker-compose.ymlservices: shlink-db: image: mariadb:11 container_name: shlink-demo-db restart: unless-stopped environment: MARIADB_DATABASE: shlink MARIADB_USER: shlink MARIADB_PASSWORD: ChangeMe-Shlink-DB-2026! MARIADB_ROOT_PASSWORD: ChangeMe-Root-2026! volumes: - shlink-db-data:/var/lib/mysql healthcheck: test: [CMD, healthcheck.sh, --connect, --innodb_initialized] interval: 10s timeout: 5s retries: 5 shlink: image: shlinkio/shlink:stable container_name: shlink-demo-api restart: unless-stopped depends_on: shlink-db: condition: service_healthy ports: - 127.0.0.1:8080:8080 environment: DEFAULT_DOMAIN: 127.0.0.1:8080 IS_HTTPS_ENABLED: false DB_DRIVER: maria DB_HOST: shlink-db DB_NAME: shlink DB_USER: shlink DB_PASSWORD: ChangeMe-Shlink-DB-2026! INITIAL_API_KEY: replace-with-your-temporary-api-key TIMEZONE: Asia/Shanghai shlink-web: image: shlinkio/shlink-web-client:stable container_name: shlink-demo-web restart: unless-stopped ports: - 127.0.0.1:8081:80 volumes: shlink-db-data:这里有三个安全细节MariaDB 没有ports数据库只在 Compose 内部网络可见。Shlink API 和 Web Client 都绑定到127.0.0.1不会直接暴露到局域网。INITIAL_API_KEY只用于演示和验收发给谁、什么时候撤回都要有记录。启动服务docker compose up -d查看容器状态docker compose ps确认 Shlink API 正常curl http://127.0.0.1:8080/rest/v3/health看到status为pass说明服务端和数据库连接正常。打开 Web 客户端http://127.0.0.1:8081首次进入时添加一个服务器连接Server name本地 Shlink 演示URLhttp://127.0.0.1:8080API key填写INITIAL_API_KEY连接成功后就可以在页面里创建短链、查看列表和统计。3. 创建一条测试短链为了避免把真实业务数据带进演示目标地址使用一个公开测试页。比如https://www.example.com/?utm_sourcewechatutm_mediumtestutm_campaignshlink_demo在 Web 客户端里创建短链时填写Long URL上面的测试地址Custom slugdemo-csdnTagsdemo、wechat、20260725Valid since / valid until按演示周期填写测试结束后让链接失效保存后短链地址为http://127.0.0.1:8080/demo-csdn本地验证跳转curl -I http://127.0.0.1:8080/demo-csdn返回里能看到301或302跳转以及Location: https://www.example.com/...说明短链规则已经生效。如果要模拟不同渠道可以再建两条测试短链短码标签长链接里的渠道参数demo-wechatdemo,wechatutm_sourcewechatdemo-emaildemo,emailutm_sourceemaildemo-bossdemo,boss-reviewutm_sourceboss_review这样运营验收时看到的是“不同渠道短链的访问统计”不是一堆混在一起的点击数。4. 制造几次可验证点击统计面板需要有数据。我们可以用浏览器手动点几次也可以用curl模拟不同来源和设备。下面的命令只访问本地测试短链curl -A Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) \ -e https://mp.weixin.qq.com/ \ -L http://127.0.0.1:8080/demo-csdn -o /dev/null curl -A Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126 \ -e https://mail.example.local/campaign \ -L http://127.0.0.1:8080/demo-csdn -o /dev/null curl -A Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5) Safari/605.1.15 \ -L http://127.0.0.1:8080/demo-csdn -o /dev/null回到 Shlink Web Client进入短链详情页重点看四类数据Visits总点击量是否增加。Referrers来源里是否出现微信文章、邮件活动页或空来源。Devices / Browsers移动端、桌面端、Chrome、Safari 是否被识别。Tags按wechat、email、boss-review过滤时数据是否分开。如果本地没有配置 GeoLite2 数据库地区统计会受限。库存文章和团队验收阶段重点先确认点击量、来源、设备、浏览器和标签维度正式长期环境再补齐 GeoLite2、日志保留周期和隐私说明。5. 设计一个验收口径短链统计最容易吵起来的地方不是工具能不能记录点击而是每个人对“有效点击”的理解不同。为了让远程验收更顺畅建议在开放 cpolar 之前先写清楚验收口径。可以用下面这张表作为 Demo 口径验收项通过标准备注短链跳转访问短链后能跳到指定测试页面不使用真实客户落地页标签分类wechat、email、boss-review能分开筛选每条测试短链至少一个渠道标签点击增长每次访问后统计数能增加刷新面板后核对来源识别带Referer的请求能看到来源域名空来源也要解释清楚设备识别手机、桌面端访问能进入不同设备统计用浏览器或curl -A模拟权限边界验收人只拿到临时 API Key不共享数据库密码和服务器权限这个口径的价值很大运营看渠道市场看点击老板看结论开发看数据是否可复现。大家验收的是短链统计能力不是临时搭一个完整投放系统。6. 用 API 快速核对统计Web 面板适合给非技术同事看API 适合自己核对。把 API Key 放到环境变量里避免每条命令都明文出现export SHLINK_API_KEYreplace-with-your-temporary-api-key查询短链列表curl -s \ -H X-Api-Key: $SHLINK_API_KEY \ http://127.0.0.1:8080/rest/v3/short-urls | jq查询某条短链访问统计curl -s \ -H X-Api-Key: $SHLINK_API_KEY \ http://127.0.0.1:8080/rest/v3/short-urls/demo-csdn/visits | jq这里不是把 Shlink 当 API 调试台而是用接口确认面板数据来源面板里的访问次数、来源、设备统计最终都来自短链服务自己的访问记录。验收时如果有人质疑“面板是不是缓存”可以用这两条命令现场交叉验证。7. 用 cpolar 临时开放远程验收入口远程验收有一个容易踩的坑Shlink Web Client 是前端页面它需要从浏览器访问 Shlink API。因此只开放 Web 端口还不够浏览器仍然连不到你电脑上的127.0.0.1:8080。做法是开两个 cpolar HTTPS 隧道一个给 API一个给 Web Client。在本机启动 API 隧道cpolar http 8080记录生成的 HTTPS 地址例如https://shlink-api-demo.cpolar.top再打开一个终端启动 Web Client 隧道cpolar http 8081记录 Web 地址例如https://shlink-web-demo.cpolar.top把 Web 地址发给参与验收的人。对方打开 Web Client 后添加服务器连接Server nameShlink 临时验收URLhttps://shlink-api-demo.cpolar.topAPI key单独私发临时 API Key不发到公开群然后让对方只做三件事打开短链列表确认demo-csdn、demo-wechat、demo-email等测试短链存在。进入详情页查看总访问量、来源、设备、浏览器、标签过滤结果。按验收口径截图或记录结论不修改生产链接、不新增真实投放链接。如果还要让远程同事测试短链跳转就把 API 隧道里的短码地址发给他https://shlink-api-demo.cpolar.top/demo-csdn访问后刷新统计面板点击数会增加。这里的短链仍然只指向测试地址不承载真实推广活动。8. 远程验收时怎么演示建议按固定顺序演示避免对方一上来就改链接或误删测试数据。第一步先打开 Web Client 的短链列表让对方看到三条测试短链都在demo-wechat、demo-email、demo-boss。此时重点讲清楚“短码”和“长链接”的关系短码负责对外传播长链接里可以带 UTM 参数标签用于后台筛选。第二步打开demo-csdn的详情页展示总访问量、最近访问时间、来源和设备。这里不要追求数据很漂亮演示数据本来就是可控样本重点是让对方确认“从点击到统计面板更新”的链路完整。第三步让远程同事访问一次https://shlink-api-demo.cpolar.top/demo-csdn访问完成后刷新短链详情页。看到访问次数增加就说明外网入口、短链跳转、统计写入和 Web 面板读取都跑通了。第四步切换到标签筛选。例如只看wechat标签下的短链再切到email标签。这个动作能帮助运营理解以后每个渠道单独生成短链复盘时就不用从一大堆混合点击里手工拆数据。第五步明确告诉参与验收的人这次只看测试链接和脱敏数据不在临时环境里创建正式投放链接如果需要正式投放要走长期环境的域名、权限、备份和审计流程。9. 验收结束后的收尾动作远程验收结束不要让临时入口继续挂着。按顺序处理# 1. 在运行 cpolar 的两个终端里按 CtrlC关闭临时 HTTPS 隧道 # 2. 清理本机环境变量 unset SHLINK_API_KEY # 3. 停止演示服务 cd ~/demo/shlink-short-url docker compose down如果这套环境后续还要继续用只停止容器即可如果确认演示数据也要删除再执行docker compose down -v-v会删除 MariaDB 数据卷短链和统计记录一并清空执行前要确认不需要保留。10. 长期使用时要补的生产项本文是本地演示和短时验收方案不能直接当生产上线清单。长期运行 Shlink需要补齐这些项正式域名短链域名要稳定不能依赖临时隧道地址。HTTPS使用反向代理或托管证书保证后台和短链访问都是 HTTPS。访问控制API Key 分人分用途管理离职、外包结束、活动结束后及时撤销。备份MariaDB 定期备份并验证恢复流程。反垃圾限制公开创建短链避免被滥用成垃圾链接跳板。数据合规统计数据只保留必要字段避免把用户手机号、订单号、内部 token 拼进长链接。最小暴露面数据库、宿主机目录、Docker socket、SSH、管理面板都不要直接公网开放。小结这套流程解决的是“短链统计怎么让团队快速验收”的问题Shlink 在本地负责短链、标签和访问统计Docker Compose 保证服务可复现cpolar 提供短时 HTTPS 入口让运营、市场或老板在外网查看统计面板。真正关键的不是把工具跑起来而是把边界守住只用测试短链和脱敏数据远程只开放 Web/APIAPI Key 私发给验收人验收结束关闭 cpolar。这样既能让团队看到点击量、来源、设备等基础数据又不会把数据库、管理密码和内部系统一起暴露出去。

相关新闻

UE5蓝图触发器实战:从盒体触发器到可复用游戏逻辑组件

UE5蓝图触发器实战:从盒体触发器到可复用游戏逻辑组件

1. 项目概述:从“出发区域”切入UE5蓝图逻辑构建最近在跟着张亮002老师的UE5教程学习,正好做到了第1-6讲,主题是“出发区域”。这讲内容看似基础,就是一个玩家走进特定区域触发事件的逻辑,但恰恰是这种最基础的交互&am…

2026/8/18 8:35:32 阅读更多 →
SVM在风力发电故障检测中的工程实践

SVM在风力发电故障检测中的工程实践

1. 项目背景与核心价值风力发电作为清洁能源的重要组成部分,其设备可靠性直接关系到电网稳定和发电效率。风力涡轮机长期在恶劣环境中运行,齿轮箱、轴承和发电机等关键部件容易出现磨损、裂纹或电气故障。传统定期维护方式存在滞后性,而基于支…

2026/8/20 3:53:21 阅读更多 →
SSSD部署最佳实践:从源码编译到生产环境配置全流程

SSSD部署最佳实践:从源码编译到生产环境配置全流程

SSSD部署最佳实践:从源码编译到生产环境配置全流程 【免费下载链接】sssd A daemon to manage identity, authentication and authorization for centrally-managed systems. 项目地址: https://gitcode.com/gh_mirrors/ss/sssd SSSD(System Secu…

2026/8/18 5:04:23 阅读更多 →

最新新闻

基于ESP32的智能水罐系统:从传感器到云端的物联网实践

基于ESP32的智能水罐系统:从传感器到云端的物联网实践

1. 项目概述:从“储水”到“智水”的进化家里那个用了快十年的储水罐,最近让我动了彻底改造它的念头。起因很简单,上个月出差一周,回来发现阳台的花草蔫了一大片,检查才发现是自动灌溉系统的定时器出了点小毛病&#x…

2026/8/20 3:54:42 阅读更多 →
AI+CAD融合:多智能体与几何特征识别实现FDM 3D打印自动化设计

AI+CAD融合:多智能体与几何特征识别实现FDM 3D打印自动化设计

1. 项目概述:当CAD设计遇上AI代理,制造自动化如何破局?如果你是一位从事产品设计或机械制造的工程师,最近可能已经对“AICAD”的组合感到既兴奋又困惑。兴奋的是,大语言模型(LLM)和智能体&#…

2026/8/20 3:54:42 阅读更多 →
AI助手自学成才的那一天,也是它学会撒谎的那一天

AI助手自学成才的那一天,也是它学会撒谎的那一天

你有没有想过这样一个问题:如果一个AI助手能够自己总结经验、把成功的操作流程存下来,下次遇到类似任务直接拿出来用,这本该是件好事,对吧?就像一个新员工,第一次学会了怎么处理报销单,把流程记…

2026/8/20 3:54:42 阅读更多 →
双流卷积网络:当深度学习第一次学会“看“视频里的动作

双流卷积网络:当深度学习第一次学会“看“视频里的动作

2014年秋天,深度学习圈子里有一件事让很多人挠头。两年前,AlexNet 在图像识别比赛上一鸣惊人,把传统的手工特征方法打得溃不成军,深度学习一夜之间成了计算机视觉的新宠。可奇怪的是,同样的深度学习方法,一旦从静态图片换成视频,去识别视频里的人在做什么…

2026/8/20 3:54:42 阅读更多 →
异步强化学习中的旧策略信息缺失问题与修复方法

异步强化学习中的旧策略信息缺失问题与修复方法

1. 异步智能体强化学习中的“旧Logits缺失”问题:一个被忽视的语义鸿沟在强化学习(RL)的实战中,尤其是当我们把目光投向那些更复杂、更贴近真实世界的异步智能体(Asynchronous Agentic)架构时,一…

2026/8/20 3:54:42 阅读更多 →
Aurix TC3xx自定义Trap处理实战:从原理到实现,提升嵌入式系统可靠性

Aurix TC3xx自定义Trap处理实战:从原理到实现,提升嵌入式系统可靠性

1. 从一次“神秘宕机”说起:为什么需要自定义Trap最近在调试一个基于英飞凌Aurix TC3xx系列MCU的电机控制项目时,遇到了一个让人头疼的问题。系统在长时间高负载运行后,会毫无征兆地“死机”——控制台输出戛然而止,电机停转&…

2026/8/20 3:53:42 阅读更多 →

日新闻

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新引“变砖”危机2026年7月7日,Framework向用户quantum5发送邮件,建议其安装BIOS 3.20更新。然而,更新后电脑出现严重问题,屏幕显示三角形和随机像素图案,风扇狂转,系统完全挂起。qua…

2026/8/20 0:00:46 阅读更多 →
2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!据艾瑞咨询发布的《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,同比增长18.7%。中国互联网络信息中心数据显示,截至2025年底…

2026/8/20 0:00:46 阅读更多 →
2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?据艾瑞咨询《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,其中高端定制网站服务占比突破42%。更值得关注的是,91%的规模以上企业…

2026/8/20 0:00:46 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →