使用
使用
目录
[toc]
版权声明
项目完整名称为:Filesite/Machete,为求简单下文都以machete代替。
这里只做关于此优秀项目的一些个人使用记录,具体信息请访问作者官网,版权归原作者所有。
仓库地址:https://github.com/filesite-io/machete
它足够安全吗
用machete家庭相册系统管理我的照片安全吗?
请放心使用machete家庭相册系统来把本地图片目录转化为一个网站,只要你遵循我们推荐的方式安装部署,它是绝对安全的!
理由如下:
- machete是开源项目,代码公开,接受任何人/机构的安全检测;
- 推荐使用docker安装部署machete,docker的安全机制很完善;
- 只给runtime/目录写入权限,其它文件和目录只读;
Filesite/machete是开放源代码的,它托管在以下几个git网站:
并遵循MIT License,任何个人或公司,只要在保留来源申明的情况下,都可以基于它根据需要做修改后免费使用。
另外,推荐使用docker来安装部署machete家庭相册, 这样基于docker提供的安全沙箱环境,最大程度地保护你的电脑、服务器不受machete程序影响。
警告
最后,machete程序只有临时文件存放目录runtime/需要开放写入权限,其它文件和目录都只需开放“只读”权限即可, 所以你在使用docker为machete配置volume或者本地映射目录时,相册目录只开放只读权限docker容器, 由此可以进一步确保你的照片目录不会被machete程序修改/删除。
如何更新代码
方案1:更新镜像
docker pull filesite/machete
方案2:更新容器里的代码
docker exec -it machete /var/www/machete/bin/upgrade.sh
[root@docusaurus-wiki ~]#docker exec -it machete sh
/var/www/html # cat /var/www/machete/bin/upgrade.sh
#!/bin/sh
echo "Upgrade machete ..."
echo ""
## 改为优先从gitcode下载,避免域名解析问题
download_link_gitcode="https://gitcode.net/filesite/machete/-/archive/master/machete-master.tar.gz"
download_link_filesite="https://git.filesite.io/filesite/machete/archive/master.tar.gz"
# 检测域名是否能连接
# 返回值:0 - 不能连接,1 - 可连接
detectDomainCanConnect () {
domain=$1
if [ -z "${domain}" ]; then
echo "Usage: detectDomainCanConnect domain"
echo ""
exit 1
fi
ping_res=`ping -c 3 "${domain}"`
if [[ $ping_res == *"100.0% packet loss"* ]]; then
return 0
fi
return 1
}
if [ ! -d /var/www/downloads ]; then
mkdir -p /var/www/downloads
fi
cd /var/www/downloads/
if [ -f master.tar.gz ]; then
rm -f master.tar.gz
fi
if [ -d machete/ ]; then
rm -rf machete/
fi
# 升级machete
detect_domain="gitcode.net"
echo "检测${detect_domain}是否可连接..."
detectDomainCanConnect "${detect_domain}"
connect_res=$?
if [ $connect_res -eq 0 ]; then
echo "⚠️⚠️"
echo "当前网络无法连接[${detect_domain}],即将从备用网址下载machete"
curl --connect-timeout 15 "${download_link_filesite}" -o "master.tar.gz"
else
curl --connect-timeout 15 "${download_link_gitcode}" -o "master.tar.gz"
fi
if [ -f "master.tar.gz" ]; then
tar -zxvf master.tar.gz
rm -f master.tar.gz
# 兼容gitcode的tar包解压后目录为:machete-master/
if [ -d machete-master/ ]; then
mv machete-master/ machete/
fi
rsync -vrL machete/* /var/www/machete/ \
--exclude=www/content/ \
--exclude=www/navs/ \
--exclude=www/girls/ \
--exclude=www/videos/ \
--exclude=www/tajian/ \
--exclude=runtime/
fi
echo "Machete front-end upgraded."
echo ""
# admin/后台不再维护
# upgrade admin
## cd /var/www/downloads/
## curl --connect-timeout 15 "https://git.filesite.io/wen/jialuomaadmin/archive/master.tar.gz" -o "master.tar.gz"
## if [ -f "master.tar.gz" ]; then
##
## tar -zxvf master.tar.gz
## rm -f master.tar.gz
## rm -rf /var/www/machete/www/admin/
## mv jialuomaadmin/dist/ /var/www/machete/www/admin
##
## fi
## echo "Admin system upgraded."
## echo ""
# upgrade nginx config
if [ -d /etc/nginx/http.d/ ]; then
cp /var/www/machete/conf/nginx_machete.conf /etc/nginx/http.d/machete.conf
fi
if [ -d /etc/nginx/conf.d/ ]; then
cp /var/www/machete/conf/nginx_machete.conf /etc/nginx/conf.d/machete.conf
fi
/usr/sbin/nginx -s reload
echo "Nginx config upgraded and reloaded."
echo ""
echo ""
echo "==Machete upgrade done.=="
echo ""
/var/www/html #
系统配置文件在哪里
全局配置文件:conf/app.php
自定义配置文件:runtime/custom_config.json
推荐使用自定义配置文件,以免系统升级后配置被覆盖。
如果是使用docker安装的machete,请自行了解如何修改docker容器里的文件,或者如何把本地文件复制到容器替换。
怎么开启密码授权访问
在目录runtime/下创建配置文件:custom_password.json, 可复制conf/custom_password.json到runtime/目录下进行修改。
也可按下面示例创建:
{
"password_auth": {
"enable": true,
"default": "",
"allow": {
"目录1": "hello",
"目录2": "world"
}
}
}
配置说明:
- enable开关设置true则启用,默认为false关闭状态
- default选项配置全局默认密码,针对所有目录生效
- allow里配置单个目录的授权密码,如果default配置为空,则只有allow里所设置的目录需要密码授权访问
2024年9月5日已解决
- 我的配置:
#1、创建文件
cat > /root/machete/runtime/custom_password.json <<EOF
{
"password_auth": {
"enable": true,
"default": "",
"allow": {
"3-视频": "123456",
"4-高圆圆": "123456"
}
}
}
EOF
chmod 777 custom_password.json
#2、重启生效
cd /root/machete
docker-compose down
docker-compose up -d
- 验证
完美。
如何修改自己网站logo
v1(老版本)
请创建自己的icon文件,命名为favicon.ico,替换根目录下的这个图标即可;
注意: 请清空浏览器缓存后验证新图标,否则可能因为浏览器缓存而看到老的图标。
2024.8.31已解决。
需求
方法
亲自测试
- 利用Favicon.io 制作自己的icon图片:
- 将图片上传到machete容器的
/var/www/machete/www
路径下,替换掉原来的图片
#1、先删除原来容器里默认的图标
docker exec -it machete sh
cd /var/www/machete/www
rm -rf favicon.ico
#2、拷贝自己制作的网站图标到容器
cd /root/machete
ll favicon.ico #自己制作的网站logo
docker cp favicon.ico machete:/var/www/machete/www
#3、重启容器
docker restart machete
#4、浏览器刷新验证(完美)
v2(新版本)
请创建自己的icon文件,命名为favicon.ico,把它复制到你的图片根目录即可;
怎么关闭网页底部的二维码
在runtime/custom_config.json中增加配置:
"showQRImageInFooter": false
自己测试:
#1、创建文件
vim /root/machete/runtime/custom_config.json
{"theme":"beauty","content_directory":"girls/","enableSmallImageForWan":"true","showQRImageInFooter": false}
#2、重启生效
docker restart machete
- 验证(复合预期)
怎么修改底部的版权信息
新版本
- 配置
请在图片根目录下,创建文件README_copyright.txt,内容参考下面示例代码:
<span>©2022 - 2024</span>
by <a href="https://onedayxyy.cn/" target="_blank">One</a>
<br>
执行耗时: {page_time_cost} ms
- 重启容器
cd /root/machete/photo
docker-compose down
docker-compose up -d
- 验证
清空浏览器缓存,测试:(复合预期,完美)
==(旧版本)(舍弃)==
请编辑目录下的php文件:
themes/beauty/views/layout/
找到“尾部网站信息”,按自己的需要修改并保存。
注意本地保存相关文件存档,machete升级系统时会覆盖此目录下的文件。
- 自己配置:
#1、配置
docker exec -it machete sh
cd /var/www/machete/themes/beauty/views/layout
vi main.php
exit
#2、重启生效
docker restart machete
- 验证(符合预期)
怎么修改网站简介信息?
请修改图片根目录下的README.md文件内容(如果你安装的是老版本,看不到这个文件,请手动创建),它是markdown格式的内容。
保存后,点网页右上角“刷新”图标,清空缓存查看效果。
怎么修改网站标题?
网站标题显示在网页左上角,以及浏览器tab栏上,系统默认的标题是“家庭相册”或者“Filesite/Machete”。
请在图片根目录下,创建文件README_title.txt,用一行文字来设置,示例如下:
我的相册
相册部署到外网了,点击图片打开有点慢怎么办
machete家庭相册默认为局域网使用,配置enableSmallImageForWan开启查看大图显示缩略图是关闭的, 如果你的照片文件大小很大,那么在外网打开可能会很慢。
解决办法,为外网点击图片浏览大图开启缩略图功能, 在自定义配置:runtime/custom_config.json里增加以下配置即可:
"enableSmallImageForWan": true
在局域网内使用,能否所有图片使用原图而不是缩略图?
系统配置enableSmallImage默认为true打开的,在自定义配置文件中,加入以下配置保存即可关闭所有缩略图功能:
"enableSmallImage": false
我的设备cpu性能较差,缩略图显示有点慢且cpu占用较高怎么解决?
machete家庭相册在设计的时候考虑到在嵌入式设备中运行,缩略图功能可由用户的浏览器完成。
在自定义配置中把disableGenerateSmallImageInServer开关打开即可关闭服务器端生成缩略图,从而节省cpu消耗:
"disableGenerateSmallImageInServer": true
增加内网ip和ip白名单设置
2024年9月20日更新成功。(完美🤣)
更新内容
号外!machete相册源码发布新版啦!增加功能:1. pc版左侧目录支持展开/收拢,且可配置(配置项见conf/app.php)2. 增加内网ip和ip白名单设置,支持对:清空缓存、设置目录封面图、设置视频封面图管理权限限制gitcode、gitee、github、docker同步发布,欢迎更新体验!
修改方法:
情况1:(相册部署在局域网里)
作者提供的:
情况2:(相册部署在公网服务器)
我的machete是直接部署在公网服务器的,那么如何设置相册封面呢?
当时自己出现的问题:
(配置了,还时没有效果。。。😒)
进一步研究:
故障原因:
问题:我电脑的外网ip,每次开机会改变得吗
自己重新配置,再次测试:
将容器里的app.php文件原来由服务器的公网ip改为自己局域网外网ip,重启容器,再次测试发现就ok了,完美😉
重启容器:
docker restart machete
测试效果:
我的效果:
其他人帮我测试的效果:
将配置写进runtime/custom_config.json
里
app.php内容:
//...............ip.........................................................
//...............192.168.....................127.0.0.1...localhost...
'adminForLanIps' => true,
//.....................ip.........
'adminWhiteIps' => array(
'127.0.0.1',
'192.168.1.105',
'183.192.139.160',
),
gpt提问:
app.php内容有如下字段:
'adminForLanIps' => true,
'adminWhiteIps' => array(
'127.0.0.1',
'192.168.1.105',
'183.192.139.160',
),
custom_config.json内容如下:
{"theme":"beauty","content_directory":"girls/","enableSmallImageForWan":"true","showQRImageInFooter": false}
请问,如何把app.php里2个数据项内容填到ustom_config.json里呢?
转换结果:
{
"theme": "beauty",
"content_directory": "girls/",
"enableSmallImageForWan": "true",
"showQRImageInFooter": false,
"adminForLanIps": true,
"adminWhiteIps": [
"127.0.0.1",
"192.168.1.105",
"183.192.139.160"
]
}
测试效果:
重启容器后:
效果:(nice)
支持背景音乐
相册支持cdn
相册缩略图,缩略图,原图都会使用cdn的;
注意:
关于分享加密相册/加密相册里的照片的效果:
配置方法
好了, 前面两个图是添加缓存配置: 1、把所有图片视频资源后缀加入缓存规则; 2、针对缩略图网址:/site/smallimg/ 设置缓存key,以区分不同图片分开缓存;
第三张图,是用来清空某个目录的缓存, 刚刚把/site/smallimg/里的所有cdn缓存清空了, 打开你的网站现在都能正常显示图片了
如果你本地打开依然看到老的图片, 先试着清空浏览器缓存, 或者按这个截图,用chrome打开调试工具,勾选“禁用缓存” 就会看到最新效果
也可以换一个从来没打开过的浏览器打开你的相册测试
- 关闭ipv6功能:(否则自己无法看到清空缓存图标)
- 效果
使用了cdn后,只要你第一次打开相册,缩略图进行缓存后,下次再次进入相册,会秒显示相册图片的;😊(体验相当nice)
显示版本号
- 配置方法
vim /root/machete/runtime/custom_config.json
{
"theme": "beauty",
"content_directory": "girls/",
"enableSmallImageForWan": "true",
"showQRImageInFooter": false,
"adminForLanIps": true,
"adminWhiteIps": [
"127.0.0.1",
"192.168.1.105",
"183.192.139.160"
],
"slide_show_timeout": 5,
"showVersion": true
}
- 效果
怎么对照片、视频、音乐文件进行排序?
在runtime/custom_config.json中增加以下配置:
"sortFilesByName": true,
"sortOrderOfFiles": "asc"
其中sortFilesByName设置为true,打开文件按名称排序, sortOrderOfFiles则设定排序方式,asc顺序,desc倒序。
除此之外,还可以在照片目录下增加排序文件:sort.txt, 内容为当前目录下的文件名,格式一行一个,示例:
2_20240406223804.jpg
1_20240406223752.jpg
3_20240406223809.jpg
如果配置了此排序文件,且sortFilesByName为false关闭状态,则系统会按照排序文件中的文件名从上到下排序。
怎么设置每页照片、视频、音乐文件数量?
在自定义配置:runtime/custom_config.json里增加以下配置:
"default_page_size": 50
怎么设置自动播放时每张照片停留时间?
在自定义配置:runtime/custom_config.json里增加以下配置:
"slide_show_timeout": 10
单位:秒。
怎么设置局域网内访问拥有刷新、设置封面等管理权限?
在自定义配置:runtime/custom_config.json里增加以下配置:
"adminForLanIps": true
系统支持这三类IP:
127.0.0.1
172.17.0.1,
192.168.xxx.xxx
外网访问怎么设置允许当前IP访问拥有刷新、设置封面等管理权限?
在自定义配置:runtime/custom_config.json里增加以下配置:
"adminWhiteIps": [
"你的外网ip地址"
]
如果部署的时候相册是经过nginx反向代理转发的,请在nginx的配置中设置转发用户ip地址:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
在启用Imagick扩展后,CPU占用过高或者大图片缩略图无法生成怎么解决?
Imagick库的特性是生成的缩略图画质更高,但缺点是CPU占用比较高。
使用最新版filesite/machete的docker镜像,在自定义配置中加上开启配置项就能使用Imagick库来生成缩略图:
"enable_lib_imagick": true
请在启动容器的时候根据你的服务器配置,指定容器最大能使用的内存和cpu数量, 这将改善缩略图生成,避免因为过高的CPU占用导致php进程被docker杀死从而无法生成大图片的缩略图。
例如1G内存双核cpu服务器,允许最大使用512M内存,1.5个cpu核心:
docker run --name machete -p 1080:80 \
-m 512m \
--cpus="1.5" \
-v /d/图片目录/:/var/www/machete/www/girls/ \
-itd filesite/machete \
beauty
怎么设置菜单栏不显示年、月分类?
从0.4.0版本开始,filesite/machete相册支持按年、月分类所有图片、视频、音乐文件。
默认按年、月分类菜单是显示的,如需关闭,在自定义配置:runtime/custom_config.json里增加以下配置:
"showYearMonthMenus": false
更多问题如何联系?
请打开官方网站查看底部QQ群和微信: FileSite.io