{"id":17385,"date":"2023-08-31T12:26:46","date_gmt":"2023-08-31T10:26:46","guid":{"rendered":"https:\/\/contabo.com\/blog\/?p=17385"},"modified":"2023-09-01T10:55:58","modified_gmt":"2023-09-01T08:55:58","slug":"how-to-install-mastodon-on-vps","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/how-to-install-mastodon-on-vps\/","title":{"rendered":"How to Run Your Own Mastodon Instance on a VPS?\u00a0"},"content":{"rendered":"\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" data-id=\"17386\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server.jpg\" alt=\"How to Run Your Own Mastodon Instance on a VPS (head image)\" class=\"wp-image-17386\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server.jpg 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server-600x315.jpg 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server-768x403.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n<\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>&nbsp;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&#8217;s Mastodon? Well, it&#8217;s like a do-it-yourself Twitter that isn&#8217;t all about collecting your data \u2013 and the best about it: Because it\u2019s open-source it\u2019s completely free. This article will show you what Mastodon is, how it&#8217;s different from Twitter, and why it&#8217;s awesome to have your own Mastodon space. Plus, we&#8217;ll help you set up your own Mastodon on a Linux computer.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-decentralized-idea-behind-mastodon-nbsp\">The Decentralized Idea Behind Mastodon&nbsp;<\/h2>\n\n\n\n<p>At its heart, Mastodon isn&#8217;t just another social media platform; it&#8217;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.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mastodon-vs-twitter\">Mastodon vs. Twitter<\/h2>\n\n\n\n<p>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&#8217;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&#8217;s way of working is more community-driven and puts users in charge. X&#8217;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&#8217;s setup lets users and administrators customize the platform, build local communities, and handle content rules themselves.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-benefits-of-hosting-your-own-mastodon-instance-nbsp\">Benefits of Hosting Your Own Mastodon Instance&nbsp;<\/h2>\n\n\n\n<p>When it comes to diving into the Mastodon social network, you&#8217;ve got choices: hop onto an existing instance or set up your own instance. Let&#8217;s break it down. Joining an existing instance can be like moving into a ready-made neighborhood &#8211; you&#8217;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 &#8211; you can make it look and work just how you want. You&#8217;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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creating-your-own-mastodon-server-nbsp\">Creating Your Own Mastodon Server&nbsp;<\/h2>\n\n\n\n<p>As we delve deeper into this article, you&#8217;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.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-prerequisites-nbsp\">Prerequisites&nbsp;<\/h2>\n\n\n\n<p>Before you dive into setting up your own Mastodon instance, there are a few key prerequisites to bear in mind. Firstly, you&#8217;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 <a href=\"https:\/\/contabo.com\/en\/domains\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a> if you need a Domain (.com-Domains start at \u20ac1.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 <a href=\"https:\/\/contabo.com\/en\/vps\/vps-m-ssd\" target=\"_blank\" rel=\"noreferrer noopener\">VPS M SSD<\/a> offers a great starting tier for your Mastodon journey. We also offer VPS with different configurations <a href=\"https:\/\/contabo.com\/en\/vps\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-installation-of-mastodon-on-debian-11-nbsp\">Installation of Mastodon on Debian 11&nbsp;<\/h2>\n\n\n\n<p>Let&#8217;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:&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-update-system-packages-nbsp\">Update System Packages&nbsp;<\/h3>\n\n\n\n<p>Begin by updating your system&#8217;s package list and upgrading any existing packages:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\u00a0\napt upgrade<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-install-system-repositories\">Install System Repositories:<\/h3>\n\n\n\n<p>Make sure curl, wget, gnupg, apt-transport-https, lsb-release and ca-certificates is installed first because these packages are required to continue:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates&nbsp;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-install-nodejs-nbsp\">Install NodeJS&nbsp;<\/h3>\n\n\n\n<p>Now it\u2019s time to install NodeJS to handle Mastodon&#8217;s JavaScript dependencies:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sL https:\/\/deb.nodesource.com\/setup_16.x | bash -&nbsp;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-install-postgresql-nbsp\">Install PostgreSQL&nbsp;<\/h3>\n\n\n\n<p>As the database software PostgreSQL is required. Install it with these two commands:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget -O \/usr\/share\/keyrings\/postgresql.asc https:\/\/www.postgresql.org\/media\/keys\/ACCC4CF8.asc&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"deb &#91;signed-by=\/usr\/share\/keyrings\/postgresql.asc] http:\/\/apt.postgresql.org\/pub\/repos\/apt $(lsb_release -cs)-pgdg main\" &gt; \/etc\/apt\/sources.list.d\/postgresql.list&nbsp;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-install-other-required-packages-nbsp\">Install Other Required Packages&nbsp;<\/h3>\n\n\n\n<p>Because Mastodon is a complex piece of software, many packages are required for it to run. Install them all together with this big command:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y \\&nbsp;\n\n&nbsp; imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \\&nbsp;\n\n&nbsp; g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \\&nbsp;\n\n&nbsp; bison build-essential libssl-dev libyaml-dev libreadline6-dev \\&nbsp;\n\n&nbsp; zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \\&nbsp;\n\n&nbsp; nginx redis-server redis-tools postgresql postgresql-contrib \\&nbsp;\n\n&nbsp; certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-enable-yarn-nbsp\">Enable Yarn&nbsp;<\/h3>\n\n\n\n<p>Enable Yarn with this command:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>corepack enable&nbsp;<\/code><\/pre>\n\n\n\n<p>And set Yarn\u2019s version:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yarn set version classic&nbsp;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-install-ruby-nbsp\">Install Ruby&nbsp;<\/h3>\n\n\n\n<p>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:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adduser --disabled-login mastodon&nbsp;<\/code><\/pre>\n\n\n\n<p>Now lets switch to the mastodon user with this command:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su \u2013 mastodon&nbsp;<\/code><\/pre>\n\n\n\n<p>Now lets start with the actual installation of Ruby by executing these commands, command after command:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/rbenv\/rbenv.git ~\/.rbenv&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/.rbenv &amp;&amp; src\/configure &amp;&amp; make -C src&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'export PATH=\"$HOME\/.rbenv\/bin:$PATH\"' &gt;&gt; ~\/.bashrc&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'eval \"$(rbenv init -)\"' &gt;&gt; ~\/.bashrc&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>exec bash&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/rbenv\/ruby-build.git ~\/.rbenv\/plugins\/ruby-build&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.2&nbsp;<\/code><\/pre>\n\n\n\n<p><em>Don\u2019t worry: This step will take AGES!<\/em>&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rbenv global 3.2.2&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>gem install bundler --no-document&nbsp;<\/code><\/pre>\n\n\n\n<p>Before proceeding with the setup of PostgreSQL we will switch back to the root user with the following command:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit&nbsp;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-setting-up-postgresql-nbsp\">Setting up PostgreSQL&nbsp;<\/h3>\n\n\n\n<p>It\u2019s time to create a database for our Mastodon instance. This can be done with these commands:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -u postgres psql&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER mastodon CREATEDB;&nbsp;<\/code><\/pre>\n\n\n\n<p>And now exit PostgreSQL:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\\q<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-setting-up-mastodon-nbsp\">Setting up Mastodon&nbsp;<\/h3>\n\n\n\n<p>Switch to the mastodon user once again:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>su \u2013 mastodon&nbsp;<\/code><\/pre>\n\n\n\n<p>And download and install the required files:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/mastodon\/mastodon.git live &amp;&amp; cd live&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout $(git tag -l | grep -v 'rc&#91;0-9]*$' | sort -V | tail -n 1)&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>bundle config deployment 'true'&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>bundle config without 'development test'&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>bundle install -j$(getconf _NPROCESSORS_ONLN)&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>yarn install --pure-lockfile&nbsp;<\/code><\/pre>\n\n\n\n<p>Now start the installation setup with this command:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RAILS_ENV=production bundle exec rake mastodon:setup&nbsp;<\/code><\/pre>\n\n\n\n<p>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.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-setting-up-a-reverse-proxy-with-nginx-nbsp\">Setting Up a Reverse Proxy with Nginx&nbsp;<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/home\/mastodon\/live\/dist\/nginx.conf \/etc\/nginx\/sites-available\/mastodon&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/nginx\/sites-available\/mastodon&nbsp;<\/code><\/pre>\n\n\n\n<p>Add the following two lines after this part:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"719\" height=\"288\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-6.png\" alt=\"How to Run Your Own Mastodon Instance on a VPS (temp cert)\" class=\"wp-image-17388\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-6.png 719w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-6-600x240.png 600w\" sizes=\"auto, (max-width: 719px) 100vw, 719px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>ssl_certificate \/etc\/ssl\/certs\/ssl-cert-snakeoil.pem;\nssl_certificate_key \/etc\/ssl\/private\/ssl-cert-snakeoil.key;&nbsp;<\/code><\/pre>\n\n\n\n<p>Now save the file with <strong>[CTRL] <\/strong>+ <strong>[O]<\/strong> and exit the editor with <strong>[CTRL]<\/strong> +<strong> [X]&nbsp;<\/strong><\/p>\n\n\n\n<p>It should look like this:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"701\" height=\"245\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-7.png\" alt=\"How to Run Your Own Mastodon Instance on a VPS (insert temp cert)\" class=\"wp-image-17390\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-7.png 701w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-7-600x210.png 600w\" sizes=\"auto, (max-width: 701px) 100vw, 701px\" \/><\/figure>\n\n\n\n<p>Now activate the config with this command:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -s \/etc\/nginx\/sites-available\/mastodon \/etc\/nginx\/sites-enabled\/mastodon&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl reload nginx&nbsp;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-install-an-ssl-certficiate-nbsp\">Install an SSL Certficiate&nbsp;<\/h3>\n\n\n\n<p>To make our Mastodon instance more secure we will install a free SSL certificate with certbot. This will install Let\u2019s Encrypt certificates for our instance. Have you ever asked yourself what SSL certificates are and how they \u2013 and the whole process actually works? Check out our detailed guide on SSL <a href=\"https:\/\/contabo.com\/blog\/ultimate-guide-to-ssl\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot --nginx -d &#91;your-domain]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-start-the-mastodon-service-nbsp\">Start the Mastodon Service&nbsp;<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/home\/mastodon\/live\/dist\/mastodon-*.service \/etc\/systemd\/system\/&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$EDITOR \/etc\/systemd\/system\/mastodon-*.service&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl daemon-reload&nbsp;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming&nbsp;<\/code><\/pre>\n\n\n\n<p>Now wait one minute until everything is set up and then enter your domain in the browser.&nbsp;<\/p>\n\n\n\n<p>You will be greeted by this homescreen:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"803\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-8.png\" alt=\"\" class=\"wp-image-17392\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-8.png 1600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-8-600x301.png 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-8-768x385.png 768w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/image-8-1536x771.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n\n\n\n<p><strong>Congrats! <\/strong>You\u2019ve successfully installed your own Mastodon instance on your server. Have fun inviting friends and customizing your social media experience.&nbsp;Learn more about how to customize Mastodon on their official documentation <a href=\"https:\/\/docs.joinmastodon.org\/admin\/install\/\" rel=\"nofollow\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn step-by-step how to set up and run your personal Mastodon instance on a VPS, gaining full control over your social media experience.<\/p>\n","protected":false},"author":50,"featured_media":17386,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[18],"tags":[],"ppma_author":[1491],"class_list":["post-17385","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server.jpg",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server-150x150.jpg",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server-600x315.jpg",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server-768x403.jpg",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server.jpg",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server.jpg",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2023\/08\/blog-head_how2-run-your-own-mastodon-server.jpg",1200,630,false]},"uagb_author_info":{"display_name":"Tobias Mildenberger","author_link":"https:\/\/contabo.com\/blog\/author\/tobias\/"},"uagb_comment_info":0,"uagb_excerpt":"Learn step-by-step how to set up and run your personal Mastodon instance on a VPS, gaining full control over your social media experience.","authors":[{"term_id":1491,"user_id":50,"is_guest":0,"slug":"tobias","display_name":"Tobias Mildenberger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/077178d5dce6c3d4c0c0396857a7e544bfdf8adf04145fff5160b33a22e28b1f?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts\/17385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/comments?post=17385"}],"version-history":[{"count":3,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts\/17385\/revisions"}],"predecessor-version":[{"id":17426,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts\/17385\/revisions\/17426"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/media\/17386"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/media?parent=17385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/categories?post=17385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/tags?post=17385"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=17385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}