Skip to content

Commit

Permalink
[deployment-examples] add wopi to deployment example (#5899)
Browse files Browse the repository at this point in the history
* add wopi to deployment example

* expose gateway and drivers in preparation for owncloud/ocis#2612
  • Loading branch information
wkloucek committed Oct 14, 2021
1 parent 9a309e8 commit 89be3c7
Show file tree
Hide file tree
Showing 10 changed files with 536 additions and 8 deletions.
6 changes: 5 additions & 1 deletion deployments/continuous-deployment-config/ocis_web/latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,12 @@
INSECURE: "false"
TRAEFIK_ACME_MAIL: wkloucek@owncloud.com
OCIS_DOCKER_TAG: latest
OCIS_DOMAIN: ocis.ocis-web.latest.owncloud.works
WEB_DOCKER_TAG: latest
OCIS_DOMAIN: ocis.ocis-web.latest.owncloud.works
WOPISERVER_DOMAIN: wopiserver.ocis-web.latest.owncloud.works
COLLABORA_DOMAIN: collabora.ocis-web.latest.owncloud.works
ONLYOFFICE_DOMAIN: onlyoffice.ocis-web.latest.owncloud.works
CODIMD_DOMAIN: codimd.ocis-web.latest.owncloud.works
COMPOSE_FILE: docker-compose.yml:monitoring_tracing/docker-compose-additions.yml
- name: monitoring
git_url: https://github.com/owncloud-devops/monitoring-tracing-client.git
Expand Down
32 changes: 32 additions & 0 deletions deployments/examples/ocis_web/.env
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,38 @@ IDP_LDAP_BIND_PASSWORD=
STORAGE_LDAP_BIND_PASSWORD=
# JWT secret which is used for the storage provider. Must be changed in order to have a secure oCIS. Defaults to "Pive-Fumkiu4"
OCIS_JWT_SECRET=
# JWT secret which is used for uploads to create transfer tokens. Must be changed in order to have a secure oCIS. Defaults to "replace-me-with-a-transfer-secret"
STORAGE_TRANSFER_SECRET=
# Machine auth api key secret. Must be changed in order to have a secure oCIS. Defaults to "change-me-please"
OCIS_MACHINE_AUTH_API_KEY=

### Wopi server settings ###
# cs3org wopi server version. Defaults to "latest"
WOPISERVER_DOCKER_TAG=
# cs3org wopi server domain. Defaults to "wopiserver.owncloud.test"
WOPISERVER_DOMAIN=
# JWT secret which is used for the documents to be request by the Wopi client from the cs3org Wopi server. Must be change in order to have a secure Wopi server. Defaults to "LoremIpsum567"
WOPI_JWT_SECRET=
# JWT secret which is used for the documents to be request by the Wopi client from the cs3org Wopi server. Must be change in order to have a secure Wopi server. Defaults to "LoremIpsum123"
WOPI_IOP_SECRET=

### Collabora settings ###
# Domain of Collabora, where you can find the frontend. Defaults to "collabora.owncloud.test"
COLLABORA_DOMAIN=
# Admin user for Collabora. Defaults to blank, provide one to enable access
COLLABORA_ADMIN_USER=
# Admin password for Collabora. Defaults to blank, provide one to enable access
COLLABORA_ADMIN_PASSWORD=

### OnlyOffice settings ###
# Domain of OnlyOffice, where you can find the frontend. Defaults to "onlyoffice.owncloud.test"
ONLYOFFICE_DOMAIN=

### CodiMD settings ###
# Domain of Collabora, where you can find the frontend. Defaults to "codimd.owncloud.test"
CODIMD_DOMAIN=
# Secret which is used for the communication with the WOPI server. Must be changed in order to have a secure CodiMD. Defaults to "LoremIpsum456"
CODIMD_SECRET=

### ownCloud Web settings ###
# ownCloud Web version. Defaults to "latest"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh
set -e

apk add curl

#TODO: app driver itself should try again until CodiMD is up...

retries=10
while [[ $retries -gt 0 ]]; do
if curl --silent --show-error --fail http://codimd:3000 > /dev/null; then
ocis storage-app-provider server
else
echo "CodiMD is not yet available, trying again in 10 seconds"
sleep 10
retries=$((retries - 1))
fi
done
echo 'CodiMD was not available after 100 seconds'
exit 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/sh
set -e

# if Collabora is already up and we have a new oCIS image, this app provider starts up too fast for oCIS
sleep 20

ocis storage-app-provider server
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh
set -e

apk add curl

#TODO: app driver itself should try again until OnlyOffice is up...

retries=10
while [[ $retries -gt 0 ]]; do
if curl --silent --show-error --fail http://onlyoffice/hosting/discovery > /dev/null; then
ocis storage-app-provider server
else
echo "OnlyOffice is not yet available, trying again in 10 seconds"
sleep 10
retries=$((retries - 1))
fi
done
echo 'OnlyOffice was not available after 100 seconds'
exit 1
92 changes: 92 additions & 0 deletions deployments/examples/ocis_web/config/ocis/mimetypes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
[
{
"mime_type": "application/pdf",
"extension": "pdf",
"name": "PDF",
"description": "PDF document",
"icon": "",
"default_app": "",
"allow_creation": false
},
{
"mime_type": "application/vnd.oasis.opendocument.text",
"extension": "odt",
"name": "OpenDocument",
"description": "OpenDocument text document",
"icon": "",
"default_app": "Collabora",
"allow_creation": true
},
{
"mime_type": "application/vnd.oasis.opendocument.spreadsheet",
"extension": "ods",
"name": "OpenSpreadsheet",
"description": "OpenDocument spreadsheet document",
"icon": "",
"default_app": "Collabora",
"allow_creation": true
},
{
"mime_type": "application/vnd.oasis.opendocument.presentation",
"extension": "odp",
"name": "OpenPresentation",
"description": "OpenDocument presentation document",
"icon": "",
"default_app": "Collabora",
"allow_creation": true
},
{
"mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"extension": "docx",
"name": "Microsoft Word",
"description": "Microsoft Word document",
"icon": "",
"default_app": "OnlyOffice",
"allow_creation": true
},
{
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"extension": "xlsx",
"name": "Microsoft Excel",
"description": "Microsoft Excel document",
"icon": "",
"default_app": "OnlyOffice",
"allow_creation": true
},
{
"mime_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"extension": "pptx",
"name": "Microsoft PowerPoint",
"description": "Microsoft PowerPoint document",
"icon": "",
"default_app": "OnlyOffice",
"allow_creation": true
},
{
"mime_type": "application/vnd.jupyter",
"extension": "ipynb",
"name": "Jupyter Notebook",
"description": "Jupyter Notebook",
"icon": "",
"default_app": "",
"allow_creation": true
},
{
"mime_type": "text/markdown",
"extension": "md",
"name": "Markdown file",
"description": "Markdown file",
"icon": "",
"default_app": "CodiMD",
"allow_creation": true
},
{
"mime_type": "application/compressed-markdown",
"extension": "zmd",
"name": "Compressed markdown file",
"description": "Compressed markdown file",
"icon": "",
"default_app": "CodiMD",
"allow_creation": false
}
]
4 changes: 0 additions & 4 deletions deployments/examples/ocis_web/config/ocis/proxy-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@
{
"endpoint": "/settings.js",
"backend": "http://localhost:9190"
},
{
"endpoint": "/onlyoffice.js",
"backend": "http://localhost:9220"
}
]
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#/bin/sh!
set -e

