由于笔记本跟台式机不在同一个地方,为了解决来回拷贝的问题就想着搭一个存储服务器用来同步,目前的网盘服务基本不支持多端同步,笔记类的软件同步效率又太低,刚好之前接触过seafile,又是免费的,就它了。
安装后的意外之喜是,Markdown文件支持在线浏览,目前我的笔记基本都是用Markdown书写的,相当于笔记app可以卸载了,而且还能备份手机图片。真是一节更比三节强,还等什么搞起来吧。
以下为个人防踩坑笔记
准备工作
- 设备:树莓派4B
- 系统:Ubuntu Server 20.10
- 软件:Raspberry Pi Imager,seafile8.0,mysql-server8.0, nginx
- 公网IP
- 可选:域名与ssl证书, MobaXterm1_CHS1(ssh远程连接工具自己随意,用的舒服就行)
系统安装
准备TF卡,连接到windows上
洗录软件建议选择官方的Raspberry Pi Imager,洗录后有验证
洗录后你会发现你的U盘只剩了一个几百MB的分区,不要担心,那部分分区格式window不识别,如果你要是linux系统就能看到了
安装后启动,通过SSH链接,IP通过路由器管理页面获取, 端口默认22,账号密码都是:ubuntu
有服务器版本SSH才会默认开通,图形界面版本的ubuntu需要链接显示器创建用户启动SSH才行
连接后会提示更换默认密码
更新软件
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>
**开机自动挂载:
sudo vim /etc/fstab
- 按照格式增加一行
PARTUUID="65f5f8d0-01" <dir> <type> defaults 0 0
- 查看已经挂载的存储:
lsblk
安装软件
- 建议按照顺序安装,互相之间也有依赖关系
- 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部署路径 }
页面登录配置上传下载页面
- 进入登录界面,修改下面两个值
- SERVICE_URL :https://mydomain.com:4430
- FILE_SERVER_ROOT:https://mydomain.com:4430/seafhttp
- 格式不能错,https:// 跟端口号都不能少,否则会导致无法上传下载文件
- 如果没有SSL证书,
https
改为http
- 进入登录界面,修改下面两个值
如果没有使用绑定域名,且没有公网IP到这步算是完成了,已经实现了局域网内的部署
域名解析
我申请的是阿里云的域名,解析与SSL证书申请步骤很简单,不过多赘述
需要一提的是,对于光猫接路由器再接主机的网络拓扑,需要开启光猫桥接模式,电信的光猫权限被禁需要联系客服才行,开启桥接模式之后在路由器上设置电信联网的账号密码
同时需要路由器具有NAT功能进行端口转发,使得外网访问时能够准确找到安装了seafile的机器上
建议开机固定IP防止端口转发出错
完成
基本上算是大功告成,下载客户端可以登录使用了,遗憾的是本人是家用宽带,公网ip是动态ip,本来打算写一个动态解析但是发现即使使用动态解析,更换地址也有一段时间的无法访问的时间,只能寄希望于不要在没有准备的情况下光猫离线了。
头像不显示
/media/nas/seafile/conf/gunicorn.conf.py
修改127.0.0.1为域名