# WopiHost **Repository Path**: yedeming/WopiHost ## Basic Information - **Project Name**: WopiHost - **Description**: Wopi - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-20 - **Last Updated**: 2024-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WopiHost 对接 CollaboraOnline [服务器 WopiHost](https://github.com/petrsvihlik/WopiHost?tab=readme-ov-file) --- [客户端 CollaboraOnline](https://github.com/CollaboraOnline/online) --- ### Docker CollaboraOnline 部署 ``` docker run -t -d --name collabora -p 9980:9980 -e username=ydm -e password=123 -e aliasgroup1=http://collaboraonline\\.example\\.com:3000 --restart always --cap-add MKNOD collabora/code ``` * aliasgroup1 配置WopiHost地址 必须通过域名访问 http://collaboraonline.example.com:3000 * 如果是http 记得修改/etc/coolwsd/coolwsd.xml ssl-settings --- ### WopiHost.Web appsettings.json ``` { "Wopi": { "StorageProvider": { "RootPath": "..\\WopiHost\\wwwroot\\wopi-docs" }, "HostUrl": "http://collaboraonline.example.com:8080", //WopiHost服务器(反向代理)(和aliasgroup1一样) "ClientUrl": "http://collaboraonline.example.com:8080", //CollaboraOnline服务地址(反向代理) "Discovery": { "NetZone": "ExternalHttp", //配置Discovery文件网络类型(和ssl有关) "RefreshInterval": "12:00:00" //缓存更新时间 } } } ``` ### 反向代理 * 进wsl才能挂载到正确目录 > docker run -d --name nginx --restart=always -v /home/ydm/nginx/nginx.conf:/etc/nginx/nginx.conf -p 8080:80 -t nginx * Nginx配置 [collaboraonline Nginx](https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html#reverse-proxy-with-nginx-webserver) ``` user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name collaboraonline.example.com; # 当前wsl地址:http://172.21.119.219 # Collaboraonline端口:9980 # static files location ^~ /browser { proxy_pass http://172.21.119.219:9980; proxy_set_header Host $http_host; } # WOPI discovery URL location ^~ /hosting/discovery { proxy_pass http://172.21.119.219:9980; proxy_set_header Host $http_host; } # Capabilities location ^~ /hosting/capabilities { proxy_pass http://172.21.119.219:9980; proxy_set_header Host $http_host; } # main websocket location ~ ^/cool/(.*)/ws$ { proxy_pass http://172.21.119.219:9980; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; proxy_read_timeout 36000s; } # download, presentation and image upload location ~ ^/(c|l)ool { proxy_pass http://172.21.119.219:9980; proxy_set_header Host $http_host; } # Admin Console websocket location ^~ /cool/adminws { proxy_pass http://172.21.119.219:9980; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; proxy_read_timeout 36000s; } # 代理WopiHost.Web 当前宿主机地址:http://172.21.112.1 # Web服务端口:3001 location / { proxy_pass http://172.21.112.1:3001; proxy_set_header Host $http_host; } # 代理WopiHost 当前宿主机地址:http://172.21.112.1 # WopiHost端口:3000 location ^~ /wopi/ { proxy_pass http://172.21.112.1:3000; proxy_set_header Host $http_host; } } } ``` * 宿主机域名解析 ``` > C:\Windows\System32\drivers\etc\hosts //Wsl地址 172.21.119.219 collaboraonline.example.com ``` ## 问题 > Web服务必须和同域名 ``` 错误描述:docker 容器内 apt-get update命令时,提示 E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denie) 原因,当前用户没有权限 解决办法:docker exec -it id /bin/bash 改为 docker exec -u 0 -it id /bin/bash ``` ``` 获取wsl服务IP wsl hostname -I ``` ``` 本地的WopiHost服务器不能用locahost不然只能主机访问 launchSettings.json ASPNETCORE_URLS 不能用localhost:port,改成 http://0.0.0.0:port 或 http://*:port ```