Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
VGSources
Blog

How to Deploy Fizzy with Kamal on Your Own VPS

Follow Fizzy’s official Kamal workflow from repository fork to a working HTTPS deployment, with exact configuration for secrets, SMTP, storage, notifications, multi-tenancy, and updates.
Length11 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The supported self-hosting path is to fork Fizzy, prepare it with bin/setup, initialize Kamal, configure your VPS and secrets, then run bin/kamal setup. Kamal connects to a Docker-capable server over SSH, builds Fizzy’s container, configures it, and starts the application. Later releases use bin/kamal deploy.

What this deployment gives you

Fizzy is deployed as a containerized application on infrastructure you control. Kamal handles the connection to a remote host, the container build, configuration transfer, and service startup. Your responsibilities are choosing a reachable VPS, pointing a hostname at it, supplying the required secrets and mail settings, and deciding how application files and uploads will persist.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The official workflow assumes a bare or prepared server that runs Docker and accepts SSH connections. It is not a one-click control-panel installation. You work from a fork of the Fizzy repository so that configuration and any code changes remain trackable.

Prerequisites before you begin

A Docker-capable VPS

  • The host must run Docker.
  • The host must be reachable from your deployment machine over SSH.
  • You need an account that Kamal can use. If it is not root, declare that account in ssh/user in config/deploy.yml.
  • The server needs persistent storage if you keep Fizzy’s default local-disk storage.

No universal CPU or RAM minimum is published in the official deployment material. Size the host for the number of users, attachment volume, notification traffic, and the space needed for backups rather than relying on an invented baseline. A small private installation and a busy multi-account instance have materially different requirements.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

A DNS name and mail service

Choose the public hostname before deploying, for example fizzy.example.com, and configure DNS so it resolves to the VPS. You also need an SMTP service and credentials if Fizzy is to send email. The deployment documentation uses SendGrid and Postmark as examples of third-party SMTP providers; the provider you choose must permit outbound SMTP from your host and supply the address, username, password, and sender details required by Fizzy.

A deployment workstation

Run the repository commands from a machine with Git, Ruby tooling required by the project, and SSH access to the VPS. Keep your fork private if it contains environment-specific changes or operational notes. Do not put credentials in tracked files.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Fork the repository and initialize the project

  1. Fork the official Fizzy repository. Use the fork as the source for your deployment, configuration changes, and any future updates.
  2. Clone your fork and enter it. Work from the repository root for every command below.
  3. Run the project setup. Execute bin/setup. This prepares the application according to the repository’s setup routine.
  4. Initialize Kamal. Run kamal init. The repository also provides a bin/kamal wrapper; use that wrapper for deployment commands when following the project’s checked-in tooling.

Initialization creates the Kamal deployment structure, including config/deploy.yml and the .kamal area used for secrets. If your checkout already contains these files, inspect them instead of blindly overwriting project-specific settings.

Configure config/deploy.yml

The deployment file tells Kamal where to connect, which hostname Fizzy serves, and which public URL the application should use. Make each value agree with the others: the DNS name, proxy host, TLS behavior, and BASE_URL all describe the same installation.

Set the web server

Set servers/web to the VPS hostname or address. If SSH uses a non-root account, set ssh/user to that account. The host must be reachable using the SSH identity and settings available on your deployment workstation.

servers:
  web:
    - your.vps.example

ssh:
  user: deploy

The exact surrounding YAML generated by your repository may include additional application settings. Preserve those entries and change only the host and user values that apply to your server.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set the proxy hostname and TLS

Set proxy/host to the public hostname, such as fizzy.example.com. With SSL enabled, Kamal can obtain the certificate for that host automatically. Leave SSL enabled for a normal direct HTTPS deployment.

Set proxy/ssl: false only when another system intentionally terminates TLS in front of Fizzy, such as an existing reverse proxy or load balancer. In that arrangement, the front-end system owns the certificate and HTTPS connection; make sure it forwards traffic to the Kamal-managed service and that the externally visible URL still matches your configuration.

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

Set the canonical application URL

Under env/clear, set BASE_URL to the complete public URL, including the scheme:

env:
  clear:
    BASE_URL: https://fizzy.example.com

Use https:// when users access the site through TLS. This value is used when Fizzy creates links, so an incorrect scheme or hostname can produce links that point to an internal address, the wrong domain, or an insecure protocol.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create and protect .kamal/secrets

Keep .kamal/secrets out of version control. It contains credentials that Kamal injects into the application during deployment. Confirm that your repository’s ignore rules cover the file, and check your Git status before committing.

The official list includes these values:

  • SECRET_KEY_BASE
  • VAPID_PUBLIC_KEY
  • VAPID_PRIVATE_KEY
  • SMTP_USERNAME
  • SMTP_PASSWORD

