Google has a help page about this topic.
Most of the page talks about what you can do if you have, or potentially have, duplicated content within your site, but it has this to say about cross site duplication:
Syndicate carefully: If you syndicate your content on other sites, Google will always show the version we think is most appropriate for users in each given search, which may or may not be the version you'd prefer. However, it is helpful to ensure that each site on which your content is syndicated includes a link back to your original article. You can also ask those who use your syndicated material to use the noindex meta tag to prevent search engines from indexing their version of the content.
So, reading this I see two things you can do:
- Use
noindex
on the non canonical version(s) of your article.
- Add a link back to the canonical version of your article on all other places you have published it.
Which post you decide is canonical is up you, but it may be influenced by whether you can get reddit to add noindex
to the content there. It would probably be easier to make the reddit version the canonical version and noindex
the version on your blog where you have full control over how the content is published.
It may be actually better to make the post on your site a recap or expansion of the reddit post anyway so that it includes some original content - but that's probably purely a matter of style.