← Lembar #71 (sumber) Hub belajar

Ada yang bisa diimplementasikan?

Jawaban singkatnya: satu — dan itu sudah saya jalankan di VPS ini, bukan cuma dibaca dari repo. Halaman ini mencatat hasil ujinya: ukuran image, RAM yang benar-benar dipakai, dan mana yang sebaiknya tidak dipasang di sini.

14,8 MBimage Listmonk
78 MBRAM terpakai (app+DB)
200HTTP saat diuji
5 dtkdari run ke siap

Hasil per kandidat

KandidatUkuran image (amd64)Uji di VPS iniPutusan
Listmonk
newsletter / mailing list
14,8 MB
+ Postgres 16 alpine (±250 MB, sudah ada)
DIJALANKAN app 30,7 MB + DB 47,7 MB · HTTP 200 · login admin berhasil Bisa. Paling ringan, cocok kalau butuh kirim email massal dari VPS sendiri.
Penpot
alternatif Figma
frontend 326 MB + backend 392 MB
+ postgres, redis, exporter
BELUM butuh ±2–4 GB RAM & ±1 GB disk image Jangan di sini. Pakai versi cloud Penpot dulu; self-host kalau tim desain benar-benar pindah.
ONLYOFFICE Docs
alternatif Office
943 MB BELUM ±2 GB RAM + wajib domain/SSL sendiri untuk editor-nya Belum perlu. Untuk buka .docx/.xlsx sesekali, LibreOffice di laptop cukup.
Chatwoot
alternatif Intercom
746 MB
+ sidekiq, postgres, redis
BELUM ±2 GB RAM, 4 proses Tunda. Baru masuk akal kalau ada volume chat pelanggan yang mau ditangani.
Remotion / Motion Canvas
video dari kode
— (library Node) SUDAH ADA PADANANNYA HyperFrames + ffmpeg + Whisper sudah terpasang dan dipakai render 2 video (16:9 & 9:16) Tidak perlu — fungsinya sudah ke-cover toolchain sendiri.
Mailspring
email client
— (aplikasi desktop) TIDAK RELEVAN bukan layanan server Install di laptop kalau perlu, bukan di VPS.

Sumber angka: Docker Hub tag API (ukuran image, 19 Okt 2026) · docker stats untuk RAM · curl untuk status HTTP.

Bukti: Listmonk benar-benar jalan

Halaman login Listmonk
Halaman login Listmonk di 127.0.0.1:3210 di VPS ini (bukan mockup).
Dashboard Listmonk setelah login
Dashboard setelah login: kampanye, subscriber, template, semua kosong karena instalasi baru.

Status sekarang: container lm-app + lm-db masih hidup, terikat ke 127.0.0.1:3210 (hanya lokal — belum dibuka ke internet). Kalau mau dijadiin subdomain, tinggal tambah satu blok Caddy ke 127.0.0.1:3210.

Resep jalankan ulang (5 perintah)

sudo docker network create demo-listmonk
sudo docker run -d --name lm-db --network demo-listmonk \
  -e POSTGRES_PASSWORD= -e POSTGRES_DB=listmonk postgres:16-alpine
sudo docker run --rm --network demo-listmonk \
  -e LISTMONK_db__host=lm-db -e LISTMONK_db__user=postgres \
  -e LISTMONK_db__password= -e LISTMONK_db__database=listmonk -e LISTMONK_db__ssl_mode=disable \
  -e LISTMONK_ADMIN_USER=admin -e LISTMONK_ADMIN_PASSWORD='<password-pilihanmu>' \
  listmonk/listmonk:latest ./listmonk --install --yes
sudo docker run -d --name lm-app --network demo-listmonk -p 127.0.0.1:3210:9000 \
  -e LISTMONK_app__address=0.0.0.0:9000 \
  -e LISTMONK_db__host=lm-db -e LISTMONK_db__user=postgres \
  -e LISTMONK_db__password= -e LISTMONK_db__database=listmonk -e LISTMONK_db__ssl_mode=disable \
  listmonk/listmonk:latest
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3210/

Jebakan yang kena saat uji: listmonk default bind ke 127.0.0.1 di dalam container → port mapping Docker tidak nyambung (curl 000). Obatnya LISTMONK_app__address=0.0.0.0:9000.

Kalau mau dipakai serius