Mattermost

Allikas: Imre kasutab arvutit
Redaktsioon seisuga 14. juuni 2026, kell 00:02 kasutajalt Imre (arutelu | kaastöö) (→‎Paigaldamine)
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Mattermost on populaarne ja aus veebipõhiselt st brauseriga kasutatav suhtlusplatvorm, natuke msn-icq-skype-jne sarnane.

Tööpõhimõte

Tarkvara jagatakse mitmete erinevate tõmmiste, litsentside, subscriptionite viisil. Ausad nö tasuta variandid paistavad olevat 2026 aastal

  • kasutada enterprise tõmmist, kuid ilma litsentsi sisestamata
  • kasutada teams tõmmist

Mattermost on arendatud muu hulgas Go platvormil.

Mattermost lahendus koosneb kolmest komponendist

  • nginx frontend
  • postgresql andmebaas
  • mattermost rakendusserver

postgresql andmebaas

Kasutatakse Alpine tõmmise põhist postgresql andmebaasi, küllap mm arendajad-pakendajad teavad, aga alpine puhul on collate-locale-jms oluliselt erinev nö tavalisest ubuntu juhtumist

  • alpine kasutab libc asemel musl teeki
  • alpine puhul toimub nö libc moodi locale kasutamine omajagu erinevalt
  • lisaks on üldiselt postgresql võimeline kasutame libc ja icu põhist locale't
duser@dh-mm:~/20250428/docker$ docker exec -ti 78 ps auxf
PID   USER     TIME  COMMAND
    1 postgres  0:00 postgres
   28 postgres  0:00 postgres: checkpointer
   29 postgres  0:00 postgres: background writer
   31 postgres  0:00 postgres: walwriter
   32 postgres  0:00 postgres: autovacuum launcher
   33 postgres  0:00 postgres: logical replication launcher
   39 postgres  0:00 postgres: mmuser mattermost 10.167.0.3(48660) idle
  191 postgres  0:00 postgres: mmuser mattermost 10.167.0.3(47972) idle
  214 postgres  0:00 postgres: mmuser mattermost 10.167.0.3(42712) idle
  244 postgres  0:00 postgres: mmuser mattermost 10.167.0.3(34998) idle
  245 postgres  0:00 postgres: mmuser mattermost 10.167.0.3(35012) idle
  265 postgres  0:00 postgres: mmuser mattermost 10.167.0.3(36674) idle
  266 postgres  0:00 postgres: mmuser mattermost 10.167.0.3(36680) idle
  366 root      0:00 ps auxf

duser@dh-mm:~/20250428/docker$ docker exec -ti 78 psql -U mmuser postgres
psql (17.10)
Type "help" for help.

postgres=# \l+
                                                                                    List of databases
    Name    | Owner  | Encoding | Locale Provider |  Collate   |   Ctype    | Locale | ICU Rules | Access privileges |  Size   | Tablespace |                Description
------------+--------+----------+-----------------+------------+------------+--------+-----------+-------------------+---------+------------+--------------------------------------------
 mattermost | mmuser | UTF8     | libc            | en_US.utf8 | en_US.utf8 |        |           |                   | 45 MB   | pg_default |
 postgres   | mmuser | UTF8     | libc            | en_US.utf8 | en_US.utf8 |        |           |                   | 7502 kB | pg_default | default administrative connection database
 template0  | mmuser | UTF8     | libc            | en_US.utf8 | en_US.utf8 |        |           | =c/mmuser        +| 7345 kB | pg_default | unmodifiable empty database
            |        |          |                 |            |            |        |           | mmuser=CTc/mmuser |         |            |
 template1  | mmuser | UTF8     | libc            | en_US.utf8 | en_US.utf8 |        |           | =c/mmuser        +| 7574 kB | pg_default | default template for new databases
            |        |          |                 |            |            |        |           | mmuser=CTc/mmuser |         |            |
(4 rows)

Kuna tegu on Alpine linux põhise konteineriga, siis ei ole sarnaseid libc6 nähtusi seoses reindexdb jms teemadel

postgres=# SELECT
postgres-#     collname AS collation_name,
postgres-#     collversion AS recorded_version,
postgres-#     pg_collation_actual_version(oid) AS actual_runtime_version
postgres-# FROM pg_collation
postgres-# WHERE collname = 'en_US.UTF-8';
 collation_name | recorded_version | actual_runtime_version
----------------+------------------+------------------------
(0 rows)

Paigaldamine

Käesolev tekst keskendub docker põhisele lahendusele.

Väited

Tarkvara kopeerimine

$ git clone https://github.com/mattermost/docker

Tulemusena tekib failisüsteemi

