树莓派搭建next_cloud,挂载外部存储以及内网穿透记录

微恙在家,思来想去不如尝试搭建一套自己的家庭云盘(选择了目前比较流行的nextcloud),一来充分利用下赋闲的树莓派,二来练练手多了解点新东西。记录一下搭建的大致过程和碰到的问题,仅供参考。

正文

1. nextcloud基础搭建

1.1 树莓派系统烧录

树莓派型号:3B或者4B都可以,sd卡最好是16G以上,当然,有条件的可以直接上4B+8g版的,因为搭建家庭云只是树莓派的一个服务,还可以做更多更有趣的事儿

系统镜像:可以去树莓派官网下载最新的https://www.raspberrypi.org/software/operating-systems/,我这里直接用的店家附赠的稍旧一点的镜像2020-05-27-raspios-buster-full-armhf(官方版本).zip,都是32位的,64位的暂时没有试过。

烧录:把准备好的sd卡插入电脑,烧录工具我使用了购买树莓派时候送的:balenaEtcher,过程挺小白,如图一步步操作就好:


1.2 源更新(加速下载)

将烧好系统的sd卡插入树莓派中,通电启动后连接下显示器,进行必要的设置,比如连接wifi,enable ssh等等,网上一堆树莓派入门文档,这里不赘述,

然后在windows上可以使用putty这个工具,在HostName中输入内网树莓派的地址(可以登录家中路由器网址查看,我自己的是小米的:192.168.31.1),则可以内网远程访问树莓派:

远程登录,进入到树莓派linux界面后,可以查看下debian版本号:cat /etc/debian_version,我的是10.9

然后修改下树莓派apt源:

1)先备份原文件

 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

sudo cp  /etc/apt/sources.list.d/raspi.list   /etc/apt/sources.list.d/raspi.list.bak

2)修改编辑系统源文件

sudo vim /etc/apt/sources.list (没有装vim的同学可以先:sudo apt-get install vim)

将初始的源使用#注释掉,添加如下两行清华的镜像源:

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

注意系统版本,我这里是buster版本,可以通过 cat /etc/os-release 来查询os版本信息

3)修改系统源

sudo vim /etc/apt/sources.list.d/raspi.list

将初始的源使用#注释掉,用以下内容取代:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

4)执行更新

sudo apt-get update (更新索引)

sudo apt-get update (更新文件)


1.3 安装docker

使用apt安装稍微麻烦点,这里使用脚本自动安装,使用如下命令:

curl -fsSL get.docker.com -o get-docker.sh

sudo sh get-docker.sh --mirror Aliyun

安装好后启动docker

sudo systemctl enable docker

sudo systemctl start docker

建立docker用户组,避免权限问题(默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket)

sudo groupadd docker  #添加docker用户组

sudo gpasswd -a $xxx docker  #检测当前用户是否已经在docker用户组中,其中xxx为用户名

sudo gpasswd -a $USER docker  #将当前用户添加至docker用户组

newgrp docker  #更新docker用户组

执行 命令: docker version,应该不会再出现“Got permission denied”权限报错,表示docker可以正常使用


1.4 安装next_cloud

进入正题了,安装next_cloud之前,首先要安装数据库(当然,简单使用的话也可以不用),我们可以再在docker中进行,先拉适合的镜像

docker pull hypriot/rpi-mysql

创建名称为mysql的容器

docker run -it --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的密码 -d hypriot/rpi-mysql

-p 表示端口映射

-d 刚才拉取的镜像

然后,拉取nextcloud的镜像

docker pull nextcloud

创建名称为nextcloud的容器

docker run -it -d --name nextcloud --link mysql:db -p xxxx:80 -v /nextcloud:/var/www/html/data -d nextcloud

这里注意几点:

--link 关联了mysql数据库

-p xxxx 是nextcloud映射出来的端口号,自行设定,比如8123

-v /nextcloud:/var/www/html/data 是nextcloud在docker中的挂载目录


启动了mysql和nextcloud的docker后,可以使用命令 docker ps 查看已经启动的服务

另外,如果需要每次树莓派重启都自己重启docker服务的话,一种可以在容器创建时指定 --restart=always ,另一种可通过update 命令:docker update --restart=always xxx


确保nextcloud和mysql启动的情况下,在电脑浏览器中输入网址:树莓派内网地址:刚才自行设定的端口号,比如:192.168.31.90:8123,则可以打开nextcloud的登陆界面,如下:

需要说明的是:数据目录 /var/www/html/data 指的是docker容器里的路径,这里不需要管它。只需要管好docker run语句的挂载目录即可。

这里提示不建议使用sqlite,我选择的是使用mysql(当然也可以使用sqlite)

进入到mysql的配置,由于自己做的时候没有截屏,这里借用网上的截图

配置数据库选择mysql,然后用户名和密码就是刚才创建mysql容器时候的设置(用户名为root,密码为之前自己设置的密码),第三行随便填,第四行填db是因为之前创建nextcloud容器时候作了link设置(mysql:db)

