Connect To fly.io Sqlite Production Database

June 08, 2022

Gonna give a quick how to for connecting to and getting your sqlite database from your production app on fly.io. It can be a bit confusing but once you get your ssh connection set up and openssh installed on your fly.io server, it’s much easier to replicate. In this tutorial we will be connecting to your fly.io instance via wireguard and ssh, then insalling openssh on your instance so we can use scp from your local computer to copy the sqlite db file for viewing locally.

Start by downloading Wireguard here. You’ll also need flyctl which I’m assuming you already have, but if you don’t it can be downloaded here.

You’ll need to connect wireguard to fly.io by creating a wireguard config file with the fly CLI. Use flyctl wireguard create to create a file called wireguard.conf. Then open wireguard and import that file and activate that ssh tunnel.

Next you’re going to connect to your fly instance via ssh. Type fly ssh issue --agent then fly ssh console to ssh into your instance.

Once you’re in you’ll need to install openssh on the instance to be able to securely copy files from your instance to your local computer. Do this with the command: apt-get install openssh-client.

At this stage you’ll want to create a backup of your database to copy to your local machine so nothing goes wrong trying to copy the file while a transaction is happening. You can do this in one of 2 ways:

sqlite3 data/sqlite.db '.backup data/backup.db'

OR

sqlite3 data/sqlite.db "VACUUM INTO 'data/backup.db'"

You may have to change the path to your database, mine was in the data directory.

Exit ssh with exit;

Now you can copy your sqlite db file to your local computer with scp root@[app-name].internal:/data/backup.db fly_backup.db.

Don’t forget to fill in the name of your app on fly.io and change the path to wherever you backed up your sqlite db on your server. Mine is at /data/backup.db.


Written by Matt Gregg, a UI engineer who lives and works in Minneapolis, MN

Have something to say about this post? Tweet at me

matt@codegregg.com