• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang

Linux

Deploy Elasticsearch dan Kibana 7.x di Kubernetes

Last Updated on 13 January 2022 By tommy Leave a Comment

Kali ini kita akan membahas cara untuk deploy Elasticsearch beserta Kibana di Kubernetes. Kali ini kita akan menggunakan DigitalOcean Kubernetes (DOKS), walaupun kita menggunakan DigitalOcean, anda tetap bisa menggunakannya di varian Kubernetes lainnya, mungkin yang perlu disesuaikan hanya dibagian LoadBalancer.

Spesifikasi

Kubernetes : 1.21
Elasticsearch : 7.16.2
Kibana : 7.16.2

Deploy Elasticsearch

Hal yang pertama akan kita lakukan adalah deploy elasticsearch, untuk itu kita harus membuat file YAML, disini akan kita namai elasticsearch.yaml. Bagian deployment adalah proses untuk deploy elasticsearch, dan services adalah agar elasticsearch bisa diakses menggunakan domain, contoh disini bisa diakses menggunakan elasticsearch, bila berada dalam satu namespace, kalo dari namespace yang berbeda gunakan elasticsearch.log

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: log
  name: elasticsearch
spec:
  selector:
    matchLabels:
      component: elasticsearch
  template:
    metadata:
      labels:
        component: elasticsearch
    spec:
      containers:
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2
        env:
        - name: discovery.type
          value: single-node
        - name: xpack.license.self_generated.type
          value: basic
        - name: xpack.security.enabled
          value: "true"
        ports:
        - containerPort: 9200
          name: http
          protocol: TCP
        resources:
          limits:
            cpu: 500m
            memory: 4Gi
          requests:
            cpu: 500m
            memory: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  namespace: log
  name: elasticsearch
  labels:
    service: elasticsearch
spec:
  type: ClusterIP
  selector:
    component: elasticsearch
  ports:
  - port: 9200
    targetPort: 9200

deploy elasticsearch

kubectl apply -f elasticsearch.yaml

Lihat pod dengan nama elasticsearch yang baru di deploy

kubectl get pods -n log
# output
NAME                             READY   STATUS    RESTARTS   AGE
elasticsearch-75c56f646d-7swl8   1/1     Running   0          1m
kibana-84657487dd-pggb8          1/1     Running   0          1m

Lalu, generate password agar elasticsearch lebih aman, karena menggunakan password random.

kubectl -n log exec -it elasticsearch-75c56f646d-5dk4q  -- bin/elasticsearch-setup-passwords auto -b
# output
Changed password for user apm_system
PASSWORD apm_system = 54QIqLvl7kdVhgpb1OUo
 
Changed password for user kibana_system
PASSWORD kibana_system = otrpineznPipsdk6k8xw
 
Changed password for user kibana
PASSWORD kibana = otrpineznPipsdk6k8xw
 
Changed password for user logstash_system
PASSWORD logstash_system = lB2MHUTNhDoylNFj3Op1
 
Changed password for user beats_system
PASSWORD beats_system = CtUD0oO5BFXeRbNqG2VB
 
Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = vRmbU9s3xqswCEtmYd7J
 
Changed password for user elastic
PASSWORD elastic = mjZofGkihs4tjJ7Mywgo

simpan password diatas, terutama untuk user elastic, karena ini yang akan kita setting di Kibana dan digunakan untuk login ke dashboard juga.

Tes Koneksi Elasticsearch

Untuk tes koneksi ke elasticsearch, kita akan menggunakan port-forward, fitur Kubernetes yang bisa mem-forward dari POD ke localhost, dengan begini kita bisa bebas melakukan testing.

kubectl port-forward service/elasticsearch 9200:9200 -n log

buka terminal baru, lalu testing dengan password yang digenerate diatas

curl elastic:PASSWORD@localhost:9200
# contoh
curl elastic:mjZofGkihs4tjJ7Mywgo@localhost:9200

portforward kubernetes

Deploy Kibana

Kibana merupakah Web UI yang digunakan untuk mengakses dan mengelola Elastic Search, karena di support langsung oleh Elastic, Kibana biasanya memiliki versi yang sama dengan Elastic Search.

Untuk deploy kibana, pertama kita buat YAML file yang berisi Deployment dan Service.

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: log
  name: kibana
