Thank for the response.
It's definitely using the correct picapport.properties:
find: 'data/picapport.ks': No such file or directory
PicApport headless set default option -Dmemory.useUnsafe=false
Logging to file: /opt/picapport/data/logfiles/picapport.000
Copyright (c) 1997-2017 Contecon Software GmbH. All rights reserved.
2017-08-08 05:27:37
Tracelevel: ERROR
VER @ 05:27:37.855 PicApport Version 6.3 from 25.04.2017 loaded.
VER @ 05:27:37.856 de.contecon.picapport.PicApport.Version=V6.3.6 25.04.2017
VER @ 05:27:37.856 java.runtime.version: 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11
MSG @ 05:27:37.856 PicApport home=/opt/picapport/data
MSG @ 05:27:37.856 PicApport logging to /opt/picapport/data/logfiles
MSG @ 05:27:37.856 Loading config File: /opt/picapport/data/picapport.properties
MSG @ 05:27:38.363 Init: picApportHome=/opt/picapport/data
MSG @ 05:27:38.376 Init: server.port=8888
MSG @ 05:27:38.376 Init: server.ssl=false
MSG @ 05:27:38.376 Init: foto.jpg.usecache=2
MSG @ 05:27:38.376 Init: foto.jpg.cache.path=/opt/picapport/data/cache
MSG @ 05:27:38.376 Init: plugin.shadow.path=/opt/picapport/data/shadow
MSG @ 05:27:38.376 Init: gui.enabled=false
MSG @ 05:27:38.376 Init: gui.hideintray=true
MSG @ 05:27:38.377 Init:
robot.root.0.id=id0
MSG @ 05:27:38.377 Init: robot.root.0.path=/opt/picapport/photos
MSG @ 05:27:38.377 Init: robot.root.0.isuploadroot=true
MSG @ 05:27:38.377 Init: server.demomode=false
I also confirmed that the directory exists and is writable. It's actually being used for the JPEG versions of PNG, GIF and BMP files. I suspect this means there's something uniquely broken about the dcraw plugin.