Self-Hosting Fider with Docker Compose
What Is Fider?
Fider is an open-source platform for collecting user feedback and prioritizing feature requests. It replaces paid tools like Canny and UserVoice with a self-hosted solution where users can submit ideas, vote on them, and discuss implementations. Teams get a clear view of what their users actually want, ranked by community votes.
Updated February 2026: Verified with latest Docker images and configurations.
- Official site: fider.io
- Source code: github.com/getfider/fider
- License: AGPL-3.0
Prerequisites
- A Linux server (Ubuntu 22.04+ recommended)
- Docker and Docker Compose installed (guide)
- 1 GB of free RAM (minimum)
- 5 GB of free disk space
- A domain name (recommended for OAuth and email)
- SMTP credentials for email notifications
Docker Compose Configuration
Create a docker-compose.yml file:
services:
fider:
image: getfider/fider:v0.33.0
container_name: fider
ports:
- "3000:3000"
depends_on:
db:
condition: service_healthy
environment:
# Core settings
BASE_URL: "${BASE_URL}"
GO_ENV: "production"
DATABASE_URL: "postgres://fider:${POSTGRES_PASSWORD}@db:5432/fider?sslmode=disable"
JWT_SECRET: "${JWT_SECRET}"
# Email configuration (required for user signups)
EMAIL_NOREPLY: "${EMAIL_NOREPLY}"
SMTP_HOST: "${SMTP_HOST}"
SMTP_PORT: "${SMTP_PORT}"
SMTP_USERNAME: "${SMTP_USERNAME}"
SMTP_PASSWORD: "${SMTP_PASSWORD}"
SMTP_ENABLE_STARTTLS: "true"
# Logging
LOG_LEVEL: "INFO"
LOG_CONSOLE: "true"
restart: unless-stopped
healthcheck:
test: ["CMD", "./fider", "ping"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
db:
image: postgres:17-alpine
container_name: fider-db
environment:
POSTGRES_USER: fider
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
POSTGRES_DB: fider
volumes:
- fider-db:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U fider"]
interval: 10s
timeout: 5s
retries: 5
volumes:
fider-db:
Create a .env file alongside:
# Full URL where Fider will be accessible (no trailing slash)
BASE_URL=https://feedback.example.com
# JWT secret — generate with: openssl rand -hex 32
JWT_SECRET=change_me_to_a_random_64_character_hex_string
# PostgreSQL password — generate with: openssl rand -hex 16
POSTGRES_PASSWORD=change_me_to_a_strong_password
# Email configuration (required for signups and notifications)
EMAIL_NOREPLY=[email protected]
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=your-smtp-user
SMTP_PASSWORD=your-smtp-password
Start the stack:
docker compose up -d
Initial Setup
- Open your browser and navigate to
http://your-server-ip:3000(or your configured domain) - Fider automatically runs database migrations on first start
- You’ll see the setup wizard — enter your site name, admin name, and email
- The admin account is created via email verification — check your inbox for the activation link
- Once activated, you can start configuring your feedback board
Configuration
OAuth Providers
Fider supports social login to reduce friction. Add any combination to your environment:
| Provider | Variables |
|---|---|
OAUTH_GOOGLE_CLIENTID, OAUTH_GOOGLE_SECRET | |
| GitHub | OAUTH_GITHUB_CLIENTID, OAUTH_GITHUB_SECRET |
OAUTH_FACEBOOK_APPID, OAUTH_FACEBOOK_SECRET |
You can also configure custom OAuth providers through the admin panel under Site Settings → Authentication.
Multi-Tenancy
Fider supports multiple organizations in a single instance. Each tenant gets its own subdomain or custom domain. Enable by setting different BASE_URL values per tenant through the admin API.
Customization
Through the admin panel, you can:
- Set a custom logo and branding
- Configure status labels (Open, Planned, Started, Completed, Declined)
- Set up custom CSS for visual tweaks
- Enable or disable user signups
- Manage team members and roles (Administrator, Collaborator, Visitor)
Reverse Proxy
Place Fider behind a reverse proxy for SSL termination. With Nginx Proxy Manager, point your domain to fider:3000. Ensure BASE_URL matches your public domain exactly — mismatches break OAuth callbacks and email links.
For manual Nginx configuration:
server {
listen 443 ssl;
server_name feedback.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
See Reverse Proxy Setup for full configuration guides.
Backup
Back up the PostgreSQL database:
# Create a database dump
docker compose exec db pg_dump -U fider fider > fider-backup-$(date +%Y%m%d).sql
# Restore from backup
cat fider-backup.sql | docker compose exec -T db psql -U fider fider
The PostgreSQL data volume (fider-db) contains all application data. Include it in your backup strategy. See Backup Strategy for comprehensive approaches.
Troubleshooting
Fider won’t start — database connection errors
Symptom: Logs show connection refused or database "fider" does not exist.
Fix: Ensure PostgreSQL is fully started before Fider. The depends_on with service_healthy handles this, but if using an external database, verify the connection string in DATABASE_URL. The ?sslmode=disable parameter is required for local PostgreSQL containers.
Email verification links not working
Symptom: Clicking the verification link in the signup email returns an error or wrong page.
Fix: Ensure BASE_URL exactly matches your public URL including the protocol (https://). If behind a reverse proxy, make sure X-Forwarded-Proto headers are passed correctly.
OAuth login fails with redirect error
Symptom: Google/GitHub login redirects to an error page after authentication.
Fix: The OAuth callback URL must be {BASE_URL}/oauth/{provider}/callback. Register this exact URL in your OAuth provider’s settings. Check that BASE_URL uses https:// if your site is behind SSL.
Users can’t upload images
Symptom: Image uploads fail with a 413 or timeout error.
Fix: If behind Nginx, increase client_max_body_size in your proxy config. Default upload limit is typically 2 MB.
Resource Requirements
- RAM: 512 MB idle, 768 MB under moderate load
- CPU: Low — Go binary is efficient
- Disk: 2 GB for application + database, plus user-uploaded images
Verdict
Fider is the best self-hosted alternative to Canny for teams that want transparent feature request management without paying $79-399/month. The setup is straightforward — a single Go binary with PostgreSQL — and the interface is clean enough for non-technical users to submit and vote on ideas. Where it falls short is in advanced analytics and integrations that paid tools offer (Jira sync, Slack notifications require custom webhooks). For most teams collecting product feedback, Fider handles the core workflow well.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments