首页
/ Slink 自托管图片分享服务使用指南

Slink 自托管图片分享服务使用指南

2026-03-15 04:37:58作者:裴锟轩Denise

一、环境准备:从零开始的部署准备

3分钟环境检查清单

在开始部署 Slink 前,请确认你的环境满足以下条件:

  • Docker 环境:Docker Engine 20.10+ 与 Docker Compose v2+(用于容器化部署)
  • 系统资源:至少 2GB 内存(推荐 4GB+)和 10GB 可用磁盘空间
  • 网络配置:开放 80/443 端口(用于 Web 访问)和 5432 端口(数据库)

[!TIP] 可以通过以下命令快速检查 Docker 环境:

docker --version && docker-compose --version

源码获取与目录结构

通过以下命令克隆项目源码:

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

项目采用模块化架构,核心目录结构如下:

slink/
├── docker/           # 容器化部署配置
├── services/         # 核心服务代码
│   ├── api/          # 后端 API 服务
│   └── client/       # 前端 Web 应用
└── screens/          # 功能截图与演示资源

核心目录功能卡片

目录路径 主要功能 典型文件 扩展建议
docker/ 容器配置与启动脚本 docker-compose.yamlDockerfile 可添加自定义 docker-compose.override.yml 覆盖默认配置
services/api/ 后端业务逻辑 src/Slink/Image/config/services.yaml 可扩展新的图像处理模块
services/client/ 前端界面与交互 src/routes/src/feature/ 可自定义主题配色和交互逻辑

二、核心组件解析:理解系统架构

核心模块联动关系

Slink 采用前后端分离架构,主要包含三大核心组件:

  1. API 服务(基于 Symfony 框架):处理业务逻辑、数据持久化和图像处理
  2. Web 客户端(基于 Svelte):提供用户界面和交互体验
  3. 数据存储层:包含关系型数据库(用户数据)和文件系统(图片存储)

Slink 核心模块架构 图 1:Slink 图片管理界面展示 - 包含图片预览、尺寸调整和分享功能

数据流向解析

  1. 用户通过 Web 客户端上传图片
  2. API 服务接收请求并进行处理(验证、格式转换、元数据提取)
  3. 处理后的图片存储到文件系统
  4. 图片元数据保存到数据库
  5. 客户端通过 API 获取图片列表和详情

[!TIP] 所有图像处理操作采用异步队列模式,确保系统在高负载下仍保持响应性

三、快速上手:从安装到使用

多环境启动对比

Slink 提供三种部署模式,可根据需求选择:

1. 开发环境(本地开发)

docker-compose -f docker-compose.dev.yaml up -d

特点:代码热重载、调试工具启用、默认使用 SQLite 数据库

2. 演示环境(快速体验)

docker-compose -f docker-compose.demo.yaml up -d

特点:预填充测试数据、自动创建管理员账户(admin/admin)

3. 生产环境(正式部署)

# 先配置环境变量
cp .env.example .env
# 编辑 .env 文件设置敏感信息
docker-compose up -d

特点:性能优化、安全加固、使用 PostgreSQL 数据库

启动参数说明

参数 作用 示例 适用环境
--build 强制重新构建镜像 docker-compose up --build 代码更新后
-d 后台运行 docker-compose up -d 生产环境
--force-recreate 强制重新创建容器 docker-compose up --force-recreate 配置变更后

基础操作指南

1. 图片上传

  1. 访问 http://localhost:3000/upload
  2. 拖放图片到上传区域或点击选择文件
  3. 可选:设置图片标题、描述和标签
  4. 点击"上传"按钮完成操作

2. 图片管理

上传后的图片可在"历史记录"页面查看和管理:

Slink 上传历史界面 图 2:上传历史界面 - 支持标签筛选、格式转换和批量操作

3. 图片分享

在图片详情页,可通过以下方式分享:

  • 复制直接链接
  • 生成嵌入代码(支持 Markdown 和 HTML)
  • 调整尺寸后分享(保持原始比例)

四、深度配置:系统定制与优化

基础配置详解

核心配置文件位于 services/api/config/settings.yaml,主要配置项说明:

# config/settings.yaml
app:
  name: 'Slink'
  environment: 'prod'  # 环境标识:dev/test/prod
  debug: false         # 调试模式开关

storage:
  provider: 'local'    # 存储提供者:local/s3/gcs
  path: '%kernel.project_dir%/var/data'  # 本地存储路径
  max_file_size: 50M   # 最大上传尺寸

database:
  driver: 'pdo_pgsql'  # 数据库驱动
  url: '%env(resolve:DATABASE_URL)%'  # 数据库连接URL

关键配置项风险等级

配置项 默认值 有效值 风险等级 说明
app.debug false true/false ⚠️ 高 生产环境必须设为 false,避免泄露敏感信息
storage.max_file_size 50M 1M-1000M ⚠️ 中 过大会增加存储压力和安全风险
database.url - 数据库连接串 🔴 严重 包含数据库凭证,需严格保密

场景化配置方案

开发环境配置模板

# 开发环境优化:启用调试和热重载
app:
  environment: 'dev'
  debug: true

storage:
  provider: 'local'
  path: '%kernel.project_dir%/var/data_dev'

database:
  driver: 'pdo_sqlite'
  path: '%kernel.project_dir%/var/data.db'

生产环境配置模板

# 生产环境优化:性能与安全兼顾
app:
  environment: 'prod'
  debug: false

storage:
  provider: 's3'  # 使用 AWS S3 存储
  s3:
    bucket: 'my-slink-bucket'
    region: 'us-west-2'
    key: '%env(AWS_ACCESS_KEY)%'
    secret: '%env(AWS_SECRET_KEY)%'

database:
  driver: 'pdo_pgsql'
  url: 'postgresql://user:password@db:5432/slink'
  pool_size: 10  # 数据库连接池大小

高级定制选项

1. 自定义域名配置

修改 docker/config/caddy/Caddyfile

your-domain.com {
  reverse_proxy client:3000
  handle /api/* {
    reverse_proxy api:8000
  }
  tls your-email@example.com  # 自动申请 Let's Encrypt 证书
}

2. 图片处理 pipeline 扩展

可在 services/api/src/Slink/Image/Infrastructure/Service/ 目录下添加自定义图片处理器,支持:

  • 水印添加
  • 智能裁剪
  • 格式优化
  • 人脸识别

[!TIP] 扩展后需在 services/api/config/services/image.yaml 中注册新服务

故障排查与常见问题

启动失败排查流程

  1. 检查容器状态:docker-compose ps
  2. 查看服务日志:docker-compose logs -f api
  3. 验证数据库连接:docker-compose exec api bin/console doctrine:query:sql "SELECT 1"
  4. 检查端口占用:netstat -tulpn | grep 80

常见问题解决

1. 上传图片提示"文件过大"

  • 检查 storage.max_file_size 配置
  • 验证 Nginx/Caddy 反向代理的 client_max_body_size 设置
  • 检查 PHP upload_max_filesizepost_max_size 配置

2. 图片无法显示

  • 检查文件权限:chmod -R 755 services/api/var/data
  • 验证存储路径配置是否正确
  • 查看 API 日志中的文件系统错误

Slink 图片详情界面 图 3:图片详情界面 - 支持尺寸调整、格式转换和多平台分享

通过以上指南,你已掌握 Slink 的部署、配置和使用方法。如需进一步定制,可参考源代码中的 docs/ 目录获取更多高级特性说明。

登录后查看全文