spec:
  selector:
    matchLabels:
      run: kibana
  template:
    metadata:
      labels:
        run: kibana
    spec:
      containers:
      - name: kibana
        image: docker.elastic.co/kibana/kibana:7.16.2
        env:
        - name: ELASTICSEARCH_URL
          value: "elasticsearch"
        - name: XPACK_SECURITY_ENABLED
          value: "true"
        - name: ELASTICSEARCH_USERNAME
          value: "elastic"
        - name: ELASTICSEARCH_PASSWORD
          value: "mjZofGkihs4tjJ7Mywgo"
        ports:
        - containerPort: 5601
          name: http
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  namespace: log
  name: kibana
  labels:
    service: kibana
spec:
  type: ClusterIP
  selector:
    run: kibana
  ports:
  - port: 5601
    targetPort: 5601

deploy YAML file tersebut.

kubectl apply -f kibana.yaml

untuk mengakses kibana, kita akan melakukan port forward ke localhost, same seperti di Elasticsearch. Cara ini digunakan untuk memastikan semuanya berjalan dengan lancar, sebelum melakukan deployment lebih lanjut.

kubectl port-forward service/kibana 5601:5601 -n log

lalu buka http://localhost:5601 di browser
kibana di localhost
Gunakan user elastic dan password yang digenerate sebelumnya.

Deploy Ingress

Untuk deployment Ingress

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/cloud/deploy.yaml

Tunggu beberapa saat, lalu jalankan perintah dibawah ini untuk mendapatkan IP Public dari LoadBalancer.

kubectl get service ingress-nginx-controller --namespace=ingress-nginx

Setting DNS

Kita akan menggunakan subdomain per services, untuk itu kita harus set wildcard DNS, contoh recordnya

*.prd-sg.jaranguda IN A 132.12.xx.xx

setelah menambahkan DNS tersebut, bisa sampai 10 menit baru perubahan tersebut bisa dicek
Untuk setting dns/domain ini, akan atur oleh file nginx-ingress.yaml, buat isinya sebagai berikut

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: log
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: elastic.prd-sg.DOMAIN.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: elasticsearch
            port:
              number: 9200
  - host: kibana.prd-sg.DOMAIN.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: kibana
            port:
              number: 5601

deploy YAML file tersebut.

kubectl apply -f nginx-ingress.yaml

sekarang coba akses nama domain tersebut
akses kibana menggunakan subdomain

Dengan menggunakan Load Balancer (Public IP), kita bisa mengirim log ke Elasticsearch dari luar ataupaun dari dalam. Untuk mengakses elasticsearch dari dalam cluster cukup gunakan elasticsearch.log (formatnya menggunakan service.namespace)

ServiceInternalEksternal
Elastic Searchelasticsearch.log port 9200elastic.prd-sg.DOMAIN.com port 80
Kibanakibana.log port 5601kibana.prd-sg.DOMAIN.com port 80

Filed Under: Linux

Instalasi dan Konfigurasi Smokeping 2.8.x di Debian 11

Last Updated on 29 December 2021 By tommy Leave a Comment

Smokeping merupakah senjata utama untuk memonitoring services yang menggunakan PING/ICMP. Tidak semua versi smokeping tersedia di Debian 11, untuk itu kita harus compile dari awal untuk versi terbaru, karena kemungkinan besar versi terbaru tidak akan di ikutkan di Debian 11.

Mari mulai proses instalasi Smokeping 2.8.x di Debian 11 (“bullseye”)

Install Dependency

Install dependency berikut ini agar proses compile berjalan dengan sempurna.

sudo apt install gcc make libwww-perl libcgi-fast-perl libtext-soundex-perl libio-pty-perl libcrypt-ssleay-perl rrdtool librrds-perl libssl-dev -y

tambahannya kita install wget, yang akan digunakan untuk mendownload source Smokeping 2.8.2

sudo apt install wget -y

Install fping

Aplikasi ini yang akan digunakan untuk ping ke semua IP/Domain yang digunakan. Install fping dengan cara

sudo apt install fping -y

Download dan Install Smokeping 2.8.x

Saat ini versi terbaru adalah 2.8.2, cara yang sama bisa dijalankan untuk menginstall semua versi 2.8.x, download versi 2.8.2

wget https://oss.oetiker.ch/smokeping/pub/smokeping-2.8.2.tar.gz
# extract 
tar zxvf smokeping-2.8.2.tar.gz
# pindah ke folder smokeping
cd smokeping-2.8.2

Compile dan install

export LC_ALL=C
./configure --prefix=/usr/local/smokeping
# install
sudo make install

proses compile smokeping 2.8.2
tunggu beberapa waktu sampai instalasi selesai dan tidak ada informasi error diakhir instalasi.

Konfigurasi Smokeping 2.8.x

Buat folder untuk menyimpan cache dan data Smokeping

sudo mkdir /usr/local/smokeping/cache
sudo mkdir /usr/local/smokeping/data
sudo mkdir /usr/local/smokeping/var

Buat file baru /usr/local/smokeping/etc/config, untuk konfigurasi smokeping yang berisi

*** General ***
owner    = Jaranguda
contact  = some@address.nowhere
mailhost = my.mail.host
imgcache = /usr/local/smokeping/cache
imgurl   = cache
datadir  = /usr/local/smokeping/data
piddir  = /usr/local/smokeping/var
cgiurl   = http://some.url/smokeping.cgi
smokemail = /usr/local/smokeping/etc/smokemail.dist
tmail = /usr/local/smokeping/etc/tmail.dist
syslogfacility = smokeping
 
*** Alerts ***
to = alertee@address.somewhere
from = smokealert@company.xy
+someloss
type = loss
pattern = >0%,*12*,>0%,*12*,>0%
comment = loss 3 times  in a row
 
*** Database ***
step     = 300
pings    = 20
AVERAGE  0.5   1  1008
AVERAGE  0.5  12  4320
    MIN  0.5  12  4320
    MAX  0.5  12  4320
AVERAGE  0.5 144   720
    MAX  0.5 144   720
    MIN  0.5 144   720
 
*** Presentation ***
template = /usr/local/smokeping/etc/basepage.html.dist
charset  = utf-8
 
+ charts
 
menu = Charts
title = The most interesting destinations
 
++ stddev
sorter = StdDev(entries=>4)
title = Top Standard Deviation
menu = Std Deviation
format = Standard Deviation %f
 
++ max
sorter = Max(entries=>5)
title = Top Max Roundtrip Time
menu = by Max
format = Max Roundtrip Time %f seconds
 
++ loss
sorter = Loss(entries=>5)
title = Top Packet Loss
menu = Loss
format = Packets Lost %f
 
++ median
sorter = Median(entries=>5)
title = Top Median Roundtrip Time
menu = by Median
format = Median RTT %f seconds
 
+ overview 
 
width = 600
height = 50
range = 10h
 
+ detail
 
width = 600
height = 200
unison_tolerance = 2
 
"Last 3 Hours"    3h
"Last 30 Hours"   30h
"Last 10 Days"    10d
"Last 360 Days"   360d
 
 
*** Probes ***
+ FPing
binary = /usr/bin/fping
 
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of jaranguda.com Company.
 
+ DNS
menu = DNS
title = DNS Server
 
++ OpenDNS
menu = OpenDNS
title = OpenDNS
host = 208.67.222.222
 
++ Google
menu = GoogleDNS
title = GoogleDNS
host = 8.8.4.4
 
++ Cloudflare-DNS
menu = Cloudflare-DNS
title = Cloudflare-DNS
host = 1.1.1.1

test config yang baru dibuat

sudo /usr/local/smokeping/bin/smokeping --debug

smokeping debug mode

Systemd Smokeping

Agar mudah mengaktifkan smokeping sewaktu boot, maupun stop, start. Kita gunakan service systemd, buat file /usr/lib/systemd/system/smokeping.service yang berisi

[Unit]
Description=Smokeping Server
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/smokeping/bin/smokeping --nodaemon /usr/local/smokeping/etc/config --logfile=/var/log/smokeping.log
 
[Install]
WantedBy=multi-user.target

lalu jalankan

# aktifkan sewaktu booting
sudo systemctl enable smokeping
# jalankan
sudo systemctl start smokeping
# cek status
sudo systemctl status smokeping

Web UI Smokeping

Grafik smokeping bisa diakses dari browser, tetapi sebelumnya harus diaktifkan. Web server yang akan kita gunakan adalah Apache, berikut ini caranya
1. Install Apache

sudo apt install apache2 libapache2-mod-fcgid -y

2. Setting VHOST Smokeping
Buat file virtual host untuk konfigurasi Smokeping di Apache pada file /etc/apache2/conf-enabled/smokeping.conf, yang isinya

Alias /smokeping/cache /usr/local/smokeping/cache
Alias /smokeping /usr/local/smokeping/htdocs/
 
 
<Directory "/usr/local/smokeping/cache">
  AllowOverride all
  Require all granted
</Directory>
 
<Directory "/usr/local/smokeping/htdocs/">
 Options FollowSymLinks ExecCGI
 AllowOverride all
 Require all granted
</Directory>

3. Aktifkan CGI dan restart Apache

sudo a2enmod cgi
# restart apache
sudo systemctl restart apache2

4. Set permission
Set permission agar apache bisa mengakses file Smokeping

sudo chown www-data:www-data -R /usr/local/smokeping

5. Akses Web UI Smokeping
Buka link http://IP-SERVER/smokeping/smokeping.fcgi.dist
smokeping di browser

Filed Under: Linux

Cara Testing Fluentd dengan Docker

Last Updated on 4 December 2021 By tommy Leave a Comment

Fluentd banyak digunakan dimana-mana sebagai tukang kirim log dan tukang proses/format log. Untuk testing berbagai versi Fluentd, menggunakan docker akan sangat membantu, karena tidak perlu menginstall berbagai dependency Ruby, dan bisa cepat melakukan testing.

Tergantung kebutuhan anda, kita bisa build docker image yang akan digunakan untuk kebutuhan spesifik, sebagai contoh dalam images docker tersebut diperlukan plugin Elasticsearch, Grafana dan lain sebagainya. Disini saya akan build Fluentd dengan plugin ElasticSearch, Sumologic dan Datadog, karena lagi melakukan testing ketiga service tersebut.

Untuk project ini kita akan buat folder baru ~/fluentd

mkdir ~/fluentd

semua file yang akan dibuat diletakkan didalam folder ini.

Buat file Dockerfile

FROM fluent/fluentd
RUN gem install fluent-plugin-elasticsearch
RUN gem install fluent-plugin-sumologic_output
RUN gem install fluent-plugin-datadog

contoh kita akan build dengan tag fluentd-jaranguda

docker build . -t fluentd-jaranguda

untuk memastikan semuanya sudah berjalan dengan lancar, kita perlu membuat config sederhana fluentd.conf

<source>
  @type forward
</source>
 
<match **>
  @type stdout
</match>

lalu jalankan fluentd

docker run -it -p 24224:24224 -v ~/fluentd/fluentd.conf:/fluentd/etc/fluentd.conf -e FLUENTD_CONF=fluentd.conf fluentd-jaranguda:latest

kita menggunakan port 24224, karena port tersebut adalah port default untuk logging docker.

buka terminal satu lagi, lalu jalankan

docker run --log-driver=fluentd -v ~/fluentd:/tmp -it alpine:latest echo "testing log"

testing fluentd config from docker
di terminal anda mejalankan fluentd, harusnya muncul output kurang lebih

2021-12-04 08:24:38.000000000 +0000 335f2a001f26: {"log":"testing log\r","container_id":"335f2a001f26f26d4d86434cd64eadc5b42784bac7236cab9906138e8b2782ad","container_name":"/dazzling_haslett","source":"stdout"}

untuk mengirim log tersebut ke elasticsearch, tinggal ubah confignya

<source>
  @type forward
</source>
 
<match **>
  @type elasticsearch
  host      172.17.0.1 #ganti dengan IP/Host
  scheme    http
  port      9200 
  index_name docker-log
  include_timestamp true
</match>

lalu jalankan ulang container fluentd

Untuk mengirim ke 2 Log Collector sekaligus, gunakan contoh config ini

<source>
  @type forward
</source>
 
 
<match **>
  @type copy
  <store>
    @type relabel
    @label @sumologic
  </store>
  <store>
    @type relabel
    @label @elasticsearch
  </store>
</match>
 
<label @elasticsearch>
  <match **>
    @type elasticsearch
    host      172.17.0.1
    scheme    http
    port      9200
    index_name ns-data-sumo
    include_timestamp true
  </match>
</label>
 
<label @sumologic>
  <match **>
    @type sumologic
    endpoint https://collectors.sumologic.com/receiver/v1/http/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    log_format json
    source_category docker/testing
    source_name sgp
    open_timeout 10
  </match>
</label>

dengan menggunakan docker ini, proses troubleshooting menjadi jauh lebih mudah karena kita bisa mereplica yang terjadi di server lain. Simpan contoh log dibawah ini di file log.log

