📋 核心部署要求速览
根据官方及社区信息,部署 Shynet 的环境要求如下:
服务器环境:建议 Linux 服务器(如 Ubuntu 22.04+)。
必备软件:需提前安装 Docker 和 Docker Compose。
最低配置:内存 ≥ 512MB,硬盘空间 ≥ 2GB。
网络:建议准备好一个域名,用于设置 HTTPS 并确保追踪代码加载安全。
🚀 两种主要的 Docker 部署方式
部署 Shynet 主要有两种方式,其中 Docker Compose 是官方推荐的主流方案。
使用
docker run命令:适合快速体验,只需一个命令就能启动。但这种方式通常使用内置的 SQLite 数据库,配置也相对简单。使用
docker-compose.yml文件:这是更推荐的生产级部署方式。它通过一个 YAML 文件定义并启动应用(Shynet)和数据库(PostgreSQL)等多个容器,便于管理、配置和扩展,也是各类教程普遍采用的方法。
📝 推荐部署步骤:使用 Docker Compose
为了长期稳定地运行,建议采用以下步骤进行部署。
1. 准备部署目录
在GitHub上拉取Shynet仓库
wget https://github.com/milesmcc/shynet/archive/refs/tags/v0.14.0.zip解压v0.14.0.zip。
unzip v0.14.0.zip然后mv 到~/shynet目录。
2. 创建 docker-compose.yml 文件
在 ~/shynet 目录下创建 docker-compose.yml 文件,并写入以下内容。这是一个完整的配置模板,定义了 shynet 和 db(PostgreSQL)两个服务。
version: '3'
services:
shynet:
image: milesmcc/shynet:latest # 官方最新镜像
container_name: shynet
depends_on:
db:
condition: service_healthy # 等待数据库健康检查通过后再启动
ports:
- "8080:8080" # 将服务器的8080端口映射到容器的8080端口
environment:
# 数据库连接信息,${} 表示变量会从 .env 文件中读取
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
DB_HOST: db # 容器内通过服务名 'db' 连接数据库
DB_PORT: "5432"
# Django 核心设置,请务必修改为强密码
DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY}
# 你的 Shynet 访问域名(无 http(s):// 前缀),用于安全设置
ALLOWED_HOSTS: ${SHYNET_HOST:-*}
CSRF_TRUSTED_ORIGINS: ${CSRF_ORIGINS:-http://localhost:8080}
# 应用设置
PORT: "8080"
PERFORM_CHECKS_AND_SETUP: "True"
SCRIPT_USE_HTTPS: "True" # 如果使用HTTPS,设为True
ACCOUNT_SIGNUPS_ENABLED: "False" # 建议关闭公开注册,管理员手动添加账号
TIME_ZONE: "Asia/Shanghai"
restart: unless-stopped
networks:
- shynet-net
db:
image: postgres:16-alpine # 使用轻量的 Alpine 版本
container_name: shynet-db
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- shynet_db:/var/lib/postgresql/data # 数据持久化
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- shynet-net
volumes:
shynet_db: # 定义数据卷
networks:
shynet-net:
driver: bridge3. 创建环境变量文件 (.env)
在同一个目录下创建 .env 文件,用于存放敏感信息和配置。请务必将 DB_PASSWORD 和 DJANGO_SECRET_KEY 修改为强密码。
# 数据库配置
DB_NAME=shynet
DB_USER=shynet
DB_PASSWORD=请修改为你的强密码
# Django 密钥,请务必修改为随机长字符串
DJANGO_SECRET_KEY=请修改为你的强密码
# 你的 Shynet 访问地址
SHYNET_HOST=analytics.yourdomain.com
CSRF_ORIGINS=https://analytics.yourdomain.com4. 启动服务
docker compose up -d5. 初始化管理员账户
容器启动后,通过以下命令创建一个管理员用户,按照提示设置密码。
docker exec -it shynet ./manage.py registeradmin your-email@example.com6. 完成后续配置
设置实例名称(可选):
docker exec -it shynet ./manage.py whitelabel "我的分析站"。登录后台:在浏览器访问
http://your-server-ip:8080或你配置的域名,使用上一步创建的邮箱和密码登录。配置反向代理与HTTPS:这是生产环境的关键步骤。在 Nginx 或 Caddy 等反向代理软件中配置域名,并申请 SSL 证书,确保数据加密传输。
🔧 登录后的关键操作指南
1. 创建你的第一个服务(Service)
在 Shynet 中,一个“服务(Service)”就代表一个你要追踪的网站。
点击侧边栏的 「Services」 → 右上角 「Create Service」。
填写你的网站名称和域名(例如
meytao.top),其他选项可以先保持默认。
2. 获取并嵌入追踪代码
创建成功后,点击进入该服务,你会看到一个唯一的追踪代码片段,类似这样:
<noscript><img src="https://你的shynet域名:8093/ingress/.../pixel.gif"></noscript>
<script src="https://你的shynet域名:8093/ingress/.../script.js"></script>将这段代码完整地复制,并粘贴到你的博客,每个页面的
</body>标签之前。
3. 验证追踪是否生效
在浏览器中用隐私/无痕模式访问一次你的博客。
回到 Shynet 后台该服务的页面,稍等几秒刷新,应该就能看到 “Hits”(页面浏览量)数据增加了。