COMMENT "HOST"Posted Oct 19, 2026
Turn free GitHub tools into a $400/mo service
Grab a free open-source tool, host it once for a local business, and charge a setup fee plus monthly. You never write code, you run it for them.
01Quick steps
- 1Pick a tool. Start with ListMonk (email, replaces Mailchimp): github.com/knadh/listmonk. Others: Postiz (social scheduler) github.com/gitroomhq/postiz-app, WhisperX (transcription) github.com/m-bain/whisperX.
- 2Host it. Deploy ListMonk to a cheap server, about $5/mo on Railway (railway.app) or a $6 DigitalOcean droplet. Both have one-click or Docker installs in the repo's README.
- 3Find a client. Local businesses sitting on 1,000+ old customers: dentists, HVAC, med spas, gyms, salons. They have the list and no system to use it.
- 4Deliver. Import their old customer list, write 3 to 5 win-back emails (a discount or a 'we miss you' offer), schedule them.
- 5Price it. Around $750 to set it up, then around $400/month to keep it running and send campaigns.
02Your ready to use prompt
Hi [name], I help [dentists] win back old patients with automated email. You're probably sitting on 1,000+ past customers who'd come back with the right nudge. I set the whole thing up and run it for you, nothing for you to touch. Want a quick example?
03Full tutorial
You are going to run a professional email marketing system for a local business so they never have to touch it. The software is ListMonk, a free open source tool that does what Mailchimp does (github.com/knadh/listmonk). You host one copy per client, load their old customer list, write and schedule win-back emails, and bill a one time setup fee plus a monthly fee. You do not write code. You click through a hosted setup, paste in some settings, and upload a spreadsheet. Success at the end of this guide means one live ListMonk site, connected to a real email sender, with a client's list imported and a campaign scheduled.
You need two accounts. First, a host to run ListMonk: go to railway.com and sign up with GitHub or email (Railway's Hobby plan is a 5 dollar per month minimum, and that 5 dollars comes back to you as usage credit, so a small ListMonk plus its database typically costs about 5 to 20 dollars per month). Second, an email sender: go to aws.amazon.com, click Create an AWS Account, and add a card (you are charged only for what you send, and sending through Amazon SES is about 0.10 US dollars per 1,000 emails). If AWS feels heavy, a simpler paid SMTP like Brevo or Mailgun also works and plugs in the same way later. Success means you can log in to both railway.com and the AWS Console.
In your browser open railway.com/template/listmonk (this is the official template that the ListMonk and Railway teams maintain). Click Deploy Now (or Deploy), confirm the project, and wait about two to four minutes. The template creates two services for you automatically: a PostgreSQL database (where subscribers and campaigns live) and the ListMonk app itself. When both service tiles turn green in the Railway dashboard, click the ListMonk service, open its Settings tab, find Networking, and click Generate Domain. Railway gives you a public web address that looks like yourprojectname.up.railway.app. Success means clicking that address opens a ListMonk login page.
ListMonk has no default username or password on purpose, so the very first person to open the site creates the Super Admin account. Open your Railway domain, and on the first visit it will prompt you to set an admin email and a strong password. Pick a password manager generated password and save it. If the page shows a normal login box instead of a setup box, your database may still be starting, so wait a minute and refresh. Success means you are inside the ListMonk admin dashboard, which shows a left sidebar with Dashboard, Lists, Subscribers, Campaigns, and Settings.
In ListMonk click Settings in the left sidebar, then the General tab. Find the field named Root URL and paste your full Railway domain starting with https:// and with no trailing slash, for example https://yourprojectname.up.railway.app. This single setting is what makes unsubscribe links, tracking, and hosted images point to the right place, so getting it wrong breaks every email. Click Save at the bottom. ListMonk may ask to restart or reload, which is normal. Success means the Root URL is saved and matches exactly the address in your browser bar.
Email providers will not let you send as someone you do not own. In the AWS Console use the top search bar to find SES (Simple Email Service) and open it. First choose a Region in the top right, for example US East (N. Virginia) us-east-1, and remember it. In the left menu click Identities, then Create identity. The cleanest choice is Domain if the client owns one (you then add a few DNS records they give you access to, or that you request from them). If they have no domain, choose Email address and verify a single from address like hello@theirbusiness.com by clicking the link AWS emails to it. Success means your identity shows a green Verified status.
Every new SES account starts in a sandbox that only lets you send to addresses you have verified, and caps you at a low daily number. To email a real customer list you must request production access. In the SES console open Account dashboard, find the sandbox banner, and click Request production access (or Get set up). Fill the short form: pick Transactional or Marketing, enter your Railway site as the website, and in the use case box write one honest paragraph such as that you send opt in win back emails for a local business to its existing past customers, with a working unsubscribe link in every email. Approval usually lands within 24 hours. Success means the dashboard no longer says Sandbox. Until then, send only to addresses you have verified.
ListMonk connects to SES over SMTP, which needs a special username and password that are not your AWS login. In the SES console left menu click SMTP settings. Note the SMTP endpoint shown for your region, for example email-smtp.us-east-1.amazonaws.com, and the port 587. Click Create SMTP credentials, accept the IAM user it offers to make, and on the final screen click Download credentials. That file holds an SMTP username and SMTP password you can never see again, so save it in your password manager now. Success means you have four things written down: the host, the port 587, the SMTP username, and the SMTP password.
Back in ListMonk go to Settings, then the SMTP tab, and enable the server. Fill in Host with your SES endpoint (for example email-smtp.us-east-1.amazonaws.com), Port 587, set Auth protocol to LOGIN, and paste the SMTP username and SMTP password from the last step. Set the TLS option to STARTTLS. Save. Then use the Send test email button (or create a one person test list of your own address) to send yourself a message. Check your inbox and your spam folder. Success means the test email arrives and shows the correct from name and a working unsubscribe link at the bottom. If it bounces, the usual cause is still being in the SES sandbox, or a typo in the SMTP password.
Ask the client for their past customer list as a CSV spreadsheet with at least an email column and ideally a name column. Clean it in a spreadsheet first: one email per row, remove blanks and obvious junk. In ListMonk click Lists, New, and name it for example Past Customers, keeping it a single opt in or double opt in list. Then click Subscribers, Import, choose your CSV, map the email and name columns when asked, assign it to the list you just made, and start the import. ListMonk shows a running count. Success means the Subscribers page shows the imported people with status enabled, and the count roughly matches the rows in the spreadsheet. Only import people the business actually did business with, never bought or scraped lists.
Write three to five short emails that bring old customers back, each with one clear offer, for example a we miss you note, then a discount code, then a last chance reminder. In ListMonk click Campaigns, Create new, give it a name and subject line, pick the Past Customers list, and choose the rich text editor so a non coder can type normally. Write the first email, add the offer, and in the Send later option pick a date and time, then schedule it. Repeat for each follow up, spacing them three to five days apart. Be aware of a real limit: ListMonk sends scheduled broadcast campaigns, it does not run a fully automatic drip based on each person's behavior, so you schedule each of the three to five emails yourself. Success means your campaigns list shows several scheduled campaigns with future send times.
The best clients are businesses sitting on a thousand or more past customers with no system to reach them: dentists, HVAC and plumbing, med spas, gyms, salons, auto shops. Build a short list from Google Maps in your town, favoring places that have been open a few years (they have a big back catalog of customers). Find the owner's name and direct email from their site or their Google listing. Keep a simple spreadsheet of name, business, email, and status. Success means ten named prospects with a real contact for each. Send the owner a short, plain message, for example: Hi [name], I help [dentists] win back old patients with automated email. You are probably sitting on a thousand or more past customers who would come back with the right nudge. I set the whole thing up and run it for you, nothing for you to touch. Want a quick example?
Charge a one time setup fee of around 750 US dollars to deploy their ListMonk, connect sending, import and clean the list, and write the first campaign. Then charge around 400 US dollars per month to host it, send the ongoing campaigns, and report results. Your real costs are small: roughly 5 to 20 dollars per month to Railway and about 0.10 dollars per 1,000 emails to Amazon SES, so the margin is almost all yours. Collect payment with a simple invoice tool like Stripe or Wave. Each month, send one or two fresh campaigns and email the owner the open and click numbers from the ListMonk dashboard so they see the value. Success means a paying client whose system you quietly run, and a repeatable offer you can sell to the next business on your list.
Each of the 8 repos = a different service you can sell the same way (scheduling, transcription, etc.).