Solo  当前访客:0 开始使用

搭建个人网盘


背景

  1. 公有云长期数据的可靠性存疑,且隐私性可能存在问题
  2. 原先使用猫盘等私有云, 但是太黑盒,基本两三年之后就不可靠了
    这篇文章主要是讲解如何快速搭建可控的私有云

准备

  1. 云服务器(可选)
  2. 一台旧手机(必须)
  3. 下载aidAux,一款可以将手机变身成linux的软件
  4. ksweb(可选),不太可靠,主要是使用便捷
  5. 可道云,一款私有云软件,功能齐全,具备管理端、app端

云服务搭建

云服务器上运行起可道云

我这边使用的是阿里云服务器,这样可以在公网随时使用

参考官网https://kodcloud.com/download/

在云服务器上新建一个目录,将项目下载下来

wget https://static.kodcloud.com/update/download/kodbox.1.36.zip

下载下来之后只有可运行的文件,同时说php的, 执行起来比较麻烦,这边可以使用docker来启动

制作docker

在项目文件下,新建一个docker的文件夹,放一些配置文件。 可参考docker使用

  1. 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;
  }
}

端口号随意吧,不要和主服务的冲突就行

  1. 定义启动脚本

    # 后台启动
    php-fpm -D
    # 关闭后台启动,hold住进程
    nginx -g 'daemon off;'
    
  2. 定义源

    https://mirrors.aliyun.com/alpine/v3.11/main/
    https://mirrors.aliyun.com/alpine/v3.11/community/
    
  3. 制作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"]
    
  4. 构建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定期运行

  1. cron脚本添加
    crontab -e
    # 打开后加入一行
    0 1 * * * /home/scp.sh > /home/log.log 2>&1
    

指在每天一点执行scp.sh的命令,并写入执行日志

  1. 重启cron

    service cron restart
    

问题解答

  1. crontab 配置 1点运行总是无法生效

原因:发现是时区不对,导致没有在预期时间内运行

时区设置

将主机的时区文件复制到容器

mv /etc/localtime /etc/localtime_bak
cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

使用date检查是否正确

  1. 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

访问站点,初始化项目

image.png

开始使用吧

访问可道云官网,下载手机app, 配置站点为 xx.xx.xx.xx:8756 即可


标题:搭建个人网盘
作者:hugh524
地址:https://blog.uproject.cn/articles/2023/01/08/1673148305108.html

, , 0 0