Setup Portainer + Custom Logo + Nginx + HTTPS SSL

1
1160
views

Pada artikel kali ini saya akan berbagi bagaimana langkah-langkah dalam menyiapkan Portainer dengan logo sendiri serta menjalankan Portainer dibalik Nginx yang sudah dilengkapi dengan HTTPS SSL pada Ubuntu Server.

Pra-Syarat

Berikut hal-hal yang harus disiapkan sebelum menjalankan praktik ini:

  • Server untuk Portainer instance yang akan dipasang. Saya menggunakan server dengan OS Ubuntu.
  • Alamat domain yang sudah dipointing ke server tersebut. Saya menggunakan sub-domain port.tutorlokal.com.
  • Server tersebut sudah harus dipasangi Docker. Baca panduan resmi cara pasang docker.
  • Anda juga harus sudah menyiapkan logo sendiri yang berdimensi tepat 155×55 px.
    Saya akan menggunakan logo berikut:

Install Nginx Web Server

Silakan install Nginx jika belum tersedia:

$ sudo apt install nginx

Logo yang dipasangkan ke Portainer harus dapat diakses secara publik melalui URL. Maka dari itu mari kita upload terlebih dahulu logo kita sendiri ke server. Saya menggunakan perintah berikut untuk upload logo ke server:

$ scp portainer-tutorlokal-logo.png root@port.tutorlokal.com:/var/www/html/

Setup Let’s Encrypt SSL Certificate

Untuk tahap instalasi certbot saya sudah pernah menulis pada artikel “Membuat Server VPN Sendiri Gratis di Oracle Cloud”, silakan buka sub-bab instalasi certbot.

Kemudian jalankan perintah berikut untuk menghasilkan SSL certificate baru:

$ sudo certbot certonly --webroot --agree-tos --email you@example.com -d port.tutorlokal.com -w /var/www/html

Apabila berhasil maka akan muncul tampilan yang menunjukkan lokasi sertifikat tersimpan dengan ucapan selamat berikut:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Requesting a certificate for port.tutorlokal.com
Performing the following challenges:
http-01 challenge for port.tutorlokal.com
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/port.tutorlokal.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/port.tutorlokal.com/privkey.pem
   Your certificate will expire on 2021-08-14. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Konfigurasi Nginx

Buat file baru di /etc/nginx/sites-available dengan nama sesuai nama domain:

$ sudo nano /etc/nginx/sites-available/port.tutorlokal.com.conf

Di dalam file tersebut isikan dengan konfigurasi berikut:

upstream portainer {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name port.tutorlokal.com;
return 301 https://port.tutorlokal.com$request_uri;
}
server {
listen 443 ssl;
server_name port.tutorlokal.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Add Headers
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header host $host;
proxy_set_header upgrade $http_upgrade;
proxy_set_header connection "upgrade";
# SSL parameters
ssl_certificate /etc/letsencrypt/live/port.tutorlokal.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/port.tutorlokal.com/privkey.pem;
ssl_session_timeout 30m;
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_session_cache builtin:1000 shared:SSL:10m;
# log
access_log /var/log/nginx/port.tutorlokal.com.access.log;
error_log /var/log/nginx/port.tutorlokal.com.error.log;
# gzip
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6].(?!.*SV1)";
location / {
proxy_redirect off;
proxy_pass http://portainer;
proxy_http_version 1.1;
}
location /logo.png {
alias /var/www/html/portainer-tutorlokal-logo.png;
}
}

Sesuaikan Nama Domain Milik Anda

Pada file konfigurasi di atas, nama domainnya masih port.tutorlokal.com, pastikan Anda rubah sesuai domain milik Anda.

Sesuaikan Port Portainer

Secara default, portainer akan berjalan pada port 9000. Silakan sesuaikan jika Anda menggunakan port berbeda.

upstream portainer {
server 127.0.0.1:9000;
}

Sesuaikan Path SSL Certificate

