Step-by-Step Guide to Deploying Fizzy on DigitalOcean with Kamal
Introduction
Are you looking to host your own project management tool without the hassle of complex setups? If so, you've come to the right place. In this guide, we’ll walk you through deploying Fizzy, a lightweight kanban tool from 37signals, on a single DigitalOcean Droplet using Kamal. The beauty of this setup lies in its simplicity—Kamal streamlines the entire process, allowing you to focus on what matters most: your project.
Fizzy offers an open-source alternative to traditional kanban tools, giving you the freedom to own and customize your software. Whether you're a developer eager to learn or a project manager wanting more control, this guide will equip you with the knowledge to get your own Fizzy instance up and running in no time.
Prerequisites for Deployment
Before diving into the deployment process, ensure you have the following prerequisites:
- A GitHub account
- A DigitalOcean account
- Docker Desktop installed locally
- An SSH key added to your DigitalOcean account
With these essentials in place, you’re ready to start!
Setting Up Your Fizzy Instance
Follow these steps to deploy Fizzy on DigitalOcean:
- Fork the Fizzy Repository
Navigate to the Fizzy repository on GitHub, click Fork, and clone the repository locally:
git clone https://github.com/YOUR_USERNAME/fizzy.git
Then, navigate into the directory and install the dependencies:
cd fizzy
bin/setup
- Create a DigitalOcean Droplet
Log in to your DigitalOcean account and create a new Droplet:
Select Ubuntu 22.04 or later as the image, choose a size with at least 2GB RAM, and select the region closest to your users. Ensure you choose SSH as the authentication method. Copy the Droplet’s IP address as you’ll need it later.
- Configure Kamal for Deployment
Open config/deploy.yml and make two crucial changes:
- Add your Droplet’s IP address in two places:
servers:
web:
-
proxy:
host:
- Configure SSL based on your setup:
If you have a domain, update the host and enable SSL:
proxy:
ssl: true
host: fizzy.yourdomain.com
For an IP-only setup, temporarily disable SSL:
proxy:
ssl: false
host:
Remember, running without SSL is only for testing and not recommended for production.
- Set Up Secrets
Kamal loads sensitive data from .kamal/secrets. Create the file and install Ruby gems:
mkdir -p .kamal
touch .kamal/secrets
bundle install
Generate your Rails secret key and add it to .kamal/secrets.
- Verify SSH Access
Make sure you can connect to your server using:
ssh root@YOUR_DROPLET_IP
If the connection is successful, you’re ready to deploy!
Deployment and Email Setup
Now that your environment is ready, let’s deploy Fizzy:
- Ensure Docker Desktop is Running
Start Docker Desktop and ensure it's operational by runningdocker ps. - Run Kamal Setup
From your Fizzy project directory, execute:
bin/kamal setup
Kamal will handle the installation of Docker on the Droplet, build the Fizzy image, and configure the proxy.
- Verify Deployment
Open your browser and navigate to:
Option A: https://fizzy.yourdomain.com (with domain)
Option B: http://YOUR_DROPLET_IP (without SSL)
Configuring Email for User Verification
Fizzy requires email verification for account setup. For this, we recommend using an HTTP-based email provider like Resend:
- Create a Resend account and verify your domain.
- Add the Resend gem to your Gemfile:
gem "resend"
Run bundle install to install the gem.
- Update your
config/environments/production.rbfile to use Resend’s HTTP API.
Deploy the changes using:
bin/kamal deploy
After deployment, test email delivery by signing up or logging in.
Conclusion
Congratulations! You’ve successfully deployed your own Fizzy instance on a DigitalOcean Droplet. You've not only learned to set up a powerful kanban tool but also gained insights into managing your software infrastructure. Don't forget to enable SSL for a secure production deployment if you initially opted for IP-only access. Enjoy organizing your projects with Fizzy!
Share this article:
Need Help With Your Website?
Whether you need web design, hosting, SEO, or digital marketing services, we're here to help your St. Louis business succeed online.
Get a Free Quote