• Docs
  • Changelog
Sign in
Get started
    • Home
    • Your first deploy
    • Free instances
    • Platform features by plan
    • Use with coding agents
    • FAQ
    • Templates
      • Migrate from…
        • Heroku
        • Railway
    • Compute plans
    • SandboxesBeta
      • Service types
        • Which to use?
        • Static sites
        • Web services
        • Private services
        • Background workers
        • Cron jobs
        • Workflows
        • Multi-service architectures
      • Data storage
        • Render Postgres
        • Render Key Value (Redis®-compatible)
        • Persistent disks
    • How deploys work
    • Supported languages
    • Git providers (GitHub, etc.)
    • Build pipeline
    • Deploy hooks
    • Monorepo support
    • Troubleshooting deploys
      • Previewing changes
        • Single-service previews
        • Preview environments (multi-service)
      • Docker deploys
        • Overview
        • Deploy a registered image
        • Using secrets
      • Runtime
        • Native runtimes
        • Environment variables & secrets
        • Default environment variables
    • Intro to sandboxes
    • Limits
      • How to…
        • Create & configure sandboxes
        • Execute commands
        • Manage files
        • Manage snapshots
      • Use with…
        • Claude Managed Agents
        • Cursor Cloud Agents
        • OpenAI Agents API
      • SDK/CLI reference
        • TypeScript SDK
        • Python SDK
        • CLI commands
    • Intro to workflows
    • Tutorial
    • Limits & pricing
      • How to…
        • Define tasks
        • Define flowsNew
        • Trigger runs
        • Develop locally
      • SDK reference
        • TypeScript SDK
        • Python SDK
      • Example workflows
        • TypeScript examples
        • Python examples
    • Overview
    • Create & connect
    • Database credentials
    • Extensions
    • Version upgrades
    • Logical replication
    • Legacy instance types
      • Database recovery
        • Recovery & backups
        • High availability
      • Database performance
        • Read replicas
        • Connection pooling
        • Admin apps
        • Repacking tables
        • Troubleshooting performance
    • Regions
    • Inbound IP rules
    • Edge caching
    • WebSockets
    • TLS certificates
      • Custom domains
        • Overview
        • Cloudflare
        • Namecheap
        • Other DNS providers
      • Internal traffic
        • Private network
        • Private links
      • Outbound traffic
        • Default IP ranges
        • Dedicated IP addresses
        • Outbound bandwidth
        • Handling network changes
      • Static site config
        • Custom response headers
        • Redirects & rewrites
    • The Render Dashboard
    • SSH / Shell access
    • Projects & environments
      • Service actions
        • Scaling
        • Rollbacks
        • Maintenance mode
        • One-off jobs
      • Infrastructure as code
        • Blueprints overview
        • render.yaml reference
        • Terraform provider
    • In-dashboard metrics
    • Health checks
    • Uptime best practices
      • Logging
        • In-dashboard logs
        • Log streams (syslog/HTTPS)
      • OpenTelemetry (OTel) metrics
        • Provider setup
        • Metrics reference
      • Notifications
        • Webhooks
        • Email / Slack
    • MCP Server
      • Render CLI
        • Overview
        • Command reference
      • REST API
        • Overview
        • API reference
      • Third-party connections
        • OIDC support
        • Datadog
    • Workspaces, members, & roles
    • Login settings
    • Audit logs
      • Organizations
        • Overview
        • SAML SSO
    • DDoS protection
    • Platform maintenance
      • Compliance
        • Overview
        • HIPAA (US health data)
        • HIPAA best practices
        • Shared responsibility model
        • Pentest policy
    • Heroku vs Render
    • Vercel vs Render

Deploy Forem

Forem is open source software for building communities. It is the platform that powers dev.to, and allows members to share posts, create classified listings, send direct messages, listen to podcasts, and much more.

Forem screenshot showing posts and listing

You can start building your community and deploy Forem to Render with the following components:

  • A Rails web service that runs the main app.
  • A Sidekiq worker that handles background jobs.
  • An Elasticsearch instance for in-app searching.
  • A Render Key Value instance to cache data.
  • A Render Postgres database as the primary database.

Deployment

Prerequisites

Forem requires SendGrid for sending transactional emails to setup the admin account through the browser. See the SendGrid docs for help creating an SMTP Relay API key.

One-Click Deploy

Use the button below to deploy Forem on Render.

Deploy to Render

Configure the environment

  1. Set APP_DOMAIN in the rails environment group.

    If you're using a custom domain, you'll need to configure your DNS. Otherwise, wait for the Forem web service to be created and copy its .onrender domain.

  2. Configure SendGrid for account email confirmation.

    Set SENDGRID_API_KEY to your SendGrid SMTP Relay API key in the rails environment group. Add the email you configured with SendGrid under DEFAULT_EMAIL in the rails environment group

Setup

Creating the admin user

You will need to configure your admin account after the initial Forem deploy.

Visit your newly created Forem and fill out the form to create the admin account. Render generates the "New Forem Secret" and sets it as the FOREM_OWNER_SECRET environment variable. You can find its value in the rails environment group.

Once you complete the form, confirm your email and sign in. Forem will ask you to complete setup on the configuration page. See the Basic Site Configuration Guide for more instructions on configuring Forem.

If you encounter problems confirming your email see Troubleshooting for tips.

Integrations

Forem integrates with many other services to provide more features. Visit the Forem docs to see the some of the services and the environment variables they require to function.

We recommend integrating Cloudinary to serve uploaded images with a CDN. Viewing uploaded images such as profile pictures, cover photos, and article photos requires Cloudinary or Imgproxy. See the Cloudinary docs to set up your account and get API credentials. Update the CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET, and CLOUDINARY_CLOUD_NAME environment variables in the rails environment group.

Forem can store uploaded images in AWS S3 or on a Render Disk. We use Render Disks in this example as an easy to setup and inexpensive solution. You can find more details on Render Disks in the docs. You can switch to using AWS S3 by configuring the AWS_ID, AWS_SECRET, AWS_BUCKET_NAME, and AWS_UPLOAD_REGION environment variables.

Invite Your Users

Once you're done with setup, you can invite users and start building your community!

Troubleshooting

If you have questions or need help, feel free to get in touch on Discord or support@render.com.

Confirming your account

If you're unable to confirm your account through the SendGrid email, you can manually edit your account through the Rails console.

  1. Enter the web shell for your Rails web server in the Render Dashboard.

  2. Open the Rails console:

  3. Find your user and set the confirmed_at field

Deploy Forem
  • Deployment
    • Prerequisites
    • One-Click Deploy
    • Configure the environment
  • Setup
    • Creating the admin user
    • Integrations
    • Invite Your Users
  • Troubleshooting
    • Confirming your account
All Systems Operational
© Render Inc. All rights reserved.