树莓派4B 安装 nextcloud 做私人云盘网盘(nginx + docker + nextCloud + redis)

您所在的位置:网站首页 树莓派安装云崽 树莓派4B 安装 nextcloud 做私人云盘网盘(nginx + docker + nextCloud + redis)

树莓派4B 安装 nextcloud 做私人云盘网盘(nginx + docker + nextCloud + redis)

2024-07-08 15:10| 来源: 网络整理| 查看: 265

环境准备电信公网 IP(打客服电话说家里装监控要公网 IP,电信不用到家就可以开通,不是 固定 IP 哦)noip 动态 ddns 账号(申请到免费的账号,登录到路由器的 动态 ddns 里)树莓派4B 8G(系统:Linux raspberrypi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux )2T 机械硬盘(挂载到树莓派上作数据盘 教程,单独供电的硬盘,重启树莓派好像找不到,设置了自动开机挂载无效还进不了系统,然后插显示器插键盘输入 root 账号的密码进入急救系统,注释掉 /etc/fstab 里开机挂载那句 才能进系统)官方安装文档

https://docs.nextcloud.com/server/21/admin_manual/installation/index.html

安装 docker 和 docker-compose

树莓派安装 docker 和 docker-compose(镜像快速安装)

拉取和运行 nextcloud 和 mysql 镜像

参考文档:http://www.jianshu.com/p/f57390c9b68b

在用户目录下新建文件夹 nextcloud

代码语言:javascript复制mkdir ~/nextcloud

在新建的 nextcloud 下新建 docker-compose.yml 文件

代码语言:javascript复制vim ~/nextcloud/docker-compose.yml

docker-compose.yml 配置如下

代码语言:javascript复制version: '2' services: db: image: ibex/debian-mysql-server-5.7 # mysql 镜像文件 restart: always volumes: - ./cloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=123456 # root 账号密码,根据需要更改 - MYSQL_PASSWORD=123456 # 普通账号密码,根据需要更改 - MYSQL_DATABASE=nextcloud # 数据库名 - MYSQL_USER=nextcloud # 普通用户名 app: image: arm32v7/nextcloud # nextcloud 镜像文件 privileged: true # 拥 有root 权限 ports: - 8888:80 # 端口映射,将 Docker 的80端口,映射成主机的 8888 端口,根据需要更改 links: - db # db 是别名,使用该别名访问 前面定义的 db。nextcloud 启动时数据库的链接填 db。 volumes: - ./cloud/config:/var/www/html/config - /root/disk/nextCloud:/var/www/html/data # 因为树莓派本身存储太小,这里是映射到一个外置硬盘 - ./cloud/apps:/var/www/html/apps restart: always redis: image: arm32v7/redis # arm32 架构的 redis container_name: redis-d # 别名 privileged: true # 拥有 root 权限 restart: always command: --appendonly yes --requirepass password # appendonly 持久化的模式, requirepass 设置密码 password # command: redis-server /usr/local/etc/redis/redis.conf # 如果使用配置文件,requirepass password 需要写在配置文件中 ports: - 16379:6379 # redis 6379 映射到主机的 16379 端口 volumes: - ./cloud/redis/data:/data # 数据目录映射点 - ./cloud/redis/config/redis.conf:/usr/local/etc/redis/redis.conf # 配置文件映射点

liunx 查看端口的使用情况

代码语言:javascript复制# 如果显示 LISTEN , 说明已经被占用 netstat -anp | grep 端口号 # 查看所有已经被使用的端口 netstat -nultp

docker 源官方地址

https://hub.docker.com/

运行 docker 程序:

在当前目录下(nextcloud 文件夹)执行 docker-compose up -d 命令,Docker 会根据我们的配置,自动下载镜像并启动程序,可能要稍微等会。如果启动容器配置数据有误,在当前文件夹运行 docker-compose down 移除容器,再次编辑 yml 文件后重新执行 docker-compose up -d。

