steps i took to spin up a new discourse instance at on digitalocean

the AMC 2020 slack is going away on aug 1, so the community has been encouraged to self-host. i am spinning up a new discourse instance.

  • new domain through i browsed search results for “mycelium” for a very long time and found and loved it. i’m doing it! I’M GOING TO DO IT RIGHT NOW
  • anyone can make a .garden domain .GARDEN Domain Names –
  • open up my digital ocean account that got closed last year =X
  • get confused about whether or not i should make a new account
  • get confused about whether or not i should use my old account with a past due balance but create a new shared account to manage. i see myself able to “Switch accounts” to a different group account and i’m confused about that.
  • eh i just paid the $39.
  • uhhh made a new project. that’s DIFFERNT from switching accounts. whatever i’ll figure it out later.
  • new droplet
  • container distributions
  • click see al
  • searched for discourse
  • opened in new page cuz it has directions, which is confusing because it’s still within my account dashboard. i want instructions on a diff page oh well
  • oh it is
  • choose a plan
    • default: “Shared cpu” ok
    • default: $40/mo * $ 40 /mo

$0.060 /hour

8 GB / 4 CPUs 160 GB SSD disk 5 TB transfer

  • eh going down to the $20 * $ 20 /mo

$0.030 /hour

4 GB / 2 CPUs 80 GB SSD disk 4 TB transfer

  • clicked the clobk storage one but want to add later if necessary, trying to exit out of it, can’t. gonna move on.

  • confusd about VPC :: DigitalOcean Product Documentation

  • i guess i chose a data center location

  • went backwards and chose the $10/mo one because can always go bigger later right? $ 10 /mo
    $0.015 /hour
    2 GB / 1 CPU
    50 GB SSD disk
    2 TB transfer

  • default: automatically configure and mount

  • select additional options: default all off.

    • left IPv6 unchecked
    • left user data unchecked
    • checked Monitoring cuz… i dunno
  • Authentication

    • i have an existing ssh key uploaded to digital ocean so i used that
  • Finalize And Create

  • Enable backups - i left it unchecked haha

  • can’t click buttton, says ssh key, but i have one checked. haha this is a bug on their website, it’s cuz i have nothing entered for my block storage volume. i clicked delete volume. ok now i can make it.

  • MADE

  • waitning

  • while i’m waiting, i’m looking at

Blogs and Forums


by DigitalOcean

Version 2.5.0.beta3

OS Ubuntu 18.04


Create Discourse Droplet


Discourse is the 100% open source discussion platform built for the next decade of the Internet. Use it as a mailing list, discussion forum, long-form chat room, and more!

Software Included

Package Version License
Discourse 2.5.0.beta3 GPL 2
Docker CE 18.06.1 Apache 2

Getting started after deploy

Before you begin with your Discourse 1-Click App, you will need:

  • Credentials for an SMTP server . These credentials are critical for account creation and for receipt of notifications in Discourse.If you have an existing mail server, you can use those credentials. If you don’t have or want to run a mail server, there are several providers where you can set up an SMTP account, such as SparkPost, Mailgun, Mailjet, or Mandrill.
  • A hostname (domain or subdomain) . You’ll use this for your forum; you cannot use an IP address with Discourse.
  • An email address to use for the Discourse admin account.Additionally, Discourse requires at least 2GB of RAM, so make sure to choose a plan with enough memory during creation.After creating a Discourse One-Click Droplet, you’ll need to connect to the Droplet via SSH to complete the setup. ssh root@use_your_droplet_ip Once you connect, you’ll be prompted to complete Discourse’s configuration by entering the three details mentioned earlier: an email address for the admin account, the domain or subdomain for Discourse, and the SMTP server credentials.
To get started, the following configuration details will be required.

- Email Address for the Discourse Admin Account
- The hostname (domain or subdomain) you will use for Discourse
- Details for the SMTP server your Discourse install will use to send email
- Email Address to use if you wish to set up a LetsEncrypt SSL certificate

If you want to skip the initial Discourse setup, you can press CTRL+C . The next time you log in, you’ll be prompted again. Alternatively, you can re-run the setup script any time by running bash /opt/digitalocean/ .

Once you have provided the requested information to the setup script it will take approximately 10 minutes for the script to install and configure the latest version of Discourse on your droplet.

Once you’ve completed the initial Discourse setup, you can create a Discourse account on the new forum by visiting the hostname you chose in your browser.

Enabling HTTPS

We strongly recommend using SSL to secure the connection between the Discourse server and the clients connecting to it. Discourse provides the following resources on setting up SSL:

API Creation

In addition to creating a Droplet from the Discourse 1-Click App via the control panel, you can also use the DigitalOcean API.

As an example, to create a 4GB Discourse Droplet in the SFO2 region, you can use the following curl command. You’ll need to either save your API access token to an environment variable or substitute it into the command below.