{"time": "2021-12-04T14:52:13.136+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match011", "status": "degraded"}
{"time": "2021-12-04T14:52:13.137+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match012", "status": "degraded"}
{"time": "2021-12-04T14:52:13.138+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match013", "status": "degraded"}
{"time": "2021-12-04T14:52:13.139+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match014", "status": "degraded"}
{"time": "2021-12-04T14:52:13.139+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match015", "status": "degraded"}
{"time": "2021-12-04T14:52:13.139+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "sumo015", "status": "degraded"}
{"time": "2021-12-04T14:52:13.140+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "sumo015", "status": "degraded"}

lalu kirim ke fluentd

docker run --log-driver=fluentd -v ~/fluentd:/tmp -it alpine:latest cat /tmp/log.log

Filed Under: Linux

Cara Lengkap Install VirtualBox 6.x di Debian 11

Last Updated on 28 November 2021 By tommy Leave a Comment

Disini kita akan membahas cara lengkap menginstall VirtualBox 6.1.x di Debian 11. VirtualBox adalah virtualisasi yang banyak digunakan karena gratis, juga karena support berbagai sistem operasi, seperti Linux, Windows dan MacOS.

Tutorial ini bisa dijalankan di server yang baru di install, ataupun server yang sudah digunakan, yang penting anda memiliki minimal 8 GB Memory, 30 GB HD/SSD dan 64 Bit system, agar menjalankan VirtualBox terasa lancar.

Update System

Pastikan ini langkah pertama yang dijalankan, agar sistem mendapatkan sofware-software terbaru yang tersedia di Debian 11.

sudo apt update && sudo apt upgrade -y

bila ada update Kernel, restart dengan

sudo reboot

ini untuk memastikan kita akan menggunakan kernel versi terbaru, dan semua dependency-nya.

Download GPG Key

Download GPG Key VirtualBox ke Debian 11 anda, agar bisa menginstall langsung dari repositorynya

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

Tambah Repository VirtualBox

Buat file baru /etc/apt/sources.list.d/virtualbox.list yang berisi

deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian bullseye contrib

update metadata apt

sudo apt update

Install VirtualBox 6.1

Install VirtualBox 6.1 dengan apt

sudo apt install virtualbox-6.1 -y

Install Extension Pack

Agar bisa menggunakan USB di guest VirtualBox, diperlukan Extension Pack yang di install terpisah, sesuaikan versinya dengan versi VirtualBox yang di install.

# download ext pack
wget https://download.virtualbox.org/virtualbox/6.1.30/Oracle_VM_VirtualBox_Extension_Pack-6.1.30.vbox-extpack
# install ext pack
sudo vboxmanage extpack install --accept-license=33d7284dc4a0ece381196fda3cfe2ed0e1e8e7ed7f27b9a9ebc4ee22e24bd23c Oracle_VM_VirtualBox_Extension_Pack-6.1.30.vbox-extpack

virtualbox 6.1

Filed Under: Linux

Install dan Konfigurasi TigerVNC Server XFCE di Debian 11

Last Updated on 23 November 2021 By tommy Leave a Comment

Keperluan remote desktop, banyak yang menggunakan XFCE, selain karena ukurannya yang kecil, juga karena hemat memory. Dengan XFCE, 1 GB memory bisa diakses oleh beberapa orang, dengan catatan tidak semua menggunakan browser ;) Karena penggunaan browser ini memakai memory yang besar, jadi sebaiknya menggunakan memory 4 GB. Dengan menggunakan VNC kita menggunakan server kita sebagai komputer remote, karena kita bisa menginstall semua aplikasi dan mengaksesnya dengan tampilan GUI.

Di Linux ada banyak aplikasi VNC Server yang bisa digunakan, yang menjadi default di Debian 11 adalah TigerVNC. VNC terbagi menjadi 2, VNC Server sebagai aplikasi yang menjalankan proses VNC, dan VNC client yang mengakses VNC tersebut (remote desktop).

Update Debian 11

Hal ini sangat disarankan untuk dijalankan, agar sistem anda mendapat update terbaru. Jalankan perintah ini secara berkala

sudo apt update; sudo apt upgrade -y

bila terdapat update kernel, reboot server anda.

sudo reboot

Install XFCE

Bila anda menggunakan debian tanpa Desktop Environment, ataupun menggunakan DE selain XFCE install paket XFCE terlebih dahulu

sudo apt install xfce4 -y

paket yang di install xfce4 hanya core untuk xfce saja, untuk menginstall tambahan seperti terminal dan berbagai plugin xfce install

sudo apt install xfce4-goodies -y

Install VNC Server

Untuk menginstall TigerVNC di jalankan

sudo apt install tigervnc-standalone-server -y

Set Password User VNC

Jangan jalankan VNC sebagai sebagai root, karena banyak hal-hal yang tidak diinginkan bisa terjadi, banyak bot berkeliaran yang. Buat password VNC sebagai user anda, disini saya menggunakan user jaranguda.

vncpasswd

masukkan password anda, jangan lebih dari 15 karakter karena beberapa VNC Client tidak support lebih dari 15 karakter.
set vnc password debian 10

Service Systemd

Agar mempermudah mejalankan service VNC, kita akan membuat service systemd, jadi bisa dijalankan, diberhentikan dengan systemctl. Buat file /etc/systemd/system/[email protected], yang isinya

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
 
[Service]
Type=forking
User=jaranguda
ExecStartPre=-/usr/bin/vncserver -kill :%i
ExecStart=/usr/bin/vncserver -localhost no :%i
ExecStop=/usr/bin/vncserver -kill :%i
 
[Install]
WantedBy=multi-user.target

ganti jaranguda menjadi user anda.

Agar TigerVNC dijalankan setelah booting, aktifkan dengan systemctl

systemctl enable vncserver@1.service

Untuk menjalankan TigerVNC, eksekusi

systemctl start vncserver@1.service

Cek status VNC

systemctl status vncserver@:1.service

Lihat Process TigerVNC

Selain dengan menjalankan systemctl status [email protected] bisa dicek dengan ss -tunlp

$ sudo systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)
     Loaded: loaded (/etc/systemd/system/vncserver@1.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-11-23 13:39:10 WIB; 2min 1s ago
    Process: 3926 ExecStartPre=/usr/bin/vncserver -kill :1 (code=exited, status=1/FAILURE)
    Process: 3929 ExecStart=/usr/bin/vncserver -localhost no :1 (code=exited, status=0/SUCCESS)
   Main PID: 3935 (vncserver)
      Tasks: 31 (limit: 16613)
     Memory: 49.6M
        CPU: 414ms
     CGroup: /system.slice/system-vncserver.slice/vncserver@1.service
             ├─3935 /usr/bin/perl /usr/bin/vncserver -localhost no :1
             ├─3936 /usr/bin/Xtigervnc :1 -rfbport 5901 -localhost=0 -SecurityTypes VncAuth,TLSVnc -PasswordFile /home/jaranguda/.vnc/passwd -ClientWaitTimeMillis 30000 -geometry 1920x1200 -desktop kahowa.`:1 (jaranguda>
             ├─3951 /bin/sh /etc/X11/Xtigervnc-session
             ├─3955 tigervncconfig -iconic
             ├─3956 xfce4-session
             └─4002 /usr/bin/ssh-agent x-session-manager
 
Nov 23 13:39:07 kahowa systemd[1]: Starting Remote desktop service (VNC)...
Nov 23 13:39:07 kahowa vncserver[3926]: vncserver: No matching VNC server running for this user!
Nov 23 13:39:07 kahowa vncserver[3935]: New Xtigervnc server 'kahowa.`:1 (jaranguda)' on port 5901 for display :1.
Nov 23 13:39:07 kahowa vncserver[3935]: Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/jaranguda/.vnc/passwd kahowa.`:1 to connect to the VNC server.
Nov 23 13:39:10 kahowa systemd[1]: Started Remote desktop service (VNC).
 
$ ss -tunlp
Netid State  Recv-Q Send-Q Local Address:Port    Peer Address:Port Process                              
udp   UNCONN 0      0            0.0.0.0:5353         0.0.0.0:*                                         
udp   UNCONN 0      0            0.0.0.0:39595        0.0.0.0:*                                         
udp   UNCONN 0      0               [::]:53868           [::]:*                                         
udp   UNCONN 0      0               [::]:5353            [::]:*                                         
tcp   LISTEN 0      128          0.0.0.0:22           0.0.0.0:*                                         
tcp   LISTEN 0      5            0.0.0.0:5901         0.0.0.0:*     users:(("Xtigervnc",pid=3936,fd=9)) 
tcp   LISTEN 0      128             [::]:22              [::]:*                                         
tcp   LISTEN 0      5               [::]:5901            [::]:*     users:(("Xtigervnc",pid=3936,fd=10))

Login ke VNC Server

Akses VNC server dengan vncviewer dari terminal, ataupun VNC client yang lain.

vncviewer IP-SERVER:5901

masukkan password VNC Server
masukkan password vnc server

tampilan vnc pertama login

Mengamankan VNC Server

Cara untuk mengamankan VNC adalah dengan menggunakan SSH Tunnel, jadi VNC hanya bisa dari server tersebut (private IP), bukan dari public IP. Tanpa pengamanan ini pun VNC anda sudah bisa digunakan, tapi sangat direkomendasikan untuk menjalankan settingan ini.
Buka kembali file /etc/systemd/system/vncserver@:1.service, ubah bagian

ExecStart=/usr/bin/vncserver -localhost no :%i

menjadi

ExecStart=/usr/bin/vncserver -localhost yes :%i

lalu restart service systemd

# karena konfigurasi service systemd dirubah, harus di clear cachenya
sudo systemctl daemon-reload
# restart vnc
sudo systemctl restart vncserver@1.service

pastikan VNC sudah listening ke 127.0.0.1 atau [::1]
vnc listening ke ip local

Sekarang untuk login pertama kali harus bind port 5901 dari server ke localhost:5901 bisa juga menggunakan private IP contoh 192.168.88.1:5901, 5901 bisa diganti dengan port lainnya, misalkan 8080 selama port tersebut belum digunakan dan bisa diakses oleh user.

ssh user@SERVER -L 5901:localhost:5901

untuk mengakses remote desktop, jalankan

vncviewer localhost:5901

Filed Under: Linux

Cara Lengkap Deploy Server Hetzner Cloud dengan Terraform

Last Updated on 4 November 2021 By tommy Leave a Comment

Terraform adalah tool yang digunakan untuk mengelola Infrastructure-as-a-Service (IaaS). Terraform sangat powerfull sehingga bisa menghancurkan segalanya bila salah menjalankannya, contoh anda menjalankan terraform destroy pada server production.

Hetzner menggunakan token per-project, jadi kita bisa membuat project baru dan menggunakan token yang khusus untuk project tersebut, tanpa perlu khawatir akan tercampur dengan project yang lainnya. Token bisa dibuat dari Nama Project -> Security -> API Tokens.
generate api token hetzner
Biasanya saya menggunakan namaaplikasi+environment, contoh cmsabc-prod, cmsabc-dev, cmsabc-stg. Penamaan project ini bebas, sebisa mungkin diberi nama yang mudah dimengerti.

Contoh kasus install 3 server untuk aplikasi, IP server yang telah di install disimpan di file server-ips.txt. Mari kita mulai mengerjakan project ini dengan membuat folder app-project-hetzner

mkdir app-project-hetzner

difolder ini buat 4 file

Nama FileKeterangan
provider.tfkonfigurasi provider apa yang digunakan, disini kita menggunakan hetzner
server.tfkonfigurasi untuk server, seperti nama server, ukuran dan lain-lain
ssh.tfuntuk public SSH key yang akan ditambahkan di server yang baru dibuat
variable.tfkonfigurasi default, seperti sistem operasi, datacenter

Tiap-tiap provider bisa menggunakan format yang berbeda, untuk itu cek manual dari masing-masing provider
Mari kita buat satu persatu filenya

1. File provider.tf

Disini kita akan menambahkan provider yang digunakan dan versi dari config yang digunakan

terraform {
  required_providers {
    hcloud = {
      source  = "hetznercloud/hcloud"
      version = ">=1.32.0"
    }
  }
}
 
provider "hcloud" {
  token = var.hcloud_token
}

untuk hetzner, agar tidak perlu menginput token, kita akan menambahkan tokennya sebagai variable.

2. File server.tf

Disini kita akan menambahkan konfigurasi untuk server, seperti image yang digunakan, begitu juga akan dikasi label apa untuk memudahkan memisahkannya dengan berbagai deployment yang lain.
Terakhir setelah di deploy, kita akan menyimpan IPv4 dari masing-masing server pada file server-ips.txt

resource "hcloud_server" "app" {
  count       = var.instances
  name        = "server-${count.index}"
  image       = var.os_type
  server_type = var.server_type
  location    = var.location
  ssh_keys    = [hcloud_ssh_key.default.id]
  labels = {
    type = "app"
  }
 
  provisioner "local-exec" {
    command = "echo ${self.name} : ${self.ipv4_address} >> server-ips.txt"
  }
}

3. File ssh.tf

File ssh.tf ini berguna sebagai kunci untuk mengakses server, file SSH public key yang di deklarasikan disini akan ditambahkan ke user root server yang baru di-provision (deploy), sehingga kita bisa langsung login dan jauh lebih aman dibandingkan menggunakan password manual.

resource "hcloud_ssh_key" "default" {
  name       = "Jaranguda Public Key"
  public_key = file("~/.ssh/id_rsa.pub")
}

File ~/.ssh/id_rsa.pub adalah letak default bila anda menggenerate key SSH. Bila belum ada bisa digenerate dengan ssh-keygen. Salah satu kelemahan cara ini adalah kita tidak bisa menggunakan SSH key dengan nama yang sama untuk beberapa deployment yang berbeda. Solusinya bisa menggunakan remote-exec

4. File variable.tf

Disini tempat variable-nya disimpan, variable-variable ini yang nanti dipanggil dari file terraform

variable "hcloud_token" {
  default = "XXXXXXXXXXXXXXXXXXXX"
}
 
variable "location" {
  default = "ash"
}
 
variable "instances" {
  default = "3"
}
 
variable "server_type" {
  default = "cpx11"
}
 
variable "os_type" {
  default = "debian-11"
}

hcloud_token isi dengan token yang didapat dari console hetzner. Location tersebut adalah datacenter yang digunakan, pilihan Datacenter Hetzner saat ini

DATACENTER CODEDESCRIPTION
nbg1Nuremberg 1 DC 3
hel1Helsinki 1 DC 2
fsn1Falkenstein 1 DC14
ashAshburn DC1

untuk melihat informasi server type, images (distro os) gunakan hcloud, aplikasi CLI hetzner. Karena di dokumentasinya kurang lengkap, lebih baik menggunakan CLI ini.

Setelah selesai membuat ke empat file tersebut, sekarang kita akan memulai proses provisioning (deploy), pertama jalankan

terraform init

untuk mendownload config untuk provider hetzner, sama seperti yang kita set di file provider.tf.

Terakhir lakukan provisioning

terraform apply

saat diminta untuk menjawab “Enter a value:”, ketik yes lalu ENTER. Cara ini bisa dilewatkan dengan menambahkan parameter -auto-approve.

Setelah menjalankan terraform apply lihat control panel Hetzner
3 server baru ditambahkan

Cara konek ke Server

Setelah proses deployment selesai, cara untuk mengakses server tersebut adalah dengan SSH

ssh root@IP-SERVER

IP server tersebut bisa dilihat di file server-ips.txt ataupun dari console hetzner
ip server hetzner

Bersih Bersih

Kalo udah selesai digunakan/testing, semua server dan konfig yang dibuat oleh terraform bisa dihapus langsung, pada contoh diatas kita bisa langsung menghapus ketiga server dan ssh key yang sudah kita setting, caranya adalah dengan menjalankan

terraform destory

INGAT! sebelum menjalankan ini pastikan anda tidak salah folder ataupun project, karena semuanya akan dihapus tanpa tersisa.

Filed Under: Linux

  • « Go to Previous Page
  • Go to page 1
  • Go to page 2
  • Go to page 3
  • Go to page 4
  • Go to page 5
  • Interim pages omitted …
  • Go to page 125
  • Go to Next Page »

Primary Sidebar

Pencarian

Tanya Jawab tentang DevOps SRE CPE, gabung di https://t.me/devopsindonesia

Terbaru

  • Solusi helm Upgrade Failed
  • macOS package is untrusted
  • Cara Mengganti Port Screen Sharing macOS
  • Cara Menonaktifkan Pager di macOS
  • Cara Mengupdate Nama Apple silicon-as-a-Service Scaleway

Komentar

  • Beritalogi on Cara Redirect Domain di Cloudflare
  • Putu on Cara Setting TP-LINK EN020-F5 Sebagai Range Extender
  • Budi on Solusi Simple Queue Mikrotik Tidak Berjalan
  • mazda on Tutorial Lengkap Install Mail Server Postfix Dovecot MariaDB di CentOS 7
  • adi on Menggunakan Mikrotik Sebagai SSH Client

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1.2m views
  • Password Terbaru ZTE F609 Indihome 785k views
  • Password Superadmin Huawei HG8245A 322.7k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 273.9k views
  • Cara Setting Wireless ZTE F609 Indihome 258.3k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 170.7k views
  • Akses UseeTV Indihome via Wireless ZTE F609 157.1k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 156.2k views
  • Cara Reset Password ZTE F609 Indihome 147.9k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 114.3k views

Kategori

  • Delphi
  • dll
  • Gambas
  • Internet
  • Java
  • Lazarus
  • Linux
  • PHP
  • Review
  • Teknologi

Sponsor

kadal.id
carakami.com
kuotabisa.com
Untuk jadi sponsor, hubungi kita lewat halaman sponsor
© 2021. Jaranguda
  • Linux
  • PHP
  • Internet
  • Teknologi
  • Delphi
  • Gambas
  • Java