代码语言:javascript复制docker-compose up -d # 以后台的方式运行容器,没有容器就会新建,不会在终端上打印运行日志 docker-compose up # 以前台的方式运行容器,本质是 docker-compose logs -f,它会收集所有容器的日志输出直到退出命令,或者容器都停止运行 docker-compose down # 移除生成的容器,不会移除镜像文件,yml 数据配置有误时,可能需要 docker-compose restart # 重启容器,不会加载新的 docker-compose 相关文件的新的改动。解决问题:在 ‘请确定在根目录下有一个名为".ocdata"的文件’ 需要,根目录指的挂在目录

docker-compose 相关命令,查看更多命令

代码语言:javascript复制docker container ls # 查看容器信息,主要看它的名称 NAMES,方便进入容器内部 docker exec -it nextcloud_app_1 bash # 进入容易内部,nextcloud_app_1 是容器的名称,上面那个命令查出来的 exit # 进入容器内部后,要退出的话 输入 exit 即可 docker ps -a # 查看所有 docker 容器 docker ps # 查看正在运行 docker 容器 docker stop 容器名称或者ID # 停止正在运行的容器 docker rm 容器名称或者ID #移除容器,移除前先停止容器代码语言:javascript复制root@raspberrypi:~/nextcloud# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 136b42366301 arm32v7/nextcloud "/entrypoint.sh apac…" 4 hours ago Up 2 hours 0.0.0.0:8888->80/tcp nextcloud_app_1 f8a05c22c936 ibex/debian-mysql-server-5.7 "/entrypoint.sh mysq…" 4 hours ago Up 2 hours (healthy) 3306/tcp, 33060/tcp nextcloud_db_1 root@raspberrypi:~/nextcloud# docker exec -it nextcloud_app_1 bash root@136b42366301:/var/www/html# exit exit root@raspberrypi:~/nextcloud# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 136b42366301 arm32v7/nextcloud "/entrypoint.sh apac…" 4 hours ago Up 2 hours 0.0.0.0:8888->80/tcp nextcloud_app_1 f8a05c22c936 ibex/debian-mysql-server-5.7 "/entrypoint.sh mysq…" 4 hours ago Up 2 hours (healthy) 3306/tcp, 33060/tcp nextcloud_db_1配置 nginx代码语言:javascript复制server{ listen 10000; # 访问站点监听的端口 client_max_body_size 10G; access_log /root/yzq/logs/nextcloud.access.log; error_log /root/yzq/logs/nextcloud.error.log; location / { proxy_pass http://127.0.0.1:8888; # docker-compose.yml 映射的本地端口 proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } }

树莓派安装 nginx 教程

配置 nextcloud 的数据库

假如 树莓派的 局域网 IP 是:10.0.0.2 浏览器打开: 10.0.0.2:10000 就能打开首次进入 nextcloud 的配置页面,注意: hostname 填 yml 文件的 db 就行了。

配置完成后,稍等片刻正常的话,就能进入到仪表盘页面

nextcloud 客户端下载安卓端:坚果云苹果端:APP Store 搜索 nextcloud 下载其他端:https://nextcloud.com/install/#nextcloud 插件商店:https://apps.nextcloud.com/

安卓客户端

关于树莓派的 Docker 镜像

因为树莓派是 基于 ARM 架构,所以很多镜像无法正常使用。

适用树莓派的 NextCloud 镜像适用树莓派的 mysql 镜像php 添加 Redis 缓存 和 不受信任的域名 

如果按照上面的配置就是执行此命令:

代码语言:javascript复制vim /root/nextcloud/cloud/config/config.php代码语言:javascript复制 'htaccess.RewriteBase' => '/', # 'memcache.local' => '\\OC\\Memcache\\APCu', # APCu 缓存模式 'memcache.local' => '\\OC\\Memcache\\Redis', # 缓存模式:添加 redis 缓存 # 'memcache.locking' => '\OC\Memcache\Redis', # 'memcache.distributed' => '\OC\Memcache\Redis', 'filelocking.enabled' => 'true', 'redis' => # redis 缓存连接信息 array ( 'host' => '127.0.0.1', 'port' => 16379, # docker 中 redis 映射主机的端口 ), 'trusted_domains' => array ( 0 => '127.0.0.1', 1 => 'xxx.yyyyy.com', # 将这个自定义域名添加到配置中,才可以通过域名访问哦 2 => '10.0.0.11', ),nextcloud 数据库使用 sqlite 数据库