curl -X POST -H 'Content-Type: application/json' \
     -H 'Authorization: Bearer '$TOKEN'' -d \
     '{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"discourse-18-04"}' \

ok so

  1. smtp server

    • got overwhelmed looking at pricing tabs for all of them. don’t know how to choose. chose mailchimp because my friend works there lol
  2. a hostname

    • yep
  3. an email address to use as the admin

    • uhhh should i use my own gmail address uhhhhh
    • uhhhhh should i make an admin at mycelium dot garden address lol? uhhh how about flux at, in further honor of emergent strategy? i kind of love flux at instead of admin at lol
    • uhhhhhhhhhhhhhh should i host it at protonmail hahahahahahahahahaahhaahahahahahahah
    • upgraded protonmail to “professional” account HAHA prorated cuz i am already a paid single account user
    • i get 2 domains now
    • why did i do this

jk it’s $20/month for the service formerly known as Mandrill, which is now Mailchimp’s “transactional email service”

Transactional Email is a paid Mailchimp add-on which means you need a Standard plan (or higher) to use it. We’ve included the Standard plan for you that comes with 6,000 Mailchimp email sends and up to 500 contacts.

How many transactional emails do you think you’ll send each month?

With Transactional Email you purchase blocks of 25,000 transactional delivered monthly. You can change your plan any time.

ok so

looks like i’m going with mailjet

  • signing up
  • using gmail despite its aying “use your work email to not have sneding limitations” whatever that means i dunno
  • activating account (email verification)
  • ok they ask you to make some choices. are you a marketer or developer? developer
  • use API or SMTP relay? SMTP
  • cool now i see the keys and stuff YAY

ok looks like digitalocean is done creating the droplet. uhhhhhhhhhhhh now what

oh ssh in and configure

  • oh my ssh key is gone. i don’t know where it is. uhhh okay i guess i’m resetting the root password.
  • uhhh okay reset pw
  • uhh it’s saying something about how i don’t have 2gb available of swap space and updates may fail. oh well it’s making a 2gb swapfile now? haven’t seen this error before. maybe i chose one ethat was too small.
  • hostname for your Discourse?
  • checking domain name… prot 443 of computer does not appear to be accessible using hostame (80 also fails) well of course. i haven’t configured yet. ummmmmmm okay stopping this and going back to gandi

on gandi

  • gave up and made flux at to forwar dto my personal mail for now

ok jk went back to protonmail to set up my new custom domain because i cannot focus worth shit. so back on protonmail and gandi

  • used protonmail’s wizard to add many MX, TXT, and CNAME records
  • hey ti worked instantly
  • deleted the mail forwarding

ok wtf was i doing

oh yeah making forum dot

  • uhhhh what
  • oh i have to relearn cname every time
  • uhhh oh there’s a public ip address on digitalocean oh duh
  • CNAME, leaving ttl at default of 1800 seconds lol
  • name: forum
  • hostname: the ip address from do
  • An error has occurred. Please try again.
  • well fuck
  • oh it’s not CNAME i always forget
  • oh it’s an A record. goddamnit okay made it but i think it doesn’t work yet cuz i still have to ssh in and do the initial Discourse setup

still also making a new new ssh key on windows using Generating a new SSH key and adding it to the ssh-agent - GitHub Docs haha

  • made it my new flux email
  • generating took a very long time. i came back half an hour later.
  • enter file location: default
  • ok that’s fine, uploaded to digital ocean
  • how the fuck do i add my new ssh public key to the list of allowed keys on this digital ocean droplet i can’t find it in the fucking menus

back to digitalocean

  • but wait they have a DNS manager
  • should i use gandi’s dns or do’s dns? i’m so fucking confused, this always gets me
  • i used both. it didn’t worik. i deleted the “domain” on DO. now it’s working.

back to the console, where i sshed into the discourse droplet

  • finally it got past the first thing, which was “hostname for your discourse?”
    connection succeeded
  • email address for admin account(s)
  • SMTP server address? ok getting the stuff, wehre is the fucking tab,
    SMTP port? [587]: default
    user name

okay it’s going! i’m stepping away to eat something

it finished installing!

um what


dammit what went wrong

oh it just takes a few moments. yayyy


Hello Judy,

We are contacting you as you (or one of your team members) tried to send an email with sender address: . But this sender address has not been validated yet on your account: (removed)

Please validate the sender within 3 days, so that we can send your email. You can manage your senders in the [Senders and domains page] or by using the [/sender] API resource.

For more information you can contact our [support team].

The Mailjet Team

heyyyy i got AN email! okay setting up now.
ok used their “wizard” sorta to set up more TXT records on’s dns
ok forced check on mailjet and SPF and DKIM are okay now. (for SFP i had to add it to the existing txt for protonmail; for DKIM i had to add a new public key in a new TXT entry)

ok i did it for @ but t hat was wrong. i need to do it for

  • just did it again for spf (new) and dkim (also new)
  • also manually clicked on the verify email for but it says it’s good now because i did it for all @forum.


