Mattermost adalah platform perpesanan instan kelas perusahaan, alternatif Slack yang dihosting sendiri dengan sumber terbuka. Ini ditulis dalam Golang dan React dan dapat menggunakan MySQL atau PostgreSQL sebagai backend database. Mattermost membawa semua komunikasi tim Anda ke satu tempat dan menyediakan berbagai fitur termasuk berbagi file, pesan pribadi dan grup, emoji khusus, panggilan video, dan banyak lagi.
Dalam tutorial ini, kita akan menginstal Mattermost pada server Ubuntu 18.04 dan mengonfigurasi Nginx sebagai proxy terbalik SSL.
Prasyarat #
Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan dengan tutorial ini:
- Anda masuk sebagai pengguna dengan hak istimewa sudo.
- Anda memiliki nama domain yang menunjuk ke alamat IP server Anda. Dalam artikel ini kita akan menggunakan
example.com
. - Anda telah menginstal Nginx, jika belum periksa panduan ini.
- Anda memiliki sertifikat SSL yang terpasang untuk domain Anda. Anda dapat menginstal sertifikat SSL Let's Encrypt gratis dengan mengikuti panduan ini.
Buat Database MySQL #
Kami akan menggunakan MySQL sebagai database untuk Mattermost. Jika Anda belum menginstal MySQL atau MariaDB di server Anda, Anda dapat menginstalnya dengan mengikuti petunjuk berikut.
Masuk ke shell MySQL:
mysql -u root
Buat database dan pengguna baru untuk instalasi Mattermost kami dengan:
Pastikan Anda menggunakan sandi yang lebih aman daripadaCREATE DATABASE mattermost;
GRANT ALL ON mattermost.* TO mattermost@localhost IDENTIFIED BY 'P4ssvv0rD';
P4ssvv0rD
. Buat pengguna sistem baru #
Buat pengguna dan grup baru yang akan menjalankan instance Mattermost kami. Kami akan memberi nama pengguna mattermost
:
sudo useradd -U -M -d /opt/mattermost mattermost
Instal Server Mattermost #
Pada saat artikel ini ditulis, versi stabil terbaru dari Mattermost adalah versi 5.1.0. Unduh arsip dengan perintah curl berikut:
sudo curl -L https://releases.mattermost.com/5.1.0/mattermost-5.1.0-linux-amd64.tar.gz -o /tmp/mattermost.tar.gz
Setelah unduhan selesai, ekstrak arsip dan pindahkan ke /opt
direktori
sudo tar zxf /tmp/mattermost.tar.gz -C /opt
Buat direktori penyimpanan untuk file:
sudo mkdir -p /opt/mattermost/data
Ubah kepemilikan direktori menjadi mattermost
pengguna:
sudo chown -R mattermost: /opt/mattermost
Buka /opt/mattermost/config/config.json
file, atur driver database ke mysql
dan masukkan informasi database:
"SqlSettings": {
"DriverName": "mysql",
"DataSource": "mattermost:P4ssvv0rD@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
Untuk memastikan bahwa instance Mattermost kami berfungsi seperti yang diharapkan, kami akan menguji server Mattermost. Ubah menjadi /opt/mattermost
direktori dan mulai server dengan perintah berikut:
cd /opt/mattermost
sudo -u mattermost bin/mattermost
Jika semuanya bekerja dengan baik, server akan mulai dan output akan terlihat seperti ini :
{"level":"info","ts":1532546921.941638,"caller":"app/server.go:115","msg":"Starting Server..."}
{"level":"info","ts":1532546921.9421031,"caller":"app/server.go:154","msg":"Server is listening on [::]:8065"}
{"level":"info","ts":1532546921.9541554,"caller":"app/web_hub.go:75","msg":"Starting 2 websocket hubs"}
Kami sekarang dapat menghentikan server Mattermost dengan CTRL+C
dan lanjutkan dengan langkah berikutnya.
Buat unit Systemd #
Untuk menjalankan instance Mattermost sebagai layanan, kami akan membuat mattermost.service
file unit di /etc/systemd/system/
direktori.
Buka editor teks Anda dan buat file berikut:
/etc/systemd/system/mattermost.service[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=mysql.service
Beri tahu systemd bahwa kami telah membuat file unit baru dan memulai layanan Mattermost dengan perintah berikut:
sudo systemctl daemon-reload
sudo systemctl start mattermost
Kami sekarang dapat memeriksa status layanan dengan:
sudo systemctl status mattermost
● mattermost.service - Mattermost
Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; ven
Active: active (running) since Wed 2018-07-25 18:39:05 UTC; 41s ago
Main PID: 3091 (mattermost)
Tasks: 18 (limit: 507)
CGroup: /system.slice/mattermost.service
├─3091 /opt/mattermost/bin/mattermost
Jika tidak ada kesalahan, aktifkan layanan Mattermost untuk memulai secara otomatis saat boot:
sudo systemctl enable mattermost
Siapkan proxy terbalik dengan Nginx #
Jika Anda mengikuti panduan cara menginstal Nginx di Ubuntu 18.04dan cara mengamankan Nginx dengan Let's Encrypt di Ubuntu 18.04, Anda seharusnya sudah menginstal dan mengonfigurasi Nginx dengan sertifikat SSL.
Sekarang kita perlu menyiapkan blok server baru untuk instance Mattermost. Buka editor teks Anda dan buat file berikut:
/etc/nginx/conf.d/example.com.confproxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
upstream mattermost_backend {
server 127.0.0.1:8065;
}
server {
listen 80;
server_name example.com www.example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log;
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;
proxy_read_timeout 600s;
proxy_pass http://mattermost_backend;
}
location / {
proxy_http_version 1.1;
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_pass http://mattermost_backend;
}
}
Muat ulang layanan Nginx agar perubahan diterapkan:
sudo systemctl reload nginx
Mengonfigurasi Mattermost #
Buka browser Anda, ketik domain Anda dan Anda akan diarahkan ke halaman pendaftaran.
Masukkan email Anda, pilih nama pengguna dan kata sandi dan klik tombol Create Account
untuk membuat akun pertama Anda.
Pengguna pertama yang dibuat dalam sistem akan memiliki hak administrator.
Pada langkah berikutnya, wizard konfigurasi akan meminta Anda untuk membuat tim baru.
Klik Create a new team
link, masukkan tim pertama Anda dan klik Next
tombol.
Pada langkah berikutnya Anda akan diminta untuk memilih alamat web tim baru Anda:
Klik tombol Finish
dan Anda akan diarahkan ke dasbor Mattermost , masuk sebagai administrator.
Buka Konsol Sistem, dengan mengklik nama pengguna Anda di bagian atas panel navigasi, dan di menu baru yang terbuka, klik System Console
tautan.
Setel URL situs dengan membuka Pengaturan Umum → Konfigurasi.
Untuk mengaktifkan notifikasi email, buka Notifikasi → Email, ubah Enable Email Notifications
nilai dari false
untuk true
dan masukkan parameter SMTP Anda.
Anda dapat menggunakan layanan email transaksional populer seperti SendinBlue, SendGrid, Amazon SES, Mandrill, Mailgun, Mailjet, dan Postmark atau Anda dapat mengatur server email Anda sendiri dengan mengikuti tutorial ini.
Terakhir, kita perlu memulai ulang layanan Mattermost agar perubahan diterapkan:
sudo systemctl restart mattermost