零基础搭建私有Lychee相册:Docker与宝塔面板的高效组合方案

每次旅行归来或家庭聚会后,手机里堆积的照片总让人头疼——iCloud空间不足、社交平台压缩画质、硬盘备份又难以随时查看。其实只需一台基础配置的云服务器,配合Docker和宝塔面板,30分钟就能打造一个私有化部署全平台访问的专业级相册系统。不同于网盘和社交平台的限制,Lychee相册提供原画质存储、智能分类和灵活的分享控制,真正实现数字资产的自主管理。

1. 环境准备与基础配置

1.1 服务器选购与初始化

对于个人相册这类轻量级应用,建议选择2核4G内存、50GB SSD存储的基础配置(腾讯云轻量服务器约年费300元)。关键注意三点:

  • 地域选择:优先靠近用户所在区域(如华南用户选广州节点)
  • 镜像模板:直接选用"宝塔面板7.9.3"官方镜像
  • 防火墙规则:预放行8888(宝塔面板)、80/443(Web服务)、5120(Lychee默认端口)

登录服务器后,终端执行以下命令获取宝塔面板初始信息:

sudo /etc/init.d/bt default

输出示例:

==================================================================
BT-Panel default info!
==================================================================
外网面板地址: http://123.123.123.123:8888
username: admin
password: ********
==================================================================

1.2 宝塔面板基础环境部署

首次登录宝塔面板需完成三项核心配置:

  1. LNMP环境安装

    • Nginx 1.22+
    • MySQL 5.7(建议分配1GB内存)
    • PHP 8.0(需安装fileinfo扩展)
    • 编译安装模式更稳定
  2. Docker管理器安装

    • 通过宝塔"软件商店"直接安装
    • 或命令行执行:
      curl -fsSL https://get.docker.com | sh
      systemctl enable docker
      
  3. 安全加固

    • 修改默认8888端口为非常用端口
    • 设置面板访问IP白名单
    • 开启BasicAuth二次验证

提示:若遇到"请使用正确的入口登录面板"错误,执行/etc/init.d/bt restart重启服务即可

2. Lychee容器化部署实战

2.1 Docker镜像的智能管理

Lychee官方镜像提供三种部署方式:

部署方式命令示例适用场景
基础运行docker run -d -p 5120:80 lycheeorg/lychee快速测试
数据持久化docker run -d -v /lychee_data:/data ...生产环境
多容器编排使用docker-compose.yml高可用部署

推荐使用数据持久化方案,避免容器重建导致照片丢失:

mkdir -p /data/lychee/{uploads,db}
docker run -d \
  -p 5120:80 \
  -v /data/lychee/uploads:/uploads \
  -v /data/lychee/db:/db \
  lycheeorg/lychee

2.2 性能优化配置

修改config/.env文件(需先进入容器):

# 内存缓存配置
MEMORY_LIMIT=512M
UPLOAD_MAX_SIZE=100M

# 图像处理参数
IMAGE_QUALITY=90
ENABLE_DECLINE_TAKEDOWN=true

关键优化点:

  • 缩略图策略:根据访问设备动态生成
  • 缓存机制:启用Redis可提升20%加载速度
  • 定时任务:每日凌晨执行存储优化

3. 域名绑定与HTTPS加密

3.1 宝塔面板反向代理配置

  1. 添加站点时勾选"创建数据库",选择MySQL 5.7
  2. 在"反向代理"选项卡中添加:
    • 目标URL:http://127.0.0.1:5120
    • 高级设置中启用WebSocket支持
  3. 配置文件追加以下参数:
    client_max_body_size 100M;
    proxy_read_timeout 300s;
    

3.2 免费SSL证书部署

宝塔面板支持Let's Encrypt自动续签:

  1. 在"SSL"选项卡选择"Let's Encrypt"
  2. 勾选强制HTTPS和HTTP/2支持
  3. 添加以下HSTS安全头:
    add_header Strict-Transport-Security "max-age=63072000" always;
    

常见问题排查:

  • 证书不生效:检查443端口是否放行
  • 混合内容警告:修改Lychee配置中的APP_URL为https
  • 重定向循环:清除浏览器缓存或使用无痕模式

4. 高级功能与维护技巧

4.1 自动化备份方案

创建/root/lychee_backup.sh脚本:

#!/bin/bash
# 数据库备份
docker exec lychee_db mysqldump -uroot -p"$DB_PASS" lychee > /backups/lychee_$(date +%F).sql

# 照片归档
tar -czf /backups/uploads_$(date +%F).tar.gz /data/lychee/uploads

# 同步到OSS
ossutil cp -r /backups oss://your-bucket/lychee/

设置定时任务:

chmod +x /root/lychee_backup.sh
(crontab -l ; echo "0 3 * * * /root/lychee_backup.sh") | crontab -

4.2 移动端优化实践

  1. PWA支持
    • 修改manifest.json适配iOS/Android图标
    • 启用Service Worker离线缓存
  2. 上传优化
    // 在public/js/main.js中添加
    if(navigator.userAgent.match(/Mobile/)) {
      uploader.options.chunkSize = 2 * 1024 * 1024;
    }
    
  3. 相册分享
    • 生成时效性链接(1天/7天/30天)
    • 设置查看密码和下载权限

遇到服务器迁移时,只需打包/data/lychee目录到新服务器,重新启动容器即可完整恢复。曾有位用户将包含3TB照片的Lychee实例从腾讯云迁移到AWS,仅耗时45分钟就完成了全部转移。

更多推荐