Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upload of MSI file in Package builder fails with "413 Request Entity Too Large" #118

Open
int-red opened this issue Jul 19, 2024 · 1 comment

Comments

@int-red
Copy link

int-red commented Jul 19, 2024

It's hard to solve a problem when important details are missing, that why we added this template, to help you and us.

General informations

Docker host's operating system : Alpine Linux 3.20.1
Mysql Server version : 8.0

Docker informations

Docker compose version : v2.27.0
Docker version : 26.1.3

Problem's description

Describe your problem here

I deployed a docker stack with your /2.12.2/docker-compose.yml
using the instructions from https://wiki.ocsinventory-ng.org/13.Docker-documentation/Using-the-docker-image/
chapter "OCS Inventory image with Mariadb and Proxy (using docker-compose)"

git clone https://github.com/OCSInventory-NG/OCSInventory-Docker-Image
cd 2.12.2/
docker compose up -d

the only modification I made to docker-compose.yml was to enable HTTPS:

diff --git a/2.12.2/docker-compose.yml b/2.12.2/docker-compose.yml
index cb52b40..99508fb 100644
--- a/2.12.2/docker-compose.yml
+++ b/2.12.2/docker-compose.yml
@@ -58,9 +58,9 @@ services:
       - ./nginx/auth:/etc/nginx/auth
     environment:
       # 80 or 443
-      LISTEN_PORT: 80
+      LISTEN_PORT: 443
       # empty or ssl
-      PORT_TYPE: ""
+      PORT_TYPE: "ssl"
       SSL_CERT: ocs-dummy.crt
       SSL_KEY: ocs-dummy.key
       # OCS Api user restriction (default ocsapi/ocapi)

The docker stack is running well.
Only the upload of files is not working.

I tried to build a deployment package from an MSI using /ocsreports/index.php?function=tele_build
but when I click on the "Validate" button I always get the error

413 Request Entity Too Large
nginx/1.27.0

although the MSI file I tried to deploy is only 1.87MB in size.

@int-red
Copy link
Author

int-red commented Jul 19, 2024

I found out that Docker Image 2.12.2 has two issues:

  1. Docker Image 2.12.2 uses PHP 8.1.2 but in /conf/ocsinventory-reports.conf PHP tuning is only set for PHP5 + PHP7. So I added for PHP8:
    # Duplicate for php8 compatibility
    <IfModule mod_php.c>
        AddType application/x-httpd-php .php
        php_flag file_uploads           on
        # Some PHP tuning for deployment feature up to 8 MB
        # post_max_size must be greater than upload_max_filesize
        # because of HTTP headers
        php_value post_max_size         1025m
        php_value upload_max_filesize   1024m
        # You may have to uncomment following on errors
        php_value max_execution_time -1
        php_value max_input_time -1

        # Uncomment following if you need to specify a mysql socket
        #php_value mysql.default_socket "path/to/mysql/unix/socket"

        #!! Mandatory !! : set magic_quotes_gpc to off (to make ocsreports works correctly)
        php_flag magic_quotes_gpc      off
    </IfModule>

  1. Nginx settings for timeouts and client_max_body_size are only applied to URL /download. But for upload of installers this is also needed for URL /ocsreports

I modified /nginx/conf/ocsinventory.conf.template accordingly:

diff --git a/2.12.2/nginx/conf/ocsinventory.conf.template b/2.12.2/nginx/conf/ocsinventory.conf.template
index a31d5c0..bd08af2 100644
--- a/2.12.2/nginx/conf/ocsinventory.conf.template
+++ b/2.12.2/nginx/conf/ocsinventory.conf.template
@@ -32,6 +32,10 @@ server {
         proxy_set_header        X-Real-IP         $remote_addr;
         proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for;
         proxy_set_header        X-Frame-Options   SAMEORIGIN;
+        proxy_read_timeout      ${READ_TIMEOUT};
+        proxy_connect_timeout   ${CONNECT_TIMEOUT};
+        proxy_send_timeout      ${SEND_TIMEOUT};
+        client_max_body_size    ${MAX_BODY_SIZE};
         proxy_pass              http://ocsapplication;
     }

With these modification the package building for the MSI file I tried to deploy first, and which is only 1.87MB in size, works.

But for larger installers I still got issues.
I tried to build a package with about 400MB in size. The upload for this file starts but then the process does not complete and I get an empty web page with no error message.
In /download/ a subdirectory for this package is created but the directory is empty.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant