Docker 玩法

飞牛NAS自建短链接服务:YOURLS部署

飞牛NAS自建短链接服务:YOURLS部署

引言

你是否曾经在分享飞牛NAS上的文件链接时,被一长串包含IP、端口和路径的URL困扰?或者需要统计某个外部链接的点击次数?短链接服务(URL Shortener)正是解决这些痛点的利器。本文将指导你在飞牛NAS上,通过Docker部署开源短链接服务YOURLS,实现完全自主可控的短链接管理。

为什么选择YOURLS

YOURLS(Your Own URL Shortener)是一款成熟的开源PHP应用,具备以下核心优势: - 完全自托管:数据存储在本地NAS,不依赖第三方服务 - 功能丰富:支持自定义关键词、点击统计、API接口、书签工具 - 轻量高效:基于PHP+MySQL,资源占用低 - 插件生态:可通过插件扩展地理定位、二维码生成等功能

部署准备

环境要求

  • 飞牛NAS已开启SSH功能(系统设置→SSH)
  • 拥有Docker环境(飞牛默认集成)
  • 建议预留1GB磁盘空间

获取必要信息

  • NAS局域网IP(例如192.168.1.100)
  • 计划使用的端口(避免冲突,推荐8080为管理端口,3307为数据库端口)

部署步骤

第一步:创建数据目录

通过SSH连接飞牛NAS,创建YOURLS专用目录:

sudo mkdir -p /volume1/docker/yourls/data
sudo mkdir -p /volume1/docker/yourls/db

> 提示/volume1为飞牛NAS默认存储池路径,请根据实际存储池调整。

第二步:编写Docker Compose文件

使用文本编辑器创建配置文件:

sudo nano /volume1/docker/yourls/docker-compose.yml

粘贴以下内容:

version: '3.8'

services:
  db:
    image: mysql:5.7
    container_name: yourls-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: yourls_root_pass  # 请修改为强密码
      MYSQL_DATABASE: yourls
      MYSQL_USER: yourls_user
      MYSQL_PASSWORD: yourls_user_pass       # 请修改为强密码
    volumes:
      - /volume1/docker/yourls/db:/var/lib/mysql
    ports:
      - "3307:3306"  # 映射到3307避免与NAS现有MySQL冲突

  yourls:
    image: yourls:latest
    container_name: yourls-app
    restart: always
    depends_on:
      - db
    environment:
      YOURLS_DB_HOST: db
      YOURLS_DB_USER: yourls_user
      YOURLS_DB_PASS: yourls_user_pass
      YOURLS_DB_NAME: yourls
      YOURLS_SITE: http://192.168.1.100:8080  # 替换为实际NAS IP
      YOURLS_USER: admin
      YOURLS_PASS: admin_password_123         # 请修改为管理密码
    volumes:
      - /volume1/docker/yourls/data:/var/www/html/user
    ports:
      - "8080:80"

配置说明: - MYSQL_ROOT_PASSWORD:数据库root密码,建议使用16位以上随机字符串 - YOURLS_SITE:务必替换为你的NAS实际IP,否则短链接生成会出错 - 端口映射可根据需求调整,但需保持前后一致

保存文件(Ctrl+X,按Y确认,Enter退出)。

第三步:启动服务

执行以下命令启动容器:

cd /volume1/docker/yourls
sudo docker-compose up -d

等待镜像拉取和启动,可通过命令查看状态:

sudo docker-compose ps

当两个容器状态均为Up时,表示部署成功。

第四步:初始化YOURLS

打开浏览器,访问:

http://192.168.1.100:8080/admin/

使用配置文件中设置的YOURLS_USERYOURLS_PASS登录(示例中为admin / admin_password_123)。

首次登录会进入初始化界面: 1. 语言选择:支持中文,选择简体中文 2. 时区设置:选择Asia/Shanghai 3. 点击“安装YOURLS”

安装完成后,你将看到管理后台主界面。

基本使用指南

创建短链接

  1. 在后台“快速创建”区域输入长URL(如飞牛NAS文件分享链接)
  2. 可选:自定义短链接关键词(如nas-file1
  3. 点击“缩短URL”

生成的短链接格式为:http://192.168.1.100:8080/nas-file1

查看统计数据

YOURLS自动记录每个短链接的点击次数、来源IP、访问时间等数据。在后台“统计”页面可查看详细报告。

使用API接口

YOURLS提供RESTful API,方便集成到自动化脚本中。例如使用curl创建短链接:

curl -X POST http://192.168.1.100:8080/yourls-api.php \
  -d "signature=你的API密钥" \
  -d "action=shorturl" \
  -d "url=https://example.com/long-url" \
  -d "format=json"

API密钥可在后台“管理→工具”页面获取。

高级配置与优化

1. 启用HTTPS(通过反向代理)

如果飞牛NAS已配置域名和SSL证书,建议通过Nginx反向代理为YOURLS启用HTTPS:

# Nginx配置片段
server {
    listen 443 ssl;
    server_name yourls.yourdomain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://192.168.1.100:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

同时需修改docker-compose中的YOURLS_SITE为HTTPS地址。

2. 数据备份策略

YOURLS数据存储在MySQL数据库中,建议定期备份:

# 创建备份脚本 /volume1/docker/yourls/backup.sh
#!/bin/bash
docker exec yourls-db mysqldump -u root -p'yourls_root_pass' yourls > /volume1/backups/yourls_$(date +%Y%m%d).sql

设置飞牛NAS定时任务(控制面板→任务计划)每天执行。

3. 插件安装示例:生成二维码

  1. 下载插件:在YOURLS官方插件目录搜索QRCode
  2. 将插件文件夹放入/volume1/docker/yourls/data/plugins/
  3. 在后台“管理→插件”页面激活

之后每个短链接页面将自动显示对应的二维码图片。

常见问题排查

问题1:无法访问管理后台

  • 检查端口映射是否正确:sudo docker-compose ps查看端口状态
  • 确认NAS防火墙未阻断8080端口
  • 查看容器日志:sudo docker logs yourls-app

问题2:短链接生成后访问报404

  • 检查YOURLS_SITE配置是否与实际访问地址一致
  • 确认数据库连接正常:sudo docker logs yourls-db
  • 重新执行初始化安装(删除data目录下的配置文件)

问题3:数据库连接失败

  • 检查docker-compose中数据库用户名密码是否匹配
  • 确认MySQL容器已完全启动(启动需要10-20秒)
  • 检查端口3307是否被占用

结语

至此,你已在飞牛NAS上成功部署了属于自己的短链接服务。YOURLS不仅解决了长链接分享的不便,还提供了完整的统计分析功能。你可以进一步探索其插件生态,比如添加防垃圾链接、支持OAuth登录等高级功能。

这个自建服务完全掌控在你的NAS之中,数据安全、功能自主,是飞牛NAS家庭数据中心的一个实用补充。现在就开始缩短你的第一个链接吧!

💬 评论区
发表评论

暂无评论,来说两句吧