私有化搭建个人网盘 NextCloud

私有化搭建个人网盘 NextCloud

在局域网中搭建公司内部使用的个人网盘系统,方便大家分享文档和保存文档使用,采用了 NextCloud + Collabora 的方式搭建。

安装相关包

# yum install -y nana wget

关闭 SELINUX

# vim /etc/sysconfig/selinux

SELINUX=disabled

安装 httpd

# yum install httpd -y

安装 PHP

# yum install -y epel-release

# yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

# yum -y install yum-utils

查看可安装的 PHP 版本:

# yum repolist all | grep php

选择 php74 版本(也可以安装其他版本)

# yum-config-manager –enable remi-php74

安装:

# yum install -y php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis

查看 php 版本:

# php -v

PHP 7.4.30 (cli) (built: Jun 7 2022 08:38:19) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies

调整 httpd 配置,添加默认首页格式 index.php

<ifModule dir_module> DirectoryIndex index.html index.php </ifModule>

创建 php 测试文件:

# vim /var/www/html/info.php

<?php phpinfo(); ?>

打开 httpd 服务:

# systemctl start httpd

打开测试页面:

在浏览器打开:10.2.179.225/info.php

打开 phpinfo 页面即为 php 安装运行正常;

数据库

我本机已经安装好了 MySQL,在里面创建数据表;

> create database nextcloud character set utf8mb4 collate utf8mb4_general_ci;

创建用户并赋权限

> grant all on nextcloud.* to nextcloud@'%' identified by 'nextcloud'; flush privileges;

NextCloud

下载及安装

# wget https://download.nextcloud.com/server/releases/nextcloud-24.0.3.zip

解压缩到 httpd 的目录:

# unzip nextcloud-24.0.3.zip -d /var/www/html

# cd /var/www/html

# chown apache -Rf nextcloud

# chmod 770 -Rf nextcloud

重启 httpd 服务

# systemctl restart httpd

运行安装向导

先在本地机器的 hosts 上(用户使用的机器)中添加域名绑定(当然也可以在局域网中搭建 named 服务):

10.2.179.225    nextcloud.zsoft.com

用浏览器打开 http://nextcloud.zsoft.com/nextcloud

  • 用户名:nextcloud
  • 密码:nextcloud
  • 数据目录:/var/www/html/nextcloud/data (此项为默认值)
  • 配置数据库
    • MySQL/MariaDB
    • 数据库用户:nextcloud
    • 数据库密码:nextcloud
    • 数据库名:nextcloud
    • 数据库主机:127.0.0.1:3306
  • 点击“安装”

生成 SSL 证书

# openssl genrsa -out privkey.pem 2048

# openssl req -new -x509 -key privkey.pem -out server.pem -days 3650

生成 2 个证书文件:privkey.pem 和 server.pem

配置 SSL

# yum install mod_ssl

# mkdir /var/www/certs

# cp privkey.pem /var/www/certs

# cp server.pem /var/www/certs

# vim /etc/htttpd/conf.d/ssl.conf

打开如下两行配置的注释,并修改为自己的域名
DocumentRoot "/var/www/html" 
ServerName nextcloud.zsoft.com:443 
更改证书文件路径 
SSLCertificateFile /var/www/certs/server.pem 
更改证书私钥路径 
SSLCertificateKeyFile /var/www/certs/privkey.pem

重启服务

# systemctl restart httpd

处理“通过不被信任的域名访问”

配置 SSL 后通过 https://nextcloud.zsoft.com/nextcloud 访问的时候会报“通过不被信任的域名访问”的错误

解决:

在 /var/www/html/nextcloud/config/config.php 配置中添加一行配置:1 => preg_match('/cli/i',php_sapi_name())?'127.0.0.1':$_SERVER['SERVER_NAME'],

# vim /var/www/html/nextcloud/config/config.php

