目标
安装好nexcloud并进行优化
硬件环境
CPU: j4125(4核心 4线程)
内存:8G
磁盘:128 nvme SSD + 1T sata SSD
网络: 1000Mb/s有线
vi编辑器基本使用
sql语句的基本使用
前置:
docker network create nas
一、Docker安装Mysql
其实不用安装mysql 使用sqlite也能使用nextcloud,但是在多用户下mysql性能更好, 特别是在文件备份的情况下, 这个也是属于优化选项。其次因为其他docker应用也需要使用到mysql,所以我们在此就不将mysql装到docker-compose里面去了, 独立启动一个docker,其他docker应用需要使用数据库的时候都使用这个docker实例。
mkdir -p ~/mysql/data
cd ~/mysql
mkdir config #创建mysql config目录 防止以后要配置优化mysql 参数(忘记密码等操作需要)
因为这里数据库的时区不对。我们在**~/mysql/conf目录下面新建nas.cnf**
[mysqld]
default-time_zone="+8:00"
然后就是使用docker命令一键启动
vi start.sh
docker run -d --name nas-mysql \
--network nas \
-v /home/zx/mysql/data:/var/lib/mysql \
-v /home/zx/mysql/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD="密码" \
mysql:5.7.14
参数说明: -e MYSQL_ROOT_PASSWORD=“密码” 这里设置mysql的root密码
bash start.sh
至此 我们的mysql启动完成
然后创建数据库
docker exec -it nas-mysql /bin/bash
mysql -uroot -p #然后输入你之前设置的mysql的密码
create database nextcloud default character set utf8mb4 collate utf8mb4_unicode_ci; #创建数据库 nextcloud用
exit #退出mysql
exit #退出docker容器
二、安装redis
cd ~
mkdir redis
cd redis
wget https://raw.githubusercontent.com/redis/redis/6.2/redis.conf
vi start.sh
这里我们使用redis.conf文件的时候切记将redis.conf文件中的bind改成0.0.0.0不然nextcloud容器无法连接
编辑start.sh文件
docker run -d --name nas-redis \
--network nas \
-v /home/zx/redis/redis.conf:/usr/local/etc/redis/redis.conf \
redis redis-server /usr/local/etc/redis/redis.conf \
四、安装nextcloud
cd ~
mkdir -p nextcloud/config
cd nextcloud
vi start.sh
docker run -d --name nextcloud --network nas \
-e PUID=1000 \
-e GUID=1000 \
-e TZ=Asia/Shanghai \
-p 8001:443 \
-v /home/zx/nextcloud/config:/config/ \
-v /mnt/sda/nextcloud:/data \
linuxserver/nextcloud:latest
注意这里8001 可以换成任意端口
这样nextcloud就启动起来了
通过浏览器访问https://ip:8001就可以访问到nextcloud(注意前面是https 如果提示警告点击继续访问)
在安装界面输入数据db:3306
至此 nextcloud安装完毕
QA:
1. 安装完成后 如果新增用户显示名称写的是中文名称有可能 生成的头像是个框框 处理方法如下
从本地电脑上传一个ttf字体文件到服务器目录~/nextcloud/config/www/nextcloud/core/fonts
中,windows字体路径 C:\Windows\Fonts\SIMSUN.TT 如果是mac电脑。 网上下载一个或者叫windows的朋友给你发一个就行
然后修改 ~/nextcloud/config/www/nextcloud/lib/private/Avatar/Avatar.php文件中的145行和182行
$font = __DIR__ . '/../../../core/fonts/simsun.ttc';
后面的simsun.ttc 根据你自己的字体文件改动
2. https证书风险问题
linuxserver社区维护的镜像是默认开启https访问的,但是ssl证书是linuxserver颁发的, 所以我们要去权威机构申请ssl证书
申请ssl证书需要域名验证 域名验证有两种方式
- 文件验证(需要开启80端口) 默认家庭公网80、443端口是关闭的 ,所以当域名指向家庭服务器是无法通过文件验证方式申请https证书的
- 域名指向验证 这里需要增加一条解析记录,比较方便。
这里我的域名是在阿里云购买, 所以我直接在阿里云工作台->ssl证书->免费证书 申请了一个证书 然后下载的时候选择服务器类型 nginx
这样就获得了ssl证书
将证书zip文件上传到服务器的 **~/nextcloud/config/keys **目录下
#删除服务器自动生成的证书
cd ~/nextcloud/config/keys
rm -rf cert.*
unzip 你的证书.zip
这里会生成两个文件 一个是pen文件一个是key文件
然后编辑nginx配置文件
vim ~/nextcloud/config/nginx/site-confs/default
文件的第14行 15行
ssl_certificate /config/keys/证书文件名.pem;
ssl_certificate_key /config/keys/证书文件名.key;
这里只要改证书文件名即可。 /config/keys前面不用动。因为这个文件是被docker容器读取映射到docker中的/config/keys目录下
3. 设置默认语言
nextcloud默认是英语 这里我们设置中文 配置文件总体如下
~/nextcloud/config/www/nextcloud/config/config.php
<?php
$CONFIG = array (
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => [
'host' => 'rds', // can also be a unix domain socket: '/tmp/redis.sock'
'port' => 6379,
'dbindex' => 0, // Optional, if undefined SELECT will not run and will use Redis Server's default DB Index.
],
'datadirectory' => '/data',
'instanceid' => '',
'passwordsalt' => '',
'secret' => '',
'trusted_domains' =>
array (
0 => '',
1 => 'localhost:8001',
),
"force_language" => "zh_CN",
"default_locale" => "zh_CN",
'dbtype' => 'mysql',
'version' => '23.0.0.10',
'overwrite.cli.url' => '',
'dbname' => 'nextclou',
'dbhost' => 'db:3306',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'oc_adminzx5',
'dbpassword' => '',
'installed' => true,
);
这里我删除了一些敏感信息。 文件内容大概就是这样
至此 安装并优化完成
参考文档