---
title: "Deploy Imagor"
description: "imagor 1.9: fast image resizing and conversion with signed URLs."
category: "Other"
url: https://railway.com/deploy/imagor-1
---

# Deploy Imagor

imagor 1.9: fast image resizing and conversion with signed URLs.

**[Deploy Imagor on Railway](https://railway.com/template/imagor-1)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/imagor-1/manifest.json

- **Creator:** Agaz Self-Host
- **Category:** Other

## Template content

### imagor https://github.com/cshum.png

- **Image:** shumc/imagor:1.9.6
- **Start command:** `sh -c 'mkdir -p /data/result; chown nobody:nogroup /data /data/result; exec setpriv --reuid=nobody --regid=nogroup --clear-groups /usr/local/bin/imagor'`
- **Health check:** /healthcheck
- **Public domain:** Yes

## Documentation

# Deploy and Host imagor on Railway

imagor is a fast image processing server written in Go on top of libvips. It resizes, crops, converts and filters images on the fly from a URL, using the same URL syntax as Thumbor. Apps put it in front of their image storage to serve responsive, WebP or AVIF images without preprocessing.

## About Hosting imagor

This template runs the official `shumc/imagor:1.9.6` image as one public service. Every request must be signed with `IMAGOR_SECRET`, so strangers cannot use your server to process arbitrary images, and unsigned or `unsafe` URLs are refused. Images are fetched over HTTP from any source by default; restrict `HTTP_LOADER_ALLOWED_SOURCES` to your own buckets if you like. Processed results are cached on a Railway volume for seven days and survive redeploys. libvips concurrency is capped at two threads to stay within Railway's container limits and keep memory use predictable. The server runs as the unprivileged `nobody` user.

## Common Use Cases

- On-the-fly thumbnails and responsive images for a web or mobile app
- Converting uploads to WebP or AVIF without a build step
- A Thumbor-compatible image server in front of S3 or any HTTP storage

## Dependencies for imagor Hosting

- `shumc/imagor:1.9.6` (official image)
- A Railway volume at `/data` for the result cache

### Deployment Dependencies

- [imagor on GitHub](https://github.com/cshum/imagor)
- [imagor 1.9.6 release](https://github.com/cshum/imagor/releases/tag/v1.9.6)
- [imagor URL signing](https://github.com/cshum/imagor#security)

### Implementation Details

| Service | Source | Networking | Storage |
| --- | --- | --- | --- |
| imagor | `shumc/imagor:1.9.6` | public HTTPS | volume at `/data` (result cache) |

| Variable | Default | Purpose |
| --- | --- | --- |
| `IMAGOR_SECRET` | generated | HMAC key for signed URLs |
| `HTTP_LOADER_ALLOWED_SOURCES` | `*` | Hosts images may be loaded from |
| `HTTP_LOADER_BASE_URL` | empty | Optional base URL, so paths can be relative |
| `FILE_RESULT_STORAGE_EXPIRATION` | `168h` | How long processed images are cached |
| `VIPS_CONCURRENCY` | `2` | libvips worker threads |

Signing a URL (the hash is base64url of HMAC-SHA1 over the path):

```bash
P='fit-in/300x200/filters:format(webp)/example.com/photo.jpg'
H=$(printf %s "$P" | openssl dgst -sha1 -hmac "$IMAGOR_SECRET" -binary | base64 | tr '+/' '-_')
echo "$IMAGOR_BASE_URL/$H/$P"
```

Client libraries for URL signing exist for most languages; any Thumbor URL builder works too.

This is a community-maintained deployment package and does not imply affiliation with or endorsement by the imagor project.

## Why Deploy imagor on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying imagor on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/imagor-1