Enter each variable in the format expected by the generated secrets file. Do not paste secrets into config/deploy.yml, shell history that is shared with other administrators, issue trackers, or chat logs.

Generate SECRET_KEY_BASE

From the repository, generate a random Rails secret with:

bin/rails secret

Copy the resulting value into SECRET_KEY_BASE in .kamal/secrets. Generate a fresh value for a new installation; do not reuse a key from an unrelated Rails application.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Generate VAPID keys for browser notifications

Fizzy’s notification setup uses VAPID credentials. Open a Rails console in the project and run:

vapid_key = WebPush.generate_key
puts "VAPID_PRIVATE_KEY=#{vapid_key.private_key}"
puts "VAPID_PUBLIC_KEY=#{vapid_key.public_key}"

Copy the two printed assignments into .kamal/secrets. Keep the private key confidential. If you regenerate the pair later, treat it as a credential change and verify notification behavior after redeploying.

Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)

Configure email delivery

Fizzy needs SMTP settings to deliver account and notification email. Set the sender and connection values in the environment configuration used by your deployment:

  • MAILER_FROM_ADDRESS — the address recipients should see as the sender.
  • SMTP_ADDRESS — the SMTP server name supplied by your mail provider.
  • SMTP_USERNAME — the provider’s SMTP login.
  • SMTP_PASSWORD — the matching password or token.

The username and password belong in .kamal/secrets; keep them out of the clear-text deployment file. The provider may require additional account verification or a sender-domain setup that is outside Kamal itself.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

After deployment, test a real invitation or notification. A successful container start does not prove that outbound mail is accepted. If messages do not arrive, check the provider’s delivery log, confirm the SMTP address and credentials, and verify that the VPS network permits the provider’s SMTP connection.

Choose how Fizzy stores files

Option 1: local disk

Local disk is the production default. The Docker guide identifies /rails/storage as the standard storage path. Because a container filesystem can disappear when a container is replaced or restarted, mount a persistent volume for that path. Without a persistent volume, attachments and other locally stored files are vulnerable to loss during container lifecycle operations.

Local storage is straightforward when one VPS owns the application and you have a dependable disk-backup plan. Include the storage volume in your backup scope, and test that a backup can be restored to a usable filesystem.

Option 2: S3-compatible object storage

For object storage, set ACTIVE_STORAGE_SERVICE=s3 and supply the required connection values:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • S3_ACCESS_KEY_ID
  • S3_BUCKET
  • S3_REGION
  • S3_SECRET_ACCESS_KEY
  • CSP_CONNECT_SRC

Depending on the provider, also set S3_ENDPOINT and S3_FORCE_PATH_STYLE=true. The deployment documentation lists checksum-related settings as well; apply the settings required for your chosen S3-compatible service rather than assuming every provider uses the same behavior.

Object storage separates uploaded files from the VPS, which can simplify host replacement and capacity planning. It adds another service, another set of credentials, and a policy decision about bucket access and retention. Keep the access key and secret in .kamal/secrets, and ensure CSP_CONNECT_SRC permits the storage endpoint that browsers must contact.

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
Storage choice Configuration Operational consequence
Local disk Default service; persist /rails/storage with a host volume Simple single-host setup, but backups must include the volume and host loss affects stored files
S3-compatible storage ACTIVE_STORAGE_SERVICE=s3 plus S3 credentials, bucket, region, CSP setting, and provider-specific endpoint options Files live outside the VPS, but you must manage object-storage credentials, bucket policy, endpoint behavior, and its separate backup or retention plan

Decide whether to enable multiple accounts

Self-hosted Fizzy defaults to one account with unlimited users in that account. Set MULTI_TENANT=true only when the instance should permit multiple accounts. This is an instance-wide behavior choice, not a per-user toggle.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
env:
  clear:
    MULTI_TENANT: "true"

If your installation serves one team or organization, leave the setting at its default. If several independent accounts will share the instance, enable it before inviting users and document which account owns each piece of data.

Run the first deployment

Review the host, hostname, URL, secrets, mail, storage, and tenancy settings before connecting to production. Then run the initial setup command from the repository:

bin/kamal setup

For a fresh host, Kamal performs the server setup, builds the application container, configures it, and starts it. The command may take longer than later releases because it is preparing the machine as well as launching Fizzy.

When setup completes, open the configured HTTPS hostname. Confirm that:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • the certificate is valid for the hostname users enter;
  • the page loads through the public URL rather than an address or port intended only for administration;
  • generated links use the same HTTPS hostname;
  • the initial account can be created or accessed as expected;
  • a test email is delivered; and
  • an uploaded attachment remains available after a container restart or redeployment.

