栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

树莓4B+samba+nextcloud搭建nas私有云

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

树莓4B+samba+nextcloud搭建nas私有云

文章目录

概述环境准备

网络机械硬盘格式化及分区 Samba安装部署nextCloud安装部署

docker安装安装相关容器配置及优化

创建数据库next_cloud注册错误提示:nextcloud install Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.您的数据目录可被其他用户读取, 请更改权限为 0770 以避免其他用户查看目录。视频文件不显示缩略图启用缓存 外网穿透部署

概述
    目前网盘服务要么都限速, 要么都空间比较小; 对于使用来说, 十分的不方便;对于一些文档, 图片以及视频想通过电视来播放, 又不想插硬盘或u盘;想对自己的数字资料进行集中式管理;

刚好手中有一台树莓派, 一台带宽8M云服务器, 还有几个淘汰下来的机械硬盘; 因此准备自己搭建一个私有云; 对于大流量的访问基本也会是在内网, 外网最多偶尔看看文件, 看看照片之类的, 对于应急使用, 通过云服务器穿透的速度也基本够用了;

环境及耗材信息:

    安装ubuntu2004的树莓派4B1Tb的机械硬盘,8M云服务器 - ubuntu2004网线一根

注: 根据当前教程创建出来, nextcloud是samba的一个子集, 如果要完整覆盖的话, 需要自行去理清相关目录关系;

环境准备 网络

树莓派通过网线连接千兆路由器, 因为树莓派4B的wifi是百兆带宽的, 而网口是千兆的, 因此必须通过网线来连接;

否则通过wifi最大网速(即使手动设置wifi为5G)理论也就 12.5Mb/s, 实测最大峰值也就11多, 平均也就9Mb/s;

网速监控:

apt install ethstatus
# 查看 ADSL 的速度 
sudo ethstatus -i eth0
# 查看 网卡 的速度 
sudo ethstatus -i eth0

机械硬盘格式化及分区

机械硬盘需要插在树莓派的 usb3.0 接口上

# 1. 查看磁盘信息
fdisk -l

# 2. 开始操作待分区磁盘: /dev/sda, 进入操作命令行中
fdisk /dev/sda
# Generic
#   d   delete a partition
#   F   list free unpartitioned space
#   l   list known partition types
#   n   add a new partition
#   p   print the partition table
#   t   change a partition type
#   v   verify the partition table
#   i   print information about a partition
#   w   write table to disk and exit
# 通过输入n进行分区, 然后根据提示信息进行相应输入, 最后通过w保存

# 3. 格式化新建分区: /dev/sdb1
mkfs.ext4 /dev/sdb1
Samba安装部署
# 1. 安装Samba
sudo apt-get install samba samba-common
# 2. 新建一个用于共享的目录或挂载硬盘 并赋予权限
mkdir /pan
mount /dev/sdb1 /pan
chmod 777 -R /pan

# 3. 修改samba的配置文件
vim /etc/samba/smb.conf
# ==================================================================
[share] # 显示的文件名: 127.0.0.1/share
comment = NAS Storage # 说明信息
valid users = pi,root # 可访问用户
path = /pan # 共享目录
browseable = yes # 可被其他人看到资源名称(非内容)
writable = yes # 可写
create mask = 0755 # 新建文件权限 664
directory mask = 0775 # 新建目录权限 775
# ==================================================================

# 4. 设置用户密码
	# samba使用的linux的用户, 但是密码是单独设立的;
	smbpasswd -a 
	# 如果要新建一个用户
	groupadd [--gid ID] 
	useradd -g  
	# 加入/移除分组
	gpasswd –a  
	gpasswd –d  

# 5. 重启samba
service smbd restart

到这里, 一个网络文件系统就已经部署完成了; 如果不需要云盘相关的一些功能, 直接使用也没有问题

nextCloud安装部署

官方文档:

Introduction - Nextcloud latest Administration Manual latest documentation

为了移植方便, 这里选择了docker的方式进行安装, 数据信息全部存储在samba共享目录下, 方便下次迁移到其他机器; 当然会占用磁盘的io了, 不过个人使用, 不想费力气去运维本地环境; 速度也够用;

docker安装
# 1. 关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0

