Mastodon
Deploy Mastodon, an open source, decentralized microblogging platform for building social networks based on open web standards and principles. It takes a federated approach, in which independent servers (instances) are connected via a shared network called the Fediverse using the ActivityPub protocol.
Email restrictions on Akamai CloudOutbound connections on ports 25, 465, and 587 are blocked by default on Linode instances for some new accounts to help reduce spam originating from our platform. These restrictions prevent applications from sending email. If you intend to send email from a Linode instance, review the Send email on Akamai Cloud guide to learn more about our email policies and to request the removal of these restrictions.
1. Deploy Mastodon
Follow the deployment instructions from the Get started section to configure the app, deploy it, and verify software installation.
For information on the app-specific configurations, see the Configuration options section.
Base distribution and plan
- Supported distribution: Ubuntu 24.04 LTS
- Recommended plans: 2GB Shared CPU Compute Instance or higher.
Configuration options
Configure the required options to deploy your instance. For additional customization, add advanced options.
The table maps the Cloud Manager UI fields to their corresponding API/CLI keys (stackscript_data) required for automated deployments.
StackScript ID: 1096122
| UI field | API/CLI key | Description |
|---|---|---|
| Required options | ||
| Limited sudo user | user_name | Your preferred username for the limited sudo user entered without any capital letters, spaces, or special characters. When adding a limited sudo user, the user is created with a strong generated password for your new Linode instance, and the account is assigned to the sudo group, which provides elevated permissions when running commands with the sudo prefix.Note: For easier and more secure access with the sudo user, add an account SSH key for the Cloud Manager user during deployment and select that user as an |
| Email address (for the Let's Encrypt SSL certificate) | soa_email_address | An email address to set for the Let's Encrypt SSL certificate and receive notifications when the certificate needs to be renewed. |
| Username for Mastodon Owner | owner_username | A username that will be created for the Mastodon server's owner. |
| Email address for Mastodon Owner | owner_email | A contact email address for the Mastodon server’s owner. |
| Start Mastodon in single-user mode | single_user_mode | When set to Yes, it enables a single-user mode, preventing other users from joining the Mastodon server. When set to No, it disables the mode, allowing other users to join the server. |
| Advanced options | ||
| Disable root access over SSH | disable_root | Applies to a limited sudo user. To block the root user from logging in over SSH, select Yes. Defaults to No. Note: When you disable the root user from logging in over SSH and don't provide a valid Account SSH Key assigned to the |
| Domain | domain | Applies to a custom domain. The domain name you want to use, like example.com. Use it only if you specify a Linode API token. |
| Subdomain | subdomain | Applies to a custom domain. The subdomain you want to use, like blog for blog.example.com. Use it only if you specify a Domain. |
| Linode API token | token_password | Applies to a custom domain. The Linode API token if you want to use Linode's DNS Manager to manage DNS records for your custom domain. Follow Manage personal access tokens to get your token on your account with Read/Write access to Domains.
|
| Optional data exporter Add-ons | add_ons | An option to include add-ons for your deployment. Possible values are:
|
Notes:
- After the app deployment completes, the password for your limited sudo user is generated and stored in the
.credentialsfile in the home directory, along with application-specific passwords. Log in to your instance asrootthrough the Lish console or SSH, then runcat /home/$USERNAME/.credentialsto view its contents.- You can automatically configure a custom domain (optional) during deployment. To do that:
- First, configure your domain to use Linode’s name servers via your registrar. See Configure your domain's authoritative name servers for details.
- Once you complete that, specify the Linode API token, subdomain, and domain for the app in Cloud Manager or via API/CLI/Terraform.
Use API, CLI, or Terraform
In addition to deploying the app to a new Linode instance via Cloud Manager, you can also use the Linode API, CLI, or Terraform. When running the operation, you need to provide the StackScript ID, supported Linux distribution, and app-specific fields along with the standard Linode deployment configurations.
Note: Generate a personal access token to authenticate your API, CLI, or Terraform requests.
curl --location 'https://api.linode.com/v4/linode/instances' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer abc123def456hij789klm' \
--data-raw '{
"region": "us-east",
"type": "g6-standard-2",
"image": "linode/ubuntu24.04",
"label": "my-mastodon-one-click-app",
"root_pass": "@C0mpl3x#P@ssw0rd",
"stackscript_id": 1096122,
"stackscript_data": {
"user_name": "jsmith",
"soa_email_address": "jsmith@example.com",
"owner_username": "jsmith-admin",
"owner_email": "jsmith-admin@example.com",
"single_user_mode": "Yes"
}
}'linode-cli linodes create \
--region us-east \
--type g6-standard-2 \
--label my-mastodon-one-click-app \
--image linode/ubuntu24.04 \
--root_pass @C0mpl3x#P@ssw0rd \
--stackscript_id 1096122 \
--stackscript_data '{""user_name":"jsmith", "soa_email_address":"jsmith@example.com", "owner_username":"jsmith-admin", "owner_email":"jsmith-admin@example.com", "single_user_mode":"Yes"}'resource "linode_instance" "my-linode" {
region = "us-east"
type = "g6-standard-2"
label = "my-mastodon-one-click-app"
image = "linode/ubuntu24.04"
root_pass = "@C0mpl3x#P@ssw0rd"
stackscript_id = 1096122
stackscript_data = {
"user_name" = "jsmith"
"soa_email_address" = "jsmith@example.com"
"owner_username" = "jsmith-admin"
"owner_email" = "jsmith-admin@example.com"
"single_user_mode" = "Yes"
}
}2. Access Mastodon UI
After deployment, you can access your application. To do that:
-
In a browser, navigate to
https://[domain.com]/auth/sign_in, replacing [domain.com] with the domain you entered when deploying Mastodon or the rDNS domainhttps://203-0-113-0.ip.linodeusercontent.com. This opens the login page. -
Enter the owner’s email address you created, and the password you retrieved from the
.credentialsfile on your Linode instance. -
Navigate to
https://[domain.com]/admin/settings/to view your site’s administration settings.The administration page lets you alter the look, feel, and behavior of your site. Consider configuring each of these settings, including the site name, contact username, contact email, server description, and fields within other tabs.
-
Configure Sidekiq (background processing) and PgHero (a performance dashboard for Postgres) for the Mastodon server. You can access these either through the Mastodon Preferences page or by navigating to these URLs:
- Sidekiq:
https://[domain.com]/sidekiq - PgHero:
https://[domain.com]/pghero
The Mastodon server is also configured to send emails for actions such as new users signing up or resetting a password. The installation includes only minimal DNS records, and there may be limited deliverability without further configuration. Review the Send email on Akamai Cloud guide for more information on DNS configurations and email best practices.
- Sidekiq:
-
When you are ready to make your instance known, you can add it to the list at Instances.social by filling out the admin form.
Additional resources
For more information about the installed packages, see their official documentation.
Note that we can't vouch for the accuracy or timeliness of externally hosted resources.
Updated 19 days ago
