Deployment guide

Fider

Overview

Fider is a popular open-source customer feedback platform. It gives your users a self-hosted place to post suggestions, vote on the ideas that matter to them, comment, and follow a public roadmap, so product teams can capture and prioritise feedback from their own infrastructure.

This SecureAnyCloud image runs the Fider server (a single Go binary that serves both the public board and the administration console) behind nginx as a reverse proxy, with PostgreSQL as the datastore on the same VM. The Fider server listens on port 3000 and is reached through nginx on port 80. PostgreSQL is bound to the loopback interface.

On the first boot of every deployed VM, a one-shot service rotates the PostgreSQL password, generates a fresh JWT_SECRET, resolves the VM's public IP and writes it into Fider's BASE_URL, applies the database migrations, and starts the stack. The per-VM database password and signing secret are written to /root/fider-credentials.txt with mode 0600.

No default administrator ships in the image. You create Fider's first administrator account and your feedback site through Fider's web setup, the first time you open the site in a browser. The image is backed by 24/7 SecureAnyCloud support.

What you get:

  • Fider 0.36 server (the official upstream binary) at /opt/fider, serving the public board and the admin console
  • nginx reverse proxy on :80 in front of the Fider server on :3000
  • PostgreSQL datastore (posts, votes, comments, users), bound to loopback
  • A per-VM PostgreSQL password and JWT_SECRET generated at first boot and stored in a root-only file, with BASE_URL resolved to the VM's public IP
  • No seeded administrator: you create the first admin and your site through Fider's web setup
  • fider.service, postgresql.service and nginx.service as systemd units, enabled and active
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet and subnet in the target region.

Standard_B2s (2 vCPU / 4 GiB RAM) is a good starting point. Scale up for larger communities. In the NSG, allow inbound 22/tcp from your management network, and 80/tcp (plus 443/tcp once you enable HTTPS) from the networks your users reach Fider on.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Fider by SecureAnyCloud, and select Create.

On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80). Then select Review + create and Create.

Step 2 - Deploy from the Azure CLI

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:fider-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name fider \
  --image sac1647283583153:fider-ubuntu-24-04:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name fider --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

First-boot initialisation completes in under a minute. By the time SSH is ready, the credentials file is in place and the site is serving.

Step 4 - Confirm the services are running

systemctl is-active fider.service postgresql.service nginx.service curl -fsS http://127.0.0.1/_health

All three services report active, and Fider's health endpoint returns {"status":"Healthy"}. This confirms that the full stack (nginx, the Fider server and PostgreSQL) is serving.

nginx on :80 is the single public entry point in front of Fider on :3000, with PostgreSQL on loopback :5432. The output shows the three active systemd units, the loopback and nginx listeners, and Fider's /_health endpoint served through nginx.

Step 5 - Review the per-VM secrets

Fider's database password and signing secret are generated uniquely on the first boot of your VM and written to a root-only file. Read the file with:

sudo cat /root/fider-credentials.txt

The file records the resolved site URL, the local PostgreSQL login and the per-VM JWT_SECRET. BASE_URL is set to this VM's public IP on first boot, never to localhost or an empty host. The file therefore shows the per-VM database password and JWT secret, with BASE_URL resolved to the VM's public IP.

You can confirm the secure-by-default configuration end to end from the same session. The rotated database password authenticates, and the image ships zero seeded administrator accounts:

DBPASS=$(sudo grep '^fider.db.pass=' /root/fider-credentials.txt | cut -d= -f2-) PGPASSWORD="$DBPASS" psql -h 127.0.0.1 -U fider -d fider -tAc 'SELECT 1'
sudo -u postgres psql -tAc 'SELECT count(*) AS admin_accounts FROM users' fider

The per-VM database password authenticates, there are zero seeded users, and the site opens on its web setup. No default login ships in the image.

Step 6 - Complete the web setup and create your administrator

Open a web browser and go to http://<vm-public-ip>/. On a new instance, Fider presents its web setup. Enter your site name (for example your product or company name), your name and your email address to create the first administrator account.

Fider is passwordless. It signs users in with a one-time link sent to their email address, so returning users see the email sign-in dialog. Single sign-on providers can be added later.

