nextcloud个人云搭建
nextcloud个人云搭建
硬件准备
树莓派4 4G版
sd卡 16G以上
读卡器
网线
路由器
说明
后续除了nextcloud以外,还在树莓派上安装其他好用的工具,也会一并分享
树莓派安装系统
首先安装树莓派官方系统(Raspbian),需要安装lite版的系统(桌面版系统尝试过,后续会安装失败,不能用),不清楚为什么视频教程里面的就是用的桌面版操作系统。
下载完成后需要进行解压,得到以.img结尾的文件,使用[balenaEtcher](balenaEtcher - Flash OS images to SD cards & USB drives)进行烧写系统,
也可使用树莓派官方烧写工具进行烧写系统,烧写完成后,拔出读卡器,再重新插入电脑,创建文件ssh (没有后缀名)打开树莓派的ssh。
登录路由器管理界面查看树莓派的ip地址,树莓派系统默认用户名pi,密码raspberry。
进入系统后输入:
sudo passwd root
重新设置密码
安装OMV5
首先下载文件
apt-get update
apt-get install openssl libssl-dev vim
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install|sudo bash
至此omv5安装完毕
浏览器输入树莓派网址(默认端口80)
omv5系统默认用户名:admin,密码: openmediavault
安装dockcer
在openmediavault管理界面中,找到OMV-Extras,点击docker安装,安装portainer,(如果期间出现了错误,再安装一次就可以了)
打开portainer管理页面设置密码,去containers中即可看到正在运行的容器,
在树莓派shell中输入:
docker pull nextcloud
默认下载最新版本23
在portainers的images中可以看到nextcloud镜像,将容器中的目录映射到树莓派系统中
docker run -d --name nextcloud -p 8080:80 -v /var/www/html:/var/www/html nextcloud
生成缩略图
使用时会发现,Nextcloud 上传的视频不能生成缩略图。其实 Nextcloud 本身支持生成视频缩略图,需要安装 ffmpeg 并修改配置:
docker exec -it nextcloud bash
apt update
apt install ffmpeg
停止 NextCloud 容器,再修改 /var/www/html/config/config.php 配置文件,添加:
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\Preview\Image',
1 => 'OC\Preview\Movie',
2 => 'OC\Preview\TXT',
),
再次启动容器即可生效。
文件上传设置无“块大小”限制,方法来源
docker exec --user www-data containerID php occ config:app:set files max_chunk_size --value 0
https://www.cnblogs.com/blackelk/p/nextcloud.html
挂载硬盘进行映射(使用u盘测试的)
在openmediavault管理页面中,找到磁盘,可以看到刚刚插入的硬盘,在文件系统中对硬盘进行挂载,格式化,创建文件系统格式,格式选择ext2或者ext3格式。
在 shell界面中/src目录下可以找到挂载的硬盘,进入目录后,用mkdir在硬盘中创建文件。
docker run -d --name nextcloud -p 8080:80 -v /srv/dev-disk-by-uuid-73f049ab-12d9-4c48-8356-da19484d7457/nextcloud:var/www/html nextcloud
创建成功后shell界面就会出现一串id码
映射成功后可以在portainer中的nextcloud容器中可以看到映射成功;
使用IP地址进入nextcloud页面
如果使用windows格式的硬盘,那么会出现报错,
如果强烈使用windows格式的硬盘,在映射出来的目录里,进入config/config.php,
在最后一行加入,
'check_data_directory_permissions' => false,
在地址栏进行刷新即可
不足
接下来要考虑连接数据库mysql,nginx ssl反向代理
配置数据库
使用docker拉取postgresql
docker pull postgres:latest
这里未使用mysql是因为dockerhub里面的mysql官方镜像并不支持arm/v7
并没有arm的标签,所以采用了postgresql数据库。
运行容器
sudo docker run -d --name=postgres -e POSTGRES_PASSWORD=123456 -p 5432:5432 postgres:latest
数据库的端口是5432,密码是123456。
- run 创建并运行一个容器
- -d 后台运行
- –name 指定创建的容器的名字
- -e POSTGRES_PASSWORD=123456,设置环境变量,设置密码为123456
- -p 5433:5432,将主机的的5432端口映射到容器的5433端口
进入容器
docker exec -it postgres psql -U postgres -d postgres
创建数据库
CREATE DATABASE nextcloud;
退出容器
exit
nextcloud使用数据库
主机名一定要写ip地址,不能写localhost
问题
使用数据库连接工具连接了数据库之后,并没有找到nextcloud数据库,不太清楚原因,但是nextcloud能正常使用数据库。
关于使用ssl证书
由于ssl证书需要使用ip地址生成密钥,但是由于未来我的树莓派地址会改变,所以就不打算设置ssl了,打算只在内网使用。
补充(2022.02.09.14:30)
之前没有设置docker自启动容器,导致每次开机都需要去启动一次nextcloud容器
启动时添加--restart=always
docker run -tid --name nextcloud -p 8080:80 --restart=always -v /var/www/html:/var/www/html nextcloud
Flag Description
no 不自动重启容器. (默认value)
on-failure 容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
已经运行过项目
docker update --restart=always nextcloud
补充 如果系统坏了造成无法登录想保数据(2022.02.09.21:25)
如果因为系统损害,容器损坏等一系列问题,造成了没法从nextcloud客户端或者网页端保存数据,或者系统损坏无法开机,可以取出树莓派的内存卡,插入电脑(Windows系统,mac系统我没有),会看到
但是这仅仅只是boot,并没有树莓派系统里面的数据。需要借助工具比如linux虚拟机或者diskgenius,linux虚拟机(带图形界面的)的话插入电脑之后会显示两个可移动磁盘,第二个就是,像正常的windows文件操作一样,这里演示diskgenius,(需要提前准备好软件)
点击 + 号,即可看到文件目录,
接下来的操作都是在设置nextcloud目录在默认条件下进行的(文件都存放在sd卡中的,如果文件存放在外挂硬盘上的话,文件的位置可以按照同样的思路去找),因为nextcloud安装在docker中,所以去docker的文件目录中查找 /var/lib/docker/volumes/
在这个目录下,会看到一些乱码数字,这些是容器的文件,点进去每个都查看下就知道哪个是nextcloud的文件夹,进入_data
进入data文件夹,找到对应用户的文件夹,找到file文件,如果nextcloud的设置中没有设置加密数据的话,nextcloud中的数据都会显示在这里。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步