Quick answer
What do I need to self-host Mastodon on a VPS?
A domain you will never change, Ubuntu 24.04 or Debian 13, PostgreSQL 14 or later, Redis 7, Node.js 22 and Ruby, nginx with a certificate, and a mail provider on port 587 or 465. Mastodon 4.7.4 was the current release on 3 November 2026. On VPS With Crypto, start a small instance on Mega (2 vCPU / 6 GB / 120 GB) and size for disk first: the cache of remote media keeps growing.
What does a Mastodon server run?
Five services, which a small instance keeps on one VPS:
- mastodon-web: Puma, serving the web interface and the REST API (Ruby on Rails).
- mastodon-sidekiq: background jobs such as deliveries to other servers, media processing, notifications and mail.
- mastodon-streaming: the Node.js streaming API behind live timelines.
- PostgreSQL: the main database.
- Redis: cache and job queue.
The README of Mastodon 4.7.4, released on 29 October 2026, lists Ruby 3.3+, PostgreSQL 14+, Redis 7.0+, Node.js 22+ and FFmpeg 5.1+. The official install guide targets Ubuntu 24.04 and Debian 13, and both are images you can pick at checkout: Debian 13, Debian 12, Ubuntu 24.04 LTS, Ubuntu 22.04 LTS, AlmaLinux 10, Rocky Linux 10. nginx sits in front of everything and serves the static files.
Which domain settings can never change?
LOCAL_DOMAIN, the domain in every handle. Mastodon's configuration reference says it cannot be safely changed later: other servers would treat your existing accounts as new ones. Choose it before the setup wizard runs.
WEB_DOMAIN is the option for handles on one domain and the server on another. With LOCAL_DOMAIN=example.com and WEB_DOMAIN=mastodon.example.com, users are @[email protected] while the site runs on the subdomain. The main domain must then redirect /.well-known/webfinger to the Mastodon host, with CORS headers. It cannot be safely changed once set either.
What are the install steps?
The order of the official guide, condensed. Copy each command from the guide itself: it follows every release.
Prepare the VPS
Key-only SSH, updates, and a firewall that lets in 22, 80 and 443 only. The first ten minutes guide covers it.
Add the package sources
NodeSource for Node.js 24 and the PostgreSQL project's apt repository, then install
nodejs,redis-server,postgresql,nginx,certbot,python3-certbot-nginxand the build and media libraries the guide lists. Turn on Yarn withcorepack enable.Create the mastodon user and Ruby
adduser --disabled-password mastodon, then rbenv and ruby-build as that user, andRUBY_CONFIGURE_OPTS=--with-jemalloc rbenv installfor the Ruby version the release asks for.Create the database role
In
psqlas the postgres user:CREATE USER mastodon CREATEDB;. The guide uses local ident authentication, so no password is needed.Get the code
Clone the repository into
~/live, check out the latest stablev4.7tag, then runbundle installandyarn install.Run the setup wizard
RAILS_ENV=production bin/rails mastodon:setupasks for the domain, database, Redis and SMTP details, writes.env.production, compiles the assets and creates the schema.Certificate and nginx
certbot certonly --nginx -d example.com, then copydist/nginx.confto/etc/nginx/sites-available/mastodon, set your domain, enable it, and runchmod o+x /home/mastodonso nginx can read the assets.Start the services
Copy
dist/mastodon-*.serviceto/etc/systemd/system/, runsystemctl daemon-reload, thensystemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming.
How do I send Mastodon email with port 25 closed?
Point Mastodon at a mail provider's submission port. Outbound port 25 is closed on every VPS and is not opened on request; send mail through a mail provider on port 465 or 587. Mastodon defaults SMTP_PORT to 25, so an instance left on the default cannot send confirmation or password-reset mail, and new users never finish signing up.
Give the provider's details to the setup wizard, or edit .env.production afterwards and restart mastodon-web and mastodon-sidekiq. On 587, the default SMTP_ENABLE_STARTTLS=auto upgrades the connection with STARTTLS. On 465, add SMTP_SSL=true, which switches Mastodon to SMTP over TLS.
SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
[email protected]
SMTP_PASSWORD=app-password-from-the-provider
SMTP_FROM_ADDRESS="Mastodon <[email protected]>"
# port 465 instead: SMTP_PORT=465 and SMTP_SSL=trueWhere does the disk go, and how do I keep it in check?
Into the cache of remote media. Every post from another server that reaches your timelines brings its images and videos with it. tootctl cleans the cache: media remove deletes cached attachments from other servers older than 7 days by default, and preview_cards remove deletes link-preview thumbnails older than 180 days by default, with a warning against going under 14. Run both from a timer and check media usage once a week.
Uploads can also go to S3-compatible object storage instead of the VPS disk. Mastodon's backup guide then leaves those files to the storage provider.
cd /home/mastodon/live
RAILS_ENV=production bin/tootctl media usage
RAILS_ENV=production bin/tootctl media remove --days 7
RAILS_ENV=production bin/tootctl preview_cards remove --days 30What do I back up?
The four items of Mastodon's backup guide, copied off the VPS. No plan includes backups, so keep your own copy of anything that matters.
- PostgreSQL, with
pg_dump: accounts, posts and follows, the data that matters most. .env.production: the application secrets. Lose them and users are logged out, two-factor authentication stops working and Web Push subscriptions break.public/system: uploaded files, when they live on the VPS disk./var/lib/redis/dump.rdb: the only Redis file the guide asks for.
A backup that stays on the same disk does not survive the loss of the server. The same four items are what you carry when you move to another VPS.
Which plan fits a Mastodon instance?
Mastodon's documentation sets no minimum for RAM or disk. The rows below come from the five services it runs and from the media cache, not from load tests. The vCPU of every plan are shared: they are scheduled on physical cores that neighbouring VPS also use. The RAM and NVMe space of your plan are reserved for your VPS only. Byte is left out: 1 vCPU / 2 GB / 40 GB is better spent on a WireGuard endpoint or a small website.
| Plan | Size | Fits | 12-month price a month |
|---|---|---|---|
| Kilo | 2 vCPU / 4 GB / 65 GB | A single-user instance with media on object storage; little room to spare | $4.49 |
| Mega | 2 vCPU / 6 GB / 120 GB | A single-user or family instance with media on the VPS | $6.75 |
| Giga | 4 vCPU / 8 GB / 160 GB | A small community, with more Sidekiq threads and a longer media cache | $13.50 |
| Tera | 8 vCPU / 24 GB / 400 GB | A larger community that keeps its media on the server | $20.62 |
Start your instance on a VPS paid in crypto
Ubuntu 24.04 or Debian 13, root over SSH, in New York, Dallas, Los Angeles, London, Amsterdam or Frankfurt. No KYC: signing up and paying take no identity document, no selfie, no card and no phone number.
- DomaineGoat LLC · Panama
- No KYC: no ID document, no selfie
- Prices checked 3 November 2026
- Credited after network confirmations
Questions about Mastodon on a VPS
Can I run Mastodon with Docker instead of from source?
Yes. The Mastodon repository ships Docker and docker-compose configurations. The domain rule, the SMTP settings, the media cleanup and the four backup items stay the same.
Can I move my Mastodon instance to another domain later?
No. Mastodon's configuration reference says LOCAL_DOMAIN cannot be safely changed: remote servers would see your accounts as new ones. Moving to another VPS on the same domain is fine.
Why does my new instance send no confirmation emails?
SMTP_PORT defaults to 25. Outbound port 25 is closed on every VPS and is not opened on request; send mail through a mail provider on port 465 or 587. Set SMTP_PORT=587, or 465 with SMTP_SSL=true, and restart the web and Sidekiq services.
How much disk will Mastodon use?
It depends on how many accounts your users follow on other servers, because their media is cached locally. Run tootctl media usage to measure it and tootctl media remove on a timer to keep the cache at a fixed age.
Do I need object storage?
No. Uploads and the cache can stay on the NVMe disk of the VPS. Object storage keeps a growing instance off the local disk and takes the uploads out of your own backups.
Sources (7)
- Installing from source (Ubuntu 24.04 or Debian 13) — Mastodon (read 2026-11-03)
- Preparing your machine (SSH, firewall) — Mastodon (read 2026-11-03)
- Configuring your environment (LOCAL_DOMAIN, WEB_DOMAIN, SMTP variables) — Mastodon (read 2026-11-03)
- Backing up your server — Mastodon (read 2026-11-03)
- Using the admin CLI (tootctl media, tootctl preview_cards) — Mastodon (read 2026-11-03)
- Mastodon v4.7.4 README: requirements — Mastodon gGmbH on GitHub (read 2026-11-03)
- Mastodon releases (v4.7.4, 29 October 2026) — GitHub (read 2026-11-03)