TrayPage Docs

Self-hosting

An overview of running TrayPage yourself, and how to choose between Cloudflare, Docker / VPS, and AWS.

Besides using tray.page (the hosted service), you can run TrayPage on your own Cloudflare account or your own server. This page helps you choose a setup; the steps live on one page per setup.

Choosing a setup

SetupGood forOperational effortRough cost
tray.page (hosted)Getting started immediately, with operations handled for youNoneDepends on the plan
CloudflareRunning on your own account without managing serversLowFrom about $5-10 per month
Docker / VPSKeeping costs low, or running in a closed networkMedium (you handle updates and backups)From a few dollars per month
AWS (minimal: one EC2 instance)Trying it in your own AWS account, or small useMediumAbout $25 per month (Tokyo, defaults; varies by region and instance type)
AWS (standard: Fargate + RDS)Production in your own AWS accountMedium to highAbout $200 per month for the default setup (about $125 for a small one)

Costs are rough estimates. Actual amounts depend on your provider's pricing and your usage.

If you are unsure:

  • You want someone else to operate it: tray.page
  • You want it on your own account but do not want to manage servers: Cloudflare
  • You want a single machine with no dependency on external services, such as inside an internal network: Docker / VPS
  • Your data must live in your AWS account: AWS (minimal to try it, standard for production)

What is the same in every setup

  • The application (web UI, REST API, MCP, shared pages) is the same build. Features do not change between setups.
  • Data is stored in two places: a Postgres database, and a store for page content (R2 or S3-compatible storage).
  • Page content can contain arbitrary HTML, so it must be served from a viewer host that is separate from the app host. Prepare two domain names. See Security notes for the reason.
  • Sign-in uses an emailed link, so you need a way to send email (SMTP or Cloudflare Email Service).
  • The self-hosted edition (TRAYPAGE_EDITION=self_hosted) has no usage limits or trials, and operator-only features are disabled.