Last Updated:

Mencoba Menginstall Tiga Social Media Self Hosted dengan Docker

RAKIFSUL
RAKIFSUL Artikel

Karena penasaran untuk mencoba beberapa social media self hosted, saya memulainya dari mencoba menginstall Mastodon.

Mencoba Menginstall Mastodon

Waktu saya menginstallnya, saya merasakan sedikit kesulitan karena kurangnya dokumentasi untuk menginstallnya via docker.

Akhirnya saya memutuskan untuk mencoba docker compose yang disediakan linuxserver.

Saya menggunakan sebagian dari docker compose di atas, dan digabungkan dengan service postgresql dan redis.

Kira-kira docker-compose.yml yang saya gunakan seperti ini:

# This file is designed for production server deployment, not local development work
# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/docs/DEVELOPMENT.md#docker

services:
  db:
    restart: always
    image: postgres:14-alpine
    container_name: mastodon-postgres
    environment:
      - POSTGRES_DB=mastodon
      - POSTGRES_USER=mastodon
      - POSTGRES_PASSWORD=mastodon
      - 'POSTGRES_HOST_AUTH_METHOD=trust'
    volumes:
      - ./postgres14:/var/lib/postgresql/data
      
  redis:
    restart: always
    image: redis:7-alpine
    container_name: mastodon-redis
    volumes:
      - ./redis:/data
      
  mastodon:
    image: lscr.io/linuxserver/mastodon:latest
    container_name: mastodon
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - LOCAL_DOMAIN=mastodon.local
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - DB_HOST=db
      - DB_USER=mastodon
      - DB_NAME=mastodon
      - DB_PASS=mastodon
      - DB_PORT=5432
      - ES_ENABLED=false
      - ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=generate-sendiri
      - ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=generate-sendiri
      - ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=generate-sendiri
      - SECRET_KEY_BASE=generate-sendiri
      - OTP_SECRET=generate-sendiri
      - VAPID_PRIVATE_KEY=generate-sendiri
      - VAPID_PUBLIC_KEY=generate-sendiri
      - SMTP_SERVER=localhost
      - SMTP_PORT=25
      - SMTP_AUTH_METHOD=none
      - SMTP_OPENSSL_VERIFY_MODE=none
      - SMTP_ENABLE_STARTTLS=auto
      - SMTP_FROM_ADDRESS=Mastodon <notifications@mastodon.local>
      - S3_ENABLED=false
      - WEB_DOMAIN=mastodon.example.com #optional
      # - ES_HOST=es #optional
      # - ES_PORT=9200 #optional
      # - ES_USER=elastic #optional
      # - ES_PASS=elastic #optional
      # - S3_BUCKET= #optional
      # - AWS_ACCESS_KEY_ID= #optional
      # - AWS_SECRET_ACCESS_KEY= #optional
      # - S3_ALIAS_HOST= #optional
      # - SIDEKIQ_ONLY=false #optional
      # - SIDEKIQ_QUEUE= #optional
      # - SIDEKIQ_DEFAULT=false #optional
      # - SIDEKIQ_THREADS=5 #optional
      # - DB_POOL=5 #optional
      # - NO_CHOWN= #optional
    volumes:
      - ./mastodon-config:/config
      - ./mastodon-data:/data
    ports:
      - 9898:80
      - 9999:443
    restart: unless-stopped
    depends_on:
      - db
      - redis

Namun saat saya mencoba men-setup-nya:

docker compose up -d

docker compose run --rm mastodon bundle exec rake db:setup

Saya merasakan bahwa aplikasi tersebut cukup berat.

Akhirnya proses penginstallan saya batalkan sebelum selesai dan saya hapus container-nya:

docker compose down --volumes

Mencoba Menginstall Misskey

Selanjutnya saya mencari beberapa alternatifnya yang lebih ringan dan saya menemukan Misskey.

Aplikasi tersebut memiliki dokumentasi yang cukup jelas dan saya akhirnya memutuskan untuk mengikuti langkah yang disediakan.

Bedanya, karena saya sudah mengonfigurasi docker agar tidak perlu sudo, maka saya menjalankan perintah-perintah di dokumentasi tadi tanpa sudo.

