Compare commits

...

57 Commits

Author SHA1 Message Date
marlon fe5f0f3f7f add versions to backup scripts 2025-05-22 13:13:21 -04:00
marlon 916ab286a5 typo fix 2025-05-22 12:37:40 -04:00
marlon ca34a493ba clean up draft configs 2025-05-22 12:34:13 -04:00
marlon 2d10d73582 mmctl patch draft 2025-05-22 12:25:49 -04:00
marlon b8ea370933 add backup handler scripts 2025-05-22 00:48:23 -04:00
marlon 726e3ab5c3 new backup scripts 2025-04-17 15:17:07 -04:00
marlon 54d8ac8954 fix typo 2025-04-17 15:17:07 -04:00
marlon 8629fd77e9 initial 2025-04-17 15:17:07 -04:00
marlon 5f0295b98a chore: publish 2.1.0+10.5.0 release 2025-04-16 12:45:26 -04:00
marlon 6268af51ff Merge pull request 'Add support for enterprise license' (#4) from license-support into main
Reviewed-on: #4
2025-04-16 15:49:43 +00:00
marlon e3268bc404 Add support for enterprise license 2025-04-11 11:14:24 -04:00
marlon 27faf7a644 add release notes
continuous-integration/drone/push Build is failing
2025-02-11 15:16:22 -05:00
marlon 6964fbdd6d chore: publish 2.0.0+10.5.0 release
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2025-02-11 15:15:11 -05:00
marlon c96bd2478e Merge pull request 'Add SSO and Email support' (#3) from sso into main
continuous-integration/drone/push Build is failing
Reviewed-on: #3
2025-02-11 20:09:26 +00:00
marlon 5e320b516d reload mattermost config using mmctl. Fix readme typo
continuous-integration/drone/pr Build is failing
2025-02-11 15:07:18 -05:00
marlon c173127cf8 add config reset command
continuous-integration/drone/pr Build is failing
2025-02-10 18:14:12 -05:00
marlon c2d2272621 add env 2025-02-10 17:51:32 -05:00
marlon 107bc2fca9 SSO and email support added 2025-02-10 17:48:48 -05:00
marlon 4e635659e1 sso support wip 2025-02-10 13:32:14 -05:00
marlon cdc7d659a0 working on sso support 2025-02-09 14:47:02 -05:00
example f58c9a2aab chore: publish 1.5.3+9.11.8 release
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2025-01-23 16:15:49 +01:00
aadil 18cf2d21cc chore: publish 1.5.2+9.11.7 release
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2025-01-23 14:14:46 +05:00
cas fc31939b5e Update .drone.yml
continuous-integration/drone/push Build is failing
2025-01-08 10:09:13 -08:00
knoflook b1427c9a1e chore: publish 1.5.1+9.11.6 release
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2024-12-12 10:35:55 +01:00
aadil 2e177985f8 chore: publish 1.5.0+9.11.5 release
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2024-11-21 14:13:55 +05:00
knoflook 8e63b9839d chore: publish 1.4.2+9.5.12 release
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-11-07 16:18:32 +01:00
aadil c83e59cfc5 chore: publish 1.4.1+9.5.11 release
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2024-11-07 12:11:48 +05:00
aadil 142cd05e01 chore: publish 1.4.0+9.5.12 release
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2024-11-07 11:26:56 +05:00
iexos be6939d39b chore: publish 1.3.0+9.11.3 release
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-10-25 13:56:39 +02:00
aadil 1bbc0bc5e3 chore: publish 1.2.5+9.5.11 release
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-10-17 18:18:28 +05:00
cas 91136d15a7 chore: publish 1.2.4+9.5.10 release
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2024-10-03 11:11:54 -07:00
knoflook bf7466f8b2 chore: publish 1.2.2+9.5.9 release
continuous-integration/drone/push Build is failing
2024-09-02 19:24:15 +02:00
cas 33466a38cf chore: publish 1.2.1+9.5.8 release
continuous-integration/drone/push Build is failing
2024-07-25 10:53:53 -07:00
cas 4c6dca85fa chore: publish 1.2.0+9.5.7 release
continuous-integration/drone/push Build is failing
2024-07-04 13:56:57 -07:00
cas 2e366449bf chore: publish 1.1.0+9.5.6 release 2024-06-06 11:03:21 -07:00
cas a5ba7e60e7 chore: publish 1.0.0+9.5.4 release 2024-05-02 14:10:21 -07:00
3wordchant fdd0610784 Update recipe metadata
continuous-integration/drone/push Build is failing
2024-03-30 16:33:50 -03:00
3wordchant de797a654a chore: publish 0.3.8+8.1.12 release
continuous-integration/drone/push Build is failing
2024-03-28 15:50:36 -03:00
3wordchant e42bc0f2a5 chore: publish 0.3.7+8.1.11 release
continuous-integration/drone/push Build is failing
2024-03-07 16:01:37 -03:00
cas 5a30d2d99b chore: publish 0.3.6+8.1.10 release
continuous-integration/drone/push Build is failing
2024-02-15 10:12:33 -08:00
cas 98ef1ca228 chore: publish 0.3.5+8.1.9 release
continuous-integration/drone/push Build is failing
2024-02-08 09:43:26 -08:00
3wordchant 16f489fd8d chore: publish 0.3.4+8.1.8 release
continuous-integration/drone/push Build is failing
2024-01-11 21:12:32 -03:00
cas 12d0f85607 chore: publish 0.3.3+8.1.7 release
continuous-integration/drone/push Build is failing
2023-12-25 11:50:40 -08:00
cas 123af69e49 Fix .drone.yml 2023-12-25 11:50:06 -08:00
cas bb5df287e8 chore: publish 0.3.2+8.1.7 release
continuous-integration/drone Build encountered an error
2023-12-25 11:45:43 -08:00
knoflook c274319f6f chore: publish 0.3.1+8.1.6 release 2023-11-22 13:12:52 +01:00
knoflook 9d83d0bed0 chore: publish 0.3.0+8.1.2 release 2023-09-28 11:37:20 +02:00
knoflook 177a96d597 add backupbot 2023-09-28 11:36:42 +02:00
3wordchant e6ff612b8a chore: publish 0.2.1+8.1.2 release 2023-09-28 10:32:04 +01:00
3wordchant 0d67e8ccf7 chore: publish 0.2.0+8.1.0 release 2023-08-25 14:54:55 +02:00
knoflook 8f9f308af2 Merge branch 'dev' 2023-08-21 12:43:54 +02:00
3wordchant 7df9f350d5 Switch to self-hosted stack-ssh-deploy image [mass update] 2023-01-21 11:49:56 -08:00
3wordchant 24b45a21c8 Fix CI by adding networks: [mass update] 2023-01-20 11:58:41 -08:00
3wordchant ccd12e92aa Automatically generate catalogue on release [mass update]
Re: coop-cloud/recipes-catalogue-json#4
2023-01-20 10:27:11 -08:00
xynosis d29e4dfafa Merge pull request 'Update Mattermost to 7.0, add release notes, add abra.sh file to fix deployment entrypoint issue' (#2) from xynosis/mattermost:main into main
Reviewed-on: #2
2022-07-12 13:16:36 +00:00
Kieran Cutting 7756ca38cb Update Mattermost to 7.0, add release notes, add abra.sh file to fix deployment entrypoint issue 2022-06-21 11:07:16 +01:00
Kieran Cutting 4b27d3993f Update Mattermost to 7.0, add release notes, add abra.sh file to fix deployment entrypoint issue 2022-06-21 11:07:05 +01:00
15 changed files with 935 additions and 30 deletions
+13 -18
View File
@@ -3,10 +3,12 @@ kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: decentral1se/stack-ssh-deploy:latest
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: mattermost
networks:
- proxy
purge: true
deploy_key:
from_secret: drone_ssh_swarm_test
@@ -24,33 +26,26 @@ steps:
from_secret: autono_bot_access_token
depends_on:
- deployment
when:
status:
- failure
when:
status:
- failure
trigger:
branch:
- main
---
kind: pipeline
name: recipe release
name: generate recipe catalogue
steps:
- name: release a new version
image: decentral1se/drone-abra:latest
settings:
command: recipe mattermost release
deploy_key:
from_secret: abra_bot_deploy_key
- name: trigger downstream builds
image: plugins/downstream
settings:
server: https://drone.autonomic.zone
server: https://build.coopcloud.tech
token:
from_secret: decentral1se_token
from_secret: drone_abra-bot_token
fork: true
repositories:
- coop-cloud/auto-apps-json
depends_on:
- release a new version
on
- toolshed/auto-recipes-catalogue-json
trigger:
event: tag
+23
View File
@@ -9,8 +9,31 @@ LETS_ENCRYPT_ENV=production
# Secret Versions
SECRET_POSTGRES_PASSWORD_VERSION=v1
COMPOSE_FILE="compose.yml"
# Container Settings
## Timezone inside the containers. The value needs to be in the form 'Europe/Berlin'.
## A list of these tz database names can be looked up at Wikipedia
## https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=UTC
ORG_NAME="My Organization"
## Email Support
#COMPOSE_FILE="$COMPOSE_FILE:compose.email.yml"
#ORG_EMAIL_ADDRESS="youruser@youremail.org"
#SMTP_USER="youruser"
#SECRET_SMTP_PASS_VERSION=v1
#SMTP_HOST=""
#SMTP_PORT=587
#SMTP_SECURITY=STARTTLS #TLS or STARTTLS
## SSO config
#COMPOSE_FILE="$COMPOSE_FILE:compose.sso.yml"
#SSO_DOMAIN=accounts.example.com
#SSO_APP=mattermost
#SSO_ID=
#SECRET_MATTERMOST_SSO_SECRET_VERSION=v1
## Enable enterprise version (requires a valid license)
#COMPOSE_FILE="$COMPOSE_FILE:compose.license.yml"
+71 -8
View File
@@ -2,14 +2,14 @@
<!-- metadata -->
* **Category**:
* **Status**:
* **Image**:
* **Healthcheck**: N
* **Backups**: N
* **Email**:
* **Tests**: N
* **SSO**: N
* **Category**: Apps
* **Status**: 3
* **Image**: [`mattermost/mattermost-team-edition`](https://hub.docker.com/r/mattermost/mattermost-team-edition), 4, upstream
* **Healthcheck**: No
* **Backups**: Yes
* **Email**: 1
* **Tests**: 2
* **SSO**: No
<!-- endmetadata -->
@@ -24,5 +24,68 @@
5. `abra app deploy YOURAPPNAME`
6. Open the configured domain in your browser to finish set-up
## Enable Email
**WARNING: Following these steps will overwrite the configuration of your Mattermost instance. Probably only run it on a fresh deployment.**
- `abra app config YOURAPPNAME`
- Uncomment the section starting with **Email Support**
- `abra app secret i YOURAPPNAME smtp_pass v1 'yourSMTPpassword'`
- `abra app undeploy YOURAPPNAME`
- `abra app deploy YOURAPPNAME`
- `abra app command -C YOURAPPNAME app reset_config` <- This will overwrite your configuration
## Enable SSO with Authentik
This is how to configure your Mattermost server to accept logins from your Authentik SSO provider.
### Configure Authentik
#### Create a property mapping
- Log in as administrator of your Authentik instance
- Go to https://authentik.yourserver.org/if/admin/#/core/property-mappings and choose **Create**
- Choose Scope Mapping
- Name: `Mattermost ID`
- Scope Name: `id`
- Description: *optional own description*
- Expression: `return { "id": request.user.id }`
- Create another Scope Mapping
- Name: `Mattermost Username`
- Scope Name: `username`
- Description: *optional own description*
- Expression: `return { "username": request.user.username }`
#### Create Application and Provider
- Go to https://authentik.yourserver.org/if/admin/#/core/applications and choose **Create With Wizard**
- Application Name: mattermost
- **Next**
- Choose OAuth2/OIDC
- Set Authorization flow: `default-provider-authorization-implicit-consent (Authorize Application)`
- Copy the **Client ID** and **Client Secret**, you'll need them later
- Add Redirect URIs:
- https://mattermost.yourserver.org/login/gitlab/complete
- https://mattermost.yourserver.org/signup/gitlab/complete
- Expand Advanced Protocol Settings
- Under Scopes, select `Mattermost ID` and `Mattermost Username`, and click the > to add them to **Selected Scopes**
- **Submit**
### Configure Mattermost
**WARNING: Following these steps will overwrite the configuration of your Mattermost instance. Probably only run it on a fresh deployment.**
- `abra app configure YOURAPPNAME`
- Uncomment the section starting with `## SSO config`
- Set `SSO_ID` to the value you saved when configuring Authentik
- `abra app secret insert YOURAPPNAME mattermost_sso_secret v1 <the authentik provider secret you saved>`
- `abra app undeploy YOURAPPNAME`
- `abra app deploy YOURAPPNAME`
- `abra app command -C YOURAPPNAME app reset_config` <- This will overwrite your configuration
### Disable non-SSO login (Optional)
- Ensure that your SSO user has the **System Admin** role: https://YOURAPPNAME/admin_console/user_management/users
- Go to https://YOURAPPNAME/admin_console/authentication/email
- Set **Enable sign-in with email** and **Enable sign-in with username** to `false`
## Use a Mattermost Enterprise License
**NOTE: This deploys non-FOSS code and requires you to pay Mattermost for a license to enable features. Not recommended unless you know what you're doing.**
- `abra app config YOURAPPNAME`
- Uncomment the section which starts with `## Enable enterprise version`
- `abra app undeploy YOURAPPNAME`
- `abra app deploy YOURAPPNAME`
[`abra`]: https://git.coopcloud.tech/coop-cloud/abra
[`coop-cloud/traefik`]: https://git.coopcloud.tech/coop-cloud/traefik
+8
View File
@@ -1 +1,9 @@
export ENTRYPOINT_VERSION=v1
export MATTERMOST_CONFIG_VERSION=v1
export BACKUP_MATTERMOST_VERSION=v1
export BACKUP_POSTGRES_VERSION=v1
reset_config() {
cp /config-to-copy.json /mattermost/config/config.json && touch /mattermost/config/CoopCloudManaged
mmctl config reload --local
}
+21
View File
@@ -0,0 +1,21 @@
if [ "$1" == "pre-backup" ]; then
exit
fi
if [ "$1" == "pre-backup" ]; then
exit
fi
if [ "$1" == "pre-restore" ]; then
# kill the running plugins that need to be overwritten
pkill -f '.*plugins'
sleep 40
pkill -f '.*plugins'
sleep 40
pkill -f '.*plugins'
fi
if [ "$1" == "post-restore" ]; then
# kill mattermost so that the container restarts
pkill -f mattermost
fi
+19
View File
@@ -0,0 +1,19 @@
if [ "$1" == "pre-backup" ]; then
# Remove any existing db dump and then create a new one
rm -rf /var/lib/postgresql/data/postgres-backup
PGPASSWORD=$(cat ${POSTGRES_PASSWORD_FILE}) pg_dump -U ${POSTGRES_USER} ${POSTGRES_DB} --format=directory -f /var/lib/postgresql/data/postgres-backup
exit
fi
if [ "$1" == "post-backup" ]; then
rm -rf /var/lib/postgresql/data/postgres-backup
exit
fi
if [ "$1" == "pre-restore" ]; then
exit
fi
if [ "$1" == "post-restore" ]; then
pg_restore -U $POSTGRES_USER -d $POSTGRES_DB -c /var/lib/postgresql/data/postgres-backup
fi
+20
View File
@@ -0,0 +1,20 @@
version: "3.8"
services:
app:
configs:
- source: mattermost_config
target: /config-to-copy.json
secrets:
- smtp_pass
secrets:
smtp_pass:
external: true
name: ${STACK_NAME}_smtp_pass_${SECRET_SMTP_PASS_VERSION}
configs:
mattermost_config:
name: ${STACK_NAME}_mattermost_config_${MATTERMOST_CONFIG_VERSION}
file: ./config.json.tmpl
template_driver: golang
+5
View File
@@ -0,0 +1,5 @@
version: "3.8"
services:
app:
image: mattermost/mattermost-enterprise-edition:10.5.0
+20
View File
@@ -0,0 +1,20 @@
version: "3.8"
services:
app:
configs:
- source: mattermost_config
target: /config-to-copy.json
secrets:
- mattermost_sso_secret
secrets:
mattermost_sso_secret:
external: true
name: ${STACK_NAME}_mattermost_sso_secret_${SECRET_MATTERMOST_SSO_SECRET_VERSION}
configs:
mattermost_config:
name: ${STACK_NAME}_mattermost_config_${MATTERMOST_CONFIG_VERSION}
file: ./config.json.tmpl
template_driver: golang
+34 -3
View File
@@ -2,7 +2,7 @@ version: "3.8"
services:
app:
image: mattermost/mattermost-team-edition:8.0.1
image: mattermost/mattermost-team-edition:10.5.0
environment:
- TZ
- MM_SQLSETTINGS_DRIVERNAME=postgres
@@ -28,11 +28,22 @@ services:
- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}"
- "coop-cloud.${STACK_NAME}.version=0.1.0+8.0.1"
- "coop-cloud.${STACK_NAME}.version=2.1.0+10.5.0"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
- "backupbot.backup=true"
- "backupbot.backup.path=/mattermost,/etc/ssl"
- "backupbot.restore.pre-hook=/backup.sh pre-restore"
- "backupbot.restore.post-hook=/backup.sh post-restore"
configs:
- source: abra_mattermost_entrypoint
target: /abra-mattermost-entrypoint.sh
mode: 0555
- source: backup-mattermost
target: /backup.sh
mode: 0777
- source: mattermost-config
target: /config-to-copy.json
mode: 0555
secrets:
- postgres_password
entrypoint: /abra-mattermost-entrypoint.sh
@@ -46,11 +57,21 @@ services:
- POSTGRES_USER=mattermost
- POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
- POSTGRES_DB=mattermost
configs:
- source: backup-postgres
target: /backup.sh
mode: 0777
secrets:
- postgres_password
networks:
- internal
deploy:
labels:
backupbot.backup: "true"
backupbot.backup.path: "/var/lib/postgresql/data/"
backupbot.backup.pre-hook: "/backup.sh pre-backup"
backupbot.backup.post-hook: "/backup.sh post-backup"
backupbot.restore.post-hook: "/backup.sh post-restore"
secrets:
postgres_password:
@@ -61,6 +82,16 @@ configs:
abra_mattermost_entrypoint:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: ./entrypoint.sh
backup-mattermost:
name: ${STACK_NAME}_backup-mattermost_${BACKUP_MATTERMOST_VERSION}
file: ./backup-mattermost.sh
backup-postgres:
name: ${STACK_NAME}_backup-postgres_${BACKUP_POSTGRES_VERSION}
file: ./backup-postgres.sh
mattermost-config:
name: ${STACK_NAME}_mattermost_config_${MATTERMOST_CONFIG_VERSION}
file: ./config.json.tmpl
template_driver: golang
networks:
proxy:
+686
View File
@@ -0,0 +1,686 @@
{
"ServiceSettings": {
"SiteURL": "",
"WebsocketURL": "",
"LicenseFileLocation": "",
"ListenAddress": ":8065",
"ConnectionSecurity": "",
"TLSCertFile": "",
"TLSKeyFile": "",
"TLSMinVer": "1.2",
"TLSStrictTransport": false,
"TLSStrictTransportMaxAge": 63072000,
"TLSOverwriteCiphers": [],
"UseLetsEncrypt": false,
"LetsEncryptCertificateCacheFile": "./config/letsencrypt.cache",
"Forward80To443": false,
"TrustedProxyIPHeader": [],
"ReadTimeout": 300,
"WriteTimeout": 300,
"IdleTimeout": 60,
"MaximumLoginAttempts": 10,
"GoroutineHealthThreshold": -1,
"EnableOAuthServiceProvider": true,
"EnableIncomingWebhooks": true,
"EnableOutgoingWebhooks": true,
"EnableOutgoingOAuthConnections": false,
"EnableCommands": true,
"OutgoingIntegrationRequestsTimeout": 30,
"EnablePostUsernameOverride": false,
"EnablePostIconOverride": false,
"GoogleDeveloperKey": "",
"EnableLinkPreviews": true,
"EnablePermalinkPreviews": true,
"RestrictLinkPreviews": "",
"EnableTesting": false,
"EnableDeveloper": false,
"DeveloperFlags": "",
"EnableClientPerformanceDebugging": false,
"EnableOpenTracing": false,
"EnableSecurityFixAlert": true,
"EnableInsecureOutgoingConnections": false,
"AllowedUntrustedInternalConnections": "",
"EnableMultifactorAuthentication": false,
"EnforceMultifactorAuthentication": false,
"EnableUserAccessTokens": false,
"AllowCorsFrom": "",
"CorsExposedHeaders": "",
"CorsAllowCredentials": false,
"CorsDebug": false,
"AllowCookiesForSubdomains": false,
"ExtendSessionLengthWithActivity": true,
"TerminateSessionsOnPasswordChange": true,
"SessionLengthWebInDays": 30,
"SessionLengthWebInHours": 720,
"SessionLengthMobileInDays": 30,
"SessionLengthMobileInHours": 720,
"SessionLengthSSOInDays": 30,
"SessionLengthSSOInHours": 720,
"SessionCacheInMinutes": 10,
"SessionIdleTimeoutInMinutes": 43200,
"WebsocketSecurePort": 443,
"WebsocketPort": 80,
"WebserverMode": "gzip",
"EnableGifPicker": true,
"GiphySdkKey": "",
"EnableCustomEmoji": true,
"EnableEmojiPicker": true,
"PostEditTimeLimit": -1,
"TimeBetweenUserTypingUpdatesMilliseconds": 5000,
"EnablePostSearch": true,
"EnableFileSearch": true,
"MinimumHashtagLength": 3,
"EnableUserTypingMessages": true,
"EnableChannelViewedMessages": true,
"EnableUserStatuses": true,
"ExperimentalEnableAuthenticationTransfer": true,
"ClusterLogTimeoutMilliseconds": 2000,
"EnableTutorial": true,
"EnableOnboardingFlow": true,
"ExperimentalEnableDefaultChannelLeaveJoinMessages": true,
"ExperimentalGroupUnreadChannels": "disabled",
"EnableAPITeamDeletion": false,
"EnableAPITriggerAdminNotifications": false,
"EnableAPIUserDeletion": false,
"EnableAPIPostDeletion": false,
"EnableDesktopLandingPage": true,
"ExperimentalEnableHardenedMode": false,
"ExperimentalStrictCSRFEnforcement": false,
"EnableEmailInvitations": false,
"DisableBotsWhenOwnerIsDeactivated": true,
"EnableBotAccountCreation": false,
"EnableSVGs": false,
"EnableLatex": false,
"EnableInlineLatex": true,
"PostPriority": true,
"AllowPersistentNotifications": true,
"AllowPersistentNotificationsForGuests": false,
"PersistentNotificationIntervalMinutes": 5,
"PersistentNotificationMaxCount": 6,
"PersistentNotificationMaxRecipients": 5,
"EnableAPIChannelDeletion": false,
"EnableLocalMode": true,
"LocalModeSocketLocation": "/var/tmp/mattermost_local.socket",
"EnableAWSMetering": false,
"SplitKey": "",
"FeatureFlagSyncIntervalSeconds": 30,
"DebugSplit": false,
"ThreadAutoFollow": true,
"CollapsedThreads": "always_on",
"ManagedResourcePaths": "",
"EnableCustomGroups": true,
"AllowSyncedDrafts": true,
"UniqueEmojiReactionLimitPerPost": 50,
"RefreshPostStatsRunTime": "00:00",
"MaximumPayloadSizeBytes": 300000,
"MaximumURLLength": 2048,
"ScheduledPosts": true
},
"TeamSettings": {
"SiteName": "Mattermost",
"MaxUsersPerTeam": 50,
"EnableJoinLeaveMessageByDefault": true,
"EnableUserCreation": true,
"EnableOpenServer": false,
"EnableUserDeactivation": false,
"RestrictCreationToDomains": "",
"EnableCustomUserStatuses": true,
"EnableCustomBrand": false,
"CustomBrandText": "",
"CustomDescriptionText": "",
"RestrictDirectMessage": "any",
"EnableLastActiveTime": true,
"UserStatusAwayTimeout": 300,
"MaxChannelsPerTeam": 2000,
"MaxNotificationsPerChannel": 1000,
"EnableConfirmNotificationsToChannel": true,
"TeammateNameDisplay": "username",
"ExperimentalViewArchivedChannels": true,
"ExperimentalEnableAutomaticReplies": false,
"LockTeammateNameDisplay": false,
"ExperimentalPrimaryTeam": "",
"ExperimentalDefaultChannels": []
},
"ClientRequirements": {
"AndroidLatestVersion": "",
"AndroidMinVersion": "",
"IosLatestVersion": "",
"IosMinVersion": ""
},
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
"MaxIdleConns": 20,
"ConnMaxLifetimeMilliseconds": 3600000,
"ConnMaxIdleTimeMilliseconds": 300000,
"MaxOpenConns": 300,
"Trace": false,
"AtRestEncryptKey": "etcbtej9ar4b5ickh9kqmmmbwkgnd9ds",
"QueryTimeout": 30,
"DisableDatabaseSearch": false,
"MigrationsStatementTimeoutSeconds": 100000,
"ReplicaLagSettings": [],
"ReplicaMonitorIntervalSeconds": 5
},
"LogSettings": {
"EnableConsole": true,
"ConsoleLevel": "INFO",
"ConsoleJson": true,
"EnableColor": false,
"EnableFile": true,
"FileLevel": "INFO",
"FileJson": true,
"FileLocation": "",
"EnableWebhookDebugging": true,
"EnableDiagnostics": true,
"VerboseDiagnostics": false,
"EnableSentry": true,
"AdvancedLoggingJSON": {},
"MaxFieldSize": 2048
},
"ExperimentalAuditSettings": {
"FileEnabled": false,
"FileName": "",
"FileMaxSizeMB": 100,
"FileMaxAgeDays": 0,
"FileMaxBackups": 0,
"FileCompress": false,
"FileMaxQueueSize": 1000,
"AdvancedLoggingJSON": {}
},
"NotificationLogSettings": {
"EnableConsole": true,
"ConsoleLevel": "INFO",
"ConsoleJson": true,
"EnableColor": false,
"EnableFile": true,
"FileLevel": "INFO",
"FileJson": true,
"FileLocation": "",
"AdvancedLoggingJSON": {}
},
"PasswordSettings": {
"MinimumLength": 8,
"Lowercase": false,
"Number": false,
"Uppercase": false,
"Symbol": false,
"EnableForgotLink": true
},
"FileSettings": {
"EnableFileAttachments": true,
"EnableMobileUpload": true,
"EnableMobileDownload": true,
"MaxFileSize": 104857600,
"MaxImageResolution": 33177600,
"MaxImageDecoderConcurrency": -1,
"DriverName": "local",
"Directory": "./data/",
"EnablePublicLink": false,
"ExtractContent": true,
"ArchiveRecursion": false,
"PublicLinkSalt": "br5pxoytkqgpwptybafe56dhfi7du38m",
"InitialFont": "nunito-bold.ttf",
"AmazonS3AccessKeyId": "",
"AmazonS3SecretAccessKey": "",
"AmazonS3Bucket": "",
"AmazonS3PathPrefix": "",
"AmazonS3Region": "",
"AmazonS3Endpoint": "s3.amazonaws.com",
"AmazonS3SSL": true,
"AmazonS3SignV2": false,
"AmazonS3SSE": false,
"AmazonS3Trace": false,
"AmazonS3RequestTimeoutMilliseconds": 30000,
"AmazonS3UploadPartSizeBytes": 5242880,
"AmazonS3StorageClass": "",
"DedicatedExportStore": false,
"ExportDriverName": "local",
"ExportDirectory": "./data/",
"ExportAmazonS3AccessKeyId": "",
"ExportAmazonS3SecretAccessKey": "",
"ExportAmazonS3Bucket": "",
"ExportAmazonS3PathPrefix": "",
"ExportAmazonS3Region": "",
"ExportAmazonS3Endpoint": "s3.amazonaws.com",
"ExportAmazonS3SSL": true,
"ExportAmazonS3SignV2": false,
"ExportAmazonS3SSE": false,
"ExportAmazonS3Trace": false,
"ExportAmazonS3RequestTimeoutMilliseconds": 30000,
"ExportAmazonS3PresignExpiresSeconds": 21600,
"ExportAmazonS3UploadPartSizeBytes": 104857600,
"ExportAmazonS3StorageClass": ""
},
"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
"SendEmailNotifications": true,
"UseChannelInEmailNotifications": false,
"RequireEmailVerification": false,
"FeedbackName": "{{ env "ORG_NAME" }}",
"FeedbackEmail": "{{ env "ORG_EMAIL_ADDRESS" }}",
"ReplyToAddress": "{{ env "ORG_EMAIL_ADDRESS" }}",
"FeedbackOrganization": "",
"EnableSMTPAuth": true,
"SMTPUsername": "{{ env "SMTP_USER" }}",
"SMTPPassword": "{{ secret "smtp_pass" }}",
"SMTPServer": "{{ env "SMTP_HOST" }}",
"SMTPPort": "{{ env "SMTP_PORT" }}",
"SMTPServerTimeout": 10,
"ConnectionSecurity": "{{ env "SMTP_SECURITY" }}",
"SendPushNotifications": true,
"PushNotificationServer": "https://push-test.mattermost.com",
"PushNotificationContents": "full",
"PushNotificationBuffer": 1000,
"EnableEmailBatching": false,
"EmailBatchingBufferSize": 256,
"EmailBatchingInterval": 30,
"EnablePreviewModeBanner": false,
"SkipServerCertificateVerification": false,
"EmailNotificationContentsType": "full",
"LoginButtonColor": "#0000",
"LoginButtonBorderColor": "#2389D7",
"LoginButtonTextColor": "#2389D7"
},
"RateLimitSettings": {
"Enable": false,
"PerSec": 10,
"MaxBurst": 100,
"MemoryStoreSize": 10000,
"VaryByRemoteAddr": true,
"VaryByUser": false,
"VaryByHeader": ""
},
"PrivacySettings": {
"ShowEmailAddress": true,
"ShowFullName": true
},
"SupportSettings": {
"TermsOfServiceLink": "https://mattermost.com/pl/terms-of-use/",
"PrivacyPolicyLink": "https://mattermost.com/pl/privacy-policy/",
"AboutLink": "https://mattermost.com/pl/about-mattermost",
"HelpLink": "https://mattermost.com/pl/help/",
"ReportAProblemLink": "https://mattermost.com/pl/report-a-bug",
"ForgotPasswordLink": "",
"SupportEmail": "{{ env "ORG_EMAIL_ADDRESS" }}",
"CustomTermsOfServiceEnabled": false,
"CustomTermsOfServiceReAcceptancePeriod": 365,
"EnableAskCommunityLink": true
},
"AnnouncementSettings": {
"EnableBanner": false,
"BannerText": "",
"BannerColor": "#f2a93b",
"BannerTextColor": "#333333",
"AllowBannerDismissal": true,
"AdminNoticesEnabled": true,
"UserNoticesEnabled": true,
"NoticesURL": "https://notices.mattermost.com/",
"NoticesFetchFrequency": 3600,
"NoticesSkipCache": false
},
"ThemeSettings": {
"EnableThemeSelection": true,
"DefaultTheme": "default",
"AllowCustomThemes": true,
"AllowedThemes": []
},
"GitLabSettings": {
"Enable": true,
"Secret": "{{ secret "mattermost_sso_secret" }}",
"Id": "{{ env "SSO_ID" }}",
"Scope": "",
"AuthEndpoint": "https://{{ env "SSO_DOMAIN" }}/application/o/authorize/",
"TokenEndpoint": "https://{{ env "SSO_DOMAIN" }}/application/o/token/",
"UserAPIEndpoint": "https://{{ env "SSO_DOMAIN" }}/application/o/userinfo/",
"DiscoveryEndpoint": "https://{{ env "SSO_DOMAIN" }}/application/o/{{ env "SSO_APP" }}/.well-known/openid-configuration",
"ButtonText": "{{ env "ORG_NAME" }}",
"ButtonColor": "#ff0000"
},
"GoogleSettings": {
"Enable": false,
"Secret": "",
"Id": "",
"Scope": "profile email",
"AuthEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
"TokenEndpoint": "https://www.googleapis.com/oauth2/v4/token",
"UserAPIEndpoint": "https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata",
"DiscoveryEndpoint": "",
"ButtonText": "",
"ButtonColor": ""
},
"Office365Settings": {
"Enable": false,
"Secret": "",
"Id": "",
"Scope": "User.Read",
"AuthEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
"TokenEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
"UserAPIEndpoint": "https://graph.microsoft.com/v1.0/me",
"DiscoveryEndpoint": "",
"DirectoryId": ""
},
"OpenIdSettings": {
"Enable": false,
"Secret": "",
"Id": "",
"Scope": "profile openid email",
"AuthEndpoint": "",
"TokenEndpoint": "",
"UserAPIEndpoint": "",
"DiscoveryEndpoint": "",
"ButtonText": "",
"ButtonColor": "#145DBF"
},
"LdapSettings": {
"Enable": false,
"EnableSync": false,
"LdapServer": "",
"LdapPort": 389,
"ConnectionSecurity": "",
"BaseDN": "",
"BindUsername": "",
"BindPassword": "",
"UserFilter": "",
"GroupFilter": "",
"GuestFilter": "",
"EnableAdminFilter": false,
"AdminFilter": "",
"GroupDisplayNameAttribute": "",
"GroupIdAttribute": "",
"FirstNameAttribute": "",
"LastNameAttribute": "",
"EmailAttribute": "",
"UsernameAttribute": "",
"NicknameAttribute": "",
"IdAttribute": "",
"PositionAttribute": "",
"LoginIdAttribute": "",
"PictureAttribute": "",
"SyncIntervalMinutes": 60,
"SkipCertificateVerification": false,
"PublicCertificateFile": "",
"PrivateKeyFile": "",
"QueryTimeout": 60,
"MaxPageSize": 0,
"LoginFieldName": "",
"LoginButtonColor": "#0000",
"LoginButtonBorderColor": "#2389D7",
"LoginButtonTextColor": "#2389D7"
},
"ComplianceSettings": {
"Enable": false,
"Directory": "./data/",
"EnableDaily": false,
"BatchSize": 30000
},
"LocalizationSettings": {
"DefaultServerLocale": "en",
"DefaultClientLocale": "en",
"AvailableLocales": "",
"EnableExperimentalLocales": false
},
"SamlSettings": {
"Enable": false,
"EnableSyncWithLdap": false,
"EnableSyncWithLdapIncludeAuth": false,
"IgnoreGuestsLdapSync": false,
"Verify": true,
"Encrypt": true,
"SignRequest": false,
"IdpURL": "",
"IdpDescriptorURL": "",
"IdpMetadataURL": "",
"ServiceProviderIdentifier": "",
"AssertionConsumerServiceURL": "",
"SignatureAlgorithm": "RSAwithSHA1",
"CanonicalAlgorithm": "Canonical1.0",
"ScopingIDPProviderId": "",
"ScopingIDPName": "",
"IdpCertificateFile": "",
"PublicCertificateFile": "",
"PrivateKeyFile": "",
"IdAttribute": "",
"GuestAttribute": "",
"EnableAdminAttribute": false,
"AdminAttribute": "",
"FirstNameAttribute": "",
"LastNameAttribute": "",
"EmailAttribute": "",
"UsernameAttribute": "",
"NicknameAttribute": "",
"LocaleAttribute": "",
"PositionAttribute": "",
"LoginButtonText": "SAML",
"LoginButtonColor": "#34a28b",
"LoginButtonBorderColor": "#2389D7",
"LoginButtonTextColor": "#ffffff"
},
"NativeAppSettings": {
"AppCustomURLSchemes": [
"mmauth://",
"mmauthbeta://"
],
"AppDownloadLink": "https://mattermost.com/pl/download-apps",
"AndroidAppDownloadLink": "https://mattermost.com/pl/android-app/",
"IosAppDownloadLink": "https://mattermost.com/pl/ios-app/",
"MobileExternalBrowser": false
},
"CacheSettings": {
"CacheType": "lru",
"RedisAddress": "",
"RedisPassword": "********************************",
"RedisDB": -1,
"DisableClientCache": false
},
"ClusterSettings": {
"Enable": false,
"ClusterName": "",
"OverrideHostname": "",
"NetworkInterface": "",
"BindAddress": "",
"AdvertiseAddress": "",
"UseIPAddress": true,
"EnableGossipCompression": true,
"EnableExperimentalGossipEncryption": false,
"ReadOnlyConfig": true,
"GossipPort": 8074
},
"MetricsSettings": {
"Enable": false,
"BlockProfileRate": 0,
"ListenAddress": ":8067",
"EnableClientMetrics": true,
"EnableNotificationMetrics": true
},
"ExperimentalSettings": {
"ClientSideCertEnable": false,
"ClientSideCertCheck": "secondary",
"LinkMetadataTimeoutMilliseconds": 5000,
"RestrictSystemAdmin": false,
"EnableSharedChannels": false,
"EnableRemoteClusterService": false,
"DisableAppBar": false,
"DisableRefetchingOnBrowserFocus": false,
"DelayChannelAutocomplete": false,
"DisableWakeUpReconnectHandler": false,
"UsersStatusAndProfileFetchingPollIntervalMilliseconds": 3000,
"YoutubeReferrerPolicy": false
},
"AnalyticsSettings": {
"MaxUsersForStatistics": 2500
},
"ElasticsearchSettings": {
"ConnectionURL": "http://localhost:9200",
"Backend": "elasticsearch",
"Username": "elastic",
"Password": "changeme",
"EnableIndexing": false,
"EnableSearching": false,
"EnableAutocomplete": false,
"Sniff": true,
"PostIndexReplicas": 1,
"PostIndexShards": 1,
"ChannelIndexReplicas": 1,
"ChannelIndexShards": 1,
"UserIndexReplicas": 1,
"UserIndexShards": 1,
"AggregatePostsAfterDays": 365,
"PostsAggregatorJobStartTime": "03:00",
"IndexPrefix": "",
"LiveIndexingBatchSize": 1,
"BatchSize": 10000,
"RequestTimeoutSeconds": 30,
"SkipTLSVerification": false,
"CA": "",
"ClientCert": "",
"ClientKey": "",
"Trace": "",
"IgnoredPurgeIndexes": ""
},
"BleveSettings": {
"IndexDir": "",
"EnableIndexing": false,
"EnableSearching": false,
"EnableAutocomplete": false,
"BatchSize": 10000
},
"DataRetentionSettings": {
"EnableMessageDeletion": false,
"EnableFileDeletion": false,
"EnableBoardsDeletion": false,
"MessageRetentionDays": 365,
"MessageRetentionHours": 0,
"FileRetentionDays": 365,
"FileRetentionHours": 0,
"BoardsRetentionDays": 365,
"DeletionJobStartTime": "02:00",
"BatchSize": 3000,
"TimeBetweenBatchesMilliseconds": 100,
"RetentionIdsBatchSize": 100
},
"MessageExportSettings": {
"EnableExport": false,
"ExportFormat": "actiance",
"DailyRunTime": "01:00",
"ExportFromTimestamp": 0,
"BatchSize": 10000,
"DownloadExportResults": false,
"ChannelBatchSize": 100,
"ChannelHistoryBatchSize": 10,
"GlobalRelaySettings": {
"CustomerType": "A9",
"SMTPUsername": "",
"SMTPPassword": "",
"EmailAddress": "",
"SMTPServerTimeout": 1800,
"CustomSMTPServerName": "",
"CustomSMTPPort": "25"
}
},
"JobSettings": {
"RunJobs": true,
"RunScheduler": true,
"CleanupJobsThresholdDays": -1,
"CleanupConfigThresholdDays": -1
},
"PluginSettings": {
"Enable": true,
"EnableUploads": false,
"AllowInsecureDownloadURL": false,
"EnableHealthCheck": true,
"Directory": "./plugins",
"ClientDirectory": "./client/plugins",
"Plugins": {
"mattermost-ai": {
"config": {
"allowPrivateChannels": false,
"allowedTeamIDs": "",
"bots": null,
"defaultBotName": "",
"enableLLMTrace": false,
"enableUserRestrictions": false,
"onlyUsersOnTeam": "",
"services": null,
"transcriptBackend": ""
}
},
"playbooks": {
"BotUserID": "d1a1xx1r7jyt8ca8mg1iqpgd3h"
}
},
"PluginStates": {
"com.mattermost.calls": {
"Enable": true
},
"com.mattermost.nps": {
"Enable": true
},
"mattermost-ai": {
"Enable": true
},
"playbooks": {
"Enable": true
}
},
"EnableMarketplace": true,
"EnableRemoteMarketplace": true,
"AutomaticPrepackagedPlugins": true,
"RequirePluginSignature": false,
"MarketplaceURL": "https://api.integrations.mattermost.com",
"SignaturePublicKeyFiles": [],
"ChimeraOAuthProxyURL": ""
},
"DisplaySettings": {
"CustomURLSchemes": [],
"MaxMarkdownNodes": 0
},
"GuestAccountsSettings": {
"Enable": false,
"HideTags": false,
"AllowEmailAccounts": true,
"EnforceMultifactorAuthentication": false,
"RestrictCreationToDomains": ""
},
"ImageProxySettings": {
"Enable": false,
"ImageProxyType": "local",
"RemoteImageProxyURL": "",
"RemoteImageProxyOptions": ""
},
"CloudSettings": {
"CWSURL": "https://customers.mattermost.com",
"CWSAPIURL": "https://api.internal.test.cloud.mattermost.com",
"CWSMock": false,
"Disable": false
},
"ImportSettings": {
"Directory": "./import",
"RetentionDays": 30
},
"ExportSettings": {
"Directory": "./export",
"RetentionDays": 30
},
"WranglerSettings": {
"PermittedWranglerRoles": [],
"AllowedEmailDomain": [],
"MoveThreadMaxCount": 100,
"MoveThreadToAnotherTeamEnable": false,
"MoveThreadFromPrivateChannelEnable": false,
"MoveThreadFromDirectMessageChannelEnable": false,
"MoveThreadFromGroupMessageChannelEnable": false
},
"ConnectedWorkspacesSettings": {
"EnableSharedChannels": false,
"EnableRemoteClusterService": false,
"DisableSharedChannelsStatusSync": false,
"MaxPostsPerSync": 50
},
"CoopCloudManaged": {
}
}
+7 -1
View File
@@ -15,5 +15,11 @@ else
exit 1
fi
# If the default Mattermost config hasn't already been replaced
# by the templated config this recipe generates, replace it
if ! test -f "/mattermost/config/CoopCloudManaged"; then
cp /config-to-copy.json /mattermost/config/config.json && touch /mattermost/config/CoopCloudManaged
fi
# https://github.com/mattermost/mattermost-server/blob/master/build/Dockerfile
/entrypoint.sh "mattermost"
/entrypoint.sh "mattermost"
+6
View File
@@ -0,0 +1,6 @@
This should be a fairly stable update. The only strange behaviour we've noticed so far has been:
- When clicking on 'Channels' to change to 'Boards' or 'Playbooks', your window may flicker and just reload 'Channels'. Click 'Boards' or 'Playbooks' again and it should behave as expected.
- When clicking on private messages, you may get an error telling you that you don't have permission to view these.
To fix both of these errors, logout of your server in your Mattermost client, delete the server (if you are using an app), and then re-add it. We haven't noticed any issues after doing this.
+1
View File
@@ -0,0 +1 @@
hotfix: rollback to last functional version
+1
View File
@@ -0,0 +1 @@
Note that the first time you enable the email or sso configurations it will reset your existing Mattermost configuration.