搭建个人网盘
背景
- 公有云长期数据的可靠性存疑,且隐私性可能存在问题
- 原先使用猫盘等私有云, 但是太黑盒,基本两三年之后就不可靠了
这篇文章主要是讲解如何快速搭建可控的私有云
准备
- 云服务器(可选)
- 一台旧手机(必须)
- 下载aidAux,一款可以将手机变身成linux的软件
- ksweb(可选),不太可靠,主要是使用便捷
- 可道云,一款私有云软件,功能齐全,具备管理端、app端
云服务搭建
云服务器上运行起可道云
我这边使用的是阿里云服务器,这样可以在公网随时使用
参考官网https://kodcloud.com/download/
在云服务器上新建一个目录,将项目下载下来
wget https://static.kodcloud.com/update/download/kodbox.1.36.zip
下载下来之后只有可运行的文件,同时说php的, 执行起来比较麻烦,这边可以使用docker来启动
制作docker
在项目文件下,新建一个docker的文件夹,放一些配置文件。 可参考docker使用
- default.conf (nginx配置)
server {
listen 8700;
server_name localhost;
root /var/www/html;
index index.html index.php index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
端口号随意吧,不要和主服务的冲突就行
-
定义启动脚本
# 后台启动 php-fpm -D # 关闭后台启动,hold住进程 nginx -g 'daemon off;'
-
定义源
https://mirrors.aliyun.com/alpine/v3.11/main/ https://mirrors.aliyun.com/alpine/v3.11/community/
-
制作dockerfile
在项目目录下制作Dockerfile
FROM php:7.3-fpm-alpine3.11 ENV TZ=Asia/Shanghai ADD ./docker/repositories /etc/apk/repositories ADD ./docker/default.conf / ADD ./kodbox /kodbox ADD ./docker/run.sh / RUN apk update && apk add nginx && \ apk add m4 autoconf make gcc g++ linux-headers && \ docker-php-ext-install pdo_mysql opcache mysqli && \ mkdir /run/nginx && \ mv /default.conf /etc/nginx/conf.d && \ mv /kodbox/* /var/www/html && \ touch /run/nginx/nginx.pid && \ chmod 755 /run.sh && \ apk del m4 autoconf make gcc g++ linux-headers EXPOSE 8756 EXPOSE 9000 ENTRYPOINT ["/run.sh"]
-
构建image
docker build -t alpine_nginx_php7.3:0.0.1 .
运行镜像
docker run -it --name alpine_nginx_php7.3 -d -p 8700:8700 -v /home/html:/var/www/html alpine_nginx_php7.3:0.0.1
注意:需要绑定一个外置目录,防止项目重启时失效
至此,项目就启动起来了
可以绑定域名,或者使用ip:8700访问
初始化项目
按可道云的操作提示进行操作即可, 如果没有生成lock文件,可以在html/data/system下新建install.lock来跳过安装
如果出现文件权限提示的问题,请在目录下执行赋权的指令
chmod -R 777 *
在手机上运行aidlux,用于数据备份
由于云服务上空间有限,无法无限存储文件,同时也为保证文件的持续保存,这边使用本地手机定期拉数据保存的方式
运行aidlux
此处比较简单,直接到应用市场下载即可,比较大(1.5G)左右
编写同步脚本
#!/usr/bin/expect
set timeout 82800
spawn scp -r root@youryunIp:/xxx/html/data/files /storage/emulated/0/Download
expect "*password:"
send "yourpassword\r"
expect "*#"
spawn ssh root@youryunIp
expect "*password*"
send "yourpassword\r"
expect "*#"
send "cd /xxx/html/data/files\r"
expect "*#"
send "find /xxx/html/data/files/ -regextype posix-extended -regex \".*\.(jpg|png|mp4)\" -mtime +7 | xargs rm -rf\r"
expect "*#"
send "exit\r"
expect "*#"
expect eof
上述指令主要有两个作用,一个是使用scp从远程下载,一个是删除远程的文件(7天前)
使用cron定期运行
- cron脚本添加
crontab -e # 打开后加入一行 0 1 * * * /home/scp.sh > /home/log.log 2>&1
指在每天一点执行scp.sh的命令,并写入执行日志
-
重启cron
service cron restart
问题解答
- crontab 配置 1点运行总是无法生效
原因:发现是时区不对,导致没有在预期时间内运行
时区设置
将主机的时区文件复制到容器
mv /etc/localtime /etc/localtime_bak
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
使用date检查是否正确
- expect 10s退出问题?
expect 默认会10s退出,导致scp还没执行完就关闭了
set timeout -1 # 不限制时间
本地android机搭建
前提: 安装好aidLux
安装php
增加个源,提高成功率
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://mirror.sjtu.edu.cn/sury/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
sudo apt update
安装php 模块
sudo apt install php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-json php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-bz2 php7.4-opcache php7.4-bcmath php7.4-iconv
选择自己需要的php版本
启动php-fpm
service php7.3-fpm start
配置nginx
server {
listen 8756;
server_name localhost;
root /home/html;
index index.html index.php index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
端口自选吧
重启nginx
nginx -t
nginx -s reload
访问站点,初始化项目
开始使用吧
访问可道云官网,下载手机app, 配置站点为 xx.xx.xx.xx:8756 即可
标题:搭建个人网盘
作者:hugh524
地址:https://blog.uproject.cn/articles/2023/01/08/1673148305108.html
0 0