Hosting — Thumbor 7.0.0a2 documentation

# Hosting

Let’s see how would you run thumbor in different environments.

## Development Environment

For running it locally you just need to get a proper Configuration file. You can put it at `/etc/thumbor.conf`, `~/thumbor.conf` (home folder) or specify it when starting thumbor.

To verify if you have thumbor, just type:

    thumbor --version

It should return the version you’ve installed. Starting thumbor is as easy as:

    thumbor

For more options check the Configuration page.

## Production Environment

Other than having the proper Configuration file for your environment, we have some recommendations on how to run thumbor in production.

Our first recommendation is to run more than one instance of it. You can specify different ports using thumbor easily. This will make sure that your service stays responsive even if one of the processes die.

We also recommend having some form of load balance that distributes the load between the aforementioned processes. We are using NGINX to do it, but there are more sophisticated load balance softwares around. thumbor supports health checking under the `/healthcheck` URI if you need to use it.

Other than that, you run it using the thumbor console app specifying the arguments, like this:

    thumbor --port=8888 --conf="~/mythumbor.conf"

We recommend using an application such as Supervisor (http://supervisord.org/index.html) to monitor your services. An example of a `supervisord.conf` file would be:

    [supervisord]
    logfile = /home/thumbor/logs/supervisord.log
    logfile_maxbytes = 50MB
    logfile_backups=10
    loglevel = info
    pidfile = /home/thumbor/supervisord.pid
    user = thumbor

    [program:thumbor]
    command=thumbor --port=800%(process_num)s --conf=/etc/thumbor800%(process_num)s.conf
    process_name=thumbor800%(process_num)s
    numprocs=4
    user=thumbor
    directory=/home/thumbor/
    autostart=true
    autorestart=true
    startretries=3
    stopsignal=TERM
    stdout_logfile=/home/thumbor/logs/thumbor800%(process_num)s.stdout.log
    stdout_logfile_maxbytes=1MB
    stdout_logfile_backups=10
    stderr_logfile=/home/thumbor/logs/thumbor800%(process_num)s.stderr.log
    stderr_logfile_maxbytes=1MB
    stderr_logfile_backups=10

This configuration file makes sure that supervisor starts 4 processes of thumbor on the 8000, 8001, 8002 and 8003 ports, each with a different configuration file (thumbor8000.conf, thumbor8001.conf, thumbor8002.conf, thumbor8003.conf all under /etc folder). The other settings are optional, but if you need help with supervisor’s settings it has extensive documentation online (http://supervisord.org/introduction.html).

## Thumbor in the Cloud

### Running with Docker

Running thumbor with docker is as easy as:

    $ docker run -p 8888:80 minimalcompact/thumbor
    ...
    $ curl http://localhost:8888/healthcheck
    WORKING%

For more details check the MinimalCompact thumbor docker image.

## Thumbor on OpenShift

Warning

This may be outdated since thumbor moved to python 3.

There’s a project showing how to deploy a working version on OpenShift https://github.com/rafaelcaricio/thumbor-openshift-example

## Thumbor behind CloudFront

Warning

This may be outdated since thumbor moved to python 3.

The awesome people at yipit are using thumbor behind the CloudFront CDN at Amazon.

The detailed information on how to do it can be seen at this blog post.