Mattermost adalah aplikasi perpesanan open-source dan self-hosted yang digunakan untuk obrolan, berbagi file, pencarian, dan integrasi. Ini adalah alternatif untuk obrolan Slack yang membawa semua komunikasi tim Anda ke satu tempat. Itu ditulis dalam React dan Golang, dan menggunakan database PostgreSQL atau MySQL di backend. Ini menawarkan serangkaian fitur yang kaya termasuk, Pemberitahuan Push, Riwayat pencarian tidak terbatas, Emoji khusus, Webhooks &perintah, Direktori aktif, Dukungan penyebaran basis data multi-simpul, Forum, Papan Diskusi, dan banyak lagi.
Dalam tutorial ini, kami akan menunjukkan cara menginstal Mattermost dengan Nginx dan Let's Encrypt SSL di Ubuntu 20.04.
Prasyarat
- Server yang menjalankan Ubuntu 20.04.
- Nama domain valid yang ditunjukkan dengan IP server Anda.
- Kata sandi root dikonfigurasi di server.
Memulai
Pertama, disarankan untuk memperbarui paket sistem Anda dengan versi terbaru. Anda dapat memperbaruinya dengan menjalankan perintah berikut:
apt-get update -y
Setelah semua paket diperbarui, instal dependensi lain yang diperlukan dengan menjalankan perintah berikut:
apt-get install curl wget vim git unzip gnupg2 -y
Setelah menginstal semua paket yang diperlukan, Anda dapat melanjutkan ke langkah berikutnya.
Instal dan Konfigurasi MariaDB
Mattermost menggunakan MySQL/MariaDB sebagai backend database. Jadi server MariaDB harus diinstal di server Anda. Jika belum terinstal, Anda dapat menginstalnya dengan perintah berikut:
apt-get install mariadb-server -y
Setelah menginstal server MariaDB, masuk ke MariaDB dengan perintah berikut:
mysql
Setelah login, buat database dan user untuk Mattermost dengan perintah berikut:
MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> CREATE USER 'mattermost'@'%' IDENTIFIED BY 'password';
Selanjutnya, berikan semua hak istimewa ke Mattermost dengan perintah berikut:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO 'mattermost'@'%';
Selanjutnya, flush hak istimewa dan keluar dari shell MariaDB dengan perintah berikut:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Setelah database MariaDB Anda dikonfigurasi, Anda dapat melanjutkan ke langkah berikutnya.
Instal dan Konfigurasikan Mattermost
Pertama, Anda perlu mengunduh Mattermost versi terbaru dari situs resminya. Anda dapat mengunduhnya dengan perintah berikut:
wget https://releases.mattermost.com/5.24.2/mattermost-5.24.2-linux-amd64.tar.gz
Setelah diunduh, ekstrak file yang diunduh dengan perintah berikut:
tar -xvzf mattermost-5.24.2-linux-amd64.tar.gz
Selanjutnya, salin direktori yang diekstrak ke /opt:
cp -r mattermost /opt
Selanjutnya, buat direktori data untuk Mattermost:
mkdir /opt/mattermost/data
Selanjutnya, Anda perlu membuat pengguna terpisah untuk menjalankan Mattermost. Anda dapat membuatnya dengan perintah berikut:
useradd --system --user-group mattermost
Selanjutnya, ubah kepemilikan direktori mattermost menjadi mattermost dan berikan izin yang sesuai dengan perintah berikut:
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
Selanjutnya, edit file konfigurasi default Mattermost dan tentukan pengaturan database dan URL situs Anda.
nano /opt/mattermost/config/config.json
Ubah baris berikut sesuai kebutuhan Anda:
"SiteURL": "https://mattermost.linuxbuz.com", "DriverName": "mysql", "DataSource": "mattermost:[email protected](localhost:3306)/mattermostdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
Simpan dan tutup file setelah Anda selesai.
Buat File Layanan Systemd untuk Mattermost
Selanjutnya, Anda perlu membuat file layanan systemd untuk mengelola layanan Mattermost. Anda dapat membuatnya dengan perintah berikut:
nano /lib/systemd/system/mattermost.service
Tambahkan baris berikut:
[Unit] Description=Mattermost After=network.target After=mysql.service Requires=mysql.service [Service] Type=notify User=mattermost Group=mattermost ExecStart=/opt/mattermost/bin/mattermost TimeoutStartSec=3600 Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost LimitNOFILE=49152 [Install] WantedBy=mariadb.service
Simpan dan tutup file kemudian reload daemon systemd dengan perintah berikut:
systemctl daemon-reload
Selanjutnya, mulai layanan Mattermost dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:
systemctl start mattermost
systemctl enable mattermost
Selanjutnya, verifikasi status layanan Mattermost dengan perintah berikut:
systemctl status mattermost
Anda akan mendapatkan output berikut:
? mattermost.service - Mattermost Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2020-08-01 09:12:52 UTC; 17s ago Main PID: 4106 (mattermost) Tasks: 20 (limit: 2353) Memory: 85.9M CGroup: /system.slice/mattermost.service ??4106 /opt/mattermost/bin/mattermost ??4198 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64 Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.131499,"caller":"mlog/sugar.go:19","msg":"Sent notification of ne> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.1841655,"caller":"jobs/workers.go:73","msg":"Starting workers"} Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.1842792,"caller":"bleveengine/bleve.go:267","msg":"UpdateConf Ble> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.1930475,"caller":"jobs/schedulers.go:74","msg":"Starting schedule> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.20063,"caller":"app/web_hub.go:83","msg":"Starting websocket hubs> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2099638,"caller":"app/license.go:37","msg":"License key from http> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2205582,"caller":"app/server.go:525","msg":"Starting Server..."} Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2208374,"caller":"app/server.go:594","msg":"Server is listening o> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2211802,"caller":"commands/server.go:106","msg":"Sending systemd > Aug 01 09:12:52 ubuntu2004 systemd[1]: Started Mattermost.
Pada titik ini, Mattermost sedang berjalan dan mendengarkan pada port 8065.
Konfigurasikan Nginx sebagai Proxy Terbalik
Selanjutnya, Anda perlu mengonfigurasi Nginxx sebagai proxy terbalik untuk Mattermost. Pertama, instal paket Nginx dengan perintah berikut:
apt-get install nginx -y
Setelah terinstal, buat file konfigurasi virtual host Nginx dengan perintah berikut:
nano /etc/nginx/sites-available/mattermost.conf
Tambahkan baris berikut:
upstream mattermost { server localhost:8065; keepalive 32; } proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off; server { listen 80; server_name mattermost.linuxbuz.com; location ~ /api/v[0-9]+/(users/)?websocket$ { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; client_max_body_size 50M; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_buffers 256 16k; proxy_buffer_size 16k; client_body_timeout 60; send_timeout 300; lingering_timeout 5; proxy_connect_timeout 90; proxy_send_timeout 300; proxy_read_timeout 90s; proxy_pass http://mattermost; } location / { client_max_body_size 50M; proxy_set_header Connection ""; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_buffers 256 16k; proxy_buffer_size 16k; proxy_read_timeout 600s; proxy_cache mattermost_cache; proxy_cache_revalidate on; proxy_cache_min_uses 2; proxy_cache_use_stale timeout; proxy_cache_lock on; proxy_http_version 1.1; proxy_pass http://mattermost; } }
Simpan dan tutup file tersebut kemudian aktifkan konfigurasi virtual host dengan perintah berikut:
ln -s /etc/nginx/sites-available/mattermost.conf /etc/nginx/sites-enabled/mattermost.conf
Selanjutnya, verifikasi Nginx untuk kesalahan konfigurasi apa pun:
nginx -t
Anda akan mendapatkan output berikut:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Terakhir, restart layanan Nginx untuk menerapkan perubahan:
systemctl restart nginx
Amankan Mattermost dengan Let's Encrypt SSL
Pertama, Anda perlu menginstal klien Certbot di sistem Anda untuk mengelola Let's Encrypt SSL. Anda dapat menginstalnya dengan perintah berikut:
apt-get install python3-certbot-nginx -y
Setelah menginstal Certbot, jalankan perintah berikut untuk menginstal Let's Encrypt SSL untuk situs web Anda.
certbot --nginx -d mattermost.linuxbuz.com
Anda akan diminta untuk memberikan alamat email yang valid dan menerima persyaratan layanan seperti yang ditunjukkan di bawah ini:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for mattermost.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/mattermost.conf
Selanjutnya, pilih apakah akan mengalihkan lalu lintas HTTP ke HTTPS atau tidak:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Ketik 2 dan tekan Enter untuk menginstal Let's Encrypt SSL di domain Anda. Setelah diinstal, Anda akan melihat output berikut:
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/mattermost.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://mattermost.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=mattermost.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/mattermost.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/mattermost.linuxbuz.com/privkey.pem Your cert will expire on 2020-10-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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 - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
Akses Antarmuka Web Penting
Sekarang, buka browser web Anda dan ketik URL https://mattermost.linuxbuz.com. Anda akan diarahkan ke layar pendaftaran Mattermost:
Berikan alamat email, nama, sandi, dan klik Buat Akun tombol. Anda akan melihat layar berikut:
Klik pada Buat a tim tombol. Anda akan melihat layar berikut:
Berikan nama Tim Anda dan klik Berikutnya tombol. Anda akan melihat layar berikut:
Berikan URL tim Anda dan klik Selesai tombol. Anda akan melihat layar Selamat Datang Terpenting:
Klik Lewati Tutorial tombol. Anda akan melihat dasbor Mattermost di layar berikut:
Kesimpulan
Dalam panduan ini, Anda mempelajari cara menginstal aplikasi Mattermost Team Messaging di server Ubuntu 20.04. Anda juga mempelajari cara mengonfigurasi Nginx sebagai proxy terbalik dan mengamankannya dengan Let's Encrypt SSL. Sekarang Anda dapat menjelajahi layanan Mattermost dan bekerja sama dengan tim Anda.