Once your site is set up, the feedback board is live. Visitors post suggestions in the "Enter your suggestion here" box at the top, and the community votes on ideas and sorts them by trending, most voted or newest.

Step 7 - Collect suggestions, votes and comments

Every suggestion has its own page. It shows the description, the list of voters, a running vote count, a status (Open, Planned, Started, Completed, Declined) and a threaded discussion. Administrators can respond, change status, tag posts and merge duplicates.

Until your administrator account is created, the home page redirects to the site's setup page. You can check this with:

curl -s -o /dev/null -w 'home page -> HTTP %{http_code}\n' http://127.0.0.1/

Step 8 - Administer your site

Sign in as the administrator and open Settings to reach the administration console. It covers general settings and your board title, privacy (public or private board), users and roles, tags, invitations, authentication (email and SSO providers such as Microsoft Entra ID, Google and GitHub), webhooks, and a full data export.

Step 9 - Configure your SMTP server (bring your own)

Fider uses email for one-time sign-in links and notifications, so configure a real SMTP server before you invite users. The image ships with EMAIL_NOREPLY set and a stand-in SMTP host so that the app boots, but no mail is deliverable until you provide real settings.

Edit /etc/fider.env and set your provider's host, port and credentials. Any SMTP endpoint works, for example Azure Communication Services, Amazon SES, SendGrid, Mailgun or a corporate relay:

sudo sed -i \
  -e 's|^EMAIL_SMTP_HOST=.*|EMAIL_SMTP_HOST=smtp.your-provider.example|' \
  -e 's|^EMAIL_SMTP_PORT=.*|EMAIL_SMTP_PORT=587|' \
  /etc/fider.env echo 'EMAIL_SMTP_USERNAME=<smtp-username>' | sudo tee -a /etc/fider.env echo 'EMAIL_SMTP_PASSWORD=<smtp-password>' | sudo tee -a /etc/fider.env
sudo systemctl restart fider.service

Security baseline

The image ships fully patched at capture time and keeps patching itself. Ubuntu's unattended-upgrades service is enabled, so security updates are installed automatically on your running VM. The Fider server and PostgreSQL sit behind nginx, which is the single network-facing entry point. Verify the state at any time:

systemctl is-enabled unattended-upgrades grep -h . /etc/apt/apt.conf.d/20auto-upgrades
sudo ss -tlnp | grep -E ':(3000|5432) '

Automatic security updates are enabled, and the image was fully patched at capture time, with no held packages and zero pending updates.

Enabling HTTPS

For any production deployment, serve Fider over HTTPS so that sign-in links and feedback cannot be intercepted. The image ships with nginx, which certbot can configure automatically. These commands assume a DNS record that points your fully qualified domain name at the VM's public IP address, and 443/tcp open in the NSG:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d feedback.your-domain.example \
  --non-interactive --agree-tos -m you@your-domain.example \
  --redirect

After certbot finishes, set Fider's BASE_URL to the HTTPS address so that sign-in links and asset URLs use it, then restart the service:

sudo sed -i 's|^BASE_URL=.*|BASE_URL=https://feedback.your-domain.example|' /etc/fider.env
sudo systemctl restart fider.service

Backup and maintenance

Fider keeps all of its state in PostgreSQL: posts, votes, comments, users and settings. Back up the database regularly:

sudo -u postgres pg_dump fider > <backup-dir>/fider-db-$(date +%F).sql

Keep the OS patched with sudo apt update && sudo apt upgrade.

To upgrade Fider, replace the contents of /opt/fider with a newer official release (the binary plus the migrations, views, locale, static, dist directories and ssr.js). Then run cd /opt/fider && sudo -u fider ./fider migrate and restart the service. See https://docs.fider.io/.

Support

This image is backed by 24/7 SecureAnyCloud support, with a guaranteed response within 24 hours and a one-hour average for critical issues. Email sales@secureanycloud.com for help with deployment, SMTP and deliverability configuration, SSO, upgrades, TLS termination and database administration.

For general Fider questions, see the documentation at https://docs.fider.io/. Fider is licensed under the GNU AGPL-3.0 and is a trademark of its respective owner. Use of the name here is nominative and does not imply affiliation or endorsement. All product and company names are trademarks or registered trademarks of their respective holders.

Deploy on Azure

Launch Fider on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure