Ghost adalah platform penerbitan dan blog open source yang kuat berdasarkan nodejs. Ini dirancang dengan baik dan mudah digunakan. Platform hantu ditulis dalam JavaScript dan menggunakan node.js sebagai lingkungan runtime. Versi Ghost pertama dirilis pada tahun 2013 di bawah lisensi MIT..
Traefik adalah proxy terbalik HTTP modern dan penyeimbang beban untuk layanan mikro. Traefik membuat semua penerapan layanan mikro menjadi mudah, terintegrasi dengan komponen infrastruktur yang ada seperti Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, dll.
Dalam tutorial ini, kami akan menunjukkan langkah demi langkah cara menginstal dan mengkonfigurasi Ghost sebagai wadah Docker. Kami akan menginstal dan mengkonfigurasi Ghost di bawah versi Docker CE terbaru, menggunakan MySQL sebagai database dan menggunakan Traefik sebagai Reverse Proxy.
Prasyarat
- Ubuntu 18.04 LTS
- Hak istimewa root
Apa yang akan kami lakukan
- Instal Docker CE di Ubuntu 18.04 LTS
- Siapkan Docker untuk Pengguna Non-root
- Instal Docker Compose
- Konfigurasikan Tumpukan Hantu
- Buat Jaringan Khusus
- Buat Direktori Proyek
- Membuat dan Mengonfigurasi Penampung MySQL
- Membuat dan Mengonfigurasi Traefik Reverse Proxy
- Membuat dan Mengonfigurasi Wadah Hantu
- Menyebarkan Ghost dengan MySQL dan Traefik
- Pengujian
Langkah 1 - Instal Docker CE di Ubuntu 18.04 LTS
Langkah pertama yang akan kita lakukan dalam tutorial ini adalah menginstal versi sistem docker-ce terbaru. Versi docker-ce dapat diinstal dari repositori resmi buruh pelabuhan.
Tambahkan kunci buruh pelabuhan dan repositori buruh pelabuhan.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Perintah akan secara otomatis memperbarui semua repositori di sistem.
Sekarang instal buruh pelabuhan menggunakan perintah apt di bawah ini.
sudo apt install docker-ce -y
Setelah penginstalan selesai, mulai layanan buruh pelabuhan dan aktifkan untuk diluncurkan setiap saat saat startup sistem.
systemctl start docker
systemctl enable docker
Versi docker-ce terbaru telah diinstal pada sistem Ubuntu 18.04.
Langkah 2 - Siapkan Docker untuk Pengguna Non-root
Dalam panduan ini, semua layanan mikro kontainer akan dijalankan di bawah pengguna normal/non-root. Jadi kita perlu mengonfigurasi pengguna agar dapat menjalankan wadah Docker dan menjalankan perintah sudo untuk hak akses root.
Buat pengguna baru bernama 'hakase' dan buat kata sandinya.
useradd -m -s /bin/bash hakase
passwd hakase
Sekarang tetapkan pengguna 'hakase' ke grup 'sudo' dan 'docker'.
usermod -a -G root hakase
usermod -a -G docker hakase
Dan restart layanan buruh pelabuhan.
systemctl restart docker
'hakase' sekarang dapat menjalankan wadah buruh pelabuhan dan menjalankan perintah sudo untuk hak akses root.
Login sebagai pengguna 'hakase' dan jalankan docker hello-world container.
su - hakase
docker run -it hello-world
Dan berikut adalah hasilnya.
Langkah 3 - Instal Docker Compose
Dalam tutorial ini, kita akan menginstal docker compose 1,21 dari file biner di repositori Github.
Unduh biner docker-compose ke direktori '/usr/local/bin'.
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
Dan buat file 'docker-compose' dapat dieksekusi dengan mengubah izin file.
sudo chmod +x /usr/local/bin/docker-compose
Komposisi buruh pelabuhan telah diinstal - periksa menggunakan perintah di bawah ini.
docker-compose version
docker version
Docker-compose 1.21 dengan Docker-ce 1.18 telah diinstal.
Langkah 4 - Konfigurasikan Ghost Stack
Pada langkah ini, kita akan mengonfigurasi buruh pelabuhan dan membuat file komposisi buruh pelabuhan baru untuk instalasi ghost.
Kami akan membuat jaringan kustom buruh pelabuhan baru dan membuat file yml komposisi buruh pelabuhan baru yang berisi tiga layanan utama, termasuk database MySQL, proxy terbalik Traefik, dan blog Ghost itu sendiri.
Buat Jaringan Khusus
Tampilkan jaringan buruh pelabuhan yang tersedia menggunakan perintah jaringan buruh pelabuhan di bawah ini.
docker network ls
Buat jaringan buruh pelabuhan kustom baru untuk proxy terbalik traefik bernama 'traefiknet'.
docker network create traefiknet
Sekarang periksa kembali jaringan yang tersedia pada sistem buruh pelabuhan.
docker network ls
Jaringan kustom untuk Treafik bernama 'traefiknet' telah dibuat.
Buat Direktori Proyek
Setelah membuat jaringan kustom buruh pelabuhan, kita akan membuat direktori proyek baru bernama 'ghost' dan membuat file docker-compose.yml baru.
Masuk ke pengguna 'hakase'.
su - hakase
Buat direktori 'hantu' baru dan ubah direktori kerja menjadi direktori tersebut.
mkdir ghost/
cd ghost/
Dan buat file komposisi buruh pelabuhan baru.
touch docker-compose.yml
Membuat dan Mengonfigurasi Layanan MySQL
MySQL adalah layanan pertama yang ingin kami buat, dan kami ingin membuat wadah MySQL dengan konfigurasi di bawah ini.
- Kami akan menggunakan image buruh pelabuhan MySQL 5.7.
- Pasang direktori data MySQL ke direktori host buruh pelabuhan lokal.
- Menjalankan layanan MySQL di jaringan internal lokal.
- Konfigurasikan pengguna dan kata sandi MySQL.
- Kata sandi root MySQL:kata sandi saya
- Database untuk ghost bernama 'ghostdb' dengan user 'ghost' dan password 'ghostdbpass'
- Kontainer MySQL akan diberi nama 'mysql'.
Di dalam direktori 'ghost', buat direktori baru bernama 'data' dan edit file 'docker-compose.yml'.
mkdir -p data/
vim docker-compose.yml
Tempelkan konfigurasi di bawah ini.
version: '3.3' services: mysql: image: mysql:5.7 restart: always volumes: - ./data:/var/lib/mysql labels: - "traefik.enable=false" networks: - internal environment: MYSQL_ROOT_PASSWORD: mypassword MYSQL_USER: ghost MYSQL_PASSWORD: ghostdbpass MYSQL_DATABASE: ghostdb container_name: mysql
Simpan dan keluar.
Membuat dan Mengonfigurasi Proksi Terbalik Traefik
Setelah membuat layanan MySQL, kami akan membuat dan mengkonfigurasi wadah traefik reverse proxy.
Sebelum mengedit script 'docker-compose.yml', kita perlu membuat konfigurasi traefik baru bernama 'traefik.toml'.
vim traefik.toml
Tempel konfigurasi aturan traefik di bawah ini.
#Traefik Global Configuration debug = false checkNewVersion = true logLevel = "ERROR" #Define the EntryPoint for HTTP and HTTPS defaultEntryPoints = ["https","http"] #Define the HTTP port 80 and #HTTPS port 443 EntryPoint #Enable automatically redirect HTTP to HTTPS [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] #Enable Traefik Dashboard on port 8080 #with basic authentication method #hakase and password [entryPoints.dash] address=":8080" [entryPoints.dash.auth] [entryPoints.dash.auth.basic] users = [ "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.", ] [api] entrypoint="dash" dashboard = true #Enable retry sending a request if the network error [retry] #Define Docker Backend Configuration [docker] endpoint = "unix:///var/run/docker.sock" domain = "hakase-labs.io" watch = true exposedbydefault = false #Letsencrypt Registration #Define the Letsencrypt ACME HTTP challenge [acme] email = "[email protected]" storage = "acme.json" entryPoint = "https" OnHostRule = true [acme.httpChallenge] entryPoint = "http"
Simpan dan keluar.
Sekarang kita perlu membuat file baru untuk konfigurasi SSL Letsencrypt 'acme.json'. Ini digunakan untuk menyimpan semua letsencrypt yang menghasilkan log.
Buat file 'acme.json' kosong dan ubah izin menjadi 600.
touch acme.json
chmod 600 acme.json
Selanjutnya, kita akan mengedit script 'docker-compose.yml' dan menambahkan konfigurasi layanan traefik.
- Kami akan menggunakan image traefik docker terbaru.
- Kontainer akan diberi nama 'traefik'
- Ini menggunakan 'traefiknet' jaringan khusus, dan mengekspos port HTTP dan HTTPS.
- Pasang file docker sock dan konfigurasi traefik 'traefik.toml' dan 'acme.json'
- Kami mendefinisikan URL dasbor traefik dan backend melalui label buruh pelabuhan.
Edit 'docker-compose.yml'.
vim docker-compose.yml
Rekatkan konfigurasi layanan traefik di bawah ini.
traefik: image: traefik:latest command: --docker ports: - 80:80 - 443:443 labels: - "traefik.enable=true" - "traefik.backend=dashboard" - "traefik.frontend.rule=Host:traef.hakase-labs.io" - "traefik.port=8080" networks: - traefiknet volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik.toml:/traefik.toml - ./acme.json:/acme.json container_name: traefik restart: always
Simpan dan keluar.
Membuat dan Mengonfigurasi Layanan Hantu
Setelah mengkonfigurasi traefik reverse proxy, kita akan membuat konfigurasi utama layanan ghost.
Detail konfigurasi yang ingin kita buat.
- Kami akan menggunakan ghost v1 dan versi alpine buruh pelabuhan kecil.
- Kami akan memasang direktori konten hantu ke direktori lokal bernama 'blog'.
- Layanan ghost akan berjalan pada port default dengan nama domain 'gho.hakase-labs.io', konfigurasi melalui label buruh pelabuhan.
- Layanan hantu akan menggunakan dua jaringan buruh pelabuhan, internal dan traefiknet.
- Kami sedang mengonfigurasi detail database MySQL dari konfigurasi wadah mysql.
- Dan hantu akan dimulai ketika traefik dan wadah MySQL aktif dan berjalan.
Buat direktori baru bernama 'blog' dan edit file 'docker-compose.yml'.
mkdir -p blog/
vim docker-compose.yml
Tempelkan konfigurasi di bawah ini.
ghost: image: ghost:1-alpine restart: always ports: - 2368 volumes: - ./blog:/var/lib/ghost/content labels: - "traefik.enabled=true" - "traefik.backend=ghost" - "traefik.frontend.rule=Host:gho.hakase-labs.io" - "traefik.docker.network=traefiknet" - "traefik.port=2368" networks: - internal - traefiknet environment: database__client: mysql database__connection__host: mysql database__connection__user: ghost database__connection__password: ghostdbpass database__connection__database: ghostdb container_name: ghost depends_on: - mysql - traefik
networks: traefiknet: external: true internal: external: false
Simpan dan keluar.
Dan sekarang kita mendapatkan semua direktori dan konfigurasi seperti yang ditunjukkan di bawah ini.
tree
Langkah 5 - Terapkan Ghost dengan MySQL dan Traefik
Untuk membangun dan menjalankan semua layanan ghost stack, kita dapat menggunakan perintah di bawah ini.
docker-compose up -d
Jika sudah selesai, centang semua layanan yang sedang berjalan.
docker-compose ps
Dan berikut adalah hasilnya.
Jika Anda memiliki kesalahan, periksa log penampung menggunakan perintah di bawah ini.
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost
Tumpukan hantu dengan MySQL dan proxy terbalik Traefik aktif dan berjalan.
Langkah 6 - Pengujian
Buka dasbor Traefik dengan URL-nya, milik saya adalah http://traef.hakase-labs.io/
Masuk dengan pengguna dan kata sandi pada file 'traefik.toml'.
Dan berikut adalah dashboard Traefik.
Untuk instalasi Ghost, ketik URL ghost di bilah alamat, milik saya adalah http://gho.hakase-labs.io/
Dan Anda akan mendapatkan halaman beranda hantu.
Sekarang kunjungi halaman admin untuk mengatur dan mengkonfigurasi pengguna admin baru. URL saya adalah: http://gho.hakase-labs.io/admin/
Klik tombol hijau untuk membuat pengguna admin baru.
Ketik detail pengguna, kata sandi, email, dan klik lagi tombol hijau.
Untuk mengundang anggota atau pengguna baru, klik tautan 'Saya akan melakukannya nanti..'.
Sekarang Anda akan mendapatkan Dasbor Hantu.
Dan setelah membuat contoh postingan, berikut adalah hasilnya.
Instalasi blog hantu dengan database MySQL dan Traefik Reverse Proxy di lingkungan Docker telah berhasil diselesaikan.
Referensi
- https://hub.docker.com/_/ghost/
- https://docs.traefik.io/