# 3. 关闭swap:
swapoff -a # 临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久关闭

# 4. 修改主机名称
hostnamectl set-hostname 名字

# 5. 将桥接的IPv4流量传递到iptables的链
lsmod | grep br_netfilter
systemctl start br_netfilter.service
systemctl enable br_netfilter.service

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
 
sysctl --system

# 6. 前置库安装
sudo apt-get update
sudo apt-get install 
  apt-transport-https 
  ca-certificates 
  curl 
  gnupg 
  lsb-release

# 7. 添加docker软件源
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
apt-cache madison docker-ce
apt-cache madison docker-ce-cli
apt-cache madison containerd.io

# 8. 安装docker , 自动会安装 docker-ce-cli, containerd.io, 官方安装命令:sudo apt-get install docker-ce docker-ce-cli containerd.io
apt-get install docker-ce=5:19.03.15~3-0~ubuntu-focal

# 9. 修改相关配置
vim /boot/firmware/cmdline.txt
	# 结尾追加: 
vim /etc/default/grub file
	# GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
apt install grub2-common
update-grub
reboot

# 10. 加速及更改驱动
cat > /etc/docker/daemon.json << EOF
{
 "exec-opts":["native.cgroupdriver=systemd"],
 "registry-mirrors": ["https://l3n7ikj1.mirror.aliyuncs.com"]
}
EOF

systemctl restart docker
systemctl status docker
安装相关容器
# mariadb
docker run --name mariadb -d -p 3306:3306 
	-e MARIADB_ROOT_PASSWORD=root 
	-v /pan/apps/mariadb/conf.d:/etc/mysql/conf.d 
	-v /pan/apps/mariadb/data:/var/lib/mysql 
	mariadb:latest

# redis
docker run --name redis -d -p 6379:6379 
  -v /pan/apps/redis:/usr/local/etc/redis 
  redis

# nextcloud
docker run --name next-cloud -d -p 1080:80 
	-e MYSQL_DATAbase=next_cloud 
	-e MYSQL_USER=root 
	-e MYSQL_PASSWORD=root 
	-e MYSQL_HOST=192.168.5.21:3306 
	-v /pan/apps/next-cloud:/var/www/html 
  -v /pan/apps/next-cloud/apps:/var/www/html/custom_apps 
  -v /pan/apps/next-cloud/config:/var/www/html/config 
  -v /pan:/var/www/html/data 
	-v /pan/apps/next-cloud/db:/var/lib/mysql 
	nextcloud

对于nexcloud, 这里基于mariadb来进行构建, pg/mysql也是可以的; 同时使用redis作为缓存; 因为不使用缓存的话, 访问速度是有些限制的, 用着一点不丝滑…

到这里nextcloud基本能运行起来了, 可以在浏览器中打开或者到谷歌商店去下载一个app来连接看看.

配置及优化 创建数据库next_cloud
create schema if not exists next_cloud collate utf8mb4_unicode_ci;
注册错误提示:nextcloud install Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
docker exec -it mariadb mysql -u root -p
# 输入密码进入mysql的终端
SET GLOBAL innodb_read_only_compressed=OFF;
您的数据目录可被其他用户读取, 请更改权限为 0770 以避免其他用户查看目录。

因为我们还要能够通过samba来访问,而且是私服, 完全没必要这么设置, 自己的数据当然自己做主, 这个可以跳过

vim /pan/apps/next-cloud/config/config.php

# 在配置数组最后添加一下配置
'check_data_directory_permissions' => false,

保存后, 刷新页面即可

视频文件不显示缩略图
# 安装ffmpeg
docker exec -it --user root next-cloud  sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
docker exec -it --user root next-cloud  apt-get update
docker exec -it --user root next-cloud  apt-get -y  install ffmpeg

docker exec -it nextcloud  ffmpeg

# 修改配置文件
vim /pan/apps/next-cloud/config/config.php
# =====================================================
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
  0 => 'OC\Preview\Image',
  1 => 'OC\Preview\Movie',
  2 => 'OC\Preview\MarkDown',
  3 => 'OC\Preview\TXT',
),
# =====================================================
docker restart next-cloud
启用缓存 外网穿透部署
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号