duser@dh-mm:~/20250428/tmp$ ls -ld docker/*
drwxrwxr-x 3 duser duser  4096 Jun 13 20:27 docker/contrib
-rw-rw-r-- 1 duser duser  1005 Jun 13 20:27 docker/docker-compose.nginx.yml
-rw-rw-r-- 1 duser duser   140 Jun 13 20:27 docker/docker-compose.without-nginx.yml
-rw-rw-r-- 1 duser duser  2662 Jun 13 20:27 docker/docker-compose.yml
drwxrwxr-x 2 duser duser  4096 Jun 13 20:27 docker/docs
-rw-rw-r-- 1 duser duser  4393 Jun 13 20:27 docker/env.example
-rw-rw-r-- 1 duser duser 11357 Jun 13 20:27 docker/LICENSE
drwxrwxr-x 3 duser duser  4096 Jun 13 20:27 docker/nginx
-rw-rw-r-- 1 duser duser  1107 Jun 13 20:27 docker/README.md
drwxrwxr-x 2 duser duser  4096 Jun 13 20:27 docker/scripts

kus

  • env.example alusel tuleb moodustada .env mida docker automaatselt kasutab
  • docker-compose.yml - põhiline compose
  • docker-compose.nginx.yml - nginx juhtumiks
  • docker/docker-compose.without-nginx.yml - nginx vabaks juhtumiks, huvitaval kombel seal täpsustatakse põhifailis kirjeldatud 'service -> mattermost' omadusi
  • nginx kataloog - seda kasutatakse nginx konteinerist
  • scripts kataloog - seal asuvad nt lets encrypt serdi kopeerimise jms vahendid

Tundub, et tarkvara uuendamisel võiks uuendada

  • git
  • tõmmised-konteinerid

nginx veebiserver

TODO

LE sertifikaadi tekitamine

duser@dh-mm:~/20250428/docker$ bash scripts/issue-certificate.sh -d mm.xxx.ee -o ${PWD}/certs

Volume'ite jaoks kataloogide tekitamine

mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost

Seadistamine

Keskkonnamuutujate abil docker konteinerite seadistamine

duser@dh-mm:~/20250428/docker$ diff env.example .env 
2c2
< DOMAIN=mm.example.com
---
> DOMAIN=mm.xxx.ee
8c8
< TZ=UTC
---
> TZ=Europe/Tallinn
17c17
< POSTGRES_IMAGE_TAG=13-alpine
---
> POSTGRES_IMAGE_TAG=17-alpine
42,43c42,43
< #CERT_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/fullchain.pem
< #KEY_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/privkey.pem
---
> CERT_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/fullchain.pem
> KEY_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/privkey.pem
66c66
< MATTERMOST_IMAGE_TAG=10.5.2
---
> MATTERMOST_IMAGE_TAG=10.5.4

Käivitamine

Konteinerite käivitamine

duser@dh-mm:~/20250428/docker$ docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d
[+] Running 5/5
 ✔ Network mattermost             Created    0.0s 
 ✔ Volume "shared-webroot"        Created    0.0s 
 ✔ Container docker-postgres-1    Started    0.2s 
 ✔ Container docker-mattermost-1  Started    0.3s 
 ✔ Container nginx_mattermost     Started    0.5s 

Töötav dockerhost paistab

root@dh-mm:~# docker ps
CONTAINER ID   IMAGE                                             COMMAND                  CREATED      STATUS                PORTS                                                                                                                         NAMES
4ada4e5913fa   nginx:alpine                                      "/docker-entrypoint.…"   3 days ago   Up 3 days             0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp                                                  nginx_mattermost
73ed44a355c0   mattermost/mattermost-enterprise-edition:10.5.2   "/entrypoint.sh matt…"   3 days ago   Up 3 days (healthy)   8065/tcp, 8067/tcp, 8074-8075/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:8443->8443/udp, [::]:8443->8443/tcp, [::]:8443->8443/udp   docker-mattermost-1
cdc59c251ab7   postgres:13-alpine                                "docker-entrypoint.s…"   3 days ago   Up 3 days             5432/tcp                                                                                                                      docker-postgres-1

kus

  • TODO

Sertifikaadi uuedamine

TODO

Uuendamine

Uuendatavad on kaks asja

  • git repo
  • mattermost tõmmis

Git

duser@dh-mm:~/20250428/docker$ git fetch origin
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 16 (delta 6), reused 3 (delta 3), pack-reused 6 (from 1)
Unpacking objects: 100% (16/16), 4.70 KiB | 2.35 MiB/s, done.
From https://github.com/mattermost/docker
   2308dca..c098c46  main                   -> origin/main
   7e0cc85..157e8f0  add-docker-test-action -> origin/add-docker-test-action
 * [new branch]      install-link           -> origin/install-link

duser@dh-mm:~/20250428/docker$ git log HEAD..origin/main
commit c098c460aa0a5193b5e57df8ace8acd0e22249cf (origin/main, origin/HEAD)
Merge: f628f57 3ccff7a
Author: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com>
Date:   Wed Aug 27 14:09:26 2025 -0400

    Merge pull request #173 from mattermost/install-link

    Update Docker install link

commit 3ccff7aacc23866c97a8cbb31bce54d2007a0624 (origin/install-link)
Author: Lorenzo Gallegos <1328683+enzowritescode@users.noreply.github.com>
Date:   Wed Aug 27 11:26:02 2025 -0600

    Update Docker install link

commit f628f57db2040da796f7de47867d4361c365042d
Author: Ben Schumacher <ben.schumacher@mattermost.com>
Date:   Tue Jul 22 11:54:20 2025 +0200

    Add Docker deployment test workflow (#169)

    Co-authored-by: Claude <noreply@anthropic.com>

commit 7d9d7bff8531029802884a1d1e211246ec8d2c08
Author: Ben Schumacher <ben.schumacher@mattermost.com>
Date:   Fri May 16 13:17:46 2025 +0200

    Migrate from CircleCI to GitHub Actions (#167)

    * Migrate from CircleCI to GitHub Actions

    - Remove CircleCI configuration
    - Add GitHub Actions workflow for shellcheck

    🤖 Generated with [Claude Code](https://claude.ai/code)

    Co-Authored-By: Claude <noreply@anthropic.com>

    * Fix ShellCheck issues in upgrade-postgres.sh

    - Fix variable quoting issues to prevent globbing and word splitting
    - Fix variable reference typo (POSTGRES_POSTGRES_NEW_VERSION → POSTGRES_NEW_VERSION)

    🤖 Generated with [Claude Code](https://claude.ai/code)

    Co-Authored-By: Claude <noreply@anthropic.com>

duser@dh-mm:~/20250428/docker$ git diff HEAD..origin/main --stat
 .circleci/config.yml              |  8 --------
 .github/workflows/docker-test.yml | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 .github/workflows/shellcheck.yml  | 18 ++++++++++++++++++
 README.md                         |  5 ++++-
 scripts/upgrade-postgres.sh       |  6 +++---
 5 files changed, 99 insertions(+), 12 deletions(-)

duser@dh-mm:~/20250428/docker$ git pull origin main
From https://github.com/mattermost/docker
 * branch            main       -> FETCH_HEAD
Updating 2308dca..c098c46
Fast-forward
 .circleci/config.yml              |  8 --------
 .github/workflows/docker-test.yml | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 .github/workflows/shellcheck.yml  | 18 ++++++++++++++++++
 README.md                         |  5 ++++-
 scripts/upgrade-postgres.sh       |  6 +++---
 5 files changed, 99 insertions(+), 12 deletions(-)
 delete mode 100644 .circleci/config.yml
 create mode 100644 .github/workflows/docker-test.yml
 create mode 100644 .github/workflows/shellcheck.yml

Tõmmis

duser@dh-mm:~/20250428/docker$ diff ../../20250428-20251009-tootanud-enne-uuendust/docker/.env .env
66c66,67
< MATTERMOST_IMAGE_TAG=10.5.4
---
> # MATTERMOST_IMAGE_TAG=10.5.4
> MATTERMOST_IMAGE_TAG=10.11.3

duser@dh-mm:~/20250428/docker$ docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d

Tõmmis - 20260613

Enne

duser@dh-mm:~/20250428/docker$ docker images                                                                                                                             
IMAGE                                               ID             DISK USAGE   CONTENT SIZE   EXTRA
certbot/certbot:latest                              f0cfa0056d76        192MB             0B
hello-world:latest                                  74cc54e27dc4       10.1kB             0B    U
mattermost/mattermost-enterprise-edition:10.11.13   7713ecd8222b        896MB             0B    U
mattermost/mattermost-enterprise-edition:10.11.3    dc90402a8a95        967MB             0B
mattermost/mattermost-enterprise-edition:10.5.2     02410c82f7ff       1.12GB             0B
mattermost/mattermost-enterprise-edition:10.5.4     ae75e004fadd       1.12GB             0B
nginx:alpine                                        6769dc3a703c       48.2MB             0B    U
postgres:13-alpine                                  5de4caba4b9e        268MB             0B
postgres:17-alpine                                  0150e3200277        278MB             0B    U

https:// sertifikaadi uuendamine

duser@dh-mm:~/20250428/docker$ cat update-certificate-moraal.sh
docker compose -f docker-compose.yml -f docker-compose.nginx.yml stop
bash scripts/issue-certificate.sh -d mm.moraal.ee -o ${PWD}/certs
docker compose -f docker-compose.yml -f docker-compose.nginx.yml start

Kasutamine

TODO

Kasulikud lisamaterjalid