array (
    0 => '10.2.179.225', 
    1 => preg_match('/cli/i',php_sapi_name())?'127.0.0.1':$_SERVER['SERVER_NAME'], 
),

不用重启服务,再次用浏览器访问,此报错即消失;

Docker

collabora online 要使用 docker,因此要安装 docker

# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# yum install epel-release -y

# yum install -y yum-utils

# yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum list docker-ce –show-duplicates

# yum install docker-ce-19.03.4-3.el7

# system enable docker

# vim /home/docker/daemon.json

{
    "graph": "/home/docker",
    "storage-driver": "overlay2",
    "insecure-registries": ["registry.access.redhat.com", "quay.io"],
    "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
    "bip": "172.179.225.1/24",
    "exec-opts": ["native.cgroupdriver=systemd"],
    "live-restore": true
}

# mkdir /home/docker

# systemctl start docker

collabora online

拉取镜像

使用 Docker 安装,拉取镜像:

# docker pull collabora/code:22.05.4.1.1

运行

# docker images

REPOSITORY       TAG           IMAGE ID       CREATED       SIZE
collabora/code   22.05.4.1.1   e5dc7128ef8d   3 weeks ago   1.52GB 

# docker run -t -d -p 9980:9980 -e "aliasgroup1=https://nextcloud\.zsoft\.com:443" -e "username=admin" -e "password=123456" –restart always e5dc7128ef8d

指定 aliasgroup1 的域名,其中 . 前面用两个 \\ 转义,多个域名时用 | 分割,多个组时增加 -e "aliasgroup2=https://xxx1\\.xxx\\.com|https://xxx2\\.xxx\\.xxx:443":

设置 hosts

因为本地安装是使用的 hosts 方式绑定的域名,因此要在 docker 容器中也要设置好 hosts,否则会在加载文档时报错,当然如下设置会在 docker rm xxx 删除容器后再 docker run 生成容器时还需要重新再执行一遍,也可以通过 Dockerfile 自己打包一个镜像放到 harbor 中,这样就一劳永逸了,当前是修改的容器中配置;

查看 docker 容器的 CONTAINER ID:

# docker ps

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                    NAMES
dc78b8b2da95   e5dc7128ef8d   "/start-collabora-on…"   24 minutes ago   Up 24 minutes   0.0.0.0:9980->9980/tcp   lucid_kilby

进入镜像:

# docker exec -u root dc78b8b2da95 /bin/bash

安装 vim

> apt-get update

> apt-get install vim

> vim /etc/hosts

文件最后添加:

10.2.179.225 nextcloud.zsoft.com

保存退出;

浏览器访问

在浏览器打开管理页面:

https://nextcloud.zsoft.com:9980/browser/dist/admin/admin.html

用户名:admin,密码:123456

NextCloud 连接 Collabora

在 NextCloud 的管理界面(http://10.2.179.225/nextcloud)中点击右上角的圆形图标 — 应用

左侧选择“Office & text”

找到“Collabora Online – Built-in CODE Server”,点击“下载并启用”

这样在页面下载常出现超时等报错,因此可以在安装 nextcloud 的服务器上运行如下命令进行安装:

# sudo -u apache php -d memory_limit=512M ./occ app:install richdocumentscode

等待一会,安装完后在应用页面看 Collabora Online – Built-in CODE Server 应用显示已经安装

再应用页面再安装 "Nextcloud Office" 应用;

打开 “设置” 页面

左侧选择 “管理” – “Next'cloud 办公套件”

选择“使用您的自有服务器”

  • 在线协作服务器的 URL(和端口):https://nextcloud.zsoft.com:9980
  • ✔禁用证书校验(不安全)

点击 “Save”

测试

在 nextcloud.zsoft.com 中 “文件” 下创建新文档或新表格,打开新创建的文件时,会使用在线编辑格式打开,安装完成!

                       

点击阅读全文

上一篇 2023年 6月 12日 am10:21
下一篇 2023年 6月 12日 am10:22