首页
/ Slink 自托管图片分享服务完全指南

Slink 自托管图片分享服务完全指南

2026-03-10 05:36:50作者:瞿蔚英Wynne

准备工作:环境与依赖检测

3分钟环境兼容性检测

🔧 系统要求验证

# 检查Node.js版本(要求v16.0.0+)
node -v | grep -E "v16|v18|v20" || echo "Node.js版本过低"

# 验证Docker兼容性
docker --version && docker-compose --version || echo "Docker环境缺失"

⚠️ 注意:低于v16的Node.js版本会导致依赖安装失败,Docker Engine需20.10.0以上版本以支持Compose V2特性

零门槛项目获取

🔧 代码仓库克隆

git clone https://gitcode.com/gh_mirrors/sl/slink
cd slink

🔧 基础依赖安装

# 服务端依赖
cd services/api && composer install --no-dev

# 客户端依赖
cd ../../services/client && yarn install

核心组件:功能模块解析

数据处理核心模块

服务端架构基于Symfony框架构建,负责图片存储、处理与权限控制。核心代码位于services/api/src/Slink/,包含:

  • Image模块:提供图片上传、格式转换、尺寸调整功能
  • User模块:处理用户认证、权限管理与数据隔离
  • Storage模块:支持本地存储与云存储适配器切换

图片处理界面
图1:图片处理界面展示 - 包含尺寸调整、格式转换和分享功能

界面交互层

客户端应用采用Svelte构建单页应用,提供直观的用户操作界面。关键功能区:

  • 上传中心:拖拽上传与批量处理
  • 媒体库:标签分类与高级搜索
  • 图片编辑器:支持裁剪、滤镜与水印添加

媒体库管理界面
图2:媒体库管理界面 - 展示标签筛选与批量操作功能

容器化部署系统

Docker编排通过多环境配置实现灵活部署:

  • docker-compose.yaml:生产环境配置
  • docker-compose.dev.yaml:开发环境配置(包含热重载)
  • docker/scripts/entrypoint.sh:容器初始化脚本

快速启动:从安装到运行

一键启动方案

🔧 开发环境启动

# 使用开发配置启动所有服务
docker-compose -f docker-compose.dev.yaml up -d

# 初始化数据库
docker-compose -f docker-compose.dev.yaml exec api bin/console doctrine:migrations:migrate

🔧 生产环境部署

# 构建生产镜像
docker-compose build

# 启动服务(后台运行)
docker-compose up -d

✅ 服务启动后可通过 http://localhost:80 访问,默认管理员账户:admin@example.com / password

常见启动故障排查

  • 端口冲突:修改docker-compose.yamlports映射(如将80:80改为8080:80)
  • 数据库连接失败:检查docker/config/runtime/production.conf中的数据库配置
  • 静态资源加载异常:执行docker-compose exec api bin/console assets:install

深度配置:从基础到高级

基础配置详解

核心配置文件位于services/api/config/settings.yaml

{
  app: {
    name: "Slink",          // 应用名称(默认:Slink)
    debug: false,           // 调试模式(生产环境建议关闭)
    upload_limit: "100M"    // 单文件上传限制(默认:50M)
  },
  storage: {
    default_provider: "local",  // 存储提供者(local/s3/gcs)
    local: {
      path: "%kernel.project_dir%/var/data"  // 本地存储路径
    }
  }
}

环境变量覆盖

通过.env文件或系统环境变量覆盖配置:

# 数据库配置
DATABASE_URL=mysql://user:pass@db:3306/slink

# 存储配置
STORAGE_PROVIDER=s3
S3_ACCESS_KEY=your_access_key
S3_SECRET_KEY=your_secret_key

⚠️ 环境变量优先级:系统环境变量 > .env.local > .env

高级参数调优

🔧 性能优化配置

# services/api/config/packages/framework.yaml
framework:
  cache:
    app: cache.adapter.redis  # 启用Redis缓存
  messenger:
    transports:
      async: "%env(MESSENGER_TRANSPORT_DSN)%"  # 异步处理图片任务

🔧 安全加固

# services/api/config/packages/security.yaml
security:
  firewalls:
    main:
      rate_limiter:
        policy: 'sliding_window'
        limit: 100  # 100请求/小时
        period: 3600

扩展阅读

  • 测试用例说明:项目测试代码位于services/api/tests/目录,包含单元测试与集成测试
  • API文档:启动服务后访问/api/doc查看Swagger API文档
  • 高级部署指南:包含负载均衡配置与监控告警设置的详细说明
登录后查看全文
热门项目推荐
相关项目推荐