Railway

Deploy exif-photo-blog

EXIF Photo Blog with Postgres and persistent S3 photo storage.

Deploy exif-photo-blog

/var/lib/postgresql/data

Just deployed

/data

Deploy and Host EXIF Photo Blog on Railway

Deploy sambecker/exif-photo-blog on Railway with Postgres and persistent MinIO photo storage.

About Hosting EXIF Photo Blog

EXIF Photo Blog is a Next.js photography site with built-in admin authentication, image uploads, EXIF extraction, albums and tags, infinite scrolling, search, feeds, and optional AI-generated descriptions. This template supplies every stateful dependency the application needs on Railway.

Why Deploy EXIF Photo Blog on Railway

This template turns the upstream Vercel-oriented deployment into a one-click Railway stack. Railway manages the web service, private networking, persistent database volumes, generated credentials, and HTTPS domains in one project. The deploy form asks only for admin credentials and the site's public identity.

Common Use Cases

  • Personal photography journals and travel logs
  • Public photo portfolios with camera and lens metadata
  • Self-hosted galleries with an authenticated upload workflow
  • Small team or family photo collections
  • Testing and extending the open-source EXIF Photo Blog project

Dependencies for EXIF Photo Blog

The application requires PostgreSQL for metadata and publicly readable object storage for uploaded photos. Redis-based rate limiting is optional upstream and is intentionally omitted from this streamlined template.

Deployment Dependencies

  • Railway Postgres and a persistent database volume
  • MinIO and a persistent Railway volume
  • The upstream sambecker/exif-photo-blog repository

Included services

  • Web — the Next.js photo blog, sourced directly from sambecker/exif-photo-blog
  • Postgres — persistent photo metadata and application data
  • MinIO — persistent S3-compatible photo storage with a Railway volume; its startup creates the photos bucket and applies public-download access

Required configuration

The deploy form asks for only:

  • ADMIN_EMAIL — email used to sign in at /admin
  • ADMIN_PASSWORD — password used to sign in at /admin

All database passwords, storage credentials, AUTH_SECRET, ports, and service references are generated or wired automatically. NEXT_PUBLIC_DOMAIN uses Web's generated Railway hostname by default.

After deployment finishes, open the generated Web domain, visit /admin, and upload your first photo.

Storage choice

Railway Buckets are S3-compatible but private-only. EXIF Photo Blog stores permanent public asset URLs and currently supports Vercel Blob, AWS S3, Cloudflare R2, or MinIO. This deployment uses MinIO on a persistent Railway volume for publicly accessible photo storage.

MinIO startup grants anonymous download access only; writes, deletes, copies, and listings remain credentialed.

Optional variables

The deploy form also offers NEXT_PUBLIC_NAV_TITLE, NEXT_PUBLIC_NAV_CAPTION, NEXT_PUBLIC_META_TITLE, and NEXT_PUBLIC_META_DESCRIPTION, but all four may be left blank. The upstream project supports many additional variables for titles, descriptions, layout, themes, feeds, AI captions, location services, and performance. Add them to the Web service after deployment as described in the upstream README.

For AI descriptions outside Vercel, set either OPENAI_SECRET_KEY, or both AI_GATEWAY_MODEL and AI_GATEWAY_API_KEY, on the Web service.

Notes

  • The MinIO deployment is single-node storage backed by a persistent Railway volume. It is appropriate for personal photo blogs and small deployments, but it is not a multi-node/high-availability object store.
  • The Web service follows the upstream repository's main branch directly.
  • Attach a custom domain to Web and set NEXT_PUBLIC_DOMAIN to that hostname if you replace the generated Railway domain.

Template Content

More templates in this category

View Template
Pixelfed
Explore + Share beautiful photos and videos on the Fediverse

Evan Boehs
28
View Template
NodeBB
Node.js based forum software built for the modern web

Six
60
View Template
WordPress + MySQL
Zero Config | One click | WordPress | Docker | MySQL

YAV.AI
1.4K