2023年10月5日星期四

Docker 安装 Onlyoffice服务

扩展在线文档预览/编辑

本文将介绍三种支持 WOPI 协议的服务的部署及对接方式。通过实现自己的 WOPI 客户端,扩展 Cloudreve 的预览编辑能力(不仅限于 Office 文档)。

Collabora Online (LibreOffice Online)

使用 Docker 部署 Collabora Online(官方文档):
docker pull collabora/code
​
docker run -t -d -p 127.0.0.1:9980:9980 \
-e "aliasgroup1=<允许使用此服务的 Cloudreve 地址,包含明确端口>" \
-e "username=<面板管理员用户名>" \
-e "password=<面板管理员密码>" \
--name code --restart always collabora/code
以官方演示站为例:
docker run -t -d -p 127.0.0.1:9980:9980 \
-e "aliasgroup1=https://demo.cloudreve.org:443" \
-e "username=<面板管理员用户名>" \
-e "password=<面板管理员密码>" \
--name code --restart always collabora/code
Container 启动后,配置 Nginx 或其他 Web 服务器反向代理 https://127.0.0.1:9980, 可参考 Proxy settings,确保反代后的服务能够被你的最终用户访问,你可以手动访问 <你的服务主机>/hosting/discovery 来确认是否返回了预期的 XML 响应。
在 后台 - 参数设置 - 图像与预览 - 文件预览 - WOPI 客户端 中开启 使用 WOPI 并在 WOPI Discovery Endpoint 中填入<你的服务主机>/hosting/discovery。保存后可在前台测试文档预览和编辑:

OnlyOffice

OnlyOffice 在 6.4 版本后支持了 WOPI 协议,请参考 官方文档 部署你的 OnlyOffice 实例。推荐使用 Docker-DocumentServer 来快速部署。
参考 官方文档 配置 OnlyOffice 开启 WOPI 功能。如果使用 Docker,可在创建 Contianer 时指定 WOPI_ENABLED 为 true 来开启:
docker run -i -t -d -p 8080:80 -e WOPI_ENABLED=true onlyoffice/documentserver

ONLYOFFICE Docs中,WOPI默认非激活。 启用WOPI,修改配置文件: /etc/onlyoffice/documentserver/local.json,并设置wopi.enable参数为true

  • 从Docker将文件拷贝出 (be01de974ce4为容器ID)
docker cp be01de974ce4:/etc/onlyoffice/documentserver/local.json /root
  • 修改文件,增加如下内容,定义ipfilter访问 过滤规则
  • "ipfilter": { "rules": [ { "address": "ip_address", "allowed": true }, { "address": "*", "allowed": false } ], "useforrequest": true, "errorcode": 403 }
OnlyOffice 不支持过滤 WOPI 请求来源,设置 WOPI 请求允许,
"wopi": { "enable": true }

完整配置如下:
{
  "services": {
    "CoAuthoring": {
      "sql": {
        "type": "postgres",
        "dbHost": "localhost",
        "dbPort": "5432",
        "dbName": "onlyoffice",
        "dbUser": "onlyoffice",
        "dbPass": "onlyoffice"
      },
      "token": {
        "enable": {
          "request": {
            "inbox": true,
            "outbox": true
          },
          "browser": true
        },
        "inbox": {
          "header": "Authorization",
          "inBody": false
        },
        "outbox": {
          "header": "Authorization",
          "inBody": false
        }
      },
      "secret": {
        "inbox": {
          "string": "YCp2eyqe63YmIbrAwZzYNAceyFheeqws"
        },
        "outbox": {
          "string": "YCp2eyqe63YmIbrAwZzYNAceyFheeqws"
        },
        "session": {
          "string": "YCp2eyqe63YmIbrAwZzYNAceyFheeqws"
        }
      }
    }
  },
  "rabbitmq": {
    "url": "amqp://guest:guest@localhost"
  },
  "storage": {
    "fs": {
      "secretString": "oV72FWk1AxbSqnenqe7S"
    }
  },
"wopi": {
    "enable": true
    }
}
  • 将文件拷贝到Docker镜像里
docker cp /root/local.json be01de974ce4:/etc/onlyoffice/documentserver/
  • 重启服务
docker exec -it be01de974ce4 /bin/bash supervisorctl restart all

你可以手动访问 <你的 OnlyOffice 主机>/hosting/discovery 来确认是否返回了预期的 XML 响应。
在 后台 - 参数设置 - 图像与预览 - 文件预览 - WOPI 客户端 中开启 使用 WOPI 并在 WOPI Discovery Endpoint 中填入<你的服务主机>/hosting/discovery。保存后可在前台测试文档预览和编辑:
OnlyOffice 不支持过滤 WOPI 请求来源,如果你有对公使用需求,请通过外部应用防火墙检查预览页面请求中 wopisrc 参数是否为预期的 Cloudreve 站点。


Onlyoffice安装字体


  1. 复制字体到docker
sudo docker cp /root/data/fonts 容器id:/usr/share/fonts/
  1. 进入容器
