树莓派搭建nextcloud

树莓派搭建nextcloud

硬件环境

树莓派3b armv7架构

安装docker

安装后将用户添加到docker组后可以获得docker的权限不需要sudo,之后下载nextcloud的镜像

1
2
3
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker pi
docker pull hub-mirror.c.163.com/arm32v7/nextcloud

准备数据盘

选取一个分区来保存数据,我是用u盘来保存数据

1.设置分区

使用fdisk需要更改分区表即可

格式化分区,需要注意因为nextcloud需要设置权限,所以不要将格式化为其他linux不能进行权限控制的分区,否则无法进行下一步

1
sudo mkfs.ext4 /dev/sda1

2.更改权限

将分区挂载在了~/mnt/data位置,之后更改权限,更改完后使用ls来查看一下是否正确

1
2
3
4
5
6
7
cd ~/mnt

sudo mount /dev/sda1 data

chmod 0770 data

chown www-data:www-data data

更改完后的权限

1
drwxrwx--- www-data www-data data

启动容器

将主机80端口,挂载的路径映射到容器

1
docker run -d -p 80:80 -v ~/mnt/data:/mnt/data hub-mirror.c.163.com/arm32v7/nextcloud

访问树莓派所在的ip在配置保存数据的目录选择映射的路径即可

域名配置

1.申请域名

随便选择一个域名供应商申请即可,我是在DNSPod上申请的域名

2.nextcloud配置

nextcloud中需要添加受信任的域名,配置文件路径
/var/www/html/config/config.php,如果没有用以下命令查找

1
find / -name "config.php"

在以下位置追加你的域名,注意容器中没有vim之类的编辑器,需自己下载

1
2
3
4
5
6
'trusted_domains'=>{
array(
0 => xxx.xxx.xxx
1 => yyy.yyy.yyy
)
}

3.DDNS

ipv4的公网地址比较难获得,但很多的地方都支持了ipv6(宽带支持路由不一定),所以使用ipv6作为示例

使用 https://github.com/TimothyYe/godns 这个项目来实现ddns,本机(amd64)编译后上传到树莓派,编译参考项目readme,编译时注意加上架构选项,之后使用scp上传到树莓派即可

1
GOARCH=arm GOARM=7 go build

windows下使用cmd编译

1
2
3
4
set GOOS=linux
set GOARCH=arm
set GOARM=7
go build

以下是config.json内容

1
2
3
4
5
6
7
8
9
10
11
{
"provider": "DNSPod",
"login_token": "id,token",
"domains": [{
"domain_name": "xxx.xxx",
"sub_domains": ["xxx"]
}
],
"ipv6_url": "https://api-ipv6.ip.sb/ip",
"ip_type": "IPV6"
}