[Blog](https://deploywithox.com/blog) [Guides](https://deploywithox.com/blog#c-guides) # How to self-host Fider on your own VPS without Docker Run Fider v0.38.2, the open-source feedback board, on your own Ubuntu server with ox and no Docker: a Go build, Postgres and the config that ran. Saurav Sharma Oct 17, 2026 9 min read On this page - [What you need](https://deploywithox.com/blog/self-host-fider#what-you-need) - [The steps](https://deploywithox.com/blog/self-host-fider#steps) - [The first site, sign-in and a first idea](https://deploywithox.com/blog/self-host-fider#first-site) - [The ox.toml, line by line](https://deploywithox.com/blog/self-host-fider#config) - [Postgres and the staging copy](https://deploywithox.com/blog/self-host-fider#services) - [Updates and backups](https://deploywithox.com/blog/self-host-fider#updates) - [Frequently asked questions](https://deploywithox.com/blog/self-host-fider#faq) To self-host Fider you need an Ubuntu server, a fork of the Fider repo with one `ox.toml` file added, a mail relay it can send through, and five variables. In our run the first deploy took about 4 minutes, and ox set up the Postgres database where Fider keeps its posts, votes and users. **How we tested** On Oct 17, 2026, ox deployed Fider v0.38.2 from commit [`e492af4a`](https://github.com/getfider/fider/commit/e492af4a30db30c104df3dfb9e0f04e55757ba9e) on a fresh DigitalOcean server with 8 vCPUs and 16 GB of memory. The run then redeployed it, backed it up and rebooted the server. Then a separate test agent, one that did not write the config, signed in, posted an idea and saw it on the home page with its vote after a reload, and checked the app's services and its backup. [Fider](https://github.com/getfider/fider) is a feedback board for feature requests and suggestions. Visitors post ideas, vote on them and comment, and the team marks the status of each idea. The code is open source under the AGPL v3 license. Fider is a Go server with a React interface, and the server renders each page's first view itself, using the V8 engine through v8go. It keeps everything in Postgres, uploaded images included. ox deployed Fider v0.38.2 (commit e492af4a) on Oct 17, 2026 on a fresh DigitalOcean server with 8 vCPUs and 16 GB of memory; the first deploy took 4 minutes and a redeploy took 78 seconds. - **First deploy:** 4 minutes, from adding the project until the app passed the run's first checks. - **Redeploy of the same commit:** 78 seconds, until the app passed the checks again. - **Server:** DigitalOcean, 8 vCPUs and 16 GB of memory (`s-8vcpu-16gb`), with this app alone on it. Every one of the 85 apps we deployed ran on this one size, so it was not picked for this app. - **Memory in use after the reboot:** 722 MB of 15986 MB, for the whole server: Ubuntu, the app and its staging copy, its services, Caddy and the ox agent. On a server with no apps, ox's tests on real servers hold the agent to 40 MB or less and Caddy to 50 MB or less. - **Services ox runs for it:** `postgres`. - **Source:** [github.com/getfider/fider](https://github.com/getfider/fider) at v0.38.2, commit [`e492af4a`](https://github.com/getfider/fider/commit/e492af4a30db30c104df3dfb9e0f04e55757ba9e). The Fider feedback board of the test site oxcheck, before any post The new Fider idea Add a dark mode for the mobile app with 1 vote ## What you need - An Ubuntu LTS server. The run used the size in the facts above and measured the memory there. - A GitHub account to fork `getfider/fider`, and an ox account made by signing in with GitHub. - An SMTP relay. Fider has no passwords: people sign in with a code or link sent by email, and [its hosting docs](https://docs.fider.io/hosting-instance) say it cannot start without an email provider. The run used a test mail catcher on the server, so sending through a real relay was not tested. ## The steps In the ox dashboard, choose Add a server. ox shows one install command with a fresh token in it. Paste it into a root shell on your Ubuntu machine. It installs the ox agent and Caddy. Fork `getfider/fider` and check out the tag `v0.38.2`, the release the run deployed. Add the `ox.toml` shown below at the top of the repo. The run added no other file. Commit and push. Next write a `fider.env` file on your laptop with the five keys listed under the variables section. Write `BASE_URL` as the literal text `${PUBLIC_URL}`, and give the other four your own values. With the [ox CLI](https://deploywithox.com/docs/cli) signed in, run: Shell ```bash ox new /fider ox review fider --from-file fider.env --wait ``` ox names the project after the repo, so it is `fider` here. The review stores your values and starts the first deploy, and `--wait` prints the run's log until it ends. The [quickstart](https://deploywithox.com/docs/quickstart) shows the same steps in the browser. Our run served Fider on its preview address, so a domain of your own was not part of it. The [domains page](https://deploywithox.com/docs/operate/domains) covers adding one. ## The first site, sign-in and a first idea When the deploy is green, open the address ox shows for the project. Until a site exists, a new Fider install sends every visit to its sign-up page, where you type a name for the site, your own name and your email. Fider mails a confirmation link, and opening it makes you the site's administrator. The run made its first site with the same request that form sends, and read the confirmation mail from the test mail catcher. The test agent then used Fider as a visitor does. It signed in with an email address the site had not seen. Fider asked for a name and mailed a 6-digit code that is good for 15 minutes. A wrong code was refused with "Invalid or expired verification code", and the right one signed the agent in as a regular member. To post an idea, press "Enter your suggestion here..." on the home page, give it a title and a description, and press "Submit your idea". In the run the idea stayed on the home page with its vote after a reload. The Admin menu, comments and statuses were not tested. ## The ox.toml, line by line TOML ```toml # Fider 0.38.2 (a feedback board: a Go server with a React UI it renders on # the server through v8go) on ox's postgres, as its operator would write it # from the Dockerfile: the Makefile's build-server, build-ssr and build-ui # targets, then `fider migrate` and `fider`. It runs from the release and # reads dist/, ssr.js, views/, locale/ and migrations/ there; uploads go to # the database (BLOB_STORAGE defaults to sql), so nothing is kept. # The server panics at start without these (app/pkg/env/env.go); the example # file is .example.env, which ox does not read. BASE_URL is the site's own # address: it goes into every mailed sign-in link. SMTP is the default mail # type; a relay with no login leaves EMAIL_SMTP_USERNAME and _PASSWORD unset. required_variables = ["JWT_SECRET", "BASE_URL", "EMAIL_NOREPLY", "EMAIL_SMTP_HOST", "EMAIL_SMTP_PORT"] [app] # HOST is ox's (127.0.0.1) and PORT its own: the server listens on HOST:PORT. start = "exec ./fider" health = "/_health" [build] # The make targets run npm and npx, so ox installs the lockfile's packages # (npm ci, as the Dockerfile's UI stage) before them. commands = [ "COMMITHASH=$OX_RELEASE make build-server", "make build-ssr", "make build-ui", ] # The server does not create its tables; `fider migrate` does. migrate = "./fider migrate" [services] postgres = {} ``` The config follows Fider's Dockerfile: three build steps, then the migrations, then the server. - `required_variables` names the five keys Fider stops without. Its `env.go` panics at start without `JWT_SECRET`, `BASE_URL` and `EMAIL_NOREPLY`, and with the default SMTP mail type also without the relay's host and port. The repo's example file is `.example.env`, which ox does not read, so this list takes its place and ox asks for the keys before the first deploy. `DATABASE_URL` is required too, but ox fills it from the Postgres service. - `start` runs the binary the build leaves in the release folder. Fider reads `HOST` and `PORT` itself, and ox sets both for every app. It loads `dist/`, `ssr.js`, `views/`, `locale/` and `migrations/` from its working directory, so it runs from the release. - `health` is Fider's own `/_health` route. It pings the database and answers "Healthy". ox switches traffic to a new release only after it answers. - The three build `commands` are Makefile targets. `build-server` compiles the Go server into one binary named `fider`, and `COMMITHASH=$OX_RELEASE` stamps the commit into it. `build-ssr` extracts and compiles the translations and bundles `ssr.js`, the script the server runs in V8. `build-ui` builds the browser's JavaScript and CSS into `dist/`. These targets run npm and npx, so ox first installs the packages from `package-lock.json`, as the Dockerfile's UI stage does, and it reads the Go and Node versions from `go.mod` and `.nvmrc`. - `migrate` runs `./fider migrate`. The server never creates its own tables, so this command applies the SQL files in `migrations/`. ox runs it after the build and before traffic moves, and dumps Postgres first. - `[services]` asks for Postgres, and ox hands Fider its address as `DATABASE_URL`. There is no `[storage]` section: Fider's `BLOB_STORAGE` setting defaults to `sql`, so uploads live in Postgres and no folder has to survive a deploy. There are no workers. Fider's background jobs, such as sending mail, run inside the web process, and the test agent saw them finish in that process's log. Shell ```bash BASE_URL JWT_SECRET EMAIL_NOREPLY EMAIL_SMTP_HOST EMAIL_SMTP_PORT ``` `BASE_URL` is `${PUBLIC_URL}`, a reference ox fills in with the project's address. Fider's docs say it must match the address people open, because Fider builds every link from it, including the ones in mail. `JWT_SECRET` is a long random value that Fider uses to sign its tokens. Fider's docs say changing it signs every user out. `EMAIL_NOREPLY` is the sender address on every mail, and the run used an `example.com` one. `EMAIL_SMTP_HOST` and `EMAIL_SMTP_PORT` name the relay, and the run's were the mail catcher's. A relay that needs a login also takes `EMAIL_SMTP_USERNAME` and `EMAIL_SMTP_PASSWORD`, which the run left unset. See [variables](https://deploywithox.com/docs/operate/variables) for how references work. ## Postgres and the staging copy Postgres is the only service. The run also deployed a staging copy with its own database and its own site, and the memory figure above counts both. ## Updates and backups To move to a new release, merge its tag into your fork and push, or run `ox deploy fider --wait`. ox builds the new release beside the running one, runs `fider migrate`, and switches once `/_health` answers. The Postgres dump it takes first was there after the run's redeploy. Fider's docs also say to back up before an update and to read the release notes for breaking changes. Backups need no setup. The run's Back up now made a Postgres dump, which holds the posts, users and uploaded images. Run `ox backups fider` to list backups, or `ox backups fider now postgres --wait` to make one. A restore was not tested. The [backups page](https://deploywithox.com/docs/operate/backups) covers copies in an S3 bucket. The [self-hosting page](https://deploywithox.com/self-hosting) lists the other apps ox has deployed. ## Frequently asked questions ### Do I need Docker to self-host Fider? No. Fider's own hosting docs describe Docker Compose, but the source builds with plain Makefile targets and runs as one Go binary. ox builds it from your fork on the server, installs Postgres beside it and keeps it running as a system service. An update is a push to your fork or one deploy command. ### How do I create the first Fider admin account? Open the site's address after the first deploy. Fider sends you to its sign-up page, where you enter a site name, your name and your email. It mails a confirmation link, and opening the link makes you the administrator. Fider has no passwords, so that mail has to arrive. Real mail delivery was not tested. ### How much memory does self-hosted Fider use? On the run's server, the whole machine used the memory the facts show after a reboot. That counts Fider, its staging copy, Postgres, Caddy and the ox agent. The build also runs Go and npm on the server. ox works on any server from 1 GB up and tells you when memory is why an app stopped. ### What email setup does Fider need? Fider cannot start without an email provider, because it signs people in by emailed code or link. Its docs list SMTP, Mailgun and Amazon SES. The run used SMTP with a test mail catcher, so only the SMTP settings are in the config, and sending through a real relay was not tested. New to running apps on your own server? [How ox self-hosts your apps](https://deploywithox.com/self-hosting) shows what ox sets up on your server. On this page - [What you need](https://deploywithox.com/blog/self-host-fider#what-you-need) - [The steps](https://deploywithox.com/blog/self-host-fider#steps) - [The first site, sign-in and a first idea](https://deploywithox.com/blog/self-host-fider#first-site) - [The ox.toml, line by line](https://deploywithox.com/blog/self-host-fider#config) - [Postgres and the staging copy](https://deploywithox.com/blog/self-host-fider#services) - [Updates and backups](https://deploywithox.com/blog/self-host-fider#updates) - [Frequently asked questions](https://deploywithox.com/blog/self-host-fider#faq) - [Do I need Docker to self-host Fider?](https://deploywithox.com/blog/self-host-fider#faq-docker) - [How do I create the first Fider admin account?](https://deploywithox.com/blog/self-host-fider#faq-admin) - [How much memory does self-hosted Fider use?](https://deploywithox.com/blog/self-host-fider#faq-memory) - [What email setup does Fider need?](https://deploywithox.com/blog/self-host-fider#faq-email) Written by Saurav Sharma Builds ox. Writes about running apps on servers you own, without Docker and without a platform bill. [Older post How to self-host Firefly III on your own Ubuntu VPS](https://deploywithox.com/blog/self-host-firefly-iii) [Newer post How to self-host the Element Web client on your own VPS](https://deploywithox.com/blog/self-host-element-web) ## Keep reading - Guides [Self-Hosted Open-Source Apps Deployed with ox: All 85](https://deploywithox.com/blog/self-hosted-open-source-apps-deployed-with-ox) ox deployed 85 open-source apps from pinned commits on fresh servers, with no Docker. The stacks, services, deploy times and a table of every app. Saurav Sharma Oct 17, 2026 16 min read - Guides [How to self-host AFFiNE on your own VPS without Docker](https://deploywithox.com/blog/self-host-affine) Run AFFiNE v0.27.4 on your own Ubuntu server with ox: Postgres with pgvector, Redis, a Rust and Node build, and an admin made from two variables. Saurav Sharma Oct 17, 2026 12 min read - Guides [How to self-host Akaunting on your own VPS without Docker](https://deploywithox.com/blog/self-host-akaunting) Run Akaunting 3.2.4 on your own Ubuntu server with ox: PHP, MariaDB, a scheduler and the first company and admin made on deploy, from the config that ran. Saurav Sharma Oct 17, 2026 10 min read ## Deploy to a server you own ox sets up systemd, Caddy and PostgreSQL on your Ubuntu server and deploys on every push. Free for your first project. [Sign up with GitHub](https://deploywithox.com/login/github) [Read the docs](https://deploywithox.com/docs)