{"id":1634,"date":"2026-11-02T22:44:25","date_gmt":"2026-11-02T22:44:25","guid":{"rendered":"https:\/\/affordablevpsserver.com\/blog\/?p=1634"},"modified":"2026-11-02T22:44:25","modified_gmt":"2026-11-02T22:44:25","slug":"small-fediverse-instance-vps-right-sizing","status":"publish","type":"post","link":"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/","title":{"rendered":"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users"},"content":{"rendered":"<div style=\"padding:20px\">\n\n\n<p class=\"wp-block-paragraph\">A Mastodon or GoToSocial instance is one of the few self-hosted projects where the resource cost is driven by other people&#8217;s content rather than your own. A single-user account on a big instance pulls in federated posts, profiles and media from every server it follows or is followed by, and the database grows whether you post or not. That makes right-sizing genuinely different from sizing a blog: you are provisioning for a subscription feed, not for your own traffic. If you are picking a host for this, <a href=\"https:\/\/affordablevpsserver.com\/\">compare budget VPS plans side by side<\/a> with an eye on disk and RAM headroom rather than raw CPU, because those are the two limits that force an upgrade.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This article gives concrete numbers for three instance sizes, then covers the settings that determine whether a small VPS survives its first year of federation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What federation costs in storage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The dominant cost is media caching. When your instance sees a post with an attachment, it downloads the file to serve it locally, and by default it keeps it. A moderately active single-user account following a few hundred people will cache 1 to 5 GB of media per month, depending on how many image-heavy accounts it follows. Text posts are tiny by comparison \u2014 the database for a single-user instance typically grows 50 to 150 MB per month once indexes are counted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Profiles and preview cards add a smaller but constant stream. That means a 40 GB disk is not &#8220;plenty&#8221; for a one-person instance, it is roughly six to twelve months of headroom with default retention. Almost every small instance eventually needs either a bigger disk or a media retention policy, and the retention policy is free.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Three instance sizes and their real requirements<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The figures below assume Mastodon on a recent release with Postgres, Redis and Sidekiq running alongside the web process, and media retention set to a sane value. They are working numbers derived from typical small deployments, not vendor minimums \u2014 vendor minimums assume an empty instance.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Instance shape<\/th><th>RAM<\/th><th>vCPU<\/th><th>Disk<\/th><th>Budget band<\/th><\/tr><\/thead><tbody><tr><td>Single user, follows &lt;100 accounts<\/td><td>2 GB<\/td><td>1\u20132<\/td><td>40\u201360 GB<\/td><td>$5\u2013$8<\/td><\/tr><tr><td>Small community, 10\u201330 active users<\/td><td>4 GB<\/td><td>2<\/td><td>80\u2013120 GB<\/td><td>$10\u2013$16<\/td><\/tr><tr><td>50+ users, relays, media-heavy<\/td><td>8 GB<\/td><td>4<\/td><td>160 GB+<\/td><td>$20\u2013$35<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">GoToSocial, the lighter alternative, changes these numbers materially. It ships as a single Go binary with SQLite as an option, so a single-user instance runs comfortably in 512 MB to 1 GB of RAM and uses less disk because its media caching is more conservative by default. If you are federating for yourself rather than hosting a community, a $4 to $6 plan running GoToSocial is a genuinely credible setup and removes the need for Redis and a Sidekiq worker entirely.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why 2 GB is the floor for Mastodon, not 1 GB<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mastodon splits work across several processes. Puma serves web requests, Sidekiq handles background jobs including all inbound federation deliveries, and both need memory. On a 1 GB plan, the common failure is not a crash but an OOM kill of a Sidekiq worker during a burst of inbound activity \u2014 which silently drops federation deliveries and leaves your instance looking like it is ignoring people. You will not see an error on the site; you will see delayed or missing interactions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The other memory consumer is Postgres. Mastodon&#8217;s schema is large and the query patterns are not especially cache-friendly at small scale, so a default configuration on 1 GB will fight the application for memory. Either set <code>shared_buffers<\/code> to 256 MB and accept slower queries, or start at 2 GB and stop thinking about it. For a $2 difference per month, the second option is usually the right call.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CPU: bursty, and mostly during catches<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Steady-state CPU on a small instance is low \u2014 well under one core for a single-user setup. The spikes come from federation catch-up, when your instance pulls in a backlog after downtime or after you follow somebody with a large history. Those jobs run through Sidekiq and will saturate a single shared vCPU for tens of minutes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is acceptable on a budget host as long as you are not also running something latency-sensitive on the same box. It is not acceptable if the host has a strict fair-use CPU policy that flags sustained bursts, so check the acceptable-use terms before you pick a host for this. Two shared vCPUs give enough room for Sidekiq to chew through a backlog while the web process stays responsive.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The settings that keep a small instance small<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Three configuration choices do most of the work. First, set media retention so cached remote media is deleted after a set number of days \u2014 7 to 30 is common, and it caps disk growth in a way that costs you nothing except slightly slower first loads on old posts. Second, disable full-text search across the federated timeline if your instance allows it; indexing everything is expensive and rarely useful on a one-person server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Third, prune the database on a schedule. Mastodon accumulates preview cards, orphaned media attachments and old notifications, and a periodic cleanup task is the difference between a database that stays at 2 GB for years and one that quietly triples. A cron job running the built-in cleanup rake tasks weekly, plus a monthly <code>VACUUM<\/code>, is the whole routine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Backups and the upgrade path<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An instance that is not backed up is a decision to lose your account history and your followers&#8217; connection to you. The complete backup is a Postgres dump plus the media directory, and it needs to land somewhere that is not the same disk. For a 40 GB instance, restic to object storage runs $1 to $4 a month and is the cheapest insurance in this entire setup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plan the upgrade path at the same time as the initial purchase. Federation means your disk grows even if you do nothing, so the question to ask before buying is what the host charges for another 40 GB \u2014 an in-place disk resize is a five-minute job on most budget platforms and a full migration on others. Prefer hosts that let you grow the volume without rebuilding, and verify that before you commit rather than after you run out of room.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Is it worth it compared with joining an existing instance?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Running your own instance costs $60 to $150 a year in hosting plus the hours you spend on upgrades every few months. Joining a well-run existing instance costs nothing and gives you better federation reach. The reasons to self-host are real \u2014 moderation control, permanence, no risk of an admin closing registrations or shutting down \u2014 but they are not cost reasons. Be honest about which one is driving the decision.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If it is control, the budget path is clear: GoToSocial on a $5 plan for a single user, Mastodon on 2 to 4 GB for a small community, media retention enabled from day one, and a monthly backup you have actually restored once. That setup costs less than a streaming subscription and stays stable for years. When you have your user count, <a href=\"https:\/\/affordablevpsserver.com\/\">check budget VPS plans with enough disk for federated media growth<\/a> and size the volume for year two, not for launch day.<\/p>\n\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>A Mastodon or GoToSocial instance is one of the few self-hosted projects where the resource cost is driven by other people&#8217;s content rather than your own. A single-user account on a big instance pulls in federated posts, profiles and media from every server it follows or is followed by, and the database grows whether you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":1,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1634","post","type-post","status-publish","format-standard","hentry","category-vps-deals-discounts"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users - Affordable VPS Server Blog<\/title>\n<meta name=\"description\" content=\"A Mastodon or GoToSocial instance is one of the few self-hosted projects where the resource cost is driven by other people&#039;s content rather than your own.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users\" \/>\n<meta property=\"og:description\" content=\"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users\" \/>\n<meta property=\"og:url\" content=\"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/\" \/>\n<meta property=\"og:site_name\" content=\"Affordable VPS Server Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-02T22:44:25+00:00\" \/>\n<meta name=\"author\" content=\"Affordable-Vps-Server-Author\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Affordable-Vps-Server-Author\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/\",\"name\":\"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users - Affordable VPS Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\"},\"datePublished\":\"2026-11-02T22:44:25+00:00\",\"author\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\"},\"description\":\"A Mastodon or GoToSocial instance is one of the few self-hosted projects where the resource cost is driven by other people's content rather than your own.\",\"breadcrumb\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/affordablevpsserver.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/\",\"name\":\"Affordable VPS Server Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\",\"name\":\"Affordable-Vps-Server-Author\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"caption\":\"Affordable-Vps-Server-Author\"},\"sameAs\":[\"https:\/\/affordablevpsserver.com\/blog\"],\"url\":\"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users - Affordable VPS Server Blog","description":"A Mastodon or GoToSocial instance is one of the few self-hosted projects where the resource cost is driven by other people's content rather than your own.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/","og_locale":"en_US","og_type":"article","og_title":"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users","og_description":"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users","og_url":"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/","og_site_name":"Affordable VPS Server Blog","article_published_time":"2026-11-02T22:44:25+00:00","author":"Affordable-Vps-Server-Author","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Affordable-Vps-Server-Author","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/","url":"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/","name":"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users - Affordable VPS Server Blog","isPartOf":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#website"},"datePublished":"2026-11-02T22:44:25+00:00","author":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7"},"description":"A Mastodon or GoToSocial instance is one of the few self-hosted projects where the resource cost is driven by other people's content rather than your own.","breadcrumb":{"@id":"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/affordablevpsserver.com\/blog\/small-fediverse-instance-vps-right-sizing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/affordablevpsserver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Right-Sizing a Small Fediverse Instance: Mastodon and GoToSocial Specs for 1 to 50 Users"}]},{"@type":"WebSite","@id":"https:\/\/affordablevpsserver.com\/blog\/#website","url":"https:\/\/affordablevpsserver.com\/blog\/","name":"Affordable VPS Server Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7","name":"Affordable-Vps-Server-Author","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","caption":"Affordable-Vps-Server-Author"},"sameAs":["https:\/\/affordablevpsserver.com\/blog"],"url":"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/"}]}},"_links":{"self":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/comments?post=1634"}],"version-history":[{"count":1,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1634\/revisions"}],"predecessor-version":[{"id":1635,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1634\/revisions\/1635"}],"wp:attachment":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/media?parent=1634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/categories?post=1634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/tags?post=1634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}