Meta tags:
description= Instructional guide on creating your own Mastodon-powered website.;
Headings (most frequently used words):
setting, up, installing, the, system, creating, mastodon, user, postgresql, configuration, from, source, pre, requisites, setup, sponsored, by, repositories, packages, acquiring, an, ssl, certificate, nginx, systemd, services, node, js, yarn, performance, optional, checking, out, code, ruby, last, dependencies, generating,
Text of the page (most frequently used words):
the (51), mastodon (42), and (18), your (17), etc (15), nginx (15), postgresql (15), you (14), admin (13), user (12), com (12), with (12), dev (12), #setting (11), rbenv (10), git (10), this (9), will (9), #install (9), apt (9), for (8), example (8), configuration (8), installing (8), live (7), ruby (7), server (7), can (6), domain (6), systemd (6), system (6), from (6), use (6), root (6), https (6), nodesource (6), source (5), available (5), now (5), new (5), that (5), are (5), home (5), directory (5), other (5), own (5), certificate (5), sites (5), setup (5), bundle (5), creating (5), account (5), list (5), running (5), using (5), systemctl (4), enable (4), services (4), service (4), correct (4), create (4), dependencies (4), config (4), build (4), echo (4), release (4), deb (4), keyrings (4), gpg (4), instance (4), profile (4), api (4), oauth (4), any (3), restart (3), access (3), letsencrypt (3), edit (3), certbot (3), ssl (3), done (3), switch (3), file (3), run (3), commands (3), yarn (3), version (3), clone (3), github (3), bashrc (3), code (3), main (3), appropriate (3), asc (3), wget (3), curl (3), machine (3), search (3), preferences (3), apps (3), reports (3), accounts (3), last (2), may (2), page (2), visit (2), browser (2), automatically (2), start (2), web (2), streaming (2), point (2), username (2), dist (2), copy (2), error (2), started (2), asset (2), www (2), data (2), make (2), need (2), pem (2), ssl_certificate_key (2), ssl_certificate (2), replace (2), name (2), enabled (2), conf (2), acquiring (2), documentation (2), production (2), database (2), bin (2), first (2), time (2), updating (2), path (2), versions (2), obtaining (2), tag (2), download (2), prompt (2), sudo (2), have (2), password (2), values (2), before (2), select (2), application (2), type (2), performance (2), optional (2), corepack (2), installed (2), packages (2), sources (2), signed (2), usr (2), share (2), org (2), media (2), gnupg (2), lsb (2), certificates (2), repositories (2), pre (2), requisites (2), guide (2), notificationpolicy (2), filter (2), report (2), quote (2), domainblock (2), notifications (2), trends (2), collections (2), domain_blocks (2), tokens (2), security (2), environment (2), implementing (2), posts (2), features (2), configuring (2), imprint, view, blog, join, sponsored, updated, 2026, also, 简体中文, improve, hurray, they, boot, sidekiq, daemon, reload, finally, editor, deviated, defaults, check, paths, templates, should, able, see, elephant, hitting, computer, screen, because, haven, process, yet, changes, take, effect, chmod, allow, users, traverse, files, adjustments, might, privkey, fullchain, uncomment, ignore, step, bringing, then, default, template, obtain, save, certonly, let, encrypt, get, free, exit, back, saved, review, liking, refer, env, schema, precompilation, rails, rails_env, interactive, wizard, generating, two, only, needed, going, later, just, enough, without, development, test, deployment, true, javascript, jemalloc, ruby_configure_opts, once, plugins, eval, init, export, manage, simplifies, them, when, releases, checkout, grep, sort, tail, latest, stable, checking, out, createdb, execute, postgres, psql, open, could, easiest, ident, authentication, simple, does, not, separate, used, linux, same, generated, restarting, details, optimal, generate, pgtune, adduser, disabled, under, which, python3, libidn, libicu, libjemalloc, libgdbm, nodejs, redis, libssl, libyaml, libreadline, zlib1g, libffi, protobuf, compiler, pkg, autoconf, bison, essential, imagemagick, ffmpeg, libvips, tools, libpq, libxslt1, update, lsb_release, pgdg, http, pub, repos, keys, accc4cf8, tee, node_24, nodistro, fssl, gpgkey, repo, key, dearmor, node, sure, aren, already, following, please, remember, email, delivery, smtp, subdomain, debian, ubuntu, instructional, powered, website, webpushsubscription, translation, token, termsofservice, suggestion, statussource, statusedit, status, shallowtag, shallowquote, scheduledstatus, rule, role, relationshipseveranceevent, relationship, reaction, quoteapproval, privacypolicy, previewcardauthor, previewcard, poll, notificationrequest, notificationfallback, notification, mediaattachment, marker, identityproof, filterstatus, filterresult, filterkeyword, featuredtag, featureapproval, familiarfollowers, extendeddescription, customemoji, conversation, context, collectionwithaccounts, collectionitem, collection, asyncrefresh, appeal, annualreport, announcement, measure, ipblock, emaildomainblock, domainallow, dimension, cohort, canonicalemailblock, accountwarning, entities, markers, lists, conversations, timelines, scheduled_statuses, polls, statuses, proofs, oembed, push, custom_emojis, announcements, health, grouped, async_refreshes, emails, annual, retention, measures, ip_blocks, email_domain_blocks, domain_allows, dimensions, canonical_email_blocks, tags, suggestions, mutes, followed_tags, follow_requests, filters, featured_tags, favourites, endorsements, bookmarks, blocks, methods, rate, limits, scopes, guidelines, best, practices, datetime, formats, rest, bearcaps, microformats, webfinger, activitypub, spec, compliance, design, reference, themes, css, styling, state, management, components, frontend, issues, responsible, disclosure, routes, structure, technical, overview, contributing, libraries, implementations, logging, client, app, playing, public, getting, developing, roles, webhooks, index, corruption, troubleshooting, errors, moderation, actions, scaling, migrating, backing, upgrading, cli, single, sign, captcha, onion, object, storage, full, text, preparing, official, ios, android, moving, leaving, externally, more, settings, set, promoting, yourself, others, dealing, unwanted, content, quoting, network, posting, signing, what,
Text of the page (random words):
installing from source mastodon documentation what is mastodon using mastodon signing up for an account setting up your profile posting to your profile using the network features quoting other posts dealing with unwanted content promoting yourself and others set your preferences more settings using mastodon externally moving or leaving accounts official ios and android apps running your own server running mastodon preparing your machine installing from source configuring your environment configuring full text search installing optional features object storage onion services captcha single sign on setting up your new instance using the admin cli upgrading to a new release backing up your server migrating to a new machine scaling up your server moderation actions troubleshooting errors database index corruption webhooks roles developing mastodon apps getting started with the api playing with public data obtaining client app access logging in with an account libraries and implementations implementing quote posts implementing collections contributing to mastodon technical overview setting up a dev environment code structure routes security issues and responsible disclosure frontend guide components state management css and styling creating themes design tokens reference spec compliance activitypub webfinger security microformats oauth bearcaps rest api datetime formats guidelines and best practices oauth tokens oauth scopes rate limits api methods accounts blocks bookmarks domain_blocks endorsements favourites featured_tags filters follow_requests followed_tags mutes preferences reports suggestions tags admin accounts canonical_email_blocks dimensions domain_allows domain_blocks email_domain_blocks ip_blocks measures reports retention trends annual reports apps emails oauth async_refreshes collections grouped notifications health instance announcements custom_emojis directory trends notifications push oembed profile proofs search statuses media polls scheduled_statuses timelines conversations lists markers streaming api entities account accountwarning admin account admin canonicalemailblock admin cohort admin dimension admin domainallow admin domainblock admin emaildomainblock admin ip admin ipblock admin measure admin report announcement annualreport appeal application asyncrefresh collection collectionitem collectionwithaccounts context conversation customemoji domainblock error extendeddescription familiarfollowers featureapproval featuredtag filter filterkeyword filterresult filterstatus identityproof instance list marker mediaattachment notification notificationfallback notificationpolicy notificationrequest poll preferences previewcard previewcardauthor privacypolicy profile quote quoteapproval reaction relationship relationshipseveranceevent report role rule scheduledstatus search shallowquote shallowtag status statusedit statussource suggestion tag termsofservice token translation v1 filter v1 instance v1 notificationpolicy webpushsubscription installing from source instructional guide on creating your own mastodon powered website pre requisites system repositories system packages creating the mastodon user setup setting up postgresql setting up mastodon acquiring an ssl certificate setting up nginx setting up systemd services pre requisites a machine running ubuntu 24 04 or debian 13 that you have root access to a domain name or a subdomain for the mastodon server e g example com an email delivery service or other smtp server we will be using example com as the domain in the following example please remember to replace it with your own domain before running any commands you will be running the commands as root if you aren t already root switch to root sudo i system repositories make sure curl wget gnupg lsb release and ca certificates are installed first apt install y curl wget gnupg lsb release ca certificates node js curl fssl https deb nodesource com gpgkey nodesource repo gpg key gpg dearmor o etc apt keyrings nodesource gpg echo deb signed by etc apt keyrings nodesource gpg https deb nodesource com node_24 x nodistro main tee etc apt sources list d nodesource list postgresql 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 system packages apt update apt install y imagemagick ffmpeg libvips tools libpq dev libxslt1 dev file git protobuf compiler pkg config autoconf bison build essential libssl dev libyaml dev libreadline dev zlib1g dev libffi dev libgdbm dev nginx nodejs redis server postgresql certbot python3 certbot nginx libidn dev libicu dev libjemalloc dev yarn enable corepack so that the correct version of yarn can be installed automatically corepack enable creating the mastodon user this is the user account under which mastodon will run adduser disabled password mastodon setup setting up postgresql performance configuration optional for optimal performance you may use pgtune to generate an appropriate configuration select the appropriate pg version and os type select web application for db type use details appropriate to your server for the other values with the generated configuration edit the values in etc postgresql 18 main postgresql conf before restarting postgresql with systemctl restart postgresql creating a user you will need to create a postgresql user that mastodon could use it is easiest to go with ident authentication in a simple setup i e the postgresql user does not have a separate password and can be used by the linux user with the same username open the prompt sudo u postgres psql in the prompt execute create user mastodon createdb q done setting up mastodon it is time to download the mastodon code switch to the mastodon user su mastodon checking out the code use git to download the latest stable release of mastodon git clone https github com mastodon mastodon git live cd live git checkout git tag l grep v 0 9 sort v tail n 1 installing ruby we will use rbenv to manage ruby versions as it simplifies obtaining the correct versions and updating them when new releases are available install rbenv and ruby build git clone https github com rbenv rbenv git rbenv echo export path home rbenv bin path bashrc echo eval rbenv init bashrc source bashrc git clone https github com rbenv ruby build git rbenv root plugins ruby build once this is done we can install the correct ruby version ruby_configure_opts with jemalloc rbenv install installing the last dependencies now to install ruby and javascript dependencies bundle config deployment true bundle config without development test bundle install yarn install the two bundle config commands are only needed the first time you re installing dependencies if you re going to be updating or re installing dependencies later just bundle install will be enough generating a configuration run the interactive setup wizard rails_env production bin rails mastodon setup this will create a configuration file run asset precompilation create the database schema the configuration file is saved as env production you can review and edit it to your liking refer to the documentation on configuration you re done with the mastodon user for now so switch back to root exit acquiring an ssl certificate we ll use let s encrypt to get a free ssl certificate certbot certonly nginx d example com this will obtain the certificate and save it in the directory etc letsencrypt live example com setting up nginx copy the configuration template for nginx from the mastodon directory cp home mastodon live dist nginx conf etc nginx sites available mastodon ln s etc nginx sites available mastodon etc nginx sites enabled mastodon rm etc nginx sites enabled default then edit etc nginx sites available mastodon to replace example com with your own domain name uncomment the ssl_certificate and ssl_certificate_key ignore this step if you are bringing your own certificate ssl_certificate etc letsencrypt live example com fullchain pem ssl_certificate_key etc letsencrypt live example com privkey pem make any other adjustments you might need allow other users to traverse the mastodon user s home directory so that nginx s www data user can access asset files chmod o x home mastodon restart nginx for the changes to take effect systemctl restart nginx at this point you should be able to visit your domain in the browser and see the elephant hitting the computer screen error page this is because we haven t started the mastodon process yet setting up systemd services copy the systemd service templates from the mastodon directory cp home mastodon live dist mastodon service etc systemd system if you deviated from the defaults at any point check that the username and paths are correct editor etc systemd system mastodon service finally start and enable the new systemd services systemctl daemon reload systemctl enable now mastodon web mastodon sidekiq mastodon streaming they will now automatically start at boot hurray this is it you can visit your domain in the browser now last updated may 21 2026 improve this page also available in 简体中文 sponsored by join mastodon blog view source cc by sa 4 0 imprint
|