插件实现思路:从插件中导出html文件并上传到web服务器,服务端同时生成对应的index.html作为首页。
服务器实现思路:请求特定的链接时,从数据库中查询app_id
和doc_id
,并重定向到服务端的web接口中。
在v2.0中,仅有一个二进制程序,包含了web服务器。数据库采用了sqlite(本地文件的形式)。
-
克隆项目
git clone [email protected]:tengfei-xy/siyuan-plugin-share-system-engine.git
-
确保存在go 1.21.4或更高的版本,安装参考文档
-
进入项目文件夹并开始编译
务必设置
CGO_ENABLED
=1cd siyuan-plugin-share-system-engine CGO_ENABLED=1 go build -o spss_engine .
注:不提供32位系统的二进制文件和windows arm。
-
下载Release并解压
-
修改配置文件
-
安装musl
centos 7
sudo yum install -y musl-libc-static
debian / ubuntu
sudo apt install musl
-
运行启动
./spss_engine -c config.yaml
-
一键部署 / 从docker hub中拉取并运行容器
注:
-p
的容器端口需要和SPSS_LISTEN
变量的端口保持一直。作为容器的管理者,需要修改的是-p的宿主端口和SPSS_SHARE_LINK
变量 注: 对于SPSS_SHARE_LINK变量表示,生成的链接将以此参数作为开头。这个端口不是容器的端口,是最终外部网络来访问容器的端口。示例:如果你在NAS中或其他容器中,假如你需要让外网来访问2233端口,而容器本身使用了25934端口,那么这个参数的端口依然那是2233。# IP访问 / http访问 / 关闭API访问密码保护 docker run -d -p 25934:25934 -v ./:/data \ -v /etc/localtime:/etc/localtime --restart=always \ -e SPSS_LISTEN=0.0.0.0:25934 \ -e SPSS_SAVE_PATH=/data \ -e SPSS_SHARE_LINK=http://127.0.0.1:25934 \ -e SPSS_WEB_FILE_MAX=100 \ --name=spss_engine \ tengfeixy/spss_engine:2.3.2 # https访问 / 启动API访问密码保护 docker run -d -p 25934:25934 -v ./:/data \ -v /etc/localtime:/etc/localtime --restart=always \ -e SPSS_LISTEN=0.0.0.0:25934 \ -e SPSS_SAVE_PATH=/data \ -e SPSS_SHARE_LINK=https://www.example.com:25934 \ -e SPSS_WEB_FILE_MAX=100 \ -e SPSS_WEB_SSL=true \ -e SPSS_WEB_SSL_CERT=./cert.pem \ -e SPSS_WEB_SSL_KEY=./cert.key \ -e SPSS_DB_API=true \ -e SPSS_DB_AUTH=username:password \ --name=spss_engine \ tengfeixy/spss_engine:2.3.2
-
本地构建镜像
- 构建/拉取镜像,下载Release并解压
docker build --no-cache=true -t spss_engine .
- 在当前目录创建config.yaml,并修改
- 运行容器
其他环境变量参数参考上文
docker run -d -p 25934:25934 -v ./:/data -v /etc/localtime:/etc/localtime --restart=always --name=spss_engine spss_engine
- 构建/拉取镜像,下载Release并解压
- 打开思源笔记的分享插件。(注:每次打开此插件的设置页面,都会访问一次服务器,如果访问失败或访问超市则消息弹窗提示)
- 根据分享插件的服务器地址,测试此端口在本机是否能访问。如果在浏览器中使用思源,要在插件中勾选“从浏览器访问”
- 如果在插件服务器在NAS中,应该使用NAS的IP和容器映射的外部端口。
- 在本机的浏览器中直接访问插件设置里的服务器地址,如果返回404 No found,表示通信正常,此时可以使用这个服务器端。
- 在插件中,执行创建分享后,获得的分享链接的ip、端口务必需要和分享服务期的ip、端口相同。如果不相同,需要修改配置文件里的shareBaseLink或容器变量SPSS_SHARE_LINK。
- 根据插件设置页面底部的联系方式找作者,使用向日葵远程debug。
-
从mysql导出sql,参考语句
bin/mysqldump -B share_system -u root -p -S /tmp/mysql.sock > ~/share_system.sql
-
导入方式
注:程序只搜索导入的数据文件的开头为INSERT的语句。表初始化和创建又程序启动时自动完成。导入前,将清空数据表。
-
命令行
- 服务器在容器中
- 将sql文件放入容器中
docker cp ./share_system.sql spss_engine:/
- 通过程序导入sql文件
docker exec -it spss_engine /usr/sbin/spss_engine -d /share_system.sql
- 将sql文件放入容器中
- 服务器无docker环境
spss_engine -d ./share_system.sql
- 服务器在容器中
-
网络
在服务器已启动后,通过curl或其他工具上传文件。
注:此方法需要设置配置文件
apiEnable: true
或变量SPSS_DB_API=true
,并设置用户名、密码。运行正常时,将返回被插入的数据。curl -X PUT -u username:password http://<your_address>/api/db/table -F "file=@share_system.sql"
-
-
修改所有的index.html为index.htm
linux/macos参考命令
for line in $(find 数据文件路径 -name 'index.html');do
sudo mv $line $(dirname $line)/index.htm
done
说明:API是用来查看数据库的记录,使用API之前,需要确保API接口在配置文件上被启用。如果包含了用户和密码,在请求中加入Authorization: Basic base64(用户名:密码)
(参考文档)
- 查看所有数据
GET /api/db/table
- 删除所有数据
DELETE /api/db/table
- 提交旧版本的数据库文件(次文件因包含INSERT)
PUT /api/db/table