Publishing · tanpa KYC
Host Ghost di VPS Offshore
Ghost adalah platform publishing modern yang cepat, bisa Anda self-host dalam hitungan menit di VPS offshore, sehingga tulisan, subscriber, dan pembayaran Anda tetap lepas dari cloud pihak ketiga.
Apa itu
Ghost adalah CMS open-source berbasis Node.js untuk blog, newsletter, dan situs membership, dengan langganan email native, tier berbayar, dan editor Markdown yang bersih. Tersedia sebagai image Docker resmi dengan MySQL 8 di baliknya, menyajikan situs Anda lewat port sendiri di belakang reverse proxy.
Mengapa hosting di offshore
Menjalankan Ghost di VPS tanpa KYC yang dibayar pakai kripto berarti publikasi Anda tidak terikat pada akun yang bisa dikaitkan dengan identitas, di-deplatform, atau diserahkan atas permintaan. Dengan lokasi privacy-tier offshore dan bandwidth unmetered, Anda memegang kendali penuh atas konten, daftar member, dan pencairan dana Stripe tanpa penyedia hosting yang menjadi gatekeeper atas tulisan Anda.
Proses deploy
Contoh setup referensi yang berfungsi
Salin ini ke instance ChainVPS baru. Ganti placeholder-nya, lalu jalankan.
services:
ghost:
image: ghost:5-alpine
restart: always
ports:
# Bind hanya ke localhost; hentikan TLS di reverse proxy (nginx/Caddy)
- "127.0.0.1:2368:2368"
environment:
url: https://blog.example.com
NODE_ENV: production
database__client: mysql
database__connection__host: db
database__connection__port: 3306
database__connection__user: ghost
database__connection__password: CHANGE_ME_DB_PASSWORD
database__connection__database: ghostdb
# SMTP outbound opsional untuk email member/newsletter:
# mail__transport: SMTP
# mail__options__host: smtp.example.com
# mail__options__port: 587
# mail__options__auth__user: [email protected]
# mail__options__auth__pass: CHANGE_ME_SMTP
volumes:
- ghost-content:/var/lib/ghost/content
depends_on:
- db
db:
image: mysql:8.0
restart: always
command: --default-authentication-plugin=caching_sha2_password
environment:
MYSQL_ROOT_PASSWORD: CHANGE_ME_ROOT_PASSWORD
MYSQL_DATABASE: ghostdb
MYSQL_USER: ghost
MYSQL_PASSWORD: CHANGE_ME_DB_PASSWORD
volumes:
- ghost-db:/var/lib/mysql
volumes:
ghost-content:
ghost-db:
# Deploy:
# apt-get update && apt-get install -y docker.io docker-compose-v2
# docker compose up -d
# Lalu arahkan reverse proxy (Caddy/nginx) ke 127.0.0.1:2368 untuk menambahkan HTTPS,
# dan set `url:` ke domain https:// asli Anda sebelum boot pertama.
Firewall
Port yang perlu dibuka
| Port | Protokol | Tujuan |
|---|---|---|
| 2368 | TCP | Port app HTTP Ghost - tetap bind ke 127.0.0.1 dan reverse-proxy, jangan pernah expose ke publik |
| 443 | TCP | HTTPS untuk publik lewat reverse proxy Anda (Caddy/nginx) |
| 80 | TCP | HTTP untuk penerbitan sertifikat ACME/Let's Encrypt dan redirect ke 443 |
| 3306 | TCP | MySQL - hanya jaringan internal Docker, jangan pernah dipublikasikan ke host |
Penyesuaian ukuran yang tepat
Paket mana yang Anda butuhkan
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
Blog pribadi atau newsletter kecil. Ghost + MySQL berjalan nyaman; tambahkan 1 GB swap sebagai jaring pengaman.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
Publikasi aktif dengan membership berbayar, post yang berat gambar, dan pengiriman email rutin. Ada headroom untuk cache MySQL dan lonjakan traffic.
Dedicated (dedicated cores, 16 GB+ RAM, NVMe)
Situs dengan traffic tinggi atau setup multi-blog dengan pustaka media besar; isolasi MySQL dan sajikan media lewat cache demi latensi yang konsisten.
Lokasi terbaik: Untuk publikasi yang harus tetap online tanpa terpengaruh tekanan takedown, pilih lokasi privacy-tier ChainVPS: Islandia (IS), Swiss (CH), Rumania (RO), Moldova (MD), Belanda (NL), atau Luksemburg (LU). CH dan IS memiliki perlindungan pers/kebebasan berbicara serta hukum privasi yang kuat; NL dan LU memberi jangkauan latensi rendah ke pembaca Eropa dengan bandwidth unmetered untuk situs yang berat gambar dan newsletter.
Amankan sekarang
Daftar periksa hardening
- Jangan pernah publikasikan port 2368 atau 3306 ke 0.0.0.0. Jaga Ghost tetap bind ke 127.0.0.1 dan MySQL hanya di jaringan internal Docker; expose situs eksklusif lewat reverse proxy TLS (Caddy otomatis menerbitkan sertifikat Let's Encrypt, atau pakai nginx + certbot).
- Set env var `url` ke domain https:// asli Anda sebelum boot pertama kali. Ghost menanamkan URL ke dalam link resource dan mengubahnya belakangan membutuhkan update database serta flush cache.
- Kunci panel admin: wajibkan password unik yang panjang saat setup pertama, dan batasi /ghost/ dengan IP allowlist atau basic-auth di proxy jika Anda publikasi dari lokasi tetap. Aktifkan 2FA staff bawaan Ghost.
- Backup kedua volume secara terjadwal: dump MySQL (`docker compose exec db mysqldump -u ghost -p ghostdb`) dan arsipkan volume content (`/var/lib/ghost/content`, yang menyimpan gambar dan theme). Kirim backup terenkripsi ke storage ChainVPS atau ke luar server.
- Pin tag image (ghost:5-alpine, mysql:8.0) dan update dengan sengaja lewat `docker compose pull && docker compose up -d`; uji kompatibilitas theme/integrasi sebelum lompat ke versi mayor Ghost baru, dan biarkan proteksi DDoS bawaan paket tetap aktif di edge.
Pertanyaan
Hosting Ghost — FAQ
Apakah Ghost butuh MySQL, atau bisa pakai SQLite?
Ghost 5 resminya membutuhkan MySQL 8 untuk produksi. File compose di atas otomatis menyiapkan MySQL 8. SQLite hanya didukung untuk pengembangan lokal dan tidak disarankan untuk deployment offshore yang live.
Bagaimana cara menambahkan HTTPS?
Ghost sendiri menyajikan HTTP biasa di port 2368. Pasang reverse proxy di depannya - Caddy paling sederhana (otomatis menerbitkan dan memperbarui sertifikat Let's Encrypt), atau pakai nginx dengan certbot. Arahkan ke 127.0.0.1:2368 dan set `url` Ghost ke domain https:// Anda.
Bisakah saya mengirim newsletter tanpa jejak identitas pihak ketiga?
Ghost mengirim email member lewat provider SMTP apa pun atau Mailgun. Pada setup yang berfokus privasi, gunakan relay SMTP yang menerima kripto atau pendaftaran minimal dan konfigurasikan lewat environment variable mail__. Email transaksional tetap membutuhkan domain pengirim yang deliverable dengan SPF/DKIM.
Berapa banyak disk yang saya butuhkan?
Inti Ghost plus MySQL berukuran kecil (beberapa ratus MB). Pertumbuhan sesungguhnya datang dari gambar dan video yang diunggah ke volume content. Blog ringan berjalan lancar di 20-40 GB; situs yang berat gambar atau membership sebaiknya merencanakan storage NVMe dan backup rutin untuk volume content.
Apakah situs saya tahan lonjakan traffic atau DDoS?
Paket ChainVPS mencakup proteksi DDoS di edge jaringan, dan bandwidth bersifat unmetered sehingga post yang viral tidak akan menimbulkan biaya kelebihan pemakaian. Untuk lonjakan request murni, aktifkan caching di level proxy untuk page view offshore dan pindah ke paket VPS Pro atau dedicated jika Anda konsisten melihat concurrency tinggi.
Lebih banyak untuk di-self-host
Stack one-click lainnya
Jalankan Ghost
dalam 60 detik ke depan.
Bandwidth unmetered · DDoS Termasuk · 21 mata uang kripto · Tanpa KYC.