补充一点可能碰到的坑,如果打开页面碰到诸如:“nextcloud 通过不被信任的域名访问 请联系您的管理员”的提示,可以使用如下命令:

docker exec -it $nextcloud容器ID bash 

vim /config/config.php

然后在

'trusted_domains' =>

  array (

    0 => '192.168.xx.xx',  ## IP地址  修改这3行就可以了

    1 => 'xxx.com', ## 域名,注意!!!不要带www

    2 => '192.168.xx.xx',  ## IP地址

    3 => '[fe80::xx:xx]',

  ),

新增下可信赖地址即可

至此,nextcloud基础部分搭建完毕,手动分界线


2. nextcloud拓展使用

下面介绍如何挂载外部存储以及内网穿透

2.1 linux硬盘挂载

单用树莓派自己的sd卡当硬盘确实有点捉急,除非你的sd卡足够大,于是考虑是否可以外部挂载额外的移动硬盘,这样就有足够的拓展空间。首先进行linux硬盘挂载

1)找一块可用的移动硬盘,插入树莓派,查看已有的分区状态:df -l,应该暂时没有看到新的硬盘

2)查看服务器安装的硬盘状态(包括格式化和未格式化):fdisk -l,应该可以看到插入的移动硬盘了,比如/dev/sda,只是没有分区

3)添加新分区:fdisk /dev/sda,按照以下红框输入

依次是:n 回车,p或e 回车,1(如果没有1,说明数字已经被占用,就用可选的最小数字)两次回车 w

4)使用以下命令查看分区:fdisk -l,可以看到已经多了一个分区,只是可能还没有格式化

5)格式化分区:mkfs.ext4 -c /dev/sda2,其中,-c 是在建立文件系统前检查坏道,可能会很费时间,新硬盘一般不需要

6)挂载硬盘:

mkdir /new_folder

mount /dev/sda2 /new_folder

7)让系统开机自动挂载,或者使用vim /etc/fstab 编辑分区配置

 echo "/dev/sda2 /new_folder ext4 defaults 0 0">>/etc/fstab


2.2 nextcloud外部存储配置

Nextcloud默认是没有开启外部存储功能的,需在手动启用插件:

然后设置Nextcloud所有用户都能使用外部存储

使用docker部署可能会碰到如下问题:

这时候,可以进入nextcloud容器,使用apt安装然后重启即可,命令如下:

docker exec -it nextcloud bash

apt install smbclient libsmbclient-dev

pecl install smbclient

docker-php-ext-enable smbclient


然后在nextcloud外部存储配置页面,目录名称随便填,外部存储选择本地,“配置”一栏需要注意

首先,2.1中第六步linux挂载硬盘的路径要放到nextcloud下,笔者的是这样:

mkdir /nextcloud/WD500G

mount /dev/sda2  /nextcloud/WD500G

然后,在网页配置栏中,填写之前创建容器时候的路径拼上放在nextcloud下的外部存储的名字,笔者的如下:/var/www/html/data/WD500G,“可用于”一栏填写需要使用外部挂载的管理员或者具体账户,点击最右边的勾,看到最左侧出现绿底白勾,如图:

注意:挂载完后,发现无法往其中添加文件的情况,可能是权限问题,进入nextcloud容器:docker exec -it $CONTAINER bash后,找到挂载的文件夹,笔者是在/var/www/html/data中,使用ls-la 查看挂载文件夹的权限,然后使用 chown -R www-data:www-data /WD500G 改下权限就可以开心使用新硬盘存储了。


2.3 内网穿透

以上完成了在家庭局域网的nextcloud搭建,如果想在外网使用的话,其实有好几种方案,比如公网ip,动态DDNS等等,依照个人的经济承受能力选择不同的方案,笔者对太多流量等的配置没什么硬需求,就暂时找了个免费的工具简易实现了,用的网云穿(非打广告),具体好不好有待验证,放上笔者自己的代码

# 下载arm版

wget http://xiaomy.net/download/linux/wyc_linux_arm

# 赋权

chmod -R 777 ./wyc_linux_64

# 树莓派中后台运行,否在在windows中跑的话,关机了就没有了

nohup ./wyc_linux_arm -token=令牌 &  (令牌是网云穿开通服务后生成的,网页上可查)

# 查看内网穿透服务是否开启

tail -f nohup.out


以上就是笔者个人的搭建全程,目前已经跑了几天,只要在有网络的地方,亲测可以正常使用,另外手机端可以安装nextcloud应用,输入内网穿透的链接即可登录,还是挺方便的,如果以上搭建过程有什么不对的地方,还请各位看官及时纠正。


参考:

https://www.jianshu.com/p/a730755577a3

https://docker_practice.gitee.io/install/raspberry-pi.html

https://www.cnblogs.com/steinven/p/11357295.html

https://blog.csdn.net/anaitudou/article/details/80830955

https://www.wangzhengzhen.com/3157.html

https://blog.csdn.net/weixin_44968234/article/details/109553700

你可能感兴趣的:(树莓派搭建next_cloud,挂载外部存储以及内网穿透记录)