The last check is especially important with local storage: it demonstrates that the persistent volume is mounted at the path Fizzy expects, not merely that an upload worked inside one temporary container.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Update a Kamal-hosted Fizzy instance

  1. Make the desired application or configuration change in your fork.
  2. Commit the change so the deployment source is reproducible.
  3. Pull the intended branch or commit on your deployment workstation.
  4. Run bin/kamal deploy.

Use bin/kamal deploy for subsequent releases rather than repeating the first-host setup procedure. Before a change that affects storage, SMTP, proxy settings, or secrets, record the previous working values so you can restore them if the new deployment fails.

After each update, perform a short smoke test: load the public site, sign in, open an existing board or card, create a test notification when appropriate, and verify that attachments remain present. A successful deployment command means Kamal completed its rollout; it does not replace application-level verification.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Backups and routine operations

Back up the data that is actually in use

With local storage, back up the persistent volume containing /rails/storage as well as the application’s database and any other state your installation maintains. A VPS snapshot that excludes the mounted volume is not a complete Fizzy backup.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

With S3-compatible storage, include the bucket or an equivalent object-retention strategy in your operational plan. Store backup credentials separately from the production secrets file, and periodically perform a restore test rather than assuming that an untested copy is usable.

Protect the deployment materials

  • Restrict SSH access to the administrators and automation that need it.
  • Keep .kamal/secrets out of Git and out of public issue attachments.
  • Limit access to the VPS, persistent disk, object-storage bucket, and SMTP account independently.
  • Record which hostname, storage mode, mail provider, and tenancy mode the instance uses so a replacement administrator can reproduce the deployment.

Troubleshooting by symptom

Kamal cannot connect to the VPS

Check DNS or the address in servers/web, confirm that the SSH port is reachable, and test the same identity manually from the deployment workstation. If you use a non-root account, verify that ssh/user matches the account that can run Docker or has the required administrative access. Fix the SSH or host configuration before changing application settings.

The site opens on the wrong hostname or creates bad links

Compare the DNS record, proxy/host, and env/clear/BASE_URL. The host value should be the public name, while BASE_URL must include the correct https:// scheme and hostname. Redeploy after correcting the values.

HTTPS does not work

Make sure the hostname resolves to the VPS and that SSL has not been disabled accidentally. proxy/ssl: false is appropriate only when another proxy intentionally terminates TLS. If that is your design, verify the front proxy’s certificate and forwarding configuration instead of expecting Kamal to issue the certificate.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Email is not delivered

Verify all four mail variables, especially that the SMTP username and password are present in .kamal/secrets and were included in the latest deployment. Check the mail provider’s logs for rejected authentication, an unverified sender, or blocked delivery. A healthy web page does not demonstrate healthy SMTP.

Attachments disappear after a redeploy

For local storage, inspect the volume mounted at /rails/storage. If the path is inside the ephemeral container filesystem, files will not survive replacement. If you intended to use S3, confirm ACTIVE_STORAGE_SERVICE=s3, bucket and region values, credentials, endpoint options, and the content-security policy setting.

Browser notifications do not work

Confirm that both VAPID values were generated as a matching pair and placed in .kamal/secrets without accidental whitespace or truncation. Redeploy after correcting them, then retry notification permission and delivery in the browser.

Choosing a VPS and operating model

Decision factor Questions to answer before choosing
SSH and Docker Can you administer the host over SSH, and does it run the Docker version and privileges Kamal requires?
Persistent disk Can the host provide a durable volume for /rails/storage, and can that volume be backed up or restored?
Hostname and TLS Can DNS point your hostname to the host, and will Kamal or your front proxy own certificate termination?
Outbound SMTP Does the network allow connections to your transactional mail provider, and can you authenticate the sender?
Object storage If you do not want local files, can the provider supply an S3-compatible endpoint, bucket, region, and appropriate access controls?
Expected load How many users and accounts will be active, how many attachments will be stored, and how much notification email will be generated?

These questions are more useful than a generic “minimum VPS size,” because official Fizzy deployment guidance does not publish a universal numeric CPU or memory requirement. Monitor the actual installation and resize when user, attachment, or notification demand makes the current host unsuitable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Deployment checklist

  • Forked the official repository and ran bin/setup.
  • Initialized Kamal with kamal init or the repository’s wrapper workflow.
  • Set servers/web and, when needed, ssh/user.
  • Set proxy/host, selected the correct SSL behavior, and set the complete HTTPS BASE_URL.
  • Created .kamal/secrets with the Rails, VAPID, and SMTP credentials and kept it untracked.
  • Configured MAILER_FROM_ADDRESS and SMTP_ADDRESS.
  • Selected local persistent storage or completed the S3-compatible configuration.
  • Enabled MULTI_TENANT=true only if multiple accounts are required.
  • Ran bin/kamal setup for the first release.
  • Tested HTTPS, generated links, email, notifications, uploads, and persistence.
  • Committed later changes and used bin/kamal deploy for updates.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.