Zum Inhalt der Seite gehen


If you want all the gory details on how I migrated my Citation Needed newsletter from #Substack to self-hosted #ghost here they are:
citationneeded.news/substack-t…

Happy to try to help anyone else making this move!

#SubstackMigration #CitationNeeded

Dieser Beitrag wurde bearbeitet. (9 Monate her)
Als Antwort auf Molly White

Nice to you featured today in the Washington Post story about Substack .
Als Antwort auf Molly White

Only tangentially related, but there is this other really great band also called Ghost, fronted by Masaki Batoh:
Als Antwort auf Molly White

Shared here and on LinkedIn. I admit to skimming the technical details. 🙂

Also, I had to do a Google Image search to figure out what the preview image had to do with the article:

commons.wikimedia.org/wiki/Fil…

ETA: Most of the #Substack tagged posts I can see here are about #SubstackMigration, while most posts with that tag on LinkedIn are from people (still) hosting on that platform. Not surprising

Dieser Beitrag wurde bearbeitet. (9 Monate her)
Als Antwort auf Molly White

Ah, I looked but didn't see it in the small print under the footnotes 🙂
Als Antwort auf Molly White

thanks for the thorough explanation of the process! Cool that you now have a much greater control of your non-a16z setup!
Als Antwort auf Molly White

thanks for sharing! Can I ask what you're doing for footnotes on Ghost? This has been the bane of my Ghostly existence: adding a new footnote requires renumbering, and for the footnote to be linkable it needs to be either an HTML or markdown card (so I can't just cut-and-paste the wysiwyg test).
Als Antwort auf The Nexus of Privacy

@thenexusofprivacy it's pretty janky lol. i just write either [#fn-uniqueidimadeup] or [#ref-uniqueidimadeup] in-text depending on whether it's a footnote or a reference, and then i put an accompanying [fn/ref-uniqueidimadeup] at the bottom of the page with the footnote/reference content.

then when i'm about ready to publish, i run a little script to go through and grabs the rich-text, changes it to a HTML card, inserts the footnote, and numbers everything for me.

Als Antwort auf Molly White

I'm guessing that DO hosts a lot of sites that you don't like. Probably a lot more than Substack.
Als Antwort auf Molly White

- Read the whole post. Thank you for the detailed ebbs and flows of the migration with sharing so many resources.

I too, am a font nerd. So I was curious about that! I’ve created some Ghost themes for some clients and fonts always give me some issues. If you have any other resources that helped you I would be grateful!

Glad to see you’ve done away with Substack and their blatant disregard to moderate (or lack there of) hate speech. Ghost is great!

Als Antwort auf frederick :a_thisisfine:

@offbrands i didn't have too much trouble with fonts, besides trying to use a variable font and ending up with a very wobbly look on linux. swapped it out with the other version and it resolved the problem

hachyderm.io/@buherator@infose…

Als Antwort auf Molly White

- Woah! That font from the screenshot is crazy. Looks like one that would be used for Halloween or ghost stories lol. Thanks for the extra info!
Als Antwort auf Molly White

congrats on the move! one small thing you might want to fix (if you’re not already aware): the horrifying lots-of-plans page is still accessible to new subscribers via ‘Sign in’ -> ‘Don’t have an account? Sign up’, which takes you to a modal dialog with all the crap instead of the nice subscribe page :o
Als Antwort auf eta

@eta yeah, it's on the to-do — unfortunately, all the sign up/sign in/account modal stuff is part of the ghost monorepo and not modifiable through the theme, so i backburnered it
@eta
Als Antwort auf Molly White

Wow! Thank you for writing that detailed explanation! This is great for anyone moving to Ghost!!

I migrated from Substack over to WordPress back in November… but I don’t have any of the complexity you did! (For example, mine is free so no payment processing or anything.)

Als Antwort auf Molly White

reading the footnote, bunny.net has been my replacement for Cloudflare. They’re smaller and don’t have product replacements for everything Cloudflare does but it’s at least worth a look.
Als Antwort auf Josh Pitts

@ausernamedjosh ehh, it's hard to confidently say i would have done as well getting off the ground if i had self-hosted from the start
Als Antwort auf Molly White

just waiting on one more migration from another writer and I'm out!
Als Antwort auf Molly White

I am not in the newsletter sending game, I never used Substack, but wow... this is fun to read and provided lots of (geeky) insights moving to Ghost as a publishing platform.
If you want to know about settings up Ghost incl. nitty-bitty details to redirects, payments (via Stripe), Mailgun and a lot more, this one is for you!
Als Antwort auf Molly White

I thought it was neat you were doing all this on the same size droplet at Digital Ocean that I have, … then I saw you had to double it. 😂
Dieser Beitrag wurde bearbeitet. (9 Monate her)
Als Antwort auf Marcos Huerta

