内网安装docker+onlyoffice+nextcloud
在内网安装docker、nextcloud和onlyoffice
每天都在为内网装环境感到崩溃,内网和外部互联网断开,各种文件全靠U盘导入导出,花了两天时间尝试手动安装依赖包安装onlyoffice失败后,终于决定用docker装,然后发现docker也要各种依赖,在各种探索之后终于找到了在内网安装docker的方法
然后我实际上安装的逻辑是找了一台外网的centos,下载相关的依赖和镜像导出来,放到内网机上进行安装
1.内网安装docker
1.1 外网机下载docker需要的rpm包
我是一边在外网装docker,一边在内网装摸索的,外网安装docker,基本上只有几条命令
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ## 配置快速下载docker的仓库
yum install -y docker-ce docker-ce-cli containerd.io
但是我以为只有docker-ce docker-ce-cli containerd.io,这三个依赖,我导到内网里进行rpm -ivh *.rpm进行安装的时候提示缺少selinux依赖,然后我就在阿里云centos packages镜像上面找依赖(之前手动安装各种rpm踩出来的坑),但是我安装container-selinu的时候又提示缺少依赖,非常崩溃,然后我看docker安装的时候重新看了一下yum下载的东西,虽然下载docker-ce docker-ce-cli containerd.io,但它实际上安装了总共10个内容,如下图所示
在内网中安装的时候经常会出现,安装依赖的时候,缺少依赖的依赖,所以实际上在下载的时候需要嵌套下载所有依赖,我第一步实践是挨个查询每个依赖的依赖,使用这个指令“rpm -qpR docker-ce-26.1.4-1.el7.x86_64.rpm”,然后把他依赖的依赖挨个安装下来,后面我发现太蠢了,就先用下面的指令下载docker安装过程中能看到的依赖
yumdownloader --resolve \
> docker-ce \
> docker-ce-cli \
> containerd.io \
> docker-buildx-plugin \
> docker-compose-plugin \
> docker-ce-rootless-extras \
> fuse-overlayfs \
> fuse3-libs \
> slirp4netns \
> container-selinux
然后用下面的指令下载这些依赖的依赖
yumdownloader --resolve $(repoquery --requires --recursive docker-ce docker-ce-cli containerd.io container-selinux docker-buildx-plugin docker-compose-plugin fuse-overlayfs fuse3-libs slirp4netns | awk '{print $1}' | sort -u | grep -v '^rpmlib') --destdir=./docker-offline-packages ## recursive后买你一直到awk前面的都是我下载的10个docker依赖的名称
下载的依赖的结果就如下图所示:
但是我担心还有这些依赖又有依赖,所以我就把我不眼熟的几个rpm包再循环下载了一下
yumdownloader --resolve $(repoquery --requires --recursive “policycoreutils-python” | awk '{print $1}' | sort -u | grep -v '^rpmlib') --destdir=./docker-offline-packages
## “policycoreutils-python” 是rpm包的名称
后面发现有个新的指令,可以使用yum以downloadonly的形式下载一堆rpm包(可能包含rpm的依赖),指令如下
yum install --downloadonly --downloaddir=/root/yzw/nextcloud php-pgsql xxxx ## "xxxx表示rpm包“,这个就会下载package和他的dependceny,全不全我就不知道了,只有导入内网安装的时候才知道
1.2 内网安装docker
就按照上面的方法下载所有的依赖,然后把这些依赖导入到内网,直接
rpm -ivh *.rpm
只要不提示缺少依赖,说明基本上所有的依赖都已经下载了,如果提示缺少依赖,再去外网机上按照yumdownloader递归下载一下依赖吧,如果提示xxxxx conflicts xxxxx,我个人觉得应该是无所谓的,可以直接–force安装所有的rpm包
rpm -ivh *.rpm --force
执行完命令之后输入docker --version可以看到下面提示版本就说明docker安装成功了
2.使用docker处理onlyoffice和nextcloud镜像
2.1 在外网机上下载onlyoffice的镜像
2.1.1 设置docker下载image的mirrorvi /etc/docker/daemon.json
这一步可以帮助加速下载,否则就会显示一直连接不到,将下面的复制到json文件里
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
然后重新加载一下daemon和docker就可以加速拉取了
systemctl daemon-reload
systemctl restart docker
2.2.2 拉取镜像
直接在外网机上拉取onlyoffice和nextcloud的镜像
docker pull onlyoffice/documentserver
docker pull nextcloud
然后把镜像压缩保存,一般压缩完了就会出现在压缩时的文件夹下面,压缩的时候onlyoffice有点慢不用着急
docker save nextcloud:latest | gzip > nextcloud.tar.gz
docker save onlyoffice/documentserver:latest | gzip > onlyoffice-documentserver.tar.gz
然后就可以把nextcloud.tar.gz和onlyoffice-documentserver.tar.gz,这两个压缩包导出到本地,再转换到内网机里去了
3.安装onlyoffice
3.1 加载镜像并运行
在内网里加载这两个镜像
gunzip -c onlyoffice-documentserver.tar.gz | docker load
gunzip -c nextcloud.tar.gz | docker load
docker images ## 查看加载的镜像,一般会出现
# nextcloud latest abc123def456 2 days ago 500MB
# onlyoffice/documentserver latest abc123def456 2 weeks ago 1.5GB
3.2 安装onlyoffice
创建持久化数据目录
mkdir -p /app/onlyoffice/{Data,logs,cache}
chmod 777 /app/onlyoffice/Data # ONLYOFFICE 需要写入权限
启动容器
docker run -d --name onlyoffice \
-p 80:80 -p 443:443 \
-v /app/onlyoffice/Data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/logs:/var/log/onlyoffice \
-v /app/onlyoffice/cache:/var/lib/onlyoffice \
-e JWT_ENABLED=true \
-e JWT_SECRET=your_secure_key \ ##your_secure_key这个可以随便设置
onlyoffice/documentserver
验证服务状态
# 检查容器运行状态
docker ps -f name=onlyoffice # 会输出运行的容器的内容
curl http://localhost/healthcheck # 会输出一些html内容
然后就可以浏览器打开了
3.2 安装nextcloud
创建数据目录
# 创建数据目录
mkdir -p /nextcloud/{data,config,apps}
chmod 777 /nextcloud/data # 临时权限,安装后需调整
启动容器
# 启动容器
docker run -d \
--name nextcloud \
-p 8080:80 \
-v /nextcloud/data:/var/www/html/data \
-v /nextcloud/config:/var/www/html/config \
-v /nextcloud/apps:/var/www/html/custom_apps \
nextcloud:latest
初始化配置,访问http://服务器IP:8080,会打开一个配置管理员账号和数据库目录的地方,我已经安装好postgresql了,所以我的数据库配置就是postgre,然后我安装postgre的逻辑不是用docker,而是我在docker之前手动安装,可以看内网安装postgre的那个文章
在初始化配置页面,输入账号密码、数据库账号密码、数据库名称,就会自动安装,安装完了直接就登录
3.3 nextcloud集成onlyoffice
我集成下了一个插件,虽然我也不知道有没有用,但是这一步还是做了,插件的下载的链接是这个:插件下载链接,自己手动下载一个版本到内网里,然后需要拷贝到docker中
# 复制插件到容器
docker cp /offline-packages/onlyoffice.tar.gz nextcloud:/var/www/html/custom_apps/
# 解压插件(在容器内执行)
docker exec -it nextcloud bash -c "tar -zxvf /var/www/html/custom_apps/onlyoffice.tar.gz -C /var/www/html/custom_apps/ && chown -R www-data:www-data /var/www/html/custom_apps/onlyoffice"
# 验证解压结果
docker exec nextcloud ls -l /var/www/html/custom_apps/onlyoffice
# 启用插件
docker exec -it nextcloud php occ app:enable onlyoffice
在nextcloud登录之后的页面配置onlyoffice的连接
点击右上角个人头像,点击“管理设置”,在右侧有个“onlyoffice”,进入页面后配置IP地址和JWT_SECRET就可以运行了
3.4 增加文件大小
按照onlyoffice默认的设置,最多能打开50MB的PPT和word,如果想要打开大文件可能会出现下面这个文件大小的错误,为了能打开大文件,需要编辑/etc/onlyoffice/documentserver/default.json这个文件
因为我是用docker运行的,而且内网docker没有vi编辑器,需要先将文件复制出来
docker cp onlyoffice:/etc/onlyoffice/documentserver/default.json /tmp/default.json
然后修改如下(文件最结尾的地方)
修改完了之后,再把这个文件复制到docker里去
docker cp /tmp/default.json onlyoffice:/etc/onlyoffice/documentserver/default.json
复制完了之后重启一下容器就好了
更多推荐
所有评论(0)