echo "${WOPISECRET}" > /etc/wopi/wopisecret
echo "${IOPSECRET}" > /etc/wopi/iopsecret
mkdir -p /var/run/secrets
echo "$CODIMDSECRET" > /var/run/secrets/codimd_apikey

cp /etc/wopi/wopiserver.conf.dist /etc/wopi/wopiserver.conf
sed -i 's/ocis.owncloud.test/'${OCIS_DOMAIN}'/g' /etc/wopi/wopiserver.conf
sed -i 's/collabora.owncloud.test/'${COLLABORA_DOMAIN}'/g' /etc/wopi/wopiserver.conf
sed -i 's/wopiserver.owncloud.test/'${WOPISERVER_DOMAIN}'/g' /etc/wopi/wopiserver.conf

touch /var/log/wopi/wopiserver.log

/app/wopiserver.py &

tail -f /var/log/wopi/wopiserver.log
128 changes: 128 additions & 0 deletions deployments/examples/ocis_web/config/wopiserver/wopiserver.conf.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
#
# wopiserver.conf
#
# Default configuration file for the WOPI server for CERNBox
#
##############################################################

[general]
# Storage access layer to be loaded in order to operate this WOPI server
# Supported values: local, xroot, cs3.
storagetype = cs3

# Port where to listen for WOPI requests
port = 8880

