Struggling to find correct instructions to increase file upload limit

As the title says. I’m unable to find correct instructions to increase file upload limit of my Discourse installation. This is what I know…

My Discourse installation is hosted on a droplet at Digital Ocean, utilizing the one-click installation. I suspect that this is the reason I don’t see some of what is mentioned in the instructions regarding this setting change.

I’ve also seen it mentioned that increasing the upload limit that it is simply a “parameter” now… Since I’m still new to Discourse, “parameter” means nothing to me. I gather that I’m supposed to add a line to the web.template.yml file, however, I cannot locate this file.

I’m sure many of you are smacking your head as you read my question, but as much searching as I’ve done in here, I have yet to find some of this info.

Thanks in advance for any help that you’re willing to offer!

1 Like

All parameters for file uploads can be found at _[yourdomain]/admin/site_settings/category/files

I think what you’re looking for is the “download remote image threshold” (search it under Settings). If your disk space is almost used, this setting stops further uploads. 10% disk space should always be available, otherwise it can also lead to the failure of the page.


I don’t think so. That setting only affects the downloading of remote (linked) images. It has nothing to do with uploads. To increase the upload limit, there are two settings: max image size kb and max attachment size kb. Note, you may also need to deal with nginx/apache depending on how you’re set up.


You’re correct. I’m looking to increase the upload limit. I’ve changed those 2 settings as you mentioned, but I suspect I need to do the nginx/apache side… however, these are the instructions I can’t find.
I’m beginning to wonder if it was foolish of me to do the one-click install with Digital Ocean :confused:


Hmm…you’ve surpassed my Discourse knowledge unfortunately - never needed larger than 10 MB uploads.

This has nothing to do with the one-click install. You’d need to deal with NGINX/Apache regardless.

No worries @jomaxro! You’ve helped me make sure my question is clear. I appreciate it!

1 Like

I performed this change earlier today. All you have to do is change max image size kb in the admin panel and change the mb amount in containers/app.yml, as detailed in this reply.


unfortunately, this didn’t work for me. I added that line in my app.yml, did a rebuild and I still get an error when I did a test upload. Here is my file…

## After making changes to this file, you MUST rebuild for any changes
## to take effect in your live Discourse instance:
## /var/discourse/launcher rebuild app
## Make sure to obey YAML syntax! You can use this site to help check:

## this is the all-in-one, standalone Discourse Docker container template

# You may add rate limiting by uncommenting the web.ratelimited template.
# Out of the box it allows 12 reqs a second per ip, and 100 per minute per ip
# This is configurable by amending the params in this file

  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

 ## Comment out the following lines if you wish to add Lets Encrypt for your Discourse install
 # - "templates/web.ssl.template.yml"
 # - "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
  - "80:80"   # fwd host port 80   to container port 80 (http)
  - "443:443" # fwd host port 443   to container port 443 (https) (ssl ready)
# If you want Discourse to share a port with another webserver like Apache or nginx,
# see for instructions.

# any extra arguments for Docker?
# docker_args:

  db_default_text_search_config: "pg_catalog.english"
  upload_size: 30m
  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## On 1GB installs set to 128MB (to leave room for other processes)
  ## on a 4GB instance you may raise to 1GB
  #db_shared_buffers: "256MB"
  ## Set higher on large instances it defaults to 10MB, for a 3GB install 40MB is a good default
  ## this improves sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"
  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

  LANG: en_US.UTF-8

  ## TODO: How many concurrent web requests are supported?
  ## With 2GB we recommend 3-4 workers, with 1GB only 2
  ## If you have lots of memory, use one or two workers per logical CPU core

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example ','

  ## TODO: The domain name this Discourse instance will respond to
  ## TODO: Uncomment if you want the container to be started with the same
  ##       hostname (-h option) as specified above (default "$hostname-$config")
  ## NOTE: 'true' is the only valid value here, any other will be ignored

  ## TODO: The mailserver this Discourse instance will use
  DISCOURSE_SMTP_ADDRESS:         # (mandatory)
  DISCOURSE_SMTP_PORT: 587                        # (optional)
  DISCOURSE_SMTP_USER_NAME: SMTP_Injection      # (optional)
  DISCOURSE_SMTP_PASSWORD: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx              # (optional, WARNING the char '#' in pw can cause problems!)
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  ## The Lets Encrypt email will allow you to register a FREE SSL certificate if you added the Lets Encrypt template, comment it out if you have set this up

  ## The CDN address for this Discourse instance (configured to pull)

## These containers are stateless, all data is stored in /shared
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## The docker manager plugin allows you to one-click upgrade Discourse
    - exec:
        cd: $home/plugins
          - mkdir -p plugins
          - git clone
          - git clone
          - git clone
          - git clone
          - git clone
          - git clone
          - git clone
          - git clone

## Remember, this is YAML syntax - you can only have one block with a name
  - exec: echo "Beginning of custom commands"

  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  #- exec: rails r "SiteSetting.notification_email=''"
  ## After getting the first signup email, re-comment the line. It only needs to run once.

  ## If you want to configure password login for root, uncomment and change:
  ## Use only one of the following lines:
  #- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root
  #- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'RAW_PASSWORD')" root

  - exec: echo "End of custom commands"

:neutral_face: that looks right to me. Well, please do post the error and maybe even a link to the photo you tried. Someone might be able glean insight from it.

The test file is an mp3. Any file above 10mb gets this error. Most MP3’s are below 10mb, so it isn’t a huge problem, but some members post larger files. This particular one is 17mb, so it is a good test file.

I’ve seen nginx settings also mentioned, but I can’t find that nginx is even on my server. Unless it’s hidden??