GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara menginstal Jaringan Sosial Mastodon dengan Docker di Ubuntu 18.04 LTS

Mastodon adalah jejaring sosial gratis, terdesentralisasi, dan sumber terbuka. Itu dibuat sebagai alternatif untuk Twitter. Sama seperti Twitter, orang dapat saling mengikuti, memposting pesan, gambar, dan video. Namun tidak seperti Twitter, tidak ada toko pusat atau otoritas untuk konten tersebut.

Sebaliknya, Mastodon beroperasi di ribuan server berbeda yang masing-masing menjalankan berbagai anggota komunitas. Pengguna yang mendaftar di satu server dapat dengan mudah terhubung ke pengguna di jaringan lain dan saling mengikuti di seluruh instance.

Siapa pun dapat menginstal instance server Mastodon mereka sendiri. Tutorial ini akan mengajari Anda cara menyiapkan instance Mastodon di server dengan Ubuntu 18.04 menggunakan Docker.

Prasyarat

  • Server berbasis Ubuntu 18.04 dengan pengguna sudo non-root.

  • Pastikan sistem Anda mutakhir.

    $ sudo apt update
    $ sudo apt upgrade
    
  • Mastodon mengirimkan pemberitahuan email kepada pengguna. Salah satu opsi untuk membuatnya berfungsi adalah menyiapkan server email Anda sendiri. Anda dapat melakukannya di server yang sama seperti Anda akan menginstal mastodon atau di server yang berbeda. Melakukannya di luar cakupan panduan ini.

    Kami akan merekomendasikan Anda untuk menggunakan layanan surat Transaksional pihak ketiga seperti Mailgun, Sendgrid, Amazon SES atau Sparkpost. Petunjuk 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 - Memasang Dependensi

Sebelum menginstal Mastodon, kita perlu memastikan server kita memiliki perangkat lunak tertentu yang perlu diinstal dengan benar. Jalankan perintah berikut untuk menginstal 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 menginstal Git, kita harus mengonfigurasinya sebelum melanjutkan.

$ git config --global user.name "Your Name" 
$ git config --global user.email "[email protected]"

Langkah 2 - Mengonfigurasi Firewall

Pada langkah sebelumnya, kami menginstal, ufw (Uncomplicated Firewall) . Sebelum kita dapat melanjutkan untuk menginstal Mastodon, kita perlu mengkonfigurasinya.

Aktifkan SSH dan port yang baru saja kita buat agar tidak terkunci.

$ sudo ufw allow OpenSSH

Aktifkan firewall ufw.

$ sudo ufw enable

Kami 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 - Instal Docker

Tambahkan kunci GPG Docker ke sistem Anda.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Verifikasi sidik jari dari kunci 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"

Perbarui basis data paket Anda.

$ sudo apt update

Instal Docker-CE. CE adalah Docker Edisi Komunitas.

$ sudo apt install docker-ce -y

Docker harus diinstal sekarang. Periksa apakah itu berjalan.

$ sudo systemctl status docker

Outputnya harus 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 akun pengguna Linux Anda yang terbatas ke grup buruh pelabuhan sehingga Anda dapat menjalankan buruh pelabuhan tanpa sudo.

sudo usermod -aG docker $USER

$USER variabel akan memilih dan menambahkan pengguna yang masuk saat ini ke grup buruh pelabuhan. Ganti $USER dengan nama pengguna yang sebenarnya jika saat ini Anda tidak masuk dengan pengguna tersebut.

Beralih ke pengguna yang baru saja kita tambahkan. Meskipun Anda sudah masuk, Anda masih perlu beralih lagi untuk memuat ulang izin.

$ su - ${USER}

Periksa apakah semuanya berjalan dengan baik dengan menjalankan "Hello World" . bawaan program.

$ docker run hello-world

Anda akan melihat output berikut yang akan memberi tahu Docker telah 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

Anda dapat melewati langkah ini dan melanjutkan, tetapi menginstal Docker Compose akan membuat menjalankan Mastodon lebih mudah terutama jika Anda ingin melakukannya di lebih dari satu server.

$ 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 penulisan tutorial ini, 1.24.1 adalah rilis stabil Docker Compose saat ini. Anda dapat memeriksa versi rilis terbaru dari halaman Github mereka.

Terapkan izin yang dapat dieksekusi ke biner penulisan buruh pelabuhan.

$ 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

