fosstodon.org is one of the many independent Mastodon servers you can use to participate in the fediverse.
Fosstodon is an invite only Mastodon instance that is open to those who are interested in technology; particularly free & open source software. If you wish to join, contact us for an invite.

Administered by:

Server stats:

10K
active users

Going to try Mastodon first for my own instance. 🤞 thread

Rented a VPS from hostwinds.com. Went for the managed tier just to have less things to think of while learning

Actually I would have went for just getting an instance from masto.host, but the registration was closed when I tried. So I figured I’d rent a VPS and learn along the way.

Would also enable me to run other services :)

HostwindsHostwinds: Customer Centric Web Hosting SolutionsHostwinds provides web hosting, cloud hosting, and dedicated server solutions, all services backed by our 24/7/365 Award-Winning Support Team. Upgrade to Hostwinds today!

Last night I was considering other ActivityPub implementations (GoToSocial, Friendica, etc) which would have been okay since, after searching around, I found I could still use Mastodon apps with them

And just skimming the instructions for setting up Mastodon, I had the impression that it will not be easy. Friendica's PHP+MySQL to me seemed the most familiar.

gotosocial, being written in Go, was also attractive to me because I've been looking for a project to play around and learn the programming language with... so I thought maybe I could even submit some PRs when I use that

After looking for solutions for "moving" accounts, I realized it will not be easy going from Mastodon to others fosstodon.org/@ayo/10954310440

Yeah, small reason maybe, but I just did not want to start a new account 🤣 so here I am this morning, just done with Mastodon's "Preparing your machine" instructions.

Maybe when I moved the account to my own instance and the database is complete I can explore writing my own APIs :)

Now installing the requirements for Mastodon. Some thoughts:
- Their docs assume Ubuntu 20.4 is the OS you have. This is good because there’s a huge community behind Ubuntu and you’re more likely to get help when you need it
- there’s an instruction to set up Ruby and their package manager bundler. I did not have a good experience with this before, so I’m a bit worried here 😂 —though they suggested a tool they said will make it easier: rbenv 🤞

Oh wait, I want to thank a few people

@Graycot for answering my questions re: vps and self-hosting

@abel also for chatting about mastodon admin stuff and self-hosting in general

@matthew from whom I first learned about gotosocial

@daniel for mentioning friendica, and going through a lot of setting up instances himself and therefore showing it could be fun 😄

Now setting up PostgreSQL. Looks straightforward, should be familiar if you’ve done this before. I do like that they include an optional performance configuration.

Okay I’m switching over to the Digital Ocean tutorial. Confirmed they just follow the recommendations of the Mastodon team, and so far the website is easier to follow and I’m more confident here that dependencies are updated

Should have mentioned this earlier. Mastodon needs 3 package managers:

- apt (Linux)
- yarn (node.js)
- bundler (ruby gems)

For installing Mastodon from source, we use git — which means we can easily pull patches later, and switching versions is as easy as “git checkout”

I resist the urge to fork the repo for now 😂 less branching

Oh look: it's easy to try release candidates!

Ayo :fosstodon:

Still waiting for bundler to finish installing gems. It pauses a lot and doesn’t show some kind of “loading” progress so you don’t know where you are.

Okay, bundler is done with a bunch of “IMPORTANT!” and deprecation messages.

Not sure if I need to do anything about these 😂 —will just proceed

Ah, thanks Digital Ocean for some assurance:

"Once this finishes, there is a lot of output at the end that may appear like it needs to be acted upon. However, you can safely proceed without additional action required."

Never thought is this bad on package managers. Please consider users need assurances on CLIs and TUIs too (maybe even more so)

#ruby#gems#bundler

Now moving on to installing JS dependencies using yarn.

Wonder if I could easily remove these later if I decide to use another frontend, like @elk :)

Actually I just assumed these JS deps are for frontend, but I’m not sure… will find out soon 😂

Yarn is definitely better, showing clear steps and a progress bar

(Did this thread just become a package manager showdown?😂)

Alright! All deps are downloaded and installed. Moving on to Mastodon configuration :)

Before I proceed I want to list some skills & resources you need to get through those first steps

1. Money - unless you have a bare metal server lying around, you will need to rent a server (vps, shared, or dedicated). Even if you have your own machine you will need an ISP subscription with a dedicated IP to be connected outside.

2. Server management competency - this is a server-side adventure. You need to find it fun and/or be confident in SSH-ing and sudo-ing for this.

3. Version management - as mentioned previously, installing from source will use git. Not required to be good at it but familiarity with version management using git makes the experience more fun

And of course,

4. Time - just reading around, preparing the machine, installing dependencies, taking notes (toots) took roughly more than half a day already, so don’t expect you will finish it in one sitting if you go the way of manually setting up from source

One thing before continuing the Mastodon configuration itself. The service requires an SMTP for sending emails. I don’t know yet if I can use my existing email server or will have to set up a separate one

Mastodon configuration is interactive: a series of questions you have to answer.

Database and Redis configuration will work as default, so just pressing Enter for questions related to them is ✨easy✨

Then we are asked for storage solution: whether cloud or local (which is the server Mastodon will run in). Pretty straightforward when choosing local, but not good for multi-user setups

Ah here it is, the SMTP setup. I am asked if I want to send from this server or another. I have an existing one so I will use that :)

SMTP test using my existing email successful :)

So couple of requirements that can be running outside your Mastodon machine: cloud storage and mail server

Up next are a bunch of unexciting commands to setup an Admin account, and then Nginx configuration (for access outside the server) which is just copy-paste from the Mastodon repo

First problem that’s not documented, but is totally my fault, the domain I want to use failed to be certified by Certbot. The issue is because I used it before to test serving a web page with apache2. So certbot is seeing a conflict in name usage. Resolution is stop apache2 😂

@ayo when software has a lot of components I tend to choose for docker instead as it is easier to manage and install. Worth the overhead for some use cases.
What did push you in the direction of hosting your own instance?

@timetc yeah docker will simplify this a lot—though my primary motivation is learning so I went the longer route with more details. :)

@ayo fair enough, good reason to do so. Learning is also the reason to self host it?

@timetc oh self-hosting largely is for learning too, not just the activityPub service, but others as well (Matrix is next on my list). Another motivation is privacy of course and owning my data for real. Been planning this for a while too.

@ayo Eventually even the DB!
You can set it on another maachine or on a managed DB on a cloud provider (only if you want to scale, tho)

@abel oh yeah, I imagine this is useful for instances with multiple users. I have a single user setup so I may be good for a while. Hopefully ;)

@ayo Which smtp are you using? Your own? 🙂

@ayo Yeah for a mono-instance user, it should be just fine.

For more user, you can easily get blocked (since they will think you are doing it for a commercial purpose).

If that happen, looks for something like Mailgun ☺️