docker exec -it 容器id /bin/bash
  1. 到bin目录
cd /usr/bin
  1. 执行
./documentserver-generate-allfonts.sh
  1. 退出容器,重启容器
exit docker restart onlyoffice



Office Online Server (On-Prem)

​Office Online Server 是微软推出的可私有部署的 Office 在线文档服务。请参考 官方文档 在你的 Windows Server 上部署。
你可以手动访问 <你的 OnlyOffice 主机>/hosting/discovery 来确认是否返回了预期的 XML 响应。
在 后台 - 参数设置 - 图像与预览 - 文件预览 - WOPI 客户端 中开启 使用 WOPI 并在 WOPI Discovery Endpoint 中填入<你的服务主机>/hosting/discovery。保存后可在前台测试文档预览和编辑:
Office Online Server 不支持过滤 WOPI 请求来源,如果你有对公使用需求,请通过外部应用防火墙检查预览页面请求中 wopisrc 参数是否为预期的 Cloudreve 站点。

WOPI 协议

Web Application Open Platform Interface (WOPI) 协议是一种用于集成 Web 文档编辑器的协议,你可以在 微软的文档 中阅读详细的协议定义。Cloudreve 可以对接实现了 WOPI 协议的文档处理服务,用于扩展已有的文档预览和编辑能力。

2023年9月17日星期日

使用docker pull 拉取特定架构amd64、arm64、aarch64的容器镜像

关于x86、x86_64、x64、amd64和arm64、aarch64














开启属性

docker cli支持manifest特性,这个特性默认是不开启的。

通过修改 dockerd 配置文件,并重载,可以在服务器上开启 dockerd 的实验属性。

为配置文件 /etc/docker/daemon.json

添加 “experimental”: true。

修改后的配置文件看起来和下面的比较像:

vim /etc/docker/daemon.json

{
  "experimental": true
}

修改完成后,使用以下命令重置服务:

systemctl daemon-reload
systemctl restart docker

拉取指定架构的镜像

在 docker pull 时指定参数,即可完成指定架构镜像的拉取。

docker pull --platform=arm64 镜像

–platform:该参数是用于拉取指定平台的镜像,也是实验性功能,在上面步骤中开启后就会出现。通过该参数可以手动指定需要的CPU平台镜像,而不用自动去识别。

拉取 arm64 架构镜像示例。

docker pull --platform linux/arm64 openjdk

通过以下命令,可以确定其架构信息:

$ docker image inspect openjdk | grep Architecture
"Architecture": "arm64",
  • 1
  • 2

而主机的架构,是 aarch64:

$ arch
aarch64



2023年7月21日星期五

极空间NAS使用Docker运行Ubuntu/Debian并添加自定义启动脚本

极空间Docker运行Ubuntu/Debian并添加自定义启动脚本

1、添加外部文件夹并装载到 /sh 路径
2、打开容器命令选项卡,Console 连接模式选择 Interacticve &TTV(-i-t )模式
3、其他默认,应用,首次运行系统
4、通过运行的容器的ssh连接至控制终端,命令选择:/bin/sh
5、创建st.sh文件

touch /sh/st.sh

5、设置脚本文件权限

chmod 777 /sh/st.sh

7、写入基本命令

echo "
#!/bin/sh
# vim:sw=4:ts=4:et
exec "$@"
" >> /sh/st.sh

或分别执行

echo " service ssh restart " >> /sh/st.sh
echo "# vim:sw=4:ts=4:et" >> /sh/st.sh
echo "exec "$@"" >> /sh/st.sh

检查写入文件内容,确认无误后继续下一步
8、停止容器,打开容器命令选项卡,编辑EntryPoint选项,选择自定义并输入内容 /sh/st.sh (执行脚本路径)
9、应用修改,容器重新启动
10、通过运行的容器的ssh连接至控制终端
11、执行初始化,替换国内源:
Ubuntu

sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

Debian

sed -i "s@http://ftp.debian.org@https://repo.huaweicloud.com@g" /etc/apt/sources.list
sed -i "s@http://security.debian.org@https://repo.huaweicloud.com@g" /etc/apt/sources.list

如果遇到无法拉取 HTTPS 源的情况,请先使用 HTTP 源并安装:

sudo apt install apt-transport-https ca-certificates

Debian 12 (bookworm) 源:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware

deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

# deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# # deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

12、更新系统并安装基本软件

apt-get update &&
apt install -y sudo &&
sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade &&
sudo apt install -y openssh-server &&
sudo apt install -y vim

13、允许root用户远程登陆,修改/etc/ssh/sshd_config文件:

sudo vim /etc/ssh/sshd_config

修改相关内容,

Port 22
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

14、刷新状态:

sudo service ssh restart

15、设定root用户密码
输入 sudo passwd 命令,输入一般用户密码并设定root用户密码

16、自动安装标准软件包(适用于最小安装)
unminimize

17、通过运行的容器的ssh连接至控制终端,命令选择:/bin/sh ,增加 ssh 的自动启动

