You want to self-host apps for fun or privacy - but not the ‘running servers in your garage’ type of self-hosted. In 2022 we live in a Golden Era of low-cost VPCs and hosting providers, and there has never been a better time for people looking to offload the frustrating parts of self-hosting, while still operating on a shoe-string budget (or free!).
So you want to host your own NocoDB Airtable alternative ? Love it! Let’s get you rolling. This guide will set you up on Fly.io with a SQLite backend. NocoDB has so many uses cases, but one feature I want to call out is how handy it is that it comes with a built-in API for items right out of the gate. Can anyone say speedy MVPs?
😢 SQLite??? Is that even production ready??
You’d be surprised how much traffic you can support with SQLite - NomadList & RemoteOK both run on it and pull in significant revenue ($millions) and handle tons of traffic. Read more in Consider SQLite and how Michael Lynch uses SQLite + Litestream to never worry about backups .
Now let’s get your server running & get you back to whatever more important things you’re avoiding!
We need to take a quick detour to ensure you have an account with Fly.io .
flyctl CLI tool.
flyctl auth signup (for newbies), or
flyctl auth login (existing accounts).
⚠️ You will have to add credit card information to the account, so if that’s enough to keep you from using a free service 🤷- keep your usage to the free tier and you’ll have no issues.
With account setup out of the way, we will have a running instance of NocoDB on the interwebs in just 4 quick CLI commands. For reference, the Docker instructions for NocoDB .
Create a new directory & initialize the project.
mkdir fly-nocodb/ cd fly-nocodb flyctl launch --image=nocodb/nocodb:latest --no-deploy
Create the volume for persistent storage.
ℹ️ I set this to volume of 1 GB since I am deploying multiple apps on Fly, but the free tier supports up to 3GB for your account .
flyctl volumes create nocodb_vol --size 1 -r ord
fly.toml: Update the mounts to use the new volume
[mounts] source="nocodb_vol" destination="/usr/app/data"
(Optional) Manually edit
fly.toml: update any relevant NoCODB production variables
I chose to disable telemetry and remove the initial loading screen, but you can also set variables to connect to AWS S3, change security settings, connect other database, and more.
[env] NC_DISABLE_TELE = "true" NC_MIN = "true"
🪄 Deploy your new app -
... .... ==> Creating release --> release v2 created --> You can detach the terminal anytime without stopping the deployment ==> Monitoring deployment 1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 passing] --> v0 deployed successfully
You now have a live app running on Fly.io
! Not needed, but if you already forgot the URL (like me), anytime you can run
flyctl info to check on your shiny new app.
19:16:50:~/work/fly-nocodb: ▶ flyctl info App Name = bold-bird-3731 Owner = personal Version = 0 Status = running Hostname = bold-bird-3731.fly.dev Services PROTOCOL PORTS TCP 80 => 8080 [HTTP] 443 => 8080 [TLS, HTTP] IP Adresses TYPE ADDRESS REGION CREATED AT v4 188.8.131.52 1m23s ago v6 2a09:8280:1::3:3873 1m23s ago
With a few commands and almost no thought required, I have a self-hosted Airtable alternative NocoDB live and ready for use. The sky is the limit from here.
Fly is not the only simple hosting provider out there - there’s a gluttony of choice, and you as the customer are winning! A few other options include:
A simple guide to self-host an Actual server in just a few minutes, for free.
Let the nice robots at GitHub handle sending Venmo requests to your friends.
Ways to programmatically generate pages from data for Hugo. Automate your page creation.