Deploy EasyImg
Simple self-hostable Nuxt.js personal image hosting system.
easyimg
Just deployed
/app/db
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/dbstores database files and/app/uploadsstores uploaded images.
Implementation Details
Deploy the published EasyImg image:
ghcr.io/chaos-zhu/easyimg:latest
Configure the production environment:
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:
/app/db
Stores EasyImg's database files.
/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:
/app/db
/app/uploads
Default Account
After the first launch, the default account is:
Username: easyimg
Password: easyimg
Change the default username and password immediately after the first login.
Password Reset
To reset the administrator account, delete:
/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.
Template Content