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 .
Install
the flyctl
CLI tool.
Authenticate with 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
Manually edit 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 - flyctl deploy
.
...
....
==> 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: [0]▶ 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 37.16.5.93 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.