Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesThe 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.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
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.
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/userinconfig/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
- 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.
Fork the repository and initialize the project
- Fork the official Fizzy repository. Use the fork as the source for your deployment, configuration changes, and any future updates.
- Clone your fork and enter it. Work from the repository root for every command below.
- Run the project setup. Execute
bin/setup. This prepares the application according to the repository’s setup routine. - Initialize Kamal. Run
kamal init. The repository also provides abin/kamalwrapper; 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.
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 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.
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_BASEVAPID_PUBLIC_KEYVAPID_PRIVATE_KEYSMTP_USERNAMESMTP_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.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →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
- 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.
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:
Recommended Free Tools
S3_ACCESS_KEY_IDS3_BUCKETS3_REGIONS3_SECRET_ACCESS_KEYCSP_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
- 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.
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:
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute- 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.Update a Kamal-hosted Fizzy instance
- Make the desired application or configuration change in your fork.
- Commit the change so the deployment source is reproducible.
- Pull the intended branch or commit on your deployment workstation.
- 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
- 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.
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/secretsout 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.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Quick Recap
Deployment checklist
- Forked the official repository and ran
bin/setup. - Initialized Kamal with
kamal initor the repository’s wrapper workflow. - Set
servers/weband, when needed,ssh/user. - Set
proxy/host, selected the correct SSL behavior, and set the complete HTTPSBASE_URL. - Created
.kamal/secretswith the Rails, VAPID, and SMTP credentials and kept it untracked. - Configured
MAILER_FROM_ADDRESSandSMTP_ADDRESS. - Selected local persistent storage or completed the S3-compatible configuration.
- Enabled
MULTI_TENANT=trueonly if multiple accounts are required. - Ran
bin/kamal setupfor the first release. - Tested HTTPS, generated links, email, notifications, uploads, and persistence.
- Committed later changes and used
bin/kamal deployfor 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.




