惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
爱范儿
爱范儿
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
博客园 - 司徒正美
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
罗磊的独立博客
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
D
DataBreaches.Net
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Privacy & Cybersecurity Law Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog
V
Vulnerabilities – Threatpost
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
T
Tor Project blog
GbyAI
GbyAI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
Simon Willison's Weblog
Simon Willison's Weblog
Cyberwarzone
Cyberwarzone
C
Cisco Blogs
G
GRAHAM CLULEY
宝玉的分享
宝玉的分享
T
Threat Research - Cisco Blogs
C
Check Point Blog
W
WeLiveSecurity
F
Fortinet All Blogs
P
Proofpoint News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
月光博客
月光博客
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
V
Visual Studio Blog
H
Help Net Security
H
Hacker News: Front Page
Webroot Blog
Webroot Blog
S
Securelist
酷 壳 – CoolShell
酷 壳 – CoolShell
O
OpenAI News
The Cloudflare Blog
Attack and Defense Labs
Attack and Defense Labs

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods Docker 搭建去中心化的微博客平台 Mastodon 聊聊 iPhone 15 Pro 使用感受 能否将 TOTP 二次验证存放在密码管理器里 认识史蒂夫·乔布斯 与“锤哥”克里斯·海姆斯沃斯一起养生 逃离爆炸的信息 你想活出怎样的人生 重温《龙珠》动画 为什么关闭评论 从域名注册商到 DNS 服务,找到自己的组合 如何提高用户网页阅读体验 从 Typecho 迁移到 Hugo 个人博客的最终归宿是静态网站吗 我选择了放弃 jQuery 关于我的小破站折腾速度优化这件事 记一次家庭网络折腾 贴一些 SmokePing 记录 我的域名邮箱选择 不存在的语录 Typecho 评论验证插件 CaptchaPlus 谈谈写字这件事 新的网站 Logo 探索 曲线解决 Typecho 图片占位抖动问题 自建 vaultwarden / bitwarden_rs 密码管理器 使用 Plausible 自建网站流量统计分析工具 如何优雅地徒手剥开火腿肠 简单的集中隔离生活记录 新玩具 M2 MacBook Air 使用 acme.sh 申请 Google 公共证书 Docker 搭建去中心化的微博客平台 Misskey 搭建 Lsky Pro 兰空图床 折腾树莓派系统的一天 我的吉卜力之旅 使用 Uptime Kuma 自建服务器/网站在线率监控 Spartan Host Review - Best Hosting & Service Support Debian 下 Nginx 配合 Fail2Ban 减少恶意扫描和攻击 升级 Typecho 到最新开发版本 v1.2.0 Linux rm 命令详解 Debian 系统安装 Docker 教程 BandwagonHost - Reliable Blog and Business VPS Hosting 使用 Isso 为 Hugo/Hexo 等静态网站添加评论功能 推荐 5 款免费开源的网站流量分析统计工具 聊聊 DDoS 攻击那些事 Hugo 使用 Fancybox 实现图片灯箱/放大功能 从 Debian 10 升级到 Debian 11 教程 使用 Umami 自建网站流量统计分析工具 Linux 一次执行多个命令的 3 种方式 Typecho 修改永久链接后旧链接 301 跳转到新链接 从不同需求推荐几家稳定可靠的 VPS 服务商 Build EchoIP service with Docker 浅谈一下这些年折腾过的 VPS 单线复用解决一根网线同时 IPTV 和宽带问题 不完全吃灰的树莓派 开发一个自己的 Telegram Bot 使用 Nginx 实现 TCP 四层反向代理 画画真难 我读村上春树 使用 acme.sh 自动签发和更新证书 卡拉马佐夫式悲剧 安装 File Browser 轻量网盘工具 新玩具树莓派到手 Linux 定时自动备份数据到 OneDrive/Google Drive 记一次服务器崩溃 使用 rsync 同步文件 短信的消失 幻灭的艺术家 新玩具戴尔 S2721DGF 开箱 蝴蝶 用 Docker 整合 SeafilePro 搭建私人云盘 搭建自己的 kms 服务器
搭建 Shynet 网站流量统计分析工具
ATP · 2021-08-28 · via atpX

前面分享了使用 Umaimi 自建网站访问统计分析,用了一段时间感觉不错。后来又发现了另一款开源的自建网站统计分析工具 - Shynet,看起来很不错,是用 Python 写的,为了和用 Node.js 的 Umami 进行对比闲得无聊,也试着搭建了一下,最后效果很好,体验不输于 Umami。

shynet-web-analytics

Shynet 是自建的、开源的网站流量统计分析工具,它在没有 Cookie 的情况下工作,不会像其它公共统计工具(例如 Google Analytics、Cloudflare Web Analytics、CNZZ、51LA 等)一样追踪你的访客,它只收集足够有用的数据。同时可以不使用 Javascript 运行,分析脚本十分轻量,不到 1kb,但分析的数据内容很丰富,基本的点击量,来源域名,页面加载时间,使用的浏览器、系统、设备,访问的网页这些都有。

不过 Shynet 并不适合所有人,它非常适合个人项目和中小型网站,但尚未在高流量网站上进行测试。因此还需要大量的不断的维护升级,因此如果您需要一键式解决方案,最好使用其他工具。

搭建过程

安装 Shynet 比较简单,官方提供了两种安装方法,Docker + PostgreSQL 或者直接使用 Docker Compose 安装,我这里选择的是第一种安装方法,如果你想通过 Docker Compose 安装,可以参考官方文档

环境准备