Hasilnya sukses dan saya masih merasakan bahwa aplikasi tadi lebih ringan di komputer saya.

Namun, saya ingin mencoba lebih banyak lagi.

Menginstall Pleroma

Terakhir, setelah melakukan sedikit konsultasi dengan chatbot, saya mendapati sebuah aplikasi sosial media yang masih sejenis dengan kedua sosial media tadi, yakni Pleroma.

Saya melakukan clone pada docker compose repository di repositorynya:

git clone https://git.pleroma.social/pleroma/pleroma-docker-compose.git

Saya melakukan sedikit modifikasi pada docker-compose.yml nya menjadi seperti ini:

version: '3.1'

services:
  pleroma:
    image: git.pleroma.social:5050/pleroma/pleroma:latest
    container_name: "pleroma"
    hostname: "pleroma"
    labels:
      - "org.label-schema.group=pleroma"
    restart: always
    env_file: ./environments/pleroma/pleroma.env
    depends_on:
      - pleroma-db
    ports:
      - "127.0.0.1:9006:4000"
    volumes:
      - ./volumes/pleroma/config.exs:/var/lib/pleroma/config.exs
      - ./volumes/pleroma/uploads:/var/lib/pleroma/uploads

  pleroma-db:
    image: postgres:12.1-alpine
    container_name: "pleroma-db"
    hostname: "pleroma-db"
    labels:
      - "com.centurylinklabs.watchtower.enable=False"
      - "org.label-schema.group=pleroma"
    restart: always
    env_file: ./environments/pleroma-db/postgres.env
    ports:
      - "127.0.0.1:5432:5432"
    volumes:
      - ./volumes/pleroma-db/pgdata:/var/lib/postgresql/data
      - ./volumes/pleroma-db/pginit:/docker-entrypoint-initdb.d

Kemudian melakukan sedikit perubahan pada .env-nya yang letaknya di /environments/pleroma/plereoma.env sehingga menjadi:

DB_USER=pleroma
DB_PASS=pleroma
DB_HOST=pleroma-db
DB_NAME=pleroma
INSTANCE_NAME=Pleroma
ADMIN_EMAIL=admin@example.com
NOTIFY_EMAIL=pleroma+admin@example.com
DOMAIN=127.0.0.1:9006
PORT=4000

Selanjutnya melakukan:

docker compose up -d

Setelah saya melakukan itu, saya membuka http://127.0.0.1:9006 dan ternyata berhasil, namun saya belum membuat akun adminnya.

Langsung saja saya buka terminal pada containernya yang menggunakan /bin/ash alih-alih /bin/bash dengan menjalankan perintah ini:

docker exec -it pleroma /bin/ash

Kemudian menjalankan perintah ini dari folder root atau / :

/opt/pleroma/bin/pleroma_ctl user new admin100 admin100@example.com --admin

Setelah perintah tersebut dijalankan, saya mendapatkan link untuk mereset password untuk mengganti passwordnya (cari saja output yang ada link-nya kemudian ganti jadi http) dan akhirnya saya berhasil login.

Kesan Pertama

Setelah saya menjalankannya, saya merasa bahwa Pleroma lebih ringan daripada kedua alternatif tadi.

Selain itu, setelah saya perhatikan dengan htop:

sudo apt install htop

htop

Saya melihat bahwa Misskey cenderung berat di sisi browsernya.

Jika Browser yang membuka Misskey dihentikan, maka penggunaan cpu-nya cenderung sama dengan Pleroma.

Kesimpulan

Dari ketiga aplikasi social media self hosted yang saya coba, ternyata secara kasar bisa disimpulkan bahwa Pleroma yang paling ringan.

Namun, Misskey memiliki user interface yang lebih menarik.

Saya belum ada rencana khusus tentang apa yang saya akan lakukan dengan Pleroma atau Misskey tadi.

Namun, jika Pleroma atau Misskey menyediakan API untuk bot dan pc gaming saya telah diperbaiki, saya mungkin akan mencoba membuat bot dengan LLM lokal yang berjalan di pc gaming saya.