Now doing discourse setup through the discourse web app itself

for later

Primary Logo
The logo image at the top left of your site. Use a wide rectangular image with a height of 120 and an aspect ratio greater than 3:1
Square Logo
A square version of your logo. Shown at the top left of your site when scrolling down, in the browser, and when sharing on social platforms. Ideally larger than 512x512.
oh there’s more

Browser Icon
Icon image used to represent your site in web browsers that looks good at small sizes. Recommended image extensions are PNG or JPG. We’ll use the square logo by default.
Large Icon
Icon image used to represent your site on modern devices that looks good at larger sizes. Ideally larger than 512 × 512. We’ll use the square logo by default.


wait how did https already get done? did the letsencrypt wizard get incorporated into the discourse setup script? WOOHOOO i just saw discourse/ at master · discourse/discourse · GitHub and it says

from Advanced Setup Only: Allowing SSL / HTTPS for your Discourse Docker setup - sysadmin - Discourse Meta

:warning: STOP :warning:
This guide is for advanced setups only, and should only be used if Setting up HTTPS support with Let’s Encrypt does not work for your setup. Let’s Encrypt provides a free SSL certificate, and automatically renews prior to expiration.

okay cool!

1 Like

I use the $10 DO VPS for multiuser Discourse instances; I sometimes use the $5 for personal/experimental instances.

And I use Mailgun, because I’m into the imagery of gun culture I got a free account when they were owned a bit by Rackspace, and while I don’t use Rackspace, Mailgun is alright; it gets the job done, which is delivering email.

One step you might want to get figured out up front is your uploads situation. You can load everything off to bucket storage, but the DO Spaces (DO’s S3 blob storage offering) doesn’t compress assets well, so if you want to use your own domain for a CDN URL you’ll want to use something else… but that depends on what your upload needs are.

We’ve a fairly good writeup at Using Object Storage for Uploads (S3 & Clones) - admins - Discourse Meta for all the normal contenders.

talkgroup uses:

  • DigitalOcean - VPS and Spaces (files and separately backups)
  • Mailgun - Mail delivery
  • Gandi - inbox for recieving email (Discourse checks an inbox and routes messages)
  • KeyCDN - CDN for snappy load times :slight_smile:
1 Like

now herding users from the AMC2020 slack onto it! we’ll see if anyone joins!

a few hours later: people have joined! i set it to “private” by default cuz that’s kinda like how the slack was (you could only see stuff if you had an account), and i also set it to “all new users have to be approved by me” which isn’t sustainable i know but i’m just doing it for now.

i need to get a team and come up with a moderation plan, code of conduct, money stuff, all of that. Snowdrift Wiki - Other Crowdfunding / Fundraising Services <–maybe

If I needed funds to cover talkgroup I would set up a form to accept online payments and reported the amounts donated. That way everyone could see how much we had and what it was used for.

I think of this method as being like the first step of scale, so once you need another person to have access to money, you need a more complex system. I was thinking of opening the form whenever the “fund” gets low, and only run it for a set of time, so then the vault is refilled and we have our runway. That way we only have to fundraise once a year (if we have to do more, we miscalculated). :slight_smile:

I look forward to joining your garden in a few months or so. I’d like to sit this bootstrap out, to get a fresh perspective. I’m always here (and there) to answer questions and talk shop, but I am about to launch a new phase of the engine, I’m on the exhale. So I want to focus on that; incidentally documenting Discourse is part of it, so we’re aligned there.

Where is it… ah: Discourse, by profile

1 Like

pictures of our cats

1 Like

Are you planning on keeping messages online indefinitely? If not you might just get by without an external storage mechanism. Just delete stuff.

We don’t have anything like it on talkgroup, yet. I’m into intentionally ephemeral tools, where the content is published and disappears after a while. In this case, you could say a message will delete one month after it closes, which is sometime after the last reply, for instance. There is a setting that deletes media if not linked from a topic, keeping your storage needs down, or manageable if you need to upgrade eventually.

Something to keep in mind, as well: Discourse is a “soft delete” system. I haven’t gotten to that part yet, but neither have I seen much written on it. All the deleted messages are in the database, unless additional steps are taken, and I think it requires shell access.

I consider all of talkgroup ephemeral, but with varying levels of fade. Essentially everything of use beyond the conversation ought be captured in a better way to find, and some of the conversations ought to be preserved with it. But at the same time I consider every message here a scratchpad for us to play with and get the results we want.

It’s just the engine is so slow at starting up, a lot of this stuff won’t make sense immediately. We’re writing the handbook on archiving forums in real, very slow, time. :slight_smile:

1 Like

@judytuna, they are alpha testing something called Discourse for Teams:

I figure at the very least you want to share that with folks from your coterie, maybe one or more “teams” are needing a Discourse instance. :slight_smile:

1 Like

wow that is cool! thank you! i have a conduit right to the heart of new discourse discourse!

1 Like