echo " service ssh restart " >> /sh/st.sh

18、完成基本设定

2023年7月5日星期三

Windows系统常见的系统环境变量

 1.变量示意

%appdata%就代表了C:Users\用户名\AppData\Roaming这个文件夹。

“%”是系统变量的一种表示方法,在升级补丁或者软件需要将某些内容写入系统文件夹时,都是用的这种写法,可以准确的定位。

2.其他常见变量。

环境变量与对应的路径

%ALLUSERSPROFILE%                       C:\ProgramData

%APPDATA%                                         C:\Users\用户名\AppData\Roaming

%COMMONPROGRAMFILES%            C:\Program Files\Common Files

%COMMONPROGRAMFILES(x86)%    C:\Program Files (x86)\Common Files

%COMSPEC%                                       C:\Windows\System32\cmd.exe

%HOMEDRIVE%和%SystemDrive%     C:\

%HOMEPATH%                                     C:\Users\用户名

%LOCALAPPDATA%                            C:\Users\用户名\AppData\Local

%PROGRAMDATA%                            C:\ProgramData

%PROGRAMFILES%                           C:\Program Files

%PROGRAMFILES(X86)%                  C:\Program Files (x86)

%PUBLIC%                                          C:\UsersPublic

%SystemRoot%                                   C:\Windows

%TEMP%和%TMP%                           C:\Users\用户名\AppData\LocalTemp

%USERPROFILE%                             C:\Users用户名

%WINDIR%                                         C:\Windows

%LOCALAPPDATA%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets                   锁屏桌面目录



应用示例:

改变EDGE缓存位置
mklink /d "%HOMEPATH%\AppData\Local\Microsoft\Edge\User Data\Default\Cache" "A:\Cache"

2023年6月3日星期六

极空间NAS使用Docker 运行 CHFS

Docker仓库地址: https://hub.docker.com/r/jonnyan404/chfs

WEBUI基本启动命令配置( 极空间 示例 ):
'--path=/data' '--rule=:::Share:r|admin:admin:rwd' 
指定文件目录 /data  ; 其中,未登录时Share目录可读,登录时可读写根目录

EntryPoint命令:
'/usr/bin/chfs' 

Consale:
None


官网地址: http://iscute.cn/chfs

  • 支持arm64/amd64双平台
  • 下载链接格式:
文件: wget http://ip:port/chfs/shared/xxx.txt
目录: wget http://ip:port/chfs/downloaddir/xxx.zip

简单教程:

docker run --restart=on-failure:3 -d --name chfs -p 80:80 -v /path/you/dir:/data jonnyan404/chfs

  • 默认端口为80,权限为增删改.
  • /path/you/dir 请自行替换为你自己的目录

打开 http://ip 即可访问.

进阶教程:

自定义端口

docker run --restart=on-failure:3 -d --name chfs -p 80:80 -v /path/you/dir:/data jonnyan404/chfs --port=80 --path=/data

自定义配置文件

docker run --restart=on-failure:3 -d --name chfs -p 80:80 -v /path/you/dir:/data jonnyan404/chfs --file=/data/xxx.ini

同一个容器运行多个CHFS

  1. 指定一个端口范围

docker run --restart=on-failure:3 -d --name chfs -p 80-90:80-90 -v /path/you/dir:/data jonnyan404/chfs

  1. 执行程序

docker exec -it chfs nohup chfs --port=88 --path=/data/xxx &或docker exec -it chfs nohup chfs --file=/data/yyy.ini &

更多参数

//共享目录为D盘,监听端口号为8080
chfs --path="d:/" --port=8080

//共享目录为"d:\\projects"和"e:\\nsis",监听端口号为80
chfs --path="d:\\projects|e:\\nsis"

//白名单模式,允许192.168.1.2-192.168.1.100以及192.168.1.200进行访问
chfs --allow="192.168.1.2-192.168.1.100,192.168.1.200"

//黑名单模式,禁止192.168.1.2-192.168.1.100以及192.168.1.200进行访问
chfs --allow="not(192.168.1.2-192.168.1.100,192.168.1.200)"

//匿名用户具有只读权限(默认情况下匿名用户具有读写权限)
//账户ceshizu,密码为ceshizu123,对根目录的权限为只读,但对test目录具有读写权限
//账户yanfazu,密码为yanfazu123,对根目录的权限为只读,但对yanfa目录具有读写权限
chfs --rule="::r|ceshizu:ceshizu123:r:test:rw|yanfazu:yanfazu123:r:yanfa:rw"

//匿名用户什么权限都没有(默认情况下匿名用户具有读写权限)
//账户admin,密码为admin123,具有读写权限
//账户zhangsan,密码为zhangsan123,对根目录的权限为不可读写,但对zhangsanfiles目录具有读写权限
chfs --rule="::|admin:admin123:rw|zhangsan:zhangsan123::zhangsanfiles:rw"

//通过配置文件进行配置,该文件可以不存在,待以后需要更改配置时使用
chfs --file="d:\chfs\chfs.ini"