Ini akan mencetak output berikut.

docker-compose version 1.24.1, build 4667896b

Langkah 5 - Instal Mastodon

Klon repositori Mastodon ke server Anda.

$ git clone https://github.com/tootsuite/mastodon

Arahkan ke direktori tempat kita baru saja menyalin file.

$ cd mastodon

Mastodon dilengkapi dengan contoh file konfigurasi. Kita perlu mengganti namanya agar Mastodon bisa bekerja.

$ cp .env.production.sample .env.production

Kita perlu membuat kunci rahasia untuk file konfigurasi kita. Tapi sebelum itu, kita perlu membangun image Docker.

$ docker-compose build

Setelah image berhasil dibuat, Anda perlu membuat beberapa kunci yang diperlukan untuk mengonfigurasi Mastodon.

Buat SECRET_KEY_BASE pertama.

$ SECRET_KEY_BASE=$(docker-compose run --rm web bundle exec rake secret)

Masukkan kunci di atas ke dalam file konfigurasi.

$ sed -i -e "s/SECRET_KEY_BASE=/&${SECRET_KEY_BASE}/" .env.production

Buat dan masukkan OTP_SECRET ke dalam file konfigurasi.

$ OTP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/OTP_SECRET=/&${OTP_SECRET}/" .env.production

Buat dan masukkan PAPERCLIP_SECRET ke dalam file konfigurasi.

$ PAPERCLIP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/PAPERCLIP_SECRET=/&${PAPERCLIP_SECRET}/" .env.production

Buat nilai untuk VAPID_PRIVATE_KEY dan VAPID_PUBLIC_KEY .

$ docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key

Buka .env.production berkas.

$ sudo nano ./.env.production

Telusuri VAPID_PRIVATE_KEY dan VAPID_PUBLIC_KEY dalam file dan salin output dari perintah sebelumnya.

Temukan LOCAL_DOMAIN variabel dan ubah nilainya dari example.com ke nama domain yang telah 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 setelah Anda selesai.

Anda perlu membangun image Docker lagi untuk mengimplementasikan 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 - Instal dan Konfigurasi Nginx

Langkah selanjutnya dalam panduan kami adalah menginstal server Nginx untuk membuat situs web Mastodon berfungsi.

Jalankan perintah berikut untuk menginstal server Nginx.

$ sudo apt install nginx -y

Nginx hadir dengan situs default yang dikonfigurasi. Hapus itu.

$ 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 yang Anda inginkan)

$ sudo nano /etc/nginx/sites-available/mastodon

Copy-paste teks berikut 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 Anda. Jika Anda menggunakan layanan SSL lain, Anda perlu mengedit lokasi kunci dan melewatkan bagian tutorial berikutnya.

Langkah 7 - Instal dan Konfigurasi Let's Encrypt

Pastikan Nginx dihentikan.

$ sudo systemctl stop nginx

Tambahkan repositori Certbot.

$ sudo add-apt-repository ppa:certbot/certbot

Perbarui paket Sistem.

$ sudo apt update

Instal alat Certbot.

$ sudo apt install certbot

Anda perlu membuat sertifikat dua kali - sekali dengan metode TLS SNI dan yang kedua menggunakan metode webroot.

sudo certbot certonly --standalone -d example.com

Sekarang, buat sertifikat menggunakan metode webroot. Ini akan membutuhkan Nginx untuk berjalan.

sudo systemctl start nginx
sudo certbot certonly --webroot -d example.com -w /home/user/mastodon/public/

Alat ini akan menanyakan apakah Anda ingin menyimpan sertifikat atau memperbaruinya. Pilih opsi untuk memperbarui.

Siapkan Pembaruan Otomatis Sertifikat SSL

Sertifikat Let's Encrypt memiliki validitas 90 hari. Setelah itu, Anda perlu memperbaruinya lagi. Untuk itu, Anda dapat membuat tugas cron untuk melakukannya secara otomatis untuk Anda.

Buat tugas cron.

$ sudo nano /etc/cron.daily/letsencrypt-renew

Salin dan tempel kode berikut ke dalam file.

#!/usr/bin/env bash
certbot renew
systemctl reload nginx

Simpan dan keluar dari file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Jadikan skrip dapat dieksekusi dan mulai ulang daemon cron agar skrip kita berjalan setiap hari.

$ sudo chmod +x /etc/cron.daily/letsencrypt-renew
$ sudo systemctl restart cron

