If you want all the gory details on how I migrated my Citation Needed newsletter from #Substack to self-hosted #ghost here they are:
https://citationneeded.news/substack-to-self-hosted-ghost/
Happy to try to help anyone else making this move!
If you want all the gory details on how I migrated my Citation Needed newsletter from #Substack to self-hosted #ghost here they are:
https://citationneeded.news/substack-to-self-hosted-ghost/
Happy to try to help anyone else making this move!
@molly0xfff This is wildly funny because I'm literally running the migration at the very moment that your post crossed my feed. If all goes well, I'll be at ghost.jimcarroll.com
@molly0xfff "xNext up was email. In order to send bulk emails from Ghost, you need to use Mailgun. Mailgun is actually the priciest part of my setup, at $75/month"
---> Run, don't walk to Sendy -> https://sendy.co
Do what you are using Mailgun but for pennies, via Amazon SES (their bulk email service). I run my newsletter and other things off it; its very straightforward, has a great interface, and ALL the options.
@molly0xfff Got it. That's sad; Sendy is a wonderful system. You might explore it just to understand it; might come in useful at some other time.
@jimcarroll would need to do a lot of additional work to integrate a separate mailsender — Ghost has built-in Mailgun support and that's it
@molly0xfff Update - it looks like I can just go straight to Amazon SES. Since I'm already using that and have DMARC setup, I'm going to explore this.
So in the minutes since I've started reading your post, I've spun up an Ubuntu server at Vultr and will give it a go to try a self-hosted Ghost.
Will report back!
https://stackoverflow.com/questions/74680319/how-can-i-use-amazon-ses-with-ghost
@markstos @molly0xfff So I can't use SES for bulk? That kills my initiative to do a standalone then. No sense paying Mailgun $$$$ for what I can do for pennies.
@jimcarroll @molly0xfff #GhostBlog has separate configuration for transaction email and bulk email.
If you want to send out both through Mailgun, you can send the transactional emails out through the Mailgun SMTP interface.
You can send (only) transaction emails out through SES also via SMTP.
The Ghost project is open supporting other providers for bulk email, but first an "adapter" needs to be created that abstracts the details for each provider.
Ghost also uses Mailgun for analytics.
@jimcarroll @molly0xfff That’s right. I worked on supporting others a couple of years ago and even submitted a code change for it. That didn’t fit their standards and was rejected. https://github.com/TryGhost/Ghost/pull/14984
I didn’t pick it back up because Mailgun has a free plan up to 5,000 emails per month, and I use that.
I also use SES at work and Mailgun is a nicer product to use.
@markstos @molly0xfff @markstos
@molly0xfff
I've now got a working self-hosted site at https://daily.jimcarroll.com ... managed to get my Substack import working fine. The biggest issue was tuning the server size to accept the import of my file - 897MB.
I'm struggling with the mailgun config though; I'm not familiar with JSON and have tried to run this through a few JSON validators without luck.
@molly0xfff - thanks for your pointer to Ghost - was never really aware of it and I will build out on it now. To build mine - I'm a huge fan of Runcloud.io for server builds - and they had this handy document that made the process all quite straightforward.
https://blog.runcloud.io/ghost/
The nice thing is it configs my server with fail2ban and other hardening, as well as pretty seamless GUI to the rest of the server config.
If anyone can offer up thoughts on my JSON formatting here it would be helpful. This version crashes. (I'm using the basic one for now)
@markstos @molly0xfff I'm less concerned with getting the specifics of the mailgun credentials right for now, and simply getting my JSON right.
gives me these errors.
I've tried eliminating { etc .. but whatever I'm coming up with causes Ghost to fail to start.
Full JSON:
{
"url": "https://daily.jimcarroll.com",
"server": {
"port": 2368,
"host": "127.0.0.1"
},
"database": {
"client": "mysql",
"connection": {
"host": "127.0.0.1",
"user": "ghost",
"password": "xxxxxx",
"database": "xxxxx"
}
},
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.us.mailgun.org",
"port": "587",
"secure": true,
"auth": {
"user": "xxxxxx",
"pass": "xxxxxx"
}
}
}
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/home/ghost/webapps/daily/content"
}
}
@jimcarroll @molly0xfff Here's how my config differs:
1. Add "logger": true, to options. I guess it adds more logging.
2. host: "smtp.mailgun.org". Not sure if that makes a difference.
3. "port": 465, Notice no quotes as well. Not sure if these differences should matter.
If you are getting JSON validation errors, you should post those, it looks OK to me.
@markstos @molly0xfff We probably need to take @molly0xfff out of this....
(-;
@jimcarroll @molly0xfff Ah, add a comma before "logging".
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.