Mastodon adalah software media sosial (seperti Twitter) yang sifatnya free dan open-source. Keunikan dari Mastodon adalah terdesentralisasi, banyak orang menginstall Mastodon dan masing-masing installasi Mastodon (yang bisa kita sebut node atau instance) dapat saling berkomunikasi dan dapat memiliki syarat dan ketentuan, kebijakan privasinya masing-masing.
Artikel ini membahas mengenai cara menginstal Mastodon di Ubuntu 20.04 beserta dependensi yang diperlukan seperti PostgreSQL, Ruby, dan NodeJS, meng-konfigurasi Mastodon dan SystemD service supaya dapat auto-start setelah server booting.
Catatan: saya menggunakan self-signed SSL certificate karena instance yang akan saya jalankan akan berada dibalik Cloudflare reverse proxy.
Video saat proses installasi dan konfigurasi Mastodon dapat dilihat dibawah ini:
Pre-requisites
Sebelum memulai, ada beberapa syarat yang harus dipenuhi untuk dapat menjalankan Mastodon, yaitu:
- Ubuntu Server 20.04 (fresh) dengan akses
root
. - Sebuah domain (atau sub-domain) untuk Mastodon instance (dalam hal ini saya menggunakan domain
vr4.me
dan instance Mastodon nantinya akan dapat diakses melaluihttps://social.vr4.me
). - SMTP server untuk pengiriman email.
Menyiapkan Sistem
Pertama, pastikan server Ubuntu yang digunakan sudah up-to-date:
1apt update && apt upgrade
Install curl
, wget
, gnupg
, apt-transport-https
, lsb-release
dan ca-certificates
:
1apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
Install NodeJS 16
:
1curl -sL https://deb.nodesource.com/setup_16.x | bash -
Gunakan repositori official PostgreSQL:
1wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
2echo "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
Update dan install system package yang dibutuhkan:
1apt update
2apt install -y \
3 imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \
4 g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \
5 bison build-essential libssl-dev libyaml-dev libreadline6-dev \
6 zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \
7 nginx redis-server redis-tools postgresql postgresql-contrib \
8 certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev
Aktifkan fitur NodeJS corepack
dan set versi Yarn ke classic
:
1corepack enable
2yarn set version classic
Install Ruby dengan rbenv
.
Catatan:
rbenv
harus diinstall melalui single Linux user, maka kita perlu membuat linux user yang nantinya service Mastodon akan berjalan atas user tersebut. (di artikel ini kita akan buat usermastodon
) :
1adduser --disabled-login mastodon
Kemudian, login sebagai mastodon
user:
1su - mastodon
Dan sebagai mastodon
user, install rbenv
dan rbenv-build
:
1git clone https://github.com/rbenv/rbenv.git ~/.rbenv
2cd ~/.rbenv && src/configure && make -C src
3echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
4echo 'eval "$(rbenv init -)"' >> ~/.bashrc
5exec bash
6git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Setelah proses setup Ruby environment selesai, baru kita dapat menginstall versi Ruby dan bundler
yang diperlukan:
1RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.4
2rbenv global 3.0.4
3gem install bundler --no-document
kemudian kembali sebagai root
user untuk melakukan setting PostgreSQL.
1exit
Setting PostgreSQL
Untuk performa yang optimal, kita bisa menggunakan pgTune untuk menggenerate konfigurasi sesuai resource server kita. Edit /etc/postgresql/15/main/postgresql.conf
dan masukkan setting rekomendasi dari situs pgTune diatas sebelum merestart service PostgreSQL dengan perintah systemctl restart postgresql
.
Sekarang, buat PostgreSQL user yang nantinya akan digukakan. Hal paling mudah adalah menggunakan ident authentication menggunakan user yang sama dengan linux username mastodon
.
Bukan promt PostgreSQL:
1sudo -u postgres psql
pada command promt psql
, jalankan perintah berikut:
1CREATE USER mastodon CREATEDB;
2\q
Sampai disini, kebutuhan sistem utama sudah siap, saatnya untuk melanjuktan ke tahap berikutnya yaitu mensetup Mastodon dan dependency-nya.
Setting Mastodon
Login sebagai mastodon
user dan download source code Mastodon menggunakan git
(pilih stable
release):
1su - mastodon
2git clone https://github.com/mastodon/mastodon.git live && cd live
3git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
Install Ruby and JavaScript dependencies untuk aplikasi Mastodon:
1bundle config deployment 'true'
2bundle config without 'development test'
3bundle install -j$(getconf _NPROCESSORS_ONLN)
4yarn install --pure-lockfile
jalankan Mastodon interactive setup wizard:
1RAILS_ENV=production bundle exec rake mastodon:setup
Perintah diatas akan :
- Membuat konfigurasi file (
.env.production
) - Menjalankan pre-compilation asset website
- Membuat skema database
Di kasus saya, saya ingin Mastodon dapat diakses melalui https://social.vr4.me
, tetapi tetap menggunakan main domain vr4.me
sebagai identitas usernya (@[email protected]
, dan bukan @[email protected]
).
Agar hal tersebut dapat dicapai, saya perlu menambahkan konfigurasi WEB_DOMAIN=social.vr4.me
dan mengubah value dari LOCAL_DOMAIN
menjadi vr4.me
di file konfigurasi mastodon (.env.production
). Silahkan kunjungi halaman dokumentasi konfigurasi untuk informasi lebih detail.
Setelah konfigurasi Mastodon dirasa sudah benar, kita bisa kembali sebagai user root
:
1exit
Setting Nginx
Copy sample konfigurasi Nginx yang ada di repositori Mastodon:
1cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
2ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
kemudian edit /etc/nginx/sites-available/mastodon
dan ubah example.com
ke domain yang digunakan (dalam kasus ini social.vr4.me
).
Seperti yang sudah saya informasikan sebelumnya, instance Mastodon yang saya jalankan akan berada dibalik Cloudflare reverse proxy sehingga saya hanya akan menggunakan self-signed certificate.
Jika Anda ingin menggunakan Certbot untuk mendapatkan SSL certificate:
1systemctl reload nginx
2certbot --nginx -d social.vr4.me
Ubah social.vr4.me
dengan nama domain Anda.
Setting Mastodon SystemD Service
Copy template systemd service
dari repositori Mastodon ke /etc/system/systemd
:
1cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
kemudian start dan enable Mastodon services:
1systemctl daemon-reload
2systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
Tunggu beberapa menit dan coba akses Mastodon dari web broser dan selamat menikmati!