Langkah 8 - Buat Pengguna Mastodon Anda

Kunjungi situs mastodon Anda di browser. Anda akan melihat layar berikut.

Masukkan nama pengguna, alamat email, dan kata sandi yang Anda inginkan untuk membuat akun baru di instans Mastodon Anda. Nama pengguna lengkap Anda yang akan Anda perlukan untuk terhubung ke pengguna server Mastodon lainnya adalah howtoforge@example.com.

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. Buat daftar 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 membuat perubahan yang diperlukan, kita perlu mengakses wadah streaming. SSH ke mastodon_streaming_1 wadah.

$ docker exec -it mastodon_streaming_1 /bin/bash

Ini akan meluncurkan shell Bash di dalam wadah Anda.

Jalankan perintah berikut untuk menyetujui nama pengguna yang baru Anda buat.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --confirm

Jalankan perintah berikut untuk menjadikan akun Anda yang baru dibuat sebagai administrator.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --role admin

Keluar dari wadah.

[email protected]:~$ exit

Masuk ke instance Anda dengan nama pengguna dan kata sandi Anda dan Anda akan disambut dengan layar berikut.

Klik Ayo Pergi dan Anda akan melanjutkan ke halaman berikut yang akan memberi tahu Anda tentang beberapa dasar cara kerja Mastodon.

Klik Selesaikan Tutorial untuk disambut dengan beranda Mastodon tempat Anda dapat mulai memposting sepuasnya.

Anda dapat mengakses pengaturan dan area administrasi dari menu Preferensi.

Langkah 9 - Pemeliharaan

Untuk melihat kinerja dan log instans Mastodon Anda, buka https://example.com/sidekiq/

Di sini Anda dapat melihat daftar berbagai proses dan tugas terjadwal yang terkait dengan instans Mastodon Anda. Anda juga dapat memeriksa tugas yang gagal di bawah bagian Mati atau Coba Lagi. Ini juga akan memberi tahu Anda penggunaan memori instance Anda.

Anda dapat memeriksa kondisi database instance Anda dari https://example.com/pghero/

Anda dapat melakukan pemeliharaan database, menjalankan kueri SQL, dan menghapus indeks yang tidak digunakan.

Jika situs Anda tidak dimuat sama sekali karena suatu alasan, Anda dapat memeriksa log yang dibuat oleh Docker.

Untuk itu, tutup wadah Anda terlebih dahulu.

$ docker-compose down

Jalankan penulisan Docker dalam status terlampir sehingga Anda dapat melihat log yang dihasilkan oleh setiap penampung.

$ docker-compose up

Langkah 10 Meng-upgrade Mastodon Anda

Beralih ke direktori mastodon Anda.

$ cd /home/user/mastdon

Unduh pembaruan dari repositori

$ git fetch

Jika Anda telah mengubah docker-compose.yml . Anda file untuk beberapa alasan, Anda harus menjalankan perintah berikut terlebih dahulu.

$ git status

Ini akan memberi tahu Anda semua perubahan yang dilakukan padanya. Jika file diubah, simpan perubahan Anda terlebih dahulu.

$ git stash

Lihat versi Mastodon terbaru. Periksa versi terbaru dari halaman rilis.

$ git checkout <version/tag>

Jika Anda menjalankan git stash sebelumnya, jalankan perintah berikut untuk mengulang perubahan pada docker-compose.yml berkas.

$ git stash pop

Bangun citra buruh pelabuhan.

$ docker-compose build

Lakukan migrasi basis data.

$ 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

Itu saja untuk tutorial ini. Untuk mempelajari lebih lanjut tentang Mastodon, ikuti dokumen mereka.


Ubuntu
  1. Cara Menginstal Docker di Ubuntu 16.04

  2. Cara Menginstal R di Ubuntu 18.04 LTS

  3. Cara Menginstal Docker di Ubuntu 20.04 LTS

  1. Cara Menginstal Docker Di Ubuntu 18.04

  2. Cara Menginstal Docker di Ubuntu 20.04

  3. Cara Menginstal R di Ubuntu 20.04 LTS

  1. Cara Menginstal Docker di Ubuntu 22.04 / 20.04 LTS

  2. Cara menginstal ONLYOFFICE 8.9.0 dengan Docker di Ubuntu

  3. Cara Menginstal OroCRM dengan Nginx di Ubuntu 16.04 LTS