学んだことや苦労したことをつらつらと書いていきます。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
ONLYOFFICE7.2が2022/09/22にリリースされていたのでアップデートのテストをしたところ、ちょっとした躓きがありました。
OS: Ubuntu20.0.4
動作環境
Docker-DocumentServerのリポジトリを利用して、Docker-Composeで動作させています。
version: '2'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/documentserver-ee:7.1.1
command: /sbin/init
privileged: true
depends_on:
- onlyoffice-postgresql
- onlyoffice-rabbitmq
environment:
- DB_TYPE=postgres
- DB_HOST=onlyoffice-postgresql
- DB_PORT=5432
- DB_NAME=onlyoffice
- DB_USER=onlyoffice
- AMQP_URI=amqp://guest:guest@onlyoffice-rabbitmq
# Uncomment strings below to enable the JSON Web Token validation.
#- JWT_ENABLED=true
#- JWT_SECRET=secret
#- JWT_HEADER=Authorization
#- JWT_IN_BODY=true
ports:
- '8080:80'
stdin_open: true
restart: always
stop_grace_period: 60s
volumes:
- /var/www/onlyoffice/Data:/var/www/onlyoffice/Data
- /var/log/onlyoffice:/var/log/onlyoffice
- /var/lib/onlyoffice/documentserver/App_Data/cache/files:/var/lib/onlyoffice/documentserver/App_Data/cache/files
- /var/www/onlyoffice/documentserver-example/public/files:/var/www/onlyoffice/documentserver-example/public/files
- /usr/share/fonts:/usr/share/fonts
- onlyoffice_config:/etc/onlyoffice/documentserver
onlyoffice-rabbitmq:
container_name: onlyoffice-rabbitmq
image: rabbitmq
restart: always
expose:
- '5672'
onlyoffice-postgresql:
container_name: onlyoffice-postgresql
image: postgres:9.5
environment:
- POSTGRES_DB=onlyoffice
- POSTGRES_USER=onlyoffice
- POSTGRES_HOST_AUTH_METHOD=trust
restart: always
expose:
- '5432'
volumes:
- postgresql_data:/var/lib/postgresql
volumes:
postgresql_data:
onlyoffice_config:
local.jsonに変更を加えたいため、/etc/onlyoffice/documentserver/local-production-linux.json
を作成して、そちらに設定を追加します。(local.jsonはコンテナを再起動するたびに書き換わってしまうため。)
設定ファイルの変更を保持するため、docker volumeを利用しています。
volumes:
- onlyoffice_config:/etc/onlyoffice/documentserver
volumes:
onlyoffice_config:
アップデートしてみる
docker imageの部分を7.2に変更します。
version: '2'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
image: onlyoffice/documentserver-ee:7.2.0
exampleサーバーを起動して動作確認してみます。
...ドキュメントが開けない。
コンテナに入ってサービスを再起動してみましょう。
# supervisorctl restart all
ds:metrics: stopped
ds:example: stopped
ds:converter: ERROR (spawn error)
ds:metrics: started
ds:example: started
ds:docservice: ERROR (spawn error)
converterとdocserviceが起動できていない様子。
ログを見ても以下の通り。
Error: Configuration property "tenants.baseDomain" is not defined
at Config.get (/snapshot/server/build/server/Common/node_modules/config/lib/config.js:203:11)
at Object.<anonymous> (/snapshot/server/build/server/Common/sources/tenantManager.js)
at Module._compile (pkg/prelude/bootstrap.js:1930:22)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at Module.require (pkg/prelude/bootstrap.js:1855:31)
at require (internal/modules/cjs/helpers.js:101:18)
tenants.baseDomain
というパラメータは設定した覚えがないので、default.json
に変更があったと考えられますが、docker環境で設定ファイルをマウントしていると自動で書き換わってくれないようです。(deb/rpm インストールの場合は書き換わるようです。)
一応local.json
を見てみると、パラメータが追加されていました。(local.jsonが書き換わるならdefault.jsonも書き換わって欲しい...)
{
"services": {
"CoAuthoring": {
"sql": {
"type": "postgres",
"dbHost": "onlyoffice-postgresql",
"dbPort": "5432",
"dbName": "onlyoffice",
"dbUser": "onlyoffice",
"dbPass": "onlyoffice"
},
"redis": {
"host": "localhost"
},
"token": {
"enable": {
"request": {
"inbox": true,
"outbox": true
},
"browser": true
},
"inbox": {
"header": "Authorization",
"inBody": false
},
"outbox": {
"header": "Authorization",
"inBody": false
}
},
"secret": {
"inbox": {
"string": "LnOrEFUdkkHOqttQeEx4"
},
"outbox": {
"string": "LnOrEFUdkkHOqttQeEx4"
},
"session": {
"string": "LnOrEFUdkkHOqttQeEx4"
}
}
}
},
"rabbitmq": {
"url": "amqp://guest:guest@onlyoffice-rabbitmq"
},
"queue": {
"type": "rabbitmq"
},
"storage": {
"fs": {
"secretString": "tL8oZBLN0LdQpvwbdgGj"
}
}
}
以下の部分がONLYOFFICE 7.1では無かった設定項目です。
"storage": {
"fs": {
"secretString": "tL8oZBLN0LdQpvwbdgGj"
}
}
JWTのsecretも自動で生成されるようになっていますね。
"secret": {
"inbox": {
"string": "LnOrEFUdkkHOqttQeEx4"
},
"outbox": {
"string": "LnOrEFUdkkHOqttQeEx4"
},
"session": {
"string": "LnOrEFUdkkHOqttQeEx4"
}
}
パラメータが増えているようなので、変に格闘するのはやめて新しくdocker volumeを作ることにしました。
volumes:
- onlyoffice_config_7.2:/etc/onlyoffice/documentserver
volumes:
onlyoffice_config_7.2:
まとめ
ONLYOFFICE 7.1 → ONLYOFFICE 7.2 でパラメータが増えているようで、既存の設定ファイルは利用できませんでした。
ホストに設定ファイルを配置してバインドしている方もいると思いますが、一度docker volumeを作成して丸々持ってくることをお勧めします。