# URL of your Microsoft Office Online service
#oosurl = https://officeonline.owncloud.test

# URL of your Collabora Online service
#codeurl = https://collabora.owncloud.test

# URL of your CodiMD service
codimdurl = https://codimd.owncloud.test
codimdinturl = http://codimd:3000

# URL of your WOPI server or your HA proxy in front of it
wopiurl = https://wopiserver.owncloud.test

# URL for direct download of files. The complete URL that is sent
# to clients will include the access_token argument
downloadurl = https://wopiserver.owncloud.test/wopi/cbox/download

# Optional URL prefix for WebDAV access to the files. This enables the
# 'Edit in Desktop client' action on Windows-based clients
webdavurl = https://ocis.owncloud.test/webdav

# List of file extensions deemed incompatible with LibreOffice:
# interoperable locking will be disabled for such files
nonofficetypes = .md .zmd .txt .epd

# List of file extensions to be supported by Collabora
codeofficetypes = .odt .ott .ods .ots .odp .otp .odg .otg .doc .dot .xls .xlt .xlm .ppt .pot .pps .vsd .dxf .wmf .cdr .pages .number .key

# WOPI access token expiration time [seconds]
tokenvalidity = 86400

# WOPI lock expiration time [seconds]
wopilockexpiration = 7200

# WOPI lock strict check: if True, WOPI locks will be compared according to specs,
# that is their representation must match. False (default) allows for a more relaxed
# comparison, which compensates incorrect lock requests from Microsoft Office Online
# on-premise setups.
#wopilockstrictcheck = False

# Logging level. Debug enables the Flask debug mode as well.
# Valid values are: Debug, Info, Warning, Error.
loglevel = Info

# Location of the lock files. Currently, two modes are supported:
# if a path is provided, all locks will be stored there with a hashed name,
# otherwise the lock is stored on the same path as the original file.
# This latter mode will eventually be dropped once the system is deemed
# stable enough and lock files are hidden away.
#lockpath = /your_storage/wopilocks


[security]
# Location of the secret files. Requires a restart of the
# WOPI server when either the files or their content change.
wopisecretfile = /etc/wopi/wopisecret
iopsecretfile = /etc/wopi/iopsecret

# Use https as opposed to http (requires certificate)
usehttps = no

# Certificate and key for https. Requires a restart
# to apply a change.
wopicert = /etc/grid-security/host.crt
wopikey = /etc/grid-security/host.key


[bridge]
# SSL certificate check for the connected apps
sslverify = False

# Minimal time interval between two consecutive save operations [seconds]
#saveinterval = 200

# Minimal time interval before a closed file is WOPI-unlocked [seconds]
#unlockinterval = 90


[io]
# Size used for buffered reads [bytes]
chunksize = 4194304


[xroot]
# URL of the default remote xroot storage server. This can be overridden
# if the end-point is passed on the /wopi/cbox/open call
#storageserver = root://your-xrootd-server.org

# Optional EOS top-level path that will be prepended to all user paths. Useful
# to map the CERNBox-exposed files in a subfolder of the EOS storage. By default,
# this is not used and storagehomepath is empty.
#storagehomepath = /your/top/storage/path


[local]
# Location of the folder or mount point used as local storage
#storagehomepath = /mnt/your_local_storage


[cs3]
# Host and port of the Reva(-like) CS3-compliant GRPC gateway endpoint
revagateway = ocis:9142

# HTTP (WebDAV) endpoint for uploading files
#datagateway = https://your-reva-server.org:port/data

# Reva/gRPC authentication token expiration time [seconds]
# The default value matches Reva's default
authtokenvalidity = 3600

# SSL certificate check for Reva
# oCIS uses self signed certificate in this example
sslverify = false
Loading

0 comments on commit 89be3c7

Please sign in to comment.