Mastodon adalah CMS jejaring sosial free and open-source, terdesentralisasi, yang dibuat sebagai alternatif untuk Twitter. Seperti halnya di Twitter, kita dapat saling mengikuti, memposting pesan, gambar, dan video. Tetapi tidak seperti Twitter, tidak ada store atau otoritas untuk konten.
Sebagai gantinya, Mastodon beroperasi di ribuan server yang berbeda yang masing-masing menjalankan berbagai anggota komunitas. Pengguna yang mendaftar di satu server dapat dengan mudah terhubung ke pengguna di jaringan lain dan mengikuti satu sama lain di seluruh instance.
Siapa pun dapat install instance mereka sendiri dari server Mastodon. Tutorial ini akan mengajarkan Anda cara install dan konfigurasi instance Mastodon Anda pada server dengan Ubuntu 18.04 menggunakan Docker.
Prasyarat
- Server berbasis Ubuntu 18.04
- Masuk sebagai user non root dengan hak sudo
- update sistem Anda
sudo apt update && sudo apt upgrade
- Kami merekomendasikan Anda untuk menggunakan layanan surat Transaksional pihak ke-3 seperti Mailgun, Sendgrid, Amazon SES atau Sparkpost. Instruksi dalam panduan ini akan menggunakan Mailgun sebagai penyedia SMTP Anda.
- Pastikan Anda memiliki nama domain yang menunjuk ke server. Untuk tutorial ini, kita akan menggunakan example.com sebagai domain
Langkah 1 – Install Dependensi
Sebelum kita install Mastodon, kita perlu memastikan server kita memiliki perangkat lunak tertentu yang harus diinstal dengan benar. Jalankan perintah berikut untuk install dependensi.
sudo apt update sudo apt install ca-certificates curl ufw apt-transport-https software-properties-common git -y
Beberapa perangkat lunak di atas mungkin sudah diinstal sebelumnya untuk Anda.
Karena kita install Git, kita harus mengkonfigurasinya sebelum melanjutkan.
git config --global user.name "Nama Anda" git config --global user.email "[email protected]"
Langkah 2 – Konfigurasi Firewall
Pada langkah Kita sebelumnya, kita telah install ufw (Uncomplicated Firewall). Sebelum kita dapat melanjutkan untuk install Mastodon, kita perlu mengkonfigurasinya.
Aktifkan SSH dan port yang baru saja kita buat sehingga kita tidak terkunci.
sudo ufw allow OpenSSH
Aktifkan ufw firewall.
sudo ufw enable
Kita juga perlu mengaktifkan http
dan https
agar Mastodon dapat beroperasi.
sudo ufw allow http sudo ufw allow https
Periksa status firewall.
sudo ufw status
Anda akan melihat output seperti berikut
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Langkah 3 – Install Docker
Tambahkan GPG key Docker ke sistem Anda.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Verifikasi fingerprint dari key yang diunduh.
sudo apt-key fingerprint 0EBFCD88
Anda akan melihat output seperti berikut.
pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <[email protected]> sub rsa4096 2017-02-22 [S]
Tambahkan repositori Docker.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Update package database Anda.
sudo apt update
Instal Docker-CE. CE adalah singkatan dari Community Edition
sudo apt install docker-ce -y
Docker akan diinstal sekarang. Periksa apakah docker telah berjalan.
sudo systemctl status docker
Outputnya kurang lebih seperti berikut ini.
? docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-22 18:26:29 UTC; 25min ago Docs: https://docs.docker.com Main PID: 3574 (dockerd) Tasks: 8 CGroup: /system.slice/docker.service ??3574 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Tekan q untuk keluar.
Tambahkan pengguna Linux yang hanya terbatas pada grup docker, sehingga Anda dapat menjalankan docker tanpa sudo.
sudo usermod -aG docker $USER
Variabel $USER akan memilih dan menambahkan pengguna login saat ini ke grup docker. Ganti $USER dengan nama user lain jika Anda menginginkannya.
Beralih ke pengguna yang baru saja kita tambahkan dengan perintah su
. Meskipun sudah masuk, Anda masih harus beralih lagi untuk memuat ulang izin.
su - ${USER}
Periksa apakah semuanya berjalan baik dengan menjalankan program bawaan “Hello World“.
docker run hello-world
Anda akan melihat output berikut yang akan memberi tahu Docker diinstal dan berfungsi dengan baik.
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly.
Langkah 4 – Instal Docker Compose
Dimungkinkan untuk melewati langkah ini dan melanjutkan tetapi menginstall Docker Compose akan membuat pengoperasian Mastodon jauh lebih mudah terutama jika Anda ingin melakukannya di lebih dari satu server. Install Docker compose dengan melakukan curl
pada github :
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Pada saat menulis tutorial ini, 1.24.1
adalah rilis stabil Docker Compose saat ini. Anda dapat memeriksa versi rilis terbaru dari halaman Github mereka.
Terapkan izin agar dapat dieksekusi ke docker compose binary.
sudo chmod +x /usr/local/bin/docker-compose
Tambahkan Penyelesaian Perintah ke Docker Compose.
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Verifikasi apakah instalasi Anda berhasil.
docker-compose --version
perintah akan mencetak output berikut.
docker-compose version 1.24.1, build 4667896b
Langkah 5 – Install Mastodon
Clone repositori Mastodon ke server Anda.
git clone https://github.com/tootsuite/mastodon
masuk ke direktori tempat kita baru saja menyalin file.
cd mastodon
Mastodon hadir dengan file konfigurasi sampel. Kita perlu mengganti nama dengan perintah cp
untuk membuat Mastodon berfungsi.
cp .env.production.sample .env.production
Kita perlu membuat secret keys untuk file konfigurasi kita. Tetapi sebelum itu, kita perlu build Docker image.
docker-compose build
Sekarang setelah image berhasil dibangun, Anda perlu membuat beberapa keys yang diperlukan untuk mengkonfigurasi Mastodon.
Hasilkan SECRET_KEY_BASE terlebih dahulu.
SECRET_KEY_BASE=$(docker-compose run --rm web bundle exec rake secret)
Masukkan key di atas dalam file konfigurasi dengan perintah.
sed -i -e "s/SECRET_KEY_BASE=/&${SECRET_KEY_BASE}/" .env.production
Hasilkan dan masukkan OTP_SECRET ke file konfigurasi.
OTP_SECRET=$(docker-compose run --rm web bundle exec rake secret) sed -i -e "s/OTP_SECRET=/&${OTP_SECRET}/" .env.production
Hasilkan dan masukkan PAPERCLIP_SECRET ke file konfigurasi.
PAPERCLIP_SECRET=$(docker-compose run --rm web bundle exec rake secret) sed -i -e "s/PAPERCLIP_SECRET=/&${PAPERCLIP_SECRET}/" .env.production
Hasilkan nilai untuk VAPID_PRIVATE_KEY dan VAPID_PUBLIC_KEY.
docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key
Buka file .env.production dengan text editor nano
.
sudo nano ./.env.production
Cari VAPID_PRIVATE_KEY dan VAPID_PUBLIC_KEY dalam file dan copy output dari perintah sebelumnya.
Temukan variabel LOCAL_DOMAIN dan ubah nilainya dari example.com ke nama domain yang Anda pilih untuk instalasi Mastodon Anda.
Masukkan nilai yang Anda dapatkan dari penyedia SMTP Anda.
SMTP_SERVER = smtp.mailgun.org SMTP_PORT = 587 SMTP_LOGIN = username SMTP_PASSWORD = password SMTP_FROM_ADDRESS = [email protected]
Tekan Ctrl + X dan simpan file ketika Anda selesai.
Anda perlu membuat build Docker image lagi untuk menerapkan semua perubahan yang dibuat di atas.
docker-compose build
Siapkan database
docker-compose run --rm web rails db:migrate
Pra-kompilasi aset Mastodon.
docker-compose run --rm web rails assets:precompile
Jalankan perintah berikut untuk menjalankan container.
docker-compose up -d
Langkah 6 – Install dan Konfigurasi Nginx
Langkah selanjutnya dalam panduan kami adalah menginstal server Nginx untuk membuat situs web Mastodon berfungsi.
Jalankan perintah berikut untuk install web server Nginx.
sudo apt install nginx -y
Nginx datang dengan situs default yang dikonfigurasi. Hapus file tersebut .
sudo rm /etc/nginx/sites-available/default
Juga, hapus symlink untuk situs default.
sudo rm /etc/nginx/sites-enabled/default
Buat file Konfigurasi Nginx untuk Mastodon.
sudo touch /etc/nginx/sites-available/mastodon
Buat symlink untuk konfigurasi Mastodon.
sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
Buka konfigurasi Mastodon di editor Nano. (Anda dapat memilih editor lain yang Anda inginkan)
sudo nano /etc/nginx/sites-available/mastodon
Copy-paste teks berikut ini ke dalamnya.
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; listen [::]:80; server_name example.com; root /home/user/mastodon/public; # Useful for Let's Encrypt location /.well-known/acme-challenge/ { allow all; } location / { return 301 https://$host$request_uri; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; keepalive_timeout 70; sendfile on; client_max_body_size 80m; root /home/user/mastodon/public; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; add_header Strict-Transport-Security "max-age=31536000"; location / { try_files $uri @proxy; } location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) { add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri @proxy; } location /sw.js { add_header Cache-Control "public, max-age=0"; try_files $uri @proxy; } location @proxy { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Proxy ""; proxy_pass_header Server; proxy_pass http://127.0.0.1:3000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; tcp_nodelay on; } location /api/v1/streaming { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Proxy ""; proxy_pass http://127.0.0.1:4000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; tcp_nodelay on; } error_page 500 501 502 503 504 /500.html; }
Konfigurasi di atas mengasumsikan Anda menggunakan Let’s encrypt sebagai penyedia SSL. Jika Anda menggunakan layanan SSL lain, maka Anda perlu mengedit lokasi dari keys dan melewatkan bagian tutorial selanjutnya.
Langkah 7 – Install dan Konfigurasi Let’s Encrypt
Mengamankan situs web Anda dengan HTTPS sangat penting, ini adalah praktik yang baik untuk mengamankan lalu lintas situs Anda. Untuk mendapatkan sertifikat SSL dari Let’s Encrypt, kita akan menggunakan klien Acme.sh.
Acme.sh adalah perangkat lunak unix shell murni untuk mendapatkan sertifikat SSL dari Let’s Encrypt dengan tanpa dependensi.
Pertama pastikan nginx tidak berjalan
sudo service nginx stop
Download dan install Acme.sh:
sudo su - root git clone https://github.com/Neilpang/acme.sh.git cd acme.sh ./acme.sh --install --accountemail [email protected] source ~/.bashrc cd ~
periksa versi Acme.sh :
acme.sh --version # v2.0.2
Dapatkan sertifikat RSA dan ECC/ECDSA untuk domain/hostname Anda:
# RSA 2048 acme.sh --issue --standalone -d example.com --keylength 2048 # ECDSA acme.sh --issue --standalone -d example.com --keylength ec-256
Jika ingin membuat sertifikat palsu untuk pengujian, Anda dapat menambahkan flag --staging
ke perintah di atas.
Setelah menjalankan perintah di atas, certificates dan keys akan berada di:
- untuk RSA di direktori :
/home/username/example.com
. - untuk ECC/ECDSA di direktori :
/home/username/example.com_ecc
.
Untuk list semua sertifikat, jalankan perintah :
acme.sh --list
Buat direktori untuk menyimpan sertifikat Anda. Kita akan menggunakan direktori /etc/letsencrypt
mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Install/copy sertifikat ke direktori /etc/letsencrypt
.
# RSA acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service" # ECC/ECDSA acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
Semua sertifikat akan diperpanjang secara otomatis setiap 60 hari.
Setelah mendapatkan sertifikat, keluar dari user root dan kembali ke user biasa dengan hak sudo
:
exit
Langkah 8 – Buat User Mastodon
Kunjungi situs mastodon Anda di browser. Anda akan melihat layar berikut.
Masukkan nama, alamat email, dan kata sandi yang Anda inginkan untuk membuat akun baru pada instance Mastodon Anda. Mastodon akan mengirimi Anda email konfirmasi untuk memverifikasi pendaftaran.
Anda juga dapat mengonfirmasi pendaftaran secara manual. Untuk itu, Anda perlu SSH ke instance Docker Anda. List semua instance Docker saat ini.
docker ps
Anda akan melihat output seperti di bawah ini.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 32f2c4cd2598 tootsuite/mastodon "/tini -- bash -c 'r…" 16 hours ago Up 16 hours (healthy) 127.0.0.1:3000->3000/tcp mastodon_web_1 76beca2b858d tootsuite/mastodon "/tini -- node ./str…" 16 hours ago Up 16 hours (healthy) 127.0.0.1:4000->4000/tcp mastodon_streaming_1 08f7a42b75ac tootsuite/mastodon "/tini -- bundle exe…" 16 hours ago Up 16 hours mastodon_sidekiq_1 bacaa8c09a85 redis:5.0-alpine "docker-entrypoint.s…" 17 hours ago Up 17 hours (healthy) mastodon_redis_1 62e9b2175a53 postgres:9.6-alpine "docker-entrypoint.s…" 17 hours ago Up 17 hours (healthy) mastodon_db_1
Untuk melakukan perubahan yang diperlukan, kita perlu mengakses streaming container. SSH ke container mastodon_streaming_1.
docker exec -it mastodon_streaming_1 /bin/bash
Ini akan meluncurkan Bash shell di dalam container Anda.
Jalankan perintah berikut untuk menyetujui nama pengguna Anda yang baru dibuat.
mastodon@76beca2b858d:~RAILS_ENV=production bin/tootctl accounts modify howtoforge --confirm
Jalankan perintah berikut untuk menjadikan akun Anda yang baru dibuat sebagai administrator.
mastodon@76beca2b858d:~RAILS_ENV=production bin/tootctl accounts modify howtoforge --role admin
Keluar dari container.
mastodon@76beca2b858d:~exit
Masuk ke instance Anda dengan nama pengguna dan kata sandi dan Anda akan disambut dengan layar berikut.
Klik Let’s Go dan Anda akan melanjutkan ke halaman-halaman berikut yang akan memberi tahu Anda tentang beberapa dasar cara kerja Mastodon.
Klik pada Finish Tutorial, dan Anda akan disambut dengan beranda Mastodon di mana Anda dapat mulai memposting pertama kali.
Anda dapat mengakses pengaturan dan area administrasi dari menu Preferences.
Langkah 9 – Maintenance
Untuk melihat kinerja dan log instance Mastodon, kunjungi https://example.com/sidekiq/
Di sini Anda dapat melihat daftar berbagai proses dan tugas terjadwal yang terkait dengan instance Mastodon. Anda juga dapat memeriksa tugas yang gagal di bawah bagian Dead or Retries. Ini juga akan memberi tahu penggunaan memori instance.
Anda dapat memeriksa kesehatan basis data instance Anda dari https://example.com/pghero/
Anda dapat melakukan pemeliharaan database, menjalankan query SQL dan menghapus indeks yang tidak digunakan.
Jika situs Anda tidak load sama sekali untuk beberapa alasan, Anda dapat memeriksa log yang dihasilkan oleh Docker.
Untuk itu, tutup container Anda terlebih dahulu.
docker-compose down
Jalankan Docker compose dalam keadaan terlampir sehingga Anda dapat melihat log yang dihasilkan oleh setiap container.
docker-compose up
Langkah 10 Upgrade Mastodon
Beralih ke direktori mastodon Anda.
cd /home/user/mastdon
Download updates dari repositori
git fetch
Jika Anda telah mengubah file docker-compose.yml
karena alasan tertentu, Anda harus menjalankan perintah berikut terlebih dahulu.
git status
Ini akan memberi tahu Anda semua perubahan yang dilakukan untuk itu. Jika file diubah, maka simpan/backup perubahan Anda terlebih dahulu.
git stash
Lihat versi Mastodon terbaru. Periksa versi terbaru dari halaman releases di github.
git checkout <version/tag>
Jika Anda menjalankan git stash
sebelumnya, kemudian jalankan perintah berikut untuk mengulang perubahan Anda ke file docker-compose.yml.
git stash pop
Build docker image.
docker-compose build
Lakukan migrasi database.
docker-compose run --rm web rails db:migrate
Pra-kompilasi aset Mastodon.
docker-compose run --rm web rails assets:precompile
Jalankan perintah berikut untuk menjalankan container.
docker-compose up -d
Untuk mempelajari lebih lanjut tentang Mastodon, ikuti dokumen mereka.