Docker秒级启动NextCloud个人网盘存储办公系统
首先讲解一下我的环境,我没有新建虚拟机,做上一个项目的时候在ping通外网后我给拍摄快照了,所以我就直接恢复快照了,小朋友不要和我学习哦,尽量新建虚拟机or克隆一个node出来,保证环境的干净,不然端口容易冲突,配置文件也是容易改错,最后导致实验失败。
这次依旧是openeuler 22.03的镜像,处理器1个2核的,4GB的内存,20GB的存储
打开虚拟机后先检查是否ping通外网,然后依旧关闭selinux,firewalld,然后就可以开始接下来的操作了。

1、安装基础工具和 docker 源
1.1安装基础工具和 DNF 插件
dnf install -y dnf-utils vim tar tree net-tools

1.2添加 Docker 源
dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
openEuler 22.03 兼容 CentOS 8,所以把版本变量替换为 8
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
2、安装 Docker 并启动
dnf install docker-ce -y


systemctl enable --now docker
docker -v
查看版本

3、配置加速器(防止拉取镜像卡死)
可以去找ai索取怎么获得加速器的专属链接,在此只展示通用的镜像源
bash
mkdir -p /etc/docker
cat << EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.1panel.live/"
]
}
EOF
root@nextcloud \~# systemctl daemon-reload
root@nextcloud \~# systemctl restart docker
root@nextcloud \~#
4、拉取镜像
有科学上网的可以去用科学上网(实测更快一点)
docker pull nextcloud

docker pull mysql:8.0.37

docker pull onlyoffice/documentserver

bash
[root@nextcloud ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nextcloud latest b5cf942dc492 Less than a second ago 1.48GB
onlyoffice/documentserver latest 82ba611d7112 3 weeks ago 2.1GB
mysql 8.0.37 8279f68ee77d 2 years ago 567MB
[root@nextcloud ~]#
5、数据库,nextcloud,onlyoffice配置
5.1数据库
先进行数据库的配置,密码依旧123456
bash[root@nextcloud ~]# docker run -p 3306:3306 --name mysql --restart="always" \ > -v /usr/local/mysql/conf:/etc/mysql/conf.d \ > -v /usr/local/mysql/logs:/logs \ > -v /usr/local/mysql/data:/var/lib/mysql \ > -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.37 > 7ed952c7c568770a7bd5ac7813ec29fdb8ed58d4a849309e7445938ee06b0f9e
[root@nextcloud ~]# docker exec -it 7ed952c7c568 /bin/bash
bash-5.1# mysql -uroot -p123456
mysql> grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> create database nextcloud;
Query OK, 1 row affected (0.01 sec)
mysql> q
-> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'q' at line 1
mysql> quit;
Bye
bash-5.1# exit
exit
[root@nextcloud ~]#

5.2nextcloud配置
5.2.1创建工作目录
bash
mkdir -p /root/nextcloud/{html,apps,config,themes,data}
5.2.2启动 Nextcloud 容器
bash
docker run -d \
-v /root/nextcloud/html:/var/www/html \
-v /root/nextcloud/apps:/var/www/html/custom_apps \
-v /root/nextcloud/config:/var/www/html/config \
-v /root/nextcloud/data:/var/www/html/data \
-v /root/nextcloud/themes:/var/www/html/themes \
-p 80:80 \
--name nextcloud \
--restart="always" \
nextcloud

在浏览器中然后输入自己的ip地址,不用输入端口号,因为映射的是80端口

打开后,就是这个界面,用户名随意,密码要记住,然后点击MySQL/MariaDB,输入在虚拟机里数据库的用户名和密码,再输入一次ip地址以及数据库的端口号,点击安装。
然后就会一直转圈,等个几分钟就ok了。
记得点击跳过下载应用

5.3启动 OnlyOffice 容器
bash
[root@nextcloud ~]# docker inspect nextcloud:latest | grep -i version
"DockerVersion": "",
"PHP_VERSION=8.5.12",
"NEXTCLOUD_VERSION=35.0.2"
[root@nextcloud ~]#

查看自己的版本,然后去下载对应的,我的是35版本,所以我下35的

启用的时候会让输入密码,输入完后就启用了,然后在已启用的里面去找

由于onlyoffice7.2之后需要密钥才能连接,那么接下来获取密钥

如果出现下面这种报错就要敲下面那两行命令了,因为 Nextcloud 内部可能拦截了内网 IP。我们需要手动进 Nextcloud 容器里改一下它的底层配置。

root@nextcloud apps# docker exec -u www-data nextcloud php occ config:system:set allow_local_remote_servers --type=boolean --value=true
System config value allow_local_remote_servers set to boolean true
root@nextcloud apps# docker exec -u www-data nextcloud php occ config:system:set allow_local_remote_servers --type=boolean --value=true
System config value allow_local_remote_servers set to boolean true
root@nextcloud apps#


然后去nextcloud主页点击左上角的文件,创建文件,看看是否会保存

6、内网穿透(Cpolar)
去官网注册账号,然后登录,找这个

然后复制输入这一长串(别把$输进去)
然后输入
chmod +x cpolar
./cpolar http 80

再开一个终端,修改 config.php 的格式:"在 trusted_domains 数组里添加 1 => '62dc9e20.r6.cpolar.cn'(填你自己上一步骤的公网地址,别填我的)一定要带英文的逗号,不要破坏 PHP 的数组语法。" 这一步很容易因为少个逗号导致 Nextcloud 白屏打不开。
vim /root/nextcloud/config/config.php
进入编辑器后可以输入 /trusted_domains 然后回车,就可以找到了
把上一步骤的公网地址输进去,给nextcloud添加信任

然后打开那串公网地址


正文到这里就结束了,但我想说的是up主最近一直失眠,早上很早就醒了,睡觉的时候稍微有点动静就会醒,对什么都提不起兴趣,整个人好似杨威了一般。