Pastikan Anda juga menyesuaikan path SSL certificate sesuai lokasinya pada server Anda:

# SSL parameters
ssl_certificate /etc/letsencrypt/live/port.tutorlokal.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/port.tutorlokal.com/privkey.pem;

Sesuaikan Path Logo Anda

Disini saya meletakkan file logo saya di /var/www/html/portainer-tutorlokal-logo.png. Jika Anda telah menempatkannya di lokasi lain, silakan disesuaikan lagi konfigurasinya.

location /logo.png {
alias /var/www/html/portainer-tutorlokal-logo.png;
}

Apabila Nginx sudah selesai diatur nantinya logo dapat diakses melalui URL berikut: https://port.tutorlokal.com/logo.png. URL inilah yang nantinya akan kita set pada saat inisiasi portainer.

Aktifkan Konfigurasi Nginx

Setelah menyimpan file konfigurasi tersebut, sekarang aktifkan konfigurasinya dengan cara membuat link ke sites-enabled.

$ cd /etc/nginx/sites-enabled/
$ sudo ln -s ../sites-available/port.tutorlokal.com.conf ./port.tutorlokal.com.conf

Setelah itu restart service Nginx supaya konfigurasi kita dibaca ulang oleh Nginx.

$ sudo systemctl restart nginx

Apabila Anda mengakses URL logo Anda sekarang, maka logo akan muncul. Sedangkan apabila Anda mengakses alamat domain Anda sekarang, maka akan masih muncul error seperti ini:

Error karena portainer belum berjalan tapi Nginx sudah siap.
Error karena portainer belum berjalan tapi Nginx sudah siap.

Tenang saja, error tersebut wajar muncul karena memang kita belum menjalankan portainer. Setelah portainer nanti dijalankan, maka alamat domain Anda seharusnya akan memunculkan tampilan dari portainer.

Install Portainer

Membuat Volume untuk Portainer

Tahap setelah ini adalah menyiapkan portainer, pertama kita harus membuat docker volume terlebih dahulu.

$ docker volume create portainer_data

Mulai Jalankan Portainer

Jalankan perintah berikut untuk menjalankan Portainer:

$ docker run -d \
-p 9000:9000 \
-p 8000:8000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce \
--logo "https://port.tutorlokal.com/logo.png"

Akses Portainer

Setelah Portainer berhasil dijalankan, sekarang coba akses alamat domain Anda. Maka Anda akan dituntun untuk mengatur username dan password untuk admin Portainer. Silakan lanjutkan dengan mengisi form tersebut:

Form initial setup Portainer.
Form initial setup Portainer.

Setup Portainer Endpoint

Setelah Anda membuat user, maka selanjutnya akan digiring ke halaman baru dimana Anda akan diminta untuk setup endpoint pertama Anda.

Form setup endpoint Portainer.
Form setup endpoint Portainer.

Ada beberapa macam jenis endpoint, Anda bisa membuat endpoint pada server yang sama dimana Anda memasang Portainer, atau membuat endpoint dari Kubernetes, atau bisa juga membuat endpoint dari server lain yang sudah dipasangi Portainer Edge Agent.

Disini saya rencananya ingin membuat endpoint dari server lain, untuk langkah-langkah bagaimana dapat menghubungkan server lain dengan Portainer yang baru saja saya setup akan dibahas pada artikel berikutnya. Untuk saat ini, silakan klik tombol Skip pada form tersebut atau Anda bisa melanjutkan sendiri proses pembuatan endpoint.

Penutup

Setup portainer dengan custom logo dibalik Nginx dengan HTTPS SSL berjalan dengan lancar, langkah selanjutnya adalah setup endpoint baru yang akan dibahas pada artikel selanjutnya.

Terima kasih telah mengikuti artikel ini, semoga bermanfaat.

Referensi:

  • https://documentation.portainer.io/v2.0/deploy/ceinstalldocker

1 KOMENTAR

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.