GeekNote
注册
登录

搭建一个 Lychee 网络相册/图床

· 最初发布于 ocean.zhuo.one

最近折腾NAS发现一个叫 Lychee 的开源、自托管网络相册应用,它基于PHP开发,简洁美观,支持多种图片格式、识别信息,甚至是Live Photo动态照片,极其适合摄影玩家使用。有一个 Demo 可供参考。

不过仔细研究了下,话说在前头,Lychee 并不适合部署在NAS之类的私有应用场景中,原因是Lychee导入图片会打乱文件名并删除(移动)源文件(尽管新版本提供了符号链接的导入功能),它和群晖的Moments、Nextcloud相册、Photoprism等文件系统级(FS)图片管理器并不是一个东西;

但Lychee又比较适合在公网环境下部署(比如VPS、虚拟主机等)共享公开的照片,作为公开相册、图床使用,比如在Markdown写作平台和博客同步插入图片的场景。如果你想轻松通过自己的服务器空间共享照片,那么Lychee是个不错的选择。

安装

参考了官方的安装文档: https://lycheeorg.github.io/docs/installation.html ,Lychee支持Nginx或者Apache Web服务器;

数据库支持 MySQL 5.7+ / MariaDB 10.2+,或PostgreSQL 9.2+,或内置的SQLite3数据库;而PHP版本则要求最新的PHP 8.0+,需要的扩展模块有 BCMath, Ctype, Exif, Ffmpeg, Fileinfo, GD, Imagick, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, ZIP (可见上一篇关于LNMP环境搭建的文章安装PHP扩展)。

Lychee支持使用传统虚拟主机上传精简版的方式、Compose的完全安装方式和Docker安装方式。这里我选择使用 Nginx + MariaDB + PHP 8.0 + Composer 安装 Lychee。

首先使用Git拉取Lychee安装,Git会自动建立目录拉取文件,我这里将Lychee配置在 /var/www/Lychee 目录下。并使用Compose配置依赖项。

git clone https://www.github.com/LycheeOrg/Lychee /var/www/Lychee
cd /var/www/Lychee
composer install --no-dev

先新建数据库用户:

create database [数据库名称];
create user '[数据库用户]'@'localhost' identified by '[数据库密码]';
grant all on [数据库名称].* to [数据库用户]@'localhost';

然后复制、编辑 .env 配置文件,配置数据库等选项:

cp .env.example .env
nano .env

修改env文件:

# 找到DB_开头的一行,数据库类型修改为mysql,并取消DB_DATABASE的注释,配置数据库信息:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=[数据库名称]
DB_USERNAME=[数据库用户]
DB_PASSWORD=[数据库密码]
DB_LOG_SQL=false

# 时区也改一下:

TIMEZONE=Asia/Shanghai

# 配置Redis以提高性能:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=EWBMp2Cm1ew900RJIpxo
REDIS_PORT=6379

生成密钥

php artisan key:generate

修改目录权限:

chmod -R 775 storage/* app/* public/uploads public/sym public/dist
sudo chown -R www-data:www-data storage/* app/* public/uploads public/sym public/dist
chmod -R 777 public

Nginx配置

确定一切无误之后,再新建一个conf文件,这里我放置在 /etc/nginx/conf.d 目录下。

server {
    listen 80;
    listen [::]:80;
    server_name [域名地址];
    rewrite ^(.*)$ https://$host$1 permanent;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name [域名地址];
    ssl_certificate [SSL证书文件];
    ssl_certificate_key [SSL密钥文件];

    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    root /var/www/Lychee/public/;

    client_max_body_size 16m;

    if (!-e $request_filename)
    {
        rewrite ^/(.*)$ /index.php?/$1 last;
        break;
    }

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location = /index.php {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_param HTTP_PROXY "";
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "post_max_size=100M
            max_execution_time=200
            upload_max_filesize=30M
            memory_limit=300M";
        fastcgi_param PATH /usr/local/bin:/usr/bin:/bin;
        include fastcgi_params;
    }
    
    location ~ [^/]\.php(/|$) {
        return 403;
    }
    
    error_log  /var/log/nginx/lychee.error.log;
    access_log /var/log/nginx/lychee.access.log;
    rewrite ^/(.+)/$ /$1 permanent;
}

按照惯例 测试并重启Nginx:

sudo nginx -t
sudo nginx -s reload

访问 域名地址 /index.php/install 就可以打开安装页面了,配置好之后,就安装完成了。

截图:

(共享链接: https://gallery.zhuo.one/#LFNIh5jorjBUtuVtXZO7WJxX

主界面

主界面

菜单

菜单

信息

信息

视图

视图

设置

设置

更多设置

更多设置

两步验证

两步验证

共享权限

共享权限

共享链接(支持动态照片)

共享链接(支持动态照片)

更改PWA图标

后来实测Lychee是支持作为PWA应用安装的,不过默认的图标没什么美感,作为一个设计师,那我肯定得自己设计一个图标呀!于是,新的图库图标出现了:

Gallery icon

Lychee的PWA应用图标放置在 public/img 目录下,三个PWA图标均为iOS规范格式,而favicon.ico 则直接就放在public目录下。只要替换这四个图标,等待缓存刷新就可以生效了。

关于如何设计、生成图标并不在本文的范围内。(不过以后会讲解使用 IcoFX 工具生成ico图标)有能力的话可以修改mainfest之类的源码实现更细致的配置。

1
Creative Designer 🖌️ 创意设计师
登录后评论
评论 3

我开始想允许外链好大方啊,不过只有自己用就没关系了。

reply
回复

这篇文章的图片就是放在自己搭的图床么?

社区准则 博客 联系 反馈 状态
主题