以下演示适用于 Debian 系的操作系统,我为了简单,所有的操作都以 root 账户进行,

安装 Docker

详情参见官网文档

apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加 Docker 密钥:

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

添加 Docker 稳定版仓库:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

安装 Docker:

apt update
apt install docker-ce docker-ce-cli containerd.io

安装 PostgreSQL

Shynet 目前只支持 PostgreSQL 数据库,因此你需要提前安装并准备好用户和数据库。

apt install postgresql

如果你需要额外的扩展模块,可以使用:

apt install postgresql postgresql-contrib

安装 PostgreSQL 后,会自动添加一个名为 postgres 的系统用户,密码是随机的,并且会自动生成用户名为 postgres 的数据库管理员用户,同时还有一个名字为 postgres 的数据库。

接下来就连接 PSQL 数据库:

su - postgres -c psql

如果你不是使用 root 用户,而是具有 root 权限的用户使用下面的命令:

sudo -u postgres psql

修改 postgres 数据库管理员密码(可选):

ALTER USER postgres WITH PASSWORD 'password';

为 Shynet 新建数据库和用户:

CREATE USER shynet WITH PASSWORD 'password';
CREATE DATABASE shynetdb OWNER shynet;
GRANT ALL PRIVILEGES ON DATABASE shynetdb to shynet;

最后使用 \q 命令退出数据库。

当然,如果你为了后期管理方便,可以使用 useradd shynet 在系统中也新建一个 shynet 用户,密码和数据库的密码一样。这时连接管理数据库就相当于系统用户以同名数据库用户的身份,登录数据库,就可以免去输入密码。

PSQL 一些常用的控制台命令:

\h:查看SQL命令的解释,比如\h select
\?:查看psql命令列表
\l:列出所有数据库
\c [database_name]:连接其他数据库
\d:列出当前数据库的所有表格
\d [table_name]:列出某一张表格的结构
\du:列出所有用户
\e:打开文本编辑器
\conninfo:列出当前数据库和连接的信息

安装 Shynet

准备配置文件

在合适的目录下新建一个 .env 文件,然后参考官方的模板输入你的环境配置信息。下面是一些需要修改的配置,完整的配置项请参考上面的模板:

# PostgreSQL 数据库连接信息
DB_NAME=shynetdb
DB_USER=shynet
DB_PASSWORD=password
DB_HOST=127.0.0.1
DB_PORT=5432

# 如果不需要邮件功能的话可以直接注释掉
# EMAIL_HOST_USER=example
# EMAIL_HOST_PASSWORD=example_password
# EMAIL_HOST=smtp.example.com
# EMAIL_PORT=465
# EMAIL_USE_SSL=True

# 默认为 *,建议修改为你准备部署的域名
ALLOWED_HOSTS=*

# 时区设置,可以修改为 Asia/Shanghai
TIME_ZONE=Asia/Shanghai

安装配置

拉取最新的 Shynet 镜像:

docker pull milesmcc/shynet:latest

初始化连接,如果出现一些警告信息不必理会,在后面会进行配置,只需要确保能连接到数据库就行了:

docker run --env-file=<your env file> milesmcc/shynet:latest

按照上面的官方命令可能会出现以下报错信息:

Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

这是前面环境配置文件中设置的 localhost/127.0.0.1 指的是容器的本地网络,并不是系统自己,因此启动容器的时候需要加入 --network='host' 选项:

docker run --env-file=<your env file> --network='host' milesmcc/shynet:latest

如果能成功连接到数据库运行,进行下一步操作,新建一个面板管理员用户:

docker run --env-file=<your env file> --network='host' milesmcc/shynet:latest ./manage.py registeradmin <your email>

运行后会在屏幕打印一个临时的密码,记下这个密码,等会登录会用到。接下来设置 whitelabel,whitelabel 不会影响到任何系统设置,只是控制面板的标题,你可以设置成任何你喜欢的名字(例如 “My Shynet Instance” 或者 “Acme Analytics”,记得加上引号)。

docker run --env-file=<your env file> --network='host' milesmcc/shynet:latest ./manage.py whitelabel <whitelabel>

官方的文档中还漏了了一个关键的步骤,设置 hostname,这会影响到你后面的 js 脚本地址,设置成你要部署的域名,不然会面会使用默认的 example.com

docker run --env-file=<your env file> --network='host' milesmcc/shynet:latest ./manage.py hostname <your domain>

当然,以上的操作你都可以直接进入容器内部使用 manage.py 依次进行设置,不需要每次都启动一个新的容器。

所有配置完成后,最后启动容器,如果你没有修改前面配置文件的端口,容器内部默认会以 8080 端口运行,你可以映射到你需要的端口,例如 80

docker run -d -p 8080:8080 --env-file=<your env file> --network='host' --name=shynet --restart=always milesmcc/shynet:latest

我这里依然使用的 8080 端口,用 Nginx 进行反代,一个简单的 Nginx 反代示例:

server {
  server_name yourdomain.com;

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

到此,已经成功完成 Shynet 的安装配置,接下来可以登录你的网站进行面板设置了。

简单使用

添加网站

打开你的网站,输入你前面设置的管理员邮箱和记下的密码登录:

shynet-web-analytics-login

点击左侧的 + Create 添加你的第一个网站:

shynet-web-analytics-add-website

你还可以点击 Advanced settings 进一步设置一些高级选项。

设置代码

输入相关信息后创建后会跳转到该网站的统计页面,复制顶部的 script 代码到你准备统计网站的 <body> 标签里面任意位置:

shynet-web-analytics-script

现在你就可以在控制面板看到你网站的相关统计信息啦。