@marcoshuerta honestly now that i improved the caching it might be able to squeak by on the original size droplet, but it's nice to have a little headroom.
Als Antwort auf Molly White

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

I started up on ghost two days ago after reading the Platformer story.

I'm wildly small on Substack, but Ghost looks better anyways.

I'll start out on the platform, but after reading your post, might self-host.

Dieser Beitrag wurde bearbeitet. (9 Monate her)
Als Antwort auf Molly White

"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 -> 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.

Als Antwort auf Futurist Jim Carroll

@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
Als Antwort auf Molly White

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.
Als Antwort auf Molly White

Good call. Substack is becoming a Nazi bar, just like the bird site.
Als Antwort auf Molly White

it genuinely makes me so happy that you can have separate footnotes and references now 🥰
Als Antwort auf Molly White

I'm seeing it on desktop Vivaldi and Curl too. Maybe something below will help?

```
❯ dig citationneeded.news
...
citationneeded.news. 40 IN A 172.67.155.170
citationneeded.news. 40 IN A 104.21.72.231

❯ curl -v citationneeded.news
* Trying 172.67.155.170:443...
* Connected to citationneeded.news (172.67.155.170) port 443 (#0)
* ALPN: offers h2
* ALPN: offers http/1.1
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
* error:1404B42E:SSL routines:ST_CONNECT:tlsv1 alert protocol version
* Closing connection 0
curl: (35) error:1404B42E:SSL routines:ST_CONNECT:tlsv1 alert protocol version
```

Als Antwort auf Molly White

@dmakovec
Most likely you're looking at a testing error rather than a cert error? (at least as far as the curl stuff goes)

You can force a specific IP address to test both the results from DNS with this command:

curl -kvsI --resolve citationneeded.news:443:172.67.155.170 citationneeded.news/

Both addresses give "* SSL certificate verify ok." for me.

Als Antwort auf Scott Frazer

@dmakovec

It _could_ be an outdated version of curl or openssl/LibreSSL. I tested with:
curl 8.4.0 (x86_64-apple-darwin23.0)
libcurl/8.4.0 (SecureTransport)
LibreSSL/3.3.6
zlib/1.2.12
nghttp2/1.55.1
Release-Date: 2023-10-11

Als Antwort auf Scott Frazer

@sfrazer434 whatever problem it was appears to be server-side and intermittent as it started working again on all clients (mobile and desktop) a couple hours ago) 🤷🏼‍♂️
Als Antwort auf Dan 🏳️‍🌈🇦🇺☁️

Ooo it suddenly worked on my browser, but not curl. Diff seems to be the browser is now hitting 104.21.72.231 (works) whereas Curl is still hitting 172.67.155.170 (doesn't)
Als Antwort auf Molly White

This is a great writeup! I'm curious if there's a reason you picked Ghost over WordPress? (This is not a trick question, I have no horse in that race.)
Als Antwort auf jwz

@jwz buried in the footnotes: "In fairness, it is possible to self-host WordPress, which is also open-source. It is, however, also written in PHP — a language I am much less comfortable with and enjoy much less than Ghost's JavaScript. WordPress is also quite a bit older, and, in my opinion, somewhat bloated with features I don't and won't need."
@jwz
Als Antwort auf Molly White

@jwz Molly, didn’t Ghost begin life as a clone of WordPress? I could be misremembering given it’s JavaScript as you point out or they rewrote it as they went along?

Does it produce static HTML or are pages all generated when requested?

@jwz
Als Antwort auf Rob Fahrni

@fahrni @jwz hmm, I used it like a decade ago and I remember it being JS then.

It does not produce static HTML.

Als Antwort auf Molly White

Amazing post, thanks for going into so much detail! One thing I noticed though is a couple of example URLs are overflowing creating extra space on the right. So when you read it on mobile you can accidentally keep scrolling to right when trying to scroll down which is a bit annoying on a long article like this
Als Antwort auf Molly White

Ugh this was clearly quite painful. Thanks a lot for sharing! Glad it was *possible* to migrate at least, even if it was hard.
Als Antwort auf Molly White

this was a fascinating read. Do you know if there is an easy migration from a paid Ghost plan to self hosted? I’m thinking letting them deal with the difficult parts and then switching to self-hosted could be a smoother ride?
Als Antwort auf Molly White

I don't see how you're handling TLS certificate procurement and renewal? 👀
Als Antwort auf Mohammed S. Al Sahaf

@MohammedSahaf it's all set up out of the box with Ghost and Let's Encrypt! Didn't have to do anything to get it set up.
Als Antwort auf Molly White

Thank you Molly, I've been self-hosting Ghost via Cloudron, and your post helped me discover some email deliverability issues!!

Diese Webseite verwendet Cookies. Durch die weitere Benutzung der Webseite stimmst du dieser Verwendung zu. https://inne.city/tos