Hi openBIS community,
I’m experiencing issues with file uploads in my openBIS instance and would appreciate any guidance.
Setup:
-
openBIS version: 20.10.12
-
Deployment: Docker (using the official
openbis/openbis-app:20.10.12image) -
Configuration: Using the standard
docker-compose.ymland.envfiles provided by openBIS -
Host OS: Ubuntu Server (latest version)
-
Network: Container exposed on ports 8080 and 8081
Problem: When attempting to upload files through the web interface, the upload fails without a clear error message (Error message: “Upload failed”). There are no error logs in the openBIS application server or datastore server logs.
Browser Console Error: The browser shows a failed HTTPS request to the datastore server:
Request URL: https://<server-ip>/datastore_server/session_workspace_file_upload?filename=...
Status: Failed to load response data
Additionally, there’s a 404 error:
http://<server-ip>:8080/openbis/resources/api/v3/dss/dto/service/id/CustomDssServiceCode.js
Status Code: 404 Not Found
Troubleshooting Already Done:
-
Fixed FQDN configuration: Changed
OPENBIS_FQDNinopenbis-app.envfromlocal.openbis.chto the actual server IP address. -
Verified service.properties entries:
-
host-address = http://<server-ip>(in DSS config) -
server-url = http://openbis-app:8080(internal communication between AS and DSS) -
download-url = http://<server-ip>(originally was https://)
-
-
Port accessibility: Port 8081 is accessible from external clients:
curl http://<server-ip>:8081/datastore_server/
# Returns: Error: Request URI '/datastore_server' expected to start with '/datastore_server/'
- Internal AS↔DSS communication: Both curl tests work inside the container:
curl http://openbis-app:8080/openbis/ # Works
curl http://localhost:8080/openbis/ # Works
- Port binding verification: Port 8080 is listening on all interfaces:
tcp6 0 0 :::8080 :::* LISTEN
- Modified startup script: Changed the
start-openbis.shscript to usehttp://instead ofhttps://fordownload-url, but the browser still attempts HTTPS connections.
Current Configuration Files:
docker-compose.yml:
version: "3.7"
services:
db:
container_name: openbis-db
image: postgres:15
environment:
- POSTGRES_PASSWORD=
- PGDATA=/var/lib/postgresql/data
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- openbis-db-data:/var/lib/postgresql/data
networks:
- openbis-network
app:
container_name: openbis-app
image: openbis/openbis-app:20.10.12
hostname: openbis-app
depends_on:
- db
env_file:
- openbis-app.env
volumes:
- openbis-app-data:/data
- openbis-app-etc:/etc/openbis
- openbis-app-logs:/var/log/openbis
ports:
- 8081:8081
- 8080:8080
networks:
- openbis-network
volumes:
openbis-db-data:
openbis-app-data:
openbis-app-etc:
openbis-app-logs:
networks:
openbis-network:
```
openbis-app.env:
```
OPENBIS_ADMIN_PASS=<password>
OPENBIS_DB_ADMIN_PASS=<password>
OPENBIS_DB_ADMIN_USER=postgres
OPENBIS_DB_APP_PASS=<password>
OPENBIS_DB_APP_USER=openbis
OPENBIS_DB_HOST=openbis-db
OPENBIS_FQDN=<server-ip>
Questions:
-
Why is the browser attempting HTTPS connections when
download-urlis configured to use HTTP? -
Is there additional configuration needed in the web application itself to force HTTP for datastore uploads?
-
Is the 404 error for
CustomDssServiceCode.jsrelated to the upload failure, or is it a separate issue? -
Should I be using a reverse proxy (nginx/traefik) with SSL termination for production deployments, or is there a way to make HTTP-only uploads work properly?
Any help would be greatly appreciated!