📝

【Mattermost 11】Windows11で開発環境を構築する

に公開

概要

  • WSL2を利用して、Windows上でUbuntuを起動する。
  • Ubuntu上にMattermost 11のServerをインストールする。
  • MattermostのServer・Webapp・Pluginを開発可能にする。

手順

Ubuntuのセットアップ

WSL2でUbuntuをインストール

  1. Windowsの検索機能で、「Windows の機能の有効化または無効化」と入力する。
  2. 「Windows の機能の有効化または無効化」で以下をチェックし、「OK」を押下する。
    • 「Linux 用 Windows サブシステム」
    • 「仮想マシンプラットフォーム」

  1. PCを再起動する。
  2. PowerShellを管理者として実行する。
  3. 下記の各行を入力し、「Enter」を押下する。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
  1. Microsoft Storeで**Ubuntu*をインストールし、起動する(=「開く」)。

  2. ユーザー名とパスワードを設定する。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: ubuntu
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue May 16 16:09:10 JST 2023

  System load:  0.84                Processes:             9
  Usage of /:   0.1% of 1006.85GB   Users logged in:       0
  Memory usage: 4%                  IPv4 address for eth0: xxx.xxx.xxx.xxx
  Swap usage:   0%

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


This message is shown once a day. To disable it please create the
/home/ubuntu/.hushlogin file.
ubuntu@DESKTOP-XXXXX:~$
  1. エクスプローラーを起動し、アドレスバーに下記を入力する。
\\wsl$
  1. 「Ubuntu」をクイックアクセスにピン留めする。

systemctlを有効化

  1. Ubuntuで下記コマンドを実行し、wsl.confファイルを作成する。
sudo vi /etc/wsl.conf
/etc/wsl.conf
[boot]
systemd=true
  1. PowerShellで下記を実行することで、Ubuntuを終了する。
wsl --shutdown
  1. 再度Ubuntsuを起動し、psコマンドによりPID1でsystemdが実行していることを確認する。
ps -ae
    PID TTY          TIME CMD
      1 ?        00:00:00 systemd
      2 ?        00:00:00 init
  1. OSのシステムを更新する。
sudo apt -yV upgrade
  1. パッケージを更新する。
sudo apt -y update

Mattermostのインストール

PostgreSQLをインストール

  1. PostgreSQLをインストールする。
sudo apt install postgresql postgresql-contrib
  1. PostgreSQLの起動をし、データベースとユーザーを作成する。
sudo -u postgres psql
CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'LycoReco02!';
GRANT ALL PRIVILEGES ON DATABASE mattermost TO mmuser;
\q

MattermostのServerをインストール

  1. MattermostのServerファイル(tar.gzファイル)をダウンロードし、展開する。
sudo su
cd ~
wget https://releases.mattermost.com/11.6.1/mattermost-team-11.6.1-linux-amd64.tar.gz
tar -xvzf *.gz
mv mattermost /opt
mkdir /opt/mattermost/data
  1. Mattermost専用のグループ・ユーザーを作成し、権限を付与する。
useradd --system --user-group mattermost
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
  1. 下記の設定ファイルを変更する。
vi /opt/mattermost/config/config.json
/opt/mattermost/config/config.json
{
    "ServiceSettings": {
-        "SiteURL": "",
+        "SiteURL": "http://localhost",

~~~

"SqlSettings": {
-        "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
+        "DataSource": "postgres://mmuser:LycoReco02!@localhost:5432/mattermost?sslmode=disable&connect_timeout=10",

~~~

    "PluginSettings": {
        "Enable": true,
-        "EnableUploads": false
+        "EnableUploads": true
  1. サービスを追加する。
cd /opt/mattermost
touch /etc/systemd/system/mattermost.service
vi /etc/systemd/system/mattermost.service
/etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=syslog.target network.target mysqld.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost server
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/spool/mattermost/pid/master.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

  1. Mattermostを起動する。
chmod 664 /etc/systemd/system/mattermost.service
systemctl daemon-reload
systemctl enable mattermost
systemctl start mattermost
systemctl status mattermost
  1. ブラウザで下記アドレスにアクセスする。
  1. Mattermostのユーザー(システム管理者)と任意のチームを作成し、ログインする。

開発環境の構築

Go言語

  1. makeをインストールする。
sudo su
apt install -y make
  1. Go言語のインストーラ(tar.gz)をダウンロードする。
cd ~
wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz
  1. Go言語をインストールし、パスを通す。
tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
source ~/.profile
  1. インストールしたことを確認する。
go version
root@XXXXX:~# go version
go version go1.19.5 linux/amd64

Node.js

  1. curlをインストールする。
sudo su
apt install -y curl
  1. NVMをインストールする。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.profile
  1. Server・Webappをカスタマイズする場合

    1. NVMでインストールできるNode.jsのバージョンを確認する。
    nvm ls-remote
    
    root@XXXXX:~# nvm ls-remote
            v0.1.14
            v0.1.15
    
            (省略)
            
            v20.1.0
            v20.2.0
    root@DESKTOP-CN47VLU:~#
    
    1. NVMでNode.jsとNPMをインストールする。バージョンはLastest LTS(現在はv18.16.0)にする。
    nvm install 18
    
    1. Node.jsとNPMがインストールされていることを確認する。
    node -v
    npm -v
    
    root@XXXXX:~# node -v
    v18.16.0
    root@XXXXX:~# npm -v
    9.5.1
    
  2. Pluginを開発する場合

    1. NVMでNode.jsとNPMをインストールする。バージョンはv11にする。
    nvm install 20
    nvm use 20
    nvm alias default 20
    
    1. Yarnを有効にする。
    corepack enable
    corepack prepare yarn@stable --activate
    
    1. Node.jsとNPMがインストールされていることを確認する。
    node -v
    npm -v
    
    root@XXXXX:~# node -v
    v20.20.2
    root@XXXXX:~# npm -v
    10.8.2
    
    1. 下記の環境変数を設定する。
    export MM_SERVICESETTINGS_SITEURL=http://localhost:8065
    export MM_ADMIN_USERNAME=★システム管理者のユーザー★
    export MM_ADMIN_PASSWORD=★システム管理者のパスワード★
    source ~/.profile
    

備考

ソースコード

環境情報

  • Windows11 バージョン25H2
  • Ubuntu
  • PostgreSQL 16.13 (Ubuntu 16.13-0ubuntu0.24.04.1)
  • go version go1.19.5 linux/amd64
  • Node.js v20.20.2
  • NPM 10.8.2
  • Yarn v4.14.1

関連記事

https://zenn.dev/mshrynzw/articles/d4df2384cf970d
https://zenn.dev/mshrynzw/articles/932f307e049b30
https://zenn.dev/mshrynzw/articles/e50747c732b1ed

Discussion