---
title: "Deploy Fider"
description: "Canny Alternative. Open platform to collect and prioritize feedback"
category: "Other"
url: https://railway.com/deploy/fider
---

# Deploy Fider

Canny Alternative. Open platform to collect and prioritize feedback

**[Deploy Fider on Railway](https://railway.com/template/fider)**

- **Creator:** A3A
- **Category:** Other
- **Total deploys:** 1

## Template content

### mailpit https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/mailpit.svg

- **Image:** axllent/mailpit:latest
- **Health check:** /livez
- **Public domain:** Yes

### fider https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/fider.svg

- **Image:** getfider/fider:stable
- **Health check:** /
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Buckets

- **fider-storage**

## Documentation

![Fider logo](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQumu32UfFV36u9sL9X0UDlzcXbbWA67Y6erVL5XiZM7Q&s)

# Deploy and Host Fider on Railway

Fider is an open-source customer feedback board: users post ideas, vote on the ones they want and discuss them in comments, while your team replies with a status that becomes a public roadmap. It is the self-hosted answer to Canny, UserVoice and Nolt — no per-tracked-user bill, and every vote, email address and comment stays in your own database.

Self-host Fider on Railway and four pieces arrive wired together. The `fider` service runs the official `getfider/fider:stable` image on port 3000 behind a managed TLS domain, applying database migrations on every boot. PostgreSQL holds posts, votes, comments and users; a managed object storage bucket keeps avatars, logos and attachments off the container filesystem so they survive redeploys. The fourth service is Mailpit: Fider has no passwords at all, so sign-in and the first administrator both depend on email working from minute one.

![Fider Railway architecture](https://res.cloudinary.com/rroe4rtk/image/upload/v1786897385/0d7adc7d-d5d9-47ea-b6d9-c47918186a89.png)

## Getting Started with Fider on Railway

Open the Fider URL once the deploy is green and you land on a signup form, not a login page, because no board exists yet. Enter your name, your email address and a name for the board and submit — Fider creates the board in a pending state and emails an activation link. Open the Mailpit URL from the same project and sign in with the `MP_UI_AUTH` credentials on the mailpit service's variables; the username is `admin`. The message titled "Your new Fider site" is waiting there, and its confirmation link activates the board and signs you in as its administrator. Under **Site Settings → General**, set the board title, welcome message and privacy mode — and note that new boards ship with "prevent indexing" on, so Fider sends `X-Robots-Tag: noindex` until you clear it, which matters for a searchable public board. Then post your first few ideas, vote on one, and give another a status such as **Planned** with a staff response — statuses populate the public roadmap. If the activation email arrived and a comment attachment uploads, all four services are healthy.

![Fider feedback board listing three customer feature requests](https://res.cloudinary.com/rroe4rtk/image/upload/v1786881189/fider-feedback-board.png)
![Fider discussion thread with an uploaded dashboard mockup](https://res.cloudinary.com/rroe4rtk/image/upload/v1786881191/fider-discussion-attachment.png)
![Fider post marked Planned with vote count and voters](https://res.cloudinary.com/rroe4rtk/image/upload/v1786881193/fider-planned-post.png)

## About Hosting Fider

Canny and UserVoice price by tracked user, so the month your board takes off is the month the invoice does too. Fider has no seat count. Self-hosting is also the only option when the feedback is sensitive: healthcare, finance and public-sector teams often cannot put customer names and unreleased plans into SaaS.

- **Voting boards with discussion** — posts, upvotes, comments, tags, duplicate merging and search.
- **Statuses that publish a roadmap** — mark a post Planned, Started, Completed or Declined with a staff response, and every voter is notified.
- **Passwordless sign-in** — a one-time email link, or Google, GitHub and Facebook OAuth.
- **Public or private boards**, a localised UI, and custom CSS.

Fider has no worker tier: email and webhooks run as goroutines inside the web process, so these four services are the whole production shape.

## Why Deploy Fider on Railway

Everything Fider needs is provisioned and connected before first boot:

- PostgreSQL, an object storage bucket and a mail service, wired to the app.
- A TLS domain and health checks out of the box.
- The database stays private, unreachable from the internet.
- `BASE_URL`, S3 credentials and SMTP settings filled in as service references.
- Scaling is a slider, and the Go binary idles cheaply.

## Common Use Cases

- **A public feature-request board for a SaaS product** — customers vote, and the roadmap answers "are you building this?" without a support reply.
- **An internal ideas board**, kept private so only signed-in staff can read and vote.
- **A community roadmap for an open-source project**, where vote counts pick the next release.
- **A beta feedback channel**, with attachments so testers paste screenshots in.

## Dependencies for Fider

- **Fider** — `getfider/fider:stable` on port 3000. Docker Hub has no `latest` tag; `stable` is the release channel.
- **PostgreSQL 12 or newer** — every post, vote, comment and setting. Fider runs `./fider migrate` at boot and creates the `pg_trgm` extension for search.
- **Object storage bucket** — S3-compatible storage selected with `BLOB_STORAGE=s3`, holding avatars, logos and attachments that would otherwise vanish on redeploy.
- **Mailpit** — `axllent/mailpit:latest`, an SMTP listener on 1025 and a protected web inbox on 8025, archived on a volume.

### Environment Variables Reference

| Variable | Purpose |
|---|---|
| `BASE_URL` | Public URL written into sign-in emails |
| `JWT_SECRET` | Signs sign-in tokens; changing it drops sessions |
| `EMAIL` | Delivery driver — `smtp`, `mailgun` or `awsses` |
| `EMAIL_SMTP_HOST` / `_PORT` | SMTP endpoint; required to start |
| `BLOB_STORAGE` | `s3` for the bucket, `fs` for disk, `sql` for the database |
| `SIGNUP_DISABLED` | Blocks `/signup`; leave false until the first admin exists |
| `LOG_SQL` | Fider defaults it to true; keep it false |
| `MP_UI_AUTH` | `user:password` protecting the Mailpit inbox |

### Deployment Dependencies

- Project: [getfider/fider](https://github.com/getfider/fider) — Go and React, AGPL-3.0
- Images: [`getfider/fider`](https://hub.docker.com/r/getfider/fider), [`axllent/mailpit`](https://hub.docker.com/r/axllent/mailpit)
- Docs: [docs.fider.io](https://docs.fider.io)

## Hardware Requirements for Self-Hosting Fider

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 0.5 vCPU | 1–2 vCPU |
| RAM | 256 MB | 512 MB – 1 GB |
| Storage | None on the app | 1 GB+ Postgres; bucket grows with uploads |
| Runtime | Linux container | Linux container |

Fider is a single compiled Go binary serving a pre-built React front end, so a board with a few thousand voters sits in half a gigabyte.

## Self-Hosting Fider with Docker

Fider will not start unless `EMAIL_SMTP_HOST` and `EMAIL_SMTP_PORT` are set. A minimal run against an existing Postgres:

```
docker run -p 3000:3000 \
  -e BASE_URL=http://localhost:3000 -e EMAIL_NOREPLY=noreply@example.com \
  -e DATABASE_URL=postgres://fider:pw@db:5432/fider?sslmode=disable \
  -e JWT_SECRET=$(openssl rand -hex 32) \
  -e EMAIL_SMTP_HOST=mailpit -e EMAIL_SMTP_PORT=1025 getfider/fider:stable
```

The same stack as Compose:

```
services:
  db:
    image: postgres:17
    environment: { POSTGRES_USER: fider, POSTGRES_PASSWORD: pw }
  mailpit:
    image: axllent/mailpit:latest
    ports: ["8025:8025"]
  app:
    image: getfider/fider:stable
    ports: ["3000:3000"]
    environment:
      BASE_URL: http://localhost:3000
      DATABASE_URL: postgres://fider:pw@db:5432/fider?sslmode=disable
      JWT_SECRET: use-a-long-random-string
      EMAIL_NOREPLY: noreply@example.com
      EMAIL_SMTP_HOST: mailpit
      EMAIL_SMTP_PORT: 1025
```

## Sending Real Email from Self-Hosted Fider

Because Fider signs people in with one-time links, email is the login system. This template delivers to Mailpit, ideal for creating the first administrator, but that mail never leaves your project. The smallest production change turns Mailpit into a relay: set `MP_SMTP_RELAY_HOST`, `_PORT`, `_USERNAME`, `_PASSWORD` and `_STARTTLS` for SendGrid, Postmark, Amazon SES or Mailgun, then add `MP_SMTP_RELAY_ALL=true` so every message is forwarded and a searchable copy stays behind. Alternatively point `EMAIL_SMTP_*` at your provider, or switch drivers with `EMAIL=mailgun` or `EMAIL=awsses`. Leave `SIGNUP_DISABLED` unset until your administrator exists: it 404s `/signup`.

## How Much Does Fider Cost to Self-Host?

Fider is free and open source under AGPL-3.0 — no seat limits, no tracked-user meter, no roadmap feature behind a paid tier. Self-hosting costs only infrastructure: the container, a PostgreSQL database, a small mail service and object storage billed on usage.

## FAQ

**What is Fider?**
An open-source feedback portal where customers post ideas, vote and discuss them while the team replies with statuses that build a public roadmap. Written in Go and React, licensed AGPL-3.0, it is the best-known self-hosted alternative to Canny, UserVoice and Nolt.

**What does this Railway template deploy?**
The Fider app from `getfider/fider:stable` on a public TLS domain, a managed PostgreSQL database, an object storage bucket for uploads, and Mailpit as the mail service with a protected web inbox.

**How do I create the first admin user in self-hosted Fider?**
Fill in the signup form on the deployed URL, then click the activation link in the "Your new Fider site" email waiting in the Mailpit inbox. Fider ships no default credentials.

**Why does this template include a database and object storage?**
PostgreSQL stores every post, vote, comment and account, and Fider migrates it at boot. Object storage matters on ephemeral containers: with `BLOB_STORAGE=s3`, uploads survive every redeploy.

**How do I enable Google or GitHub sign-in in self-hosted Fider?**
Set `OAUTH_GOOGLE_CLIENTID` and `OAUTH_GOOGLE_SECRET`, or the GitHub and Facebook equivalents, and those buttons appear next to the email link.

**Which Fider image tag should I pin?**
Use `stable` — Docker Hub publishes no `latest` tag for `getfider/fider`, so a Compose file asking for `latest` fails to pull.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

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