How to install Misskey on nixOS Latest?

Misskey is an alternative to Mastodon, a decentralized social network that is growing in popularity. In this tutorial, we will be showing you how to install Misskey on nixOS Latest.

Pre-requisites

Before we begin, ensure your system meets the following pre-requisites:

Installation

Follow the steps below to install Misskey:

Step 1: Update your OS

First, ensure to update your OS by running the below command:

sudo nixos-rebuild switch

Step 2: Install Node.js

Misskey runs on Node.js. Therefore, ensure that Node.js is installed and updated with the following command:

sudo nix-env -iA nixos.nodejs-16_x

Step 3: Install Nginx

Nginx is required to act as a reverse proxy for the Misskey server we will be running. To install Nginx, run the following command:

sudo nix-env -iA nixos.nginx

Step 4: Set Up Your Server

Create a Unix user named misskey by running the command:

sudo useradd -d /var/lib/misskey -m misskey

Next, make the user a member of the nethogs group to provide the capability to monitor all network connections:

sudo usermod -a -G nethogs misskey

Now, we can proceed to configure Misskey.

Step 5: Install and Configure Misskey

Run the following nix-shell command to get the Misskey software:

sudo -i
curl -L https://get.misskey.io/install | bash

This command will install Misskey into /var/lib/misskey. You can now change into this directory:

cd /var/lib/misskey/current

From the directory, create a config directory and copy the default configuration files into this directory:

mkdir -p config
cp example-config/env production.env
cp example-config/config.json config

Edit the .env file with your favorite text editor:

vim ~/.bashrc

Add:

export MISSKEY_NODE_ENV=production 

Activate:

source ~/.bashrc

Next, edit the Misskey configuration file config.json to include the correct configuration values. Update the host, port, node_env, appSecret, and dbUri fields:

{
   "host": "localhost",
   "port": 8080,
   "node_env": "production",
   "appSecret": "insert-your-app-secret-here",
   "dbUri": "mongodb://localhost:27017/misskey",
   "disableSignUp": false,
   "recaptchaPublicKey": "",
   "recaptchaPrivateKey": "",
   "activityPub": {
       "domain": "example.com",
       "keyPath": "/path/to/key",
       "certPath": "/path/to/cert"
   },
   "socketio": {
       "transports": ["polling", "websocket"],
       "cookie": true
   }
}

You will need to create an App Secret to run Misskey. Save and exit the file.

Step 6: Start Misskey

To start Misskey, enter the following command:

sudo -u misskey bash -c 'source ~/.bashrc && cd /var/lib/misskey/current && yarn start' & 

This command starts Misskey running in the background, and you should be able to access it through a web browser.

Step 7: Configure Nginx

We will set up Nginx to act as a reverse proxy for Misskey so that Misskey can be accessed via a domain name, e.g., example.com. To do that, we need to add the Nginx configuration. Run the following command to create the Nginx configuration file:

sudo vim /etc/nginx/nginx.conf

And add these lines:

http {
    upstream misskey {
        server localhost:8080;
    }

    server {
        listen 80;
        listen [::]:80;

        server_name example.com;

        location / {
            proxy_pass http://misskey;
        }
    }
}

Restart Nginx,

sudo systemctl restart nginx.service

Now you should be able to access Misskey via a web browser with the domain name described.

Conclusion

Congratulations! You have successfully installed Misskey on your nixOS Latest and configured it to be accessed via a domain name. Misskey is now ready for use as a decentralized social network. Happy posting!

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!

Alternatively, for the best virtual desktop, try Shells!