实战:docker部署filesite.io完美解决家庭相册需求-2024.8.10(测试成功)
目录
版权声明
本着开源共享、共同学习的精神:
本文是根据 开源站点:《家庭相册-filesite-io》里提供的部署文档进一步编辑输出的 ,具体信息请看 原作者github开源仓库。转载无需和我联系,但请注明文章来源。如果侵权之处,请联系博主进行删除,谢谢~
仓库地址:https://github.com/filesite-io/machete
公告
因个人最近清理了百度网盘已经分享的链接(原来已分享的链接均已失效),如果有小伙伴需要相关实战源代码,请随时联系笔者即可。😘
效果演示
背景
你想拥有一个家庭相册吗?里面可以放你的摄影作品、家人照片、旅拍作品等等……
恰好这个相册部署简单,体验丝滑,数据安全,那么选择filesite.io就对了😜
一个完美的家人相册的理想状态:
想实现如下一个需求:
我的winodws桌面有一个叫做photo的目录,然后这个目录下有不同子目录,而每个子目录分别存放了不同类型的照片。
有没有一款相册软件,可以把这个photo目录(保持子目录不变)给渲染成一个相册或图库,供大家可以公网访问呢。
本地windows相册数据-->linux;(rsync服务,增量同步,很方便)
这样的好处就是,我只需要维护winodws本地照片,然后就会自动刷新云端照片的,而不需要维护2份数据。
前提
具有1台linux服务器,具有docker、docker-compose环境。
具体部署文档参考如下:
如何搭建docker和docker-compose,见如下链接:
《实战:centos在线安装docker-2022.8.4(成功测试)》 https://wiki.onedayxyy.cn/docs/centos-docker-online-install
《实战:docker-compose安装-2024.4.14(测试成功)》 https://wiki.onedayxyy.cn/docs/docker-compose-install
环境
win10
vmwareworkstation里一台centos7.6 1810虚机,192.168.1.100,能通公网(nat模式)
源码
通过百度网盘分享的文件:v1-2024.8.10(修复bug后版本) 链接:https://pan.baidu.com/s/17vnaSkGH_0IQ43TMyk69Gw?pwd=mi0h 提取码:mi0h
v1-2024.8.10(修复bug后版本)
filesite-machete-2024.8.10.tar.gz #261M
说明:
这里之所以把镜像打包提供,是为了对数据进行备份。还是建议大家从 官网仓库 获取镜像。
1、部署
docker-compose版本:
mkdir -p /root/machete/photo
cd /root/machete
cat > /root/machete/docker-compose.yaml <<EOF
version: "3"
services:
mtphotos:
image: filesite/machete
container_name: machete
restart: always
ports:
- 1081:80
- 445:445
volumes:
- /root/machete/photo:/var/www/machete/www/girls/
EOF
docker-compose up -d
docker ps
docker版本:
docker run --name machete \
-p 1081:80 -p 445:445 \
-v /root/machete/photo:/var/www/machete/www/girls/ \
--restart=always \
-itd filesite/machete
2、访问
在浏览器访问http://192.168.1.100:1081/
3、手动上传windows相册数据到linux服务器端
将准备好的相册数据photo-test-demo.zip
上传到服务器/root目录:
[root@ruyub-blog-prod ~]# ll -h photo-test-demo.zip
-rw-rw-rw- 1 root root 61M Aug 10 18:08 photo-test-demo.zip
将相册数据解压到/root/machete/photo
目录:
cd ~
unzip photo-test-demo.zip -d /root/machete/photo
验证:
访问web,刷新下,观察现象,此时就可以看到我们的个人相册数据了:
4、rsync方式同步数据到linux
1.测试过程
删除/root/machete/photo
下相册数据:
cd /root/machete/
rm -rf /root/machete/photo
ls
这里假设linux服务器和winodws之间的rsync服务都已部署完成,具体如何部署,看如下文档:
《实战:从windows同步数据到linux(增量定时同步)-2023.11.30(测试成功)》:https://wiki.onedayxyy.cn/docs/rsync-windows-to-linux
我这里给出本次具体配置:
linux服务器端:
vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# 进行通信的端口,如果 firewall 打开的话,需要将对应的端口添加进去
port=8730
# 日志文件
log file=/var/log/rsync.log
# rsync 的进程 id
pid file=/var/run/rsync.pid
# 要同步的模块,这里一般以项目名命名
[cmi-filesite]
# 同步的目标文件夹
path=/root/machete/
# rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
use chroot=no
# 指定最大的连接数
max connections=4
# yes 表示只读本地文件无法同步到服务器
read only=no
# 客户端请求显示模块列表时,该模块是否显示出来
list=true
# 服务运行时的用户
uid=root
# 服务运行时的用户组
gid=root
# 进行验证时的用户名,必须是系统存在的用户
auth users = root
# 连接用户时的密码
secrets file=/etc/rsyncd.passwd
# 允许的 ip
hosts allow=*
!
# 1、创建目标的文件夹
mkdir /root/rsync
# 2、创建密码
# 创建文件夹
#vim /etc/rsyncd.passwd
# 写入密码
echo "root:zxl520" > /etc/rsyncd.passwd #这里写入你自己云服务器的密码就行!!!
#更改文件权限
chmod 600 /etc/rsyncd.passwd
systemctl restart rsyncd
- 同布windows相册数据到linux服务器端:
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/
观察效果:
web可以看到:(为什么是空白的呢)
因为winodws上的rsync把数据同步到linux后,同步上去的目录所属主/所属组都发生了改变,不是root,因此docker里的相册服务也就无法正常识别了。
我现在想把windows的某个目录下的内容利用rsync同步到linux,能否通过设置一些参数,让同步上去的文件默认被赋予655权限吗?(gpt下)
删除相关目录,再次执行测试:
cd ~
cd machete/
rm -rf photo/
ls
开始同步:
rsync.exe -avPzruh --delete --port 8730 --chmod=Fp=655 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/
可以看到,报错了。。。
我们再次gpt下:
C:\Users\Administrator>rsync.exe -avPzruh --delete --port 8730 --chmod=Fp=655 --password-file=/cygdrive/D/docusaurus/resource/shell/password-nuc-frp.txt /cygdrive/D/BaiduSyncdisk/photo root@192.168.1.100::cmi-filesite/
rsync: Invalid argument passed to --chmod (Fp=655)
rsync error: syntax or usage error (code 1) at main.c(1791) [client=3.2.7]
gpt回答:
亲自测试:
删除相关目录,再次执行测试:
cd ~
cd machete/
rm -rf photo/
ls