---
title: "Deploy EasyImg"
description: "Simple self-hostable Nuxt.js personal image hosting system."
category: "Storage"
url: https://railway.com/deploy/easyimg
---

# Deploy EasyImg

Simple self-hostable Nuxt.js personal image hosting system.

**[Deploy EasyImg on Railway](https://railway.com/template/easyimg)**

- **Creator:** Muhammad Bilal
- **Category:** Storage

## Template content

### easyimg

- **Image:** ghcr.io/chaos-zhu/easyimg:latest
- **Public domain:** Yes

## Documentation

# Deploy and Host EasyImg on Railway

EasyImg is an open-source, self-hostable personal image hosting system built with Nuxt.js. It provides a simple web interface for uploading, organizing, previewing, and sharing images. EasyImg supports multiple upload methods, URL imports, API keys, public and private uploads, image moderation, notifications, statistics, rate limiting, and persistent local storage.

## About Hosting EasyImg

Hosting EasyImg on Railway requires a single application service running the `ghcr.io/chaos-zhu/easyimg:latest` Docker image. The application listens on port `3000` and uses local filesystem storage for both its database and uploaded images. Railway Volumes are therefore required to preserve data between deployments. Mount one volume at `/app/db` for database files and another at `/app/uploads` for uploaded images. Railway provides public HTTP/HTTPS networking through a generated domain, while no external PostgreSQL or Redis service is required. The application runs with `NODE_ENV=production`, and Railway handles the container runtime, networking, TLS, deployments, and persistent storage.

## Common Use Cases

* **Personal Image Hosting:** Upload, organize, preview, and manage a personal collection of images through a self-hosted web interface.
* **Image Sharing and API Hosting:** Provide public or private image uploads and create API keys for applications and third-party tools.
* **Content Management:** Manage image libraries with batch operations, a recycle bin, storage statistics, upload restrictions, rate limiting, and optional NSFW detection.

## Dependencies for EasyImg Hosting

* **EasyImg Docker Image** — `ghcr.io/chaos-zhu/easyimg:latest`, used to run the application.
* **Railway Volumes** — Required to persist the EasyImg database and uploaded images.
* **Railway HTTP Networking** — EasyImg exposes its web application on port `3000`.
* **Persistent Filesystem** — `/app/db` stores database files and `/app/uploads` stores uploaded images.

### Implementation Details 

Deploy the published EasyImg image:

```docker
ghcr.io/chaos-zhu/easyimg:latest
```

Configure the production environment:

```env
NODE_ENV=production
```

### Public Networking

| Setting          | Value           |
| ---------------- | --------------- |
| Proxy Type       | HTTP Proxy      |
| Target Port      | `3000`          |
| Application Port | `3000`          |
| HTTPS            | Railway-managed |

After deployment, open **Settings → Networking → Generate Domain** to create the public EasyImg URL.

### Persistent Storage

Create two Railway Volumes:

```text
/app/db
```

Stores EasyImg's database files.

```text
/app/uploads
```

Stores uploaded images.

Both paths must be persistent because EasyImg stores application data and uploaded files locally.

### Database

EasyImg uses its local database files under `/app/db`. No PostgreSQL, MySQL, or Redis service is required for this template.

For backups, preserve:

```text
/app/db
/app/uploads
```

### Default Account

After the first launch, the default account is:

```text
Username: easyimg
Password: easyimg
```

Change the default username and password immediately after the first login.

### Password Reset

To reset the administrator account, delete:

```text
/app/db/admin.db
```

and restart the service. EasyImg will recreate the default account.

### Supported Images

EasyImg supports JPEG, JPG, PNG, GIF, WebP, AVIF, SVG, BMP, ICO, APNG, and TIFF.

### Optional Features

EasyImg supports API keys, public/private uploads, IP blacklisting, NSFW detection, Webhook notifications, Telegram, Email, ServerChan, upload restrictions, WebP compression, rate limiting, dark mode, and responsive layouts.

Optional NSFW detection can use external services or the self-hosted `nsfw_detector` project.

## Why Deploy EasyImg 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 EasyImg 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

- [Garage S3 Storage](https://railway.com/deploy/garage-s3-storage) — Ultra-light S3 server: fast, open-source, plug-and-play.
- [Redis](https://railway.com/deploy/redis-1) — Self Host Latest Redis with Railway
- [Postgres Backup to Cloudflare R2 (S3-Compatible)](https://railway.com/deploy/postgres-to-r2-backup) — Automated PostgreSQL backups to S3-compatible storage with encryption

Open this page in a browser: https://railway.com/deploy/easyimg
