How to Run Your Own Mastodon Instance on a VPS? 

 In our digital world where everybody shares almost every moment on Social Media, Mastodon is a cool alternative to platforms like Twitter (now called X). But what’s Mastodon? Well, it’s like a do-it-yourself Twitter that isn’t all about collecting your data – and the best about it: Because it’s open-source it’s completely free. This article will show you what Mastodon is, how it’s different from Twitter, and why it’s awesome to have your own Mastodon space. Plus, we’ll help you set up your own Mastodon on a Linux computer. 

The Decentralized Idea Behind Mastodon 

At its heart, Mastodon isn’t just another social media platform; it’s a testament to the power of decentralization and community-driven development. Imagine a sprawling network of interconnected instances, each acting as an independent node, collectively forming the vast universe of Mastodon. Instead of a single monolithic platform with a central governing body, Mastodon is an ecosystem of micro-communities, where each instance can be tailored to its unique user base, content policies, and governance structure. This decentralized model inherently promotes user agency, privacy, and customization, fostering a digital landscape that reflects the diverse range of voices and interests in the real world. 

Mastodon vs. Twitter

In the world of social media, Mastodon stands out for its decentralized approach and focus on giving users more control. This is quite different from platform X, which used to be called Twitter. While X has a lot of users and is well-known, it’s tangled up in challenges like keeping user data private, not being clear about how their algorithms work, and having a central authority control all activity on the platform. On the other hand, Mastodon’s way of working is more community-driven and puts users in charge. X’s algorithms can make certain posts more visible, which leads to worries about people only hearing similar opinions and biases in the algorithms. In Mastodon, posts just show up in the order they were made, which keeps things open and encourages real conversations. Plus, Mastodon’s setup lets users and administrators customize the platform, build local communities, and handle content rules themselves. 

Benefits of Hosting Your Own Mastodon Instance 

When it comes to diving into the Mastodon social network, you’ve got choices: hop onto an existing instance or set up your own instance. Let’s break it down. Joining an existing instance can be like moving into a ready-made neighborhood – you’re part of an existing community right away. But there are limits to how much you can customize things. On the flip side, hosting your own instance gives you a world of benefits. You get to be the boss of your Mastodon world – you can make it look and work just how you want. You’re in charge of the rules, which means you can make it a friendly and cozy space for you and your friends, free from any unwanted noise. Plus, your data is in your hands, so no worries about privacy.

Creating Your Own Mastodon Server 

As we delve deeper into this article, you’ll learn how to turn this vision into reality by installing your very own Mastodon instance on a Linux server with Debian 11. This journey will equip you with the tools and insights needed to navigate the technical aspects of setting up and maintaining a self-hosted Mastodon instance, allowing you to carve out your digital haven in the vast expanse of the decentralized social web. 

Prerequisites 

Before you dive into setting up your own Mastodon instance, there are a few key prerequisites to bear in mind. Firstly, you’ll need a server with Debian 11 or Ubuntu 20.04 on it to host your Mastodon instance. A suitable domain is also required. Luckily, we at Contabo offer both! Click here if you need a Domain (.com-Domains start at €1.99!). If you need a fitting server, we got you covered as well! Depending on the number of users and general activity on your instance you may need different amounts of RAM, CPU-cores and storage space. Our VPS M SSD offers a great starting tier for your Mastodon journey. We also offer VPS with different configurations here

Installation of Mastodon on Debian 11 

Let’s roll up our sleeves and get into the nitty-gritty of installing Mastodon on a Debian 11 Linux server. Follow these steps to bring your instance to life: 

Update System Packages 

Begin by updating your system’s package list and upgrading any existing packages: 

apt update 
apt upgrade

Install System Repositories:

Make sure curl, wget, gnupg, apt-transport-https, lsb-release and ca-certificates is installed first because these packages are required to continue: 

apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates 

Install NodeJS 

Now it’s time to install NodeJS to handle Mastodon’s JavaScript dependencies: 

curl -sL https://deb.nodesource.com/setup_16.x | bash - 

Install PostgreSQL 

As the database software PostgreSQL is required. Install it with these two commands: 

wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc 
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list 

Install Other Required Packages 

Because Mastodon is a complex piece of software, many packages are required for it to run. Install them all together with this big command: 

apt install -y \ 

  imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \ 

  g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \ 

  bison build-essential libssl-dev libyaml-dev libreadline6-dev \ 

  zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \ 

  nginx redis-server redis-tools postgresql postgresql-contrib \ 

  certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev

Enable Yarn 

Enable Yarn with this command: 

corepack enable 

And set Yarn’s version: 

yarn set version classic 

Install Ruby 

Because .rbenv must be installed for a single Linux user we will create a Mastodon user with disabled login before we can start with the actual installation of Ruby: 

adduser --disabled-login mastodon 

Now lets switch to the mastodon user with this command: 

su – mastodon 

Now lets start with the actual installation of Ruby by executing these commands, command after command: 

git clone https://github.com/rbenv/rbenv.git ~/.rbenv 
cd ~/.rbenv && src/configure && make -C src 
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc 
echo 'eval "$(rbenv init -)"' >> ~/.bashrc 
exec bash 
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build 
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.2 

Don’t worry: This step will take AGES! 

rbenv global 3.2.2 
gem install bundler --no-document 

Before proceeding with the setup of PostgreSQL we will switch back to the root user with the following command: 

exit 

Setting up PostgreSQL 

It’s time to create a database for our Mastodon instance. This can be done with these commands: 

sudo -u postgres psql 
CREATE USER mastodon CREATEDB; 

And now exit PostgreSQL: 

\q

Setting up Mastodon 

Switch to the mastodon user once again: 

su – mastodon 

And download and install the required files: 

git clone https://github.com/mastodon/mastodon.git live && cd live 
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1) 
bundle config deployment 'true' 
bundle config without 'development test' 
bundle install -j$(getconf _NPROCESSORS_ONLN) 
yarn install --pure-lockfile 

Now start the installation setup with this command: 

RAILS_ENV=production bundle exec rake mastodon:setup 

Here you will create a configuration file, run the asset precompilation, create the database scheme and create your admin account as well as set a few other options e.g. if you want to enable registrations on your instance. The setup process is very straightforward. 

Setting Up a Reverse Proxy with Nginx 

cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon 
nano /etc/nginx/sites-available/mastodon 

Add the following two lines after this part: 

How to Run Your Own Mastodon Instance on a VPS (temp cert)
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; 

Now save the file with [CTRL] + [O] and exit the editor with [CTRL] + [X] 

It should look like this: 

How to Run Your Own Mastodon Instance on a VPS (insert temp cert)

Now activate the config with this command: 

ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon 
systemctl reload nginx 

Install an SSL Certficiate 

To make our Mastodon instance more secure we will install a free SSL certificate with certbot. This will install Let’s Encrypt certificates for our instance. Have you ever asked yourself what SSL certificates are and how they – and the whole process actually works? Check out our detailed guide on SSL here

certbot --nginx -d [your-domain]

Start the Mastodon Service 

cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/ 
$EDITOR /etc/systemd/system/mastodon-*.service 
systemctl daemon-reload 
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming 

Now wait one minute until everything is set up and then enter your domain in the browser. 

You will be greeted by this homescreen: 

Congrats! You’ve successfully installed your own Mastodon instance on your server. Have fun inviting friends and customizing your social media experience. Learn more about how to customize Mastodon on their official documentation here.

Scroll to Top