树莓派部署seafile


由于笔记本跟台式机不在同一个地方,为了解决来回拷贝的问题就想着搭一个存储服务器用来同步,目前的网盘服务基本不支持多端同步,笔记类的软件同步效率又太低,刚好之前接触过seafile,又是免费的,就它了。

安装后的意外之喜是,Markdown文件支持在线浏览,目前我的笔记基本都是用Markdown书写的,相当于笔记app可以卸载了,而且还能备份手机图片。真是一节更比三节强,还等什么搞起来吧。

以下为个人防踩坑笔记

准备工作


  1. 设备:树莓派4B
  2. 系统:Ubuntu Server 20.10
  3. 软件:Raspberry Pi Imager,seafile8.0,mysql-server8.0, nginx
  4. 公网IP
  5. 可选:域名与ssl证书, MobaXterm1_CHS1(ssh远程连接工具自己随意,用的舒服就行)

系统安装


  1. 准备TF卡,连接到windows上

  2. 洗录软件建议选择官方的Raspberry Pi Imager,洗录后有验证

  3. 洗录后你会发现你的U盘只剩了一个几百MB的分区,不要担心,那部分分区格式window不识别,如果你要是linux系统就能看到了

  4. 安装后启动,通过SSH链接,IP通过路由器管理页面获取, 端口默认22,账号密码都是:ubuntu

  5. 有服务器版本SSH才会默认开通,图形界面版本的ubuntu需要链接显示器创建用户启动SSH才行

  6. 连接后会提示更换默认密码

  7. 更新软件

    sudo apt update # 检查更新
    sudo apt upgrade <pakeage> # 更新软件不带包名则全部更新 

挂载存储

  • linux系统中只能在root权限用户下挂载设备

  • fdisk -l # 获取识别到的设备,我用这个命令是为了根据大小找到我挂载硬盘的路径

    格式如下

    Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
    Disk model: 008-2FR102
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/o ptimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x65f5f8d0
    
    // 如果磁盘有分区,将在下方列出
    Device     Boot Start        End    Sectors  Size Id Type
    /dev/sda1        2048 3907026943 3907024896  1.8T  7 HPFS/NTFS/exFAT
    
  • blkid # 获取UUID、TYPE, UUID为唯一值,挂载磁盘时建议该值进行识别

    格式如下

    /dev/mmcblk0p1: LABEL_FATBOOT="system-boot" LABEL="system-boot" UUID="4D3B-86C0" TYPE="vfat" PARTUUID="4ec8ea53-01"
    /dev/mmcblk0p2: LABEL="writable" UUID="79af43d1-801b-4c28-81d5-724c930bcc83" TYPE="ext4" PARTUUID="4ec8ea53-02"
    /dev/sda1: LABEL="UCloud" UUID="EA2A66DB2A66A3F3" TYPE="ntfs" PARTUUID="65f5f8d0-01"
    
  • 手动挂载: 挂载命令:mount -t <type> <device> <dir>** 卸载命令:****umount <dir>**

  • 开机自动挂载:

    1. sudo vim /etc/fstab
  1. 按照格式增加一行 PARTUUID="65f5f8d0-01" <dir> <type> defaults 0 0
  • 查看已经挂载的存储:lsblk

安装软件


  1. 建议按照顺序安装,互相之间也有依赖关系
  2. psd-tools依赖项比较多,建议使用清华源安装,
apt-get install python3 python3-setuptools python3-pip python3-ldap -y
pip3 install Pillow 
pip3 install captcha 
pip3 install  jinja2 
pip3 install  sqlalchemy 
pip3 install  psd-tools 
pip3 install  django-simple-captcha 
pip3 install  future
apt install memcached

apt install libmemcached-dev
apt install libmysqlclient-dev
pip3 install pylibmc django-pylibmc mysqlclient pymysql

apt install mysql-server
apt nginx

部署seafile


  • 安装seafile

    • 详细步骤官方文档里有,这里粗略整理一下,以及记录一下踩过坑
    • 下载树莓派版本的服务器端
    • 在python3的安装包中找到MySQLdb后替换安装包中的对应文件夹
    • 解压后放在选定的安装目录下
    • 执行 setup.sh文件
    • 根据提示填写配置信息,mysql的账号密码,存储库名称等
  • 修改mysql验证方式

    # 输入mysql, 进入mysql的操作
    # 语句末尾需要加分号,如果忘了加之后按了回车输入`\c`结束
    # 列出所有用户及对应的localhost;
    select host,user,plugin from mysql.user; 
    # 修改root与新增设的用户的验证方式及密码,默认seafile
    # localhost 与 user 必须对应
    ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 
    
  • 运行seafile

    • /seafile-server-latest# ./seafile.sh start
    • /seafile-server-latest# ./seahub.sh start
  • 填写管理员邮箱密码,之前没有修改root跟seafile账户的验证方式时是创建不出来的

  • 配置nginx

    # 创建配置项,将对应配置项内容拷贝进去,或者直接复制写好的文件,模板官方有,稍作修改即可
    vim /etc/nginx/sites-available/seafile.conf
    # 删除默认配置项:
    rm /etc/nginx/sites-enabled/default
    # 生成链接
    ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
  • 配置项模板需要修改的部分:

    server_name 修改为自己的域名,或IP
    listen # 修改为要使用的端口,http修改80,https修改443,80的无需修改
    
    location /media {
            root /home/user/haiwen/seafile-server-latest/seahub; # seafile部署路径
        }
  • 页面登录配置上传下载页面

如果没有使用绑定域名,且没有公网IP到这步算是完成了,已经实现了局域网内的部署

域名解析

我申请的是阿里云的域名,解析与SSL证书申请步骤很简单,不过多赘述

需要一提的是,对于光猫接路由器再接主机的网络拓扑,需要开启光猫桥接模式,电信的光猫权限被禁需要联系客服才行,开启桥接模式之后在路由器上设置电信联网的账号密码

同时需要路由器具有NAT功能进行端口转发,使得外网访问时能够准确找到安装了seafile的机器上

建议开机固定IP防止端口转发出错

完成

基本上算是大功告成,下载客户端可以登录使用了,遗憾的是本人是家用宽带,公网ip是动态ip,本来打算写一个动态解析但是发现即使使用动态解析,更换地址也有一段时间的无法访问的时间,只能寄希望于不要在没有准备的情况下光猫离线了。

头像不显示

/media/nas/seafile/conf/gunicorn.conf.py 修改127.0.0.1为域名


评论
  目录