不想使用 MySQL,或者个人使用时,可以使用 sqlite 数据库,配置更简单。docker-compose.yml 文件内容修改如下:

代码语言:javascript复制version: '2' app: image: arm32v7/nextcloud ports: - 8888:80 volumes: - ./cloud/config:/var/www/html/config - /home/pi/disk/nextCloud:/var/www/html/data - ./cloud/apps:/var/www/html/apps restart: always挂载硬盘相关命令代码语言:javascript复制sudo fdisk -l # 列出硬盘硬件的相关信息 sudo blkid # 查看硬盘 uuid sudo dumpe2fs -h /dev/sda1 # 查看硬盘 label 和 uuid sudo mount /dev/sda ~/disk # 挂载 sda 硬盘到 ~/disk 目录下 sudo umount -v /dev/sda # 通过设备卸载 sudo umount -v ~/disk # 通过挂载点卸载开机自动挂载硬盘

因为 mount 命令在系统重启以后会失效。

所以要通过配置文件,来让硬盘开机自动挂载。

首先,打开文件 /etc/fstab:

代码语言:javascript复制sudo vi /etc/fstab

将下面配置,添加在文件的最后(两句话是一个意思,随意使用一句就行):

代码语言:javascript复制# /dev/sda /root/disk ext4 defaults 0 0 # 使用设备名挂载 UUID=fsdfs-fsdf-werwerw-343-wer-aada /root/disk ext4 defaults 0 0 # 使用UUID挂载,推荐

其中 /dev/sda 为设备的名字。

其中 /root/disk 为挂载点。

Mac 上新硬盘格式化成 ext4 格式

参考文档:https://ggg.re/macos-mkfs-ext4

如果没有 Homebrew 的话,需要先安装 Homebrew:

代码语言:javascript复制/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装 e2fsprogs:

代码语言:javascript复制brew install e2fsprogs

把 U 盘插到 Mac 上,执行:

代码语言:javascript复制diskutil list

找到自己 U 盘的盘符,比如我这里是:/dev/disk2s1,

代码语言:javascript复制/dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *31.0 GB disk2 1: DOS_FAT_32 KINGSTON 31.0 GB disk2s1

然后执行格式化:

代码语言:javascript复制diskutil unmountdisk /dev/disk2s1 sudo $(brew --prefix e2fsprogs)/sbin/mkfs.ext4 /dev/disk2s1

执行命令后会要求输入用户密码,然后输入 y 确认,等待一会儿就可以了。

关于 docker 无法卸载问题

docker 卸载不干净

例如:

官网介绍docker卸载的方法一般为

1> yum remove docker-ce -y

2> rm -fr /var/lib/docker*

但试过后你依然无法安装新版本,尤其是高版本降到低版本 docker,问题在于 docker 你并没有卸载干净

正确的卸载方法如下:

1> yum list installed | grep docker 查看

2> yum remove docker 名称

注:上述命令可以查询到未删除干净的 docker 残留,一般这种情况出现于 docker 18.09.3 版本上

代码语言:javascript复制[root@izj6c5nf8w ~]# yum list installed|grep docker Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast containerd.io.x86_64 1.2.13-3.2.el7 @docker-ce-stable docker-ce.x86_64 3:19.03.12-3.el7 @docker-ce-stable docker-ce-cli.x86_64 1:19.03.12-3.el7 @docker-ce-stable [root@izj6c5nf8w ~]# [root@izj6c5nf8w ~]# yum remove docker-ce.x86_64


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3