Compare commits
17 Commits
df33ef2137
...
master
Author | SHA1 | Date | |
---|---|---|---|
bc1d401f66 | |||
22781d03c8 | |||
1c8a47c43a | |||
4728889ffc | |||
940dd66943 | |||
f22e28fed7 | |||
28ec4fa6d7 | |||
ef7636904c | |||
8f8741714d | |||
543ee65fe0 | |||
66d3210184 | |||
2bdeadaa17 | |||
41a19ee268 | |||
da39466a5f | |||
ea7d6ba2a6 | |||
ef78057ee0 | |||
76d421ee46 |
BIN
Migrate-MySQL-to-PostgreSQL.odt
Normal file
BIN
Migrate-MySQL-to-PostgreSQL.odt
Normal file
Binary file not shown.
10
README.marktplatz-plugins
Normal file
10
README.marktplatz-plugins
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# ====================
|
||||||
|
# Mattermost Marketplace
|
||||||
|
#
|
||||||
|
# Extend and integrate with Mattermost Apps
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
|
||||||
|
# i.e.: Video Calling and Screensharing
|
||||||
|
#
|
||||||
|
# see: https://mattermost.com/marketplace-category/video-calling/
|
412
README.migrate-MySQL-to-PostgreSQL
Normal file
412
README.migrate-MySQL-to-PostgreSQL
Normal file
@ -0,0 +1,412 @@
|
|||||||
|
|
||||||
|
# see:
|
||||||
|
#
|
||||||
|
# https://docs.mattermost.com/deploy/postgres-migration-assist-tool.html
|
||||||
|
# https://docs.mattermost.com/deploy/manual-postgres-migration.html
|
||||||
|
#
|
||||||
|
# https://docs.mattermost.com/deploy/postgres-migration.html
|
||||||
|
|
||||||
|
MATTERMOST_VERSION="v9.11.6"
|
||||||
|
|
||||||
|
# Postgresql
|
||||||
|
psql_db_host="10.0.3.147"
|
||||||
|
psql_db_port="5432"
|
||||||
|
psql_db_name="mattermost"
|
||||||
|
psql_db_user="mattermost"
|
||||||
|
psql_db_password='C5jzznfvn.-WV6J7-4rgT'
|
||||||
|
|
||||||
|
POSTGRES_DSN="postgres://${psql_db_user}:${psql_db_password}@${psql_db_host}:${psql_db_port}/${psql_db_name}"
|
||||||
|
|
||||||
|
# Mysql
|
||||||
|
mysql_db_host="10.0.3.147"
|
||||||
|
mysql_db_port="3306"
|
||||||
|
mysql_db_name="mattermost"
|
||||||
|
mysql_db_user="mattermost"
|
||||||
|
mysql_db_password='C5jzznfvn%%WV6J7-4rgT'
|
||||||
|
|
||||||
|
MYSQL_DSN="${mysql_db_user}:${mysql_db_password}@tcp(${mysql_db_host}:${mysql_db_port})/${mysql_db_name}"
|
||||||
|
|
||||||
|
pgloader_bin='/usr/local/src/pgloader/pgloader/build/bin/pgloader'
|
||||||
|
|
||||||
|
|
||||||
|
# ---
|
||||||
|
# Compile/Install pgloader from source
|
||||||
|
# ---
|
||||||
|
|
||||||
|
apt purge pgloader
|
||||||
|
apt --purge autoremove
|
||||||
|
mkdir -p "/usr/local/src/pgloader/"
|
||||||
|
cd "/usr/local/src/pgloader/"
|
||||||
|
git clone https://github.com/dimitri/pgloader.git
|
||||||
|
apt-get install sbcl unzip libsqlite3-dev make curl gawk freetds-dev libzip-dev
|
||||||
|
cd pgloader
|
||||||
|
/build/bin/pgloader --help
|
||||||
|
|
||||||
|
|
||||||
|
# ---
|
||||||
|
# Completely deinstall postgresql
|
||||||
|
#
|
||||||
|
# ---
|
||||||
|
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt purge -y postgresql postgresql-*
|
||||||
|
rm -rf /var/lib/postgresql
|
||||||
|
rm -rf /etc/postgresql
|
||||||
|
rm -rf /var/log/postgresql
|
||||||
|
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt install -y --allow-unauthenticated postgresql
|
||||||
|
|
||||||
|
# Adjust files
|
||||||
|
#
|
||||||
|
# /etc/postgresql/15/main/pg_hba.conf
|
||||||
|
# /etc/postgresql/15/main/postgresql.conf
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# /etc/postgresql/15/main/postgresql.conf
|
||||||
|
#
|
||||||
|
# Find the following line: #listen_addresses = 'localhost'
|
||||||
|
# Uncomment the line and change localhost to *: listen_addresses = '*'
|
||||||
|
# Restart PostgreSQL for the change to take effect by running:
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# /etc/postgresql/{version}/main/pg_hba.conf
|
||||||
|
#
|
||||||
|
# Find the following lines:
|
||||||
|
#
|
||||||
|
# local all all peer
|
||||||
|
#
|
||||||
|
# host all all ::1/128 ident
|
||||||
|
#
|
||||||
|
# Change peer and ident to trust:
|
||||||
|
#
|
||||||
|
# local all all trust
|
||||||
|
#
|
||||||
|
# host all all ::1/128 trust
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Remote Database (separate server)
|
||||||
|
#
|
||||||
|
# If the Mattermost server and the database are on different machines:
|
||||||
|
#
|
||||||
|
# /etc/postgresql/{version}/main/pg_hba.conf in a text editor as root user.
|
||||||
|
#
|
||||||
|
# Add the following line to the end of the file, where {mattermost-server-IP} is the
|
||||||
|
# IP address of the Mattermost server:
|
||||||
|
#
|
||||||
|
# host all all {mattermost-server-IP}/32 md5.
|
||||||
|
#
|
||||||
|
cp -a /etc/postgresql/15/main/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf.ORIG
|
||||||
|
cp /root/postgresql_15_main/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf
|
||||||
|
|
||||||
|
cp -a /etc/postgresql/15/main/postgresql.conf /etc/postgresql/15/main/postgresql.conf.ORIG
|
||||||
|
cp /root/postgresql_15_main/postgresql.conf /etc/postgresql/15/main/postgresql.conf
|
||||||
|
|
||||||
|
systemctl restart postgresql
|
||||||
|
|
||||||
|
|
||||||
|
# Create PostgreSQL Database om mattermost server..
|
||||||
|
#
|
||||||
|
# seee: https://docs.mattermost.com/install/prepare-mattermost-database.html
|
||||||
|
#
|
||||||
|
# sudo -u postgres psql
|
||||||
|
#
|
||||||
|
# CREATE DATABASE mm;
|
||||||
|
#
|
||||||
|
# \connect mm
|
||||||
|
#
|
||||||
|
# CREATE USER mmuser WITH PASSWORD 'mmuser-password';
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# If you're configuring PostgreSQL v15.x or later:
|
||||||
|
#
|
||||||
|
# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
|
||||||
|
#
|
||||||
|
# ALTER DATABASE mattermost OWNER TO mmuser;
|
||||||
|
#
|
||||||
|
# GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Note:
|
||||||
|
# Error Occurred: could not check schema owner: the user "mmuser" is not owner of the "public" schema
|
||||||
|
#
|
||||||
|
# Fix: on postreSQL monitor insert:
|
||||||
|
#
|
||||||
|
# ALTER SCHEMA public OWNER TO mmuser;
|
||||||
|
# GRANT ALL ON SCHEMA public to mmuser;
|
||||||
|
#
|
||||||
|
cd /tmp
|
||||||
|
sudo -u postgres psql -c "CREATE DATABASE ${psql_db_name};"
|
||||||
|
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "CREATE USER ${psql_db_user} WITH PASSWORD '${psql_db_password}';"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT ALL PRIVILEGES ON DATABASE ${psql_db_name} to ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "ALTER DATABASE ${psql_db_name} OWNER TO ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "ALTER SCHEMA public OWNER TO ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT ALL ON SCHEMA public to ${psql_db_user};"
|
||||||
|
|
||||||
|
systemctl stop postgresql
|
||||||
|
systemctl start postgresql
|
||||||
|
|
||||||
|
|
||||||
|
# ==============================
|
||||||
|
#
|
||||||
|
# Note: On mattermost Host in file my.cnf set:
|
||||||
|
# ============================================
|
||||||
|
#
|
||||||
|
# [mysqld]
|
||||||
|
# ...
|
||||||
|
# default-authentication-plugin = mysql_native_password
|
||||||
|
#
|
||||||
|
# ==============================
|
||||||
|
|
||||||
|
|
||||||
|
# ==============================
|
||||||
|
# Automated PostgreSQL migration
|
||||||
|
# ==============================
|
||||||
|
|
||||||
|
# Step 1 - Check the MySQL database schema
|
||||||
|
# ========================================
|
||||||
|
#
|
||||||
|
# run the following command:
|
||||||
|
#
|
||||||
|
# migration-assist mysql "<MYSQL_DSN>" --fix-artifacts --fix-unicode --fix-varchar
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Example MySQ_ DSN: "user:password@tcp(address:3306)/db_name"
|
||||||
|
#
|
||||||
|
migration-assist mysql ${MYSQL_DSN} \
|
||||||
|
--fix-artifacts \
|
||||||
|
--fix-unicode \
|
||||||
|
--fix-varchar
|
||||||
|
|
||||||
|
# Output was:
|
||||||
|
#
|
||||||
|
# 2024-12-25 12:59:01 pinging mysql...
|
||||||
|
# 2024-12-25 12:59:01 connected to mysql successfully...
|
||||||
|
# 2024-12-25 12:59:01 running checks for artifacts...
|
||||||
|
# 2024-12-25 12:59:01 a fix is required for: schema_migrations
|
||||||
|
# 2024-12-25 12:59:01 the fix query has been executed successfully.
|
||||||
|
# 2024-12-25 12:59:01 4 checks been made, all good for artifacts
|
||||||
|
# 2024-12-25 12:59:01 running checks for unicode...
|
||||||
|
# 2024-12-25 12:59:02 11 checks been made, all good for unicode
|
||||||
|
# 2024-12-25 12:59:02 running checks for varchar...
|
||||||
|
# 2024-12-25 12:59:02 8 checks been made, all good for varchar
|
||||||
|
# 2024-12-25 12:59:02 running checks for varchar-extended...
|
||||||
|
# 2024-12-25 12:59:02 a fix is required for: linkmetadata.url
|
||||||
|
# 2024-12-25 12:59:02 the fix query has been executed successfully.
|
||||||
|
# 2024-12-25 12:59:02 12 checks been made, all good for varchar-extended
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Step 2 - Create the PostgreSQL database schema
|
||||||
|
# ==============================================
|
||||||
|
#
|
||||||
|
# run the following command:
|
||||||
|
#
|
||||||
|
# migration-assist postgres "<POSTGRES_DSN>" --run-migrations --mattermost-version="<MATTERMOST_VERSION>"
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Example POSTGRES_DSN: "postgres://user:password@address:5432/db_name"
|
||||||
|
#
|
||||||
|
# Example MATTERMOST_VERSION: "v9.4.0"
|
||||||
|
#
|
||||||
|
#migration-assist postgres ${POSTGRES_DSN} --run-migrations --mattermost-version=${MATTERMOST_VERSION}
|
||||||
|
|
||||||
|
migration-assist postgres ${POSTGRES_DSN} --run-migrations --mattermost-version ${MATTERMOST_VERSION}
|
||||||
|
|
||||||
|
# Output was:
|
||||||
|
#
|
||||||
|
# 2024-12-25 13:14:41 pinging postgres...
|
||||||
|
# 2024-12-25 13:14:41 connected to postgres successfully.
|
||||||
|
# 2024-12-25 13:14:41 schema owner check passed.
|
||||||
|
# 2024-12-25 13:14:41 checking if tables are empty...
|
||||||
|
# 2024-12-25 13:14:41 cloning repository@9.11.1
|
||||||
|
# 2024-12-25 13:14:41 git version: git version 2.39.5
|
||||||
|
# 2024-12-25 13:14:42 checking out...
|
||||||
|
# 2024-12-25 13:14:42 moving migration files into a better place..
|
||||||
|
# 2024-12-25 13:14:42 running migrations..
|
||||||
|
# 2024-12-25 13:14:43 migrations applied.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# Step 3 - Generate a pgloader configuration
|
||||||
|
# ==========================================
|
||||||
|
#
|
||||||
|
# run the following command:
|
||||||
|
#
|
||||||
|
# migration-assist pgloader --mysql="<MYSQL_DSN>" --postgres="<POSTGRES_DSN>" > migration.load
|
||||||
|
#
|
||||||
|
migration-assist pgloader --mysql $MYSQL_DSN --postgres $POSTGRES_DSN | tee migration.load
|
||||||
|
|
||||||
|
# Output was:
|
||||||
|
#
|
||||||
|
# LOAD DATABASE
|
||||||
|
# FROM mysql://mmuser:aiqu7oghae1eZai3@10.0.3.42:3306/mm
|
||||||
|
# INTO pgsql://mmuser:aiqu7oghae1eZai3@10.0.3.42:5432/mm
|
||||||
|
#
|
||||||
|
# WITH data only,
|
||||||
|
# workers = 8, concurrency = 1,
|
||||||
|
# multiple readers per thread, rows per range = 10000,
|
||||||
|
# prefetch rows = 10000, batch rows = 2500,
|
||||||
|
# create no tables, create no indexes,
|
||||||
|
# preserve index names
|
||||||
|
#
|
||||||
|
# SET PostgreSQL PARAMETERS
|
||||||
|
# maintenance_work_mem to '128MB',
|
||||||
|
# work_mem to '12MB'
|
||||||
|
#
|
||||||
|
# SET MySQL PARAMETERS
|
||||||
|
# net_read_timeout = '120',
|
||||||
|
# net_write_timeout = '120'
|
||||||
|
#
|
||||||
|
# CAST column Channels.Type to "channel_type" drop typemod,
|
||||||
|
# column Teams.Type to "team_type" drop typemod,
|
||||||
|
# column UploadSessions.Type to "upload_session_type" drop typemod,
|
||||||
|
# column ChannelBookmarks.Type to "channel_bookmark_type" drop typemod,
|
||||||
|
# column Drafts.Priority to text,
|
||||||
|
# type int when (= precision 11) to integer drop typemod,
|
||||||
|
# type bigint when (= precision 20) to bigint drop typemod,
|
||||||
|
# type text to varchar drop typemod using remove-null-characters,
|
||||||
|
# type tinyint when (<= precision 4) to boolean using tinyint-to-boolean,
|
||||||
|
# type json to jsonb drop typemod using remove-null-characters
|
||||||
|
#
|
||||||
|
# EXCLUDING TABLE NAMES MATCHING ~<IR_>, ~<focalboard>, ~<calls>, 'schema_migrations', 'db_migrations', 'db_lock',
|
||||||
|
# 'configurations', 'configurationfiles', 'db_config_migrations'
|
||||||
|
#
|
||||||
|
# BEFORE LOAD DO
|
||||||
|
# $$ ALTER SCHEMA public RENAME TO mm; $$,
|
||||||
|
# $$ TRUNCATE TABLE mm.systems; $$,
|
||||||
|
# $$ DROP INDEX IF EXISTS mm.idx_posts_message_txt; $$,
|
||||||
|
# $$ DROP INDEX IF EXISTS mm.idx_fileinfo_content_txt; $$
|
||||||
|
#
|
||||||
|
# AFTER LOAD DO
|
||||||
|
# $$ UPDATE mm.db_migrations set name='add_createat_to_teamembers' where version=92; $$,
|
||||||
|
# $$ ALTER SCHEMA mm RENAME TO public; $$,
|
||||||
|
# $$ SELECT pg_catalog.set_config('search_path', '"$user", "$user", public', false); $$,
|
||||||
|
# $$ ALTER USER mmuser SET SEARCH_PATH TO '"$user", public'; $$;
|
||||||
|
|
||||||
|
|
||||||
|
# Step 3.1 - Add missing tables..
|
||||||
|
# ===============================
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# At mttermost host
|
||||||
|
#
|
||||||
|
# - Create sql file /root/bin/mattermost-migration.sql (includes miising tables/indexes/..)
|
||||||
|
#
|
||||||
|
# - run: cd /tmp; sudo -u postgres psql mattermost < /root/bin/mattermost-migration.sql
|
||||||
|
#
|
||||||
|
cd /tmp; sudo -u postgres psql mattermost < /root/bin/mattermost-migration.sql
|
||||||
|
|
||||||
|
|
||||||
|
# Step 4 - Run pgloader
|
||||||
|
# =====================
|
||||||
|
#
|
||||||
|
# Run pgloader with the generated configuration file:
|
||||||
|
#
|
||||||
|
# pgloader migration.load > migration.log
|
||||||
|
#
|
||||||
|
${pgloader_bin} migration.load | tee migration.log
|
||||||
|
|
||||||
|
|
||||||
|
# Step 5 - Restore full-text indexes
|
||||||
|
# ==================================
|
||||||
|
#
|
||||||
|
# Run the following command to create the full-text indexes for the Posts and FileInfo tables:
|
||||||
|
#
|
||||||
|
# migration-assist postgres post-migrate "<POSTGRES_DSN>"
|
||||||
|
#
|
||||||
|
# This command creates the full-text indexes for the Posts and FileInfo tables. See the
|
||||||
|
# Restore full-text indexes documentation for more information.
|
||||||
|
#
|
||||||
|
migration-assist postgres post-migrate $POSTGRES_DSN | tee postgres-post-migrate.log
|
||||||
|
|
||||||
|
|
||||||
|
# Step 6 - Complete plugin migrations
|
||||||
|
# ===================================
|
||||||
|
#
|
||||||
|
# Generate migration configuration for collaborative playbooks, boards and calls:
|
||||||
|
#
|
||||||
|
# migration-assist pgloader boards --mysql="<MYSQL_DSN>" --postgres="<POSTGRES_DSN>" > boards.load
|
||||||
|
# migration-assist pgloader playbooks --mysql="<MYSQL_DSN>" --postgres="<POSTGRES_DSN>" > playbooks.load
|
||||||
|
# migration-assist pgloader calls --mysql="<MYSQL_DSN>" --postgres="<POSTGRES_DSN>" > calls.load
|
||||||
|
#
|
||||||
|
# Then run pgloader with the generated configuration files:
|
||||||
|
#
|
||||||
|
# pgloader boards.load > boards_migration.log
|
||||||
|
# pgloader playbooks.load > playbooks_migration.log
|
||||||
|
# pgloader calls.load > calls.log
|
||||||
|
#
|
||||||
|
# Note:
|
||||||
|
# Carefully read the log file to analyze whether there were any errors during the migration process.
|
||||||
|
# See the Plugin migrations documentation
|
||||||
|
# https://docs.mattermost.com/deploy/manual-postgres-migration.html#plugin-migrations)
|
||||||
|
# for information on migrating Playbooks, Boards and Calls.
|
||||||
|
#
|
||||||
|
migration-assist pgloader boards --mysql="${MYSQL_DSN}" --postgres="${POSTGRES_DSN}" | tee boards.load
|
||||||
|
migration-assist pgloader playbooks --mysql="${MYSQL_DSN}" --postgres="${POSTGRES_DSN}" | tee playbooks.load
|
||||||
|
migration-assist pgloader calls --mysql=""${MYSQL_DSN} --postgres=""${POSTGRES_DSN} | tee calls.load
|
||||||
|
|
||||||
|
|
||||||
|
# Prepare boards.load
|
||||||
|
#
|
||||||
|
# Delte entries:
|
||||||
|
#
|
||||||
|
# column focalboard_teams.settings to "json" drop typemod using remove-null-characters,
|
||||||
|
# ...
|
||||||
|
# $$ UPDATE mattermost2.focalboard_teams SET "settings" = '{}'::json WHERE "settings"::text = ''; $$,
|
||||||
|
#
|
||||||
|
sed -i '/focalboard_teams.settings/d' boards.load
|
||||||
|
sed -i '/mattermost.focalboard_teams/d' boards.load
|
||||||
|
|
||||||
|
${pgloader_bin} boards.load | tee boards_migration.log
|
||||||
|
|
||||||
|
${pgloader_bin} playbooks.load | tee playbooks_migration.log
|
||||||
|
|
||||||
|
${pgloader_bin} calls.load | tee calls.log
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Important on postgres monitor console (psql mattermost), the requests
|
||||||
|
#
|
||||||
|
# SHOW SEARCH_PATH;
|
||||||
|
# snd
|
||||||
|
# SELECT CURRENT_SCHEMA();
|
||||||
|
#
|
||||||
|
# must response as shown:
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# mattermost=# SHOW SEARCH_PATH;
|
||||||
|
# search_path
|
||||||
|
# -----------------
|
||||||
|
# "$user", public
|
||||||
|
# (1 row)
|
||||||
|
#
|
||||||
|
# mattermost=# SELECT CURRENT_SCHEMA();
|
||||||
|
# current_schema
|
||||||
|
# ----------------
|
||||||
|
# public
|
||||||
|
# (1 row)
|
||||||
|
|
||||||
|
mattermost=# SELECT pg_catalog.set_config('search_path', '"$user",public"', false);
|
||||||
|
#
|
||||||
|
# -----------------
|
||||||
|
# "$user",public"
|
||||||
|
# (1 Zeile)
|
||||||
|
|
||||||
|
mattermost=# ALTER USER mattermost SET SEARCH_PATH TO "$user",public;
|
||||||
|
#
|
||||||
|
# ALTER ROLE
|
||||||
|
# mattermost=# SHOW SEARCH_PATH;
|
||||||
|
# search_path
|
||||||
|
# -----------------
|
||||||
|
# "$user",public"
|
||||||
|
# (1 Zeile)
|
||||||
|
|
||||||
|
# EXIT postgresQL monitor
|
||||||
|
#
|
||||||
|
mattermost=# \q
|
||||||
|
|
||||||
|
|
||||||
|
|
48
README.postgresql
Normal file
48
README.postgresql
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
# see:
|
||||||
|
# https://docs.mattermost.com/install/prepare-mattermost-database.html
|
||||||
|
|
||||||
|
# Postgresql
|
||||||
|
psql_db_host="localhost"
|
||||||
|
psql_db_port="5432"
|
||||||
|
psql_db_name="mattermost"
|
||||||
|
psql_db_user="mmuser"
|
||||||
|
psql_db_password='YK-m-yoi9T-p.7fm'
|
||||||
|
|
||||||
|
POSTGRES_DSN="postgres://${psql_db_user}:${psql_db_password}@${psql_db_host}:${psql_db_port}/${psql_db_name}?sslmode=disable\u0026connect_timeout=10"
|
||||||
|
|
||||||
|
pg_hba_file="/etc/postgresql/15/main/pg_hba.conf"
|
||||||
|
|
||||||
|
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt install -y --allow-unauthenticated postgresql
|
||||||
|
|
||||||
|
systemctl stop postgresql
|
||||||
|
|
||||||
|
if ! $(grep -Eq "\s*^local\s+all\s+all\s+trust" "${pg_hba_file}" 2> /dev/null) ; then
|
||||||
|
perl -i.ORIG -n -p -e "s/\s*^((local\s+all\s+all\s+)\S+)/#\1\n\2trust/" "${pg_hba_file}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $(grep -Eq "\s*^host\s+all\s+all\s+127\.[^[:space:]]+\s+md5" "${pg_hba_file}" 2> /dev/null) ; then
|
||||||
|
perl -i -n -p -e "s/\s*^((host\s+all\s+all\s+127\.\S+\s+)\S+)/#\1\n\2md5/" "${pg_hba_file}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $(grep -Eq "\s*^host\s+all\s+all\s+::1[^[:space:]]+\s+md5" "${pg_hba_file}" 2> /dev/null) ; then
|
||||||
|
perl -i -n -p -e "s/\s*^((host\s+all\s+all\s+::1\S+\s+)\S+)/#\1\n\2md5/" "${pg_hba_file}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
systemctl start postgresql
|
||||||
|
systemctl enable postgresql
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
sudo -u postgres psql -c "CREATE DATABASE ${psql_db_name};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "CREATE USER ${psql_db_user} WITH PASSWORD '${psql_db_password}';"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT ALL PRIVILEGES ON DATABASE ${psql_db_name} to ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "ALTER DATABASE ${psql_db_name} OWNER TO ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO ${psql_db_user};"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
exit 0
|
||||||
|
|
@ -99,7 +99,7 @@
|
|||||||
# local storage directory: /opt/mattermost/data
|
# local storage directory: /opt/mattermost/data
|
||||||
# ===========================================
|
# ===========================================
|
||||||
|
|
||||||
MM_NEW_VERSION=9.5.6
|
MM_NEW_VERSION=10.5.5
|
||||||
MM_BASE_INSTALL_PATH=/opt
|
MM_BASE_INSTALL_PATH=/opt
|
||||||
MM_DATA_DIR=/opt/mattermost/data
|
MM_DATA_DIR=/opt/mattermost/data
|
||||||
|
|
||||||
|
BIN
anzahl-team-mitglieder-einstellen.pdf
Normal file
BIN
anzahl-team-mitglieder-einstellen.pdf
Normal file
Binary file not shown.
@ -42,6 +42,17 @@ FQHN_HOSTNAME=""
|
|||||||
#MATTERMOST_BASE_INSTALL_PATH="/opt"
|
#MATTERMOST_BASE_INSTALL_PATH="/opt"
|
||||||
|
|
||||||
|
|
||||||
|
# DB_TYPE
|
||||||
|
#
|
||||||
|
# Type of Mattermost database
|
||||||
|
#
|
||||||
|
# Possible values are 'pgsql' (PostgeSQL) or 'mysql' (MySQL)
|
||||||
|
#
|
||||||
|
# Defaults to POSTFIX_DB_TYPE="pgsql"
|
||||||
|
#
|
||||||
|
# DB_TYPE="pgsql"
|
||||||
|
|
||||||
|
|
||||||
# MYSQL_CREDENTIAL_ARGS
|
# MYSQL_CREDENTIAL_ARGS
|
||||||
#
|
#
|
||||||
# Giving password on command line is insecure an sind mysql 5.5
|
# Giving password on command line is insecure an sind mysql 5.5
|
||||||
|
@ -205,6 +205,8 @@ DEFAULT_MATTERMOST_USER="mattermost"
|
|||||||
DEFAULT_DB_NAME="mattermost"
|
DEFAULT_DB_NAME="mattermost"
|
||||||
DEFAULT_DB_USER="mattermost"
|
DEFAULT_DB_USER="mattermost"
|
||||||
|
|
||||||
|
DEFAULT_DB_TYPE="pgsql"
|
||||||
|
|
||||||
# generate random password
|
# generate random password
|
||||||
regexp_digit="([23456789].*){2}"
|
regexp_digit="([23456789].*){2}"
|
||||||
regexp_special_char="([-_%+].*){2}"
|
regexp_special_char="([-_%+].*){2}"
|
||||||
@ -242,6 +244,20 @@ fi
|
|||||||
|
|
||||||
[[ -n "$FQHN_HOSTNAME" ]] && DEFAULT_FQHN_HOSTNAME="$FQHN_HOSTNAME"
|
[[ -n "$FQHN_HOSTNAME" ]] && DEFAULT_FQHN_HOSTNAME="$FQHN_HOSTNAME"
|
||||||
|
|
||||||
|
if [[ -n "$DB_TYPE" ]] ; then
|
||||||
|
if [[ "${DB_TYPE,,}" = "postgres" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "pgsql" ]] || [[ "${DB_TYPE,,}" = "psql" ]] ; then
|
||||||
|
|
||||||
|
DEFAULT_DB_TYPE=pgsql
|
||||||
|
|
||||||
|
elif [[ "${DB_TYPE,,}" = "mysql" ]] ; then
|
||||||
|
|
||||||
|
DEFAULT_DB_TYPE=mysql
|
||||||
|
|
||||||
|
else
|
||||||
|
fatal "Wrong or empty Database Type (DB_TYPE) - must be 'mysql' or 'pgsql'."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
[[ -n "$DB_NAME" ]] && DEFAULT_DB_NAME="$DB_NAME"
|
[[ -n "$DB_NAME" ]] && DEFAULT_DB_NAME="$DB_NAME"
|
||||||
[[ -n "$DB_USER" ]] && DEFAULT_DB_NAME="$DB_USER"
|
[[ -n "$DB_USER" ]] && DEFAULT_DB_NAME="$DB_USER"
|
||||||
[[ -n "$DB_PASS" ]] && DEFAULT_DB_PASS="$DB_PASS"
|
[[ -n "$DB_PASS" ]] && DEFAULT_DB_PASS="$DB_PASS"
|
||||||
@ -344,6 +360,45 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
DB_TYPE=""
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[32m--\033[m"
|
||||||
|
echo ""
|
||||||
|
echo "Choose Database Type"
|
||||||
|
echo ""
|
||||||
|
if [[ "$DEFAULT_DB_TYPE" = "mysql" ]]; then
|
||||||
|
echo -e "\033[3G\033[37m\033[1m[1] MySQL\033[m"
|
||||||
|
else
|
||||||
|
echo -e "\033[3G[1] MySQL"
|
||||||
|
fi
|
||||||
|
if [[ "$DEFAULT_DB_TYPE" = "pgsql" ]] ; then
|
||||||
|
echo -e "\033[3G[2] \033[37m\033[1mPostgeSQL\033[m"
|
||||||
|
else
|
||||||
|
echo -e "\033[3G[2] PostgeSQL"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "Type a number or press <RETURN> to choose highlighted value"
|
||||||
|
echo ""
|
||||||
|
echononl "Eingabe: "
|
||||||
|
while [ "$DB_TYPE" != "mysql" -a "$DB_TYPE" != "pgsql" ]; do
|
||||||
|
read OPTION
|
||||||
|
case $OPTION in
|
||||||
|
1)
|
||||||
|
DB_TYPE="mysql"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
DB_TYPE="pgsql"
|
||||||
|
;;
|
||||||
|
'') DB_TYPE=$DEFAULT_DB_TYPE
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[3GFalsche Eingabe ! [ 1 = MySQL ; 2 = PostgreSQL ] or type <RETURN>"
|
||||||
|
echo ""
|
||||||
|
echononl "Eingabe: "
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
DB_NAME=
|
DB_NAME=
|
||||||
@ -418,13 +473,13 @@ else
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$DB_TYPE" = "mysql" ]] ; then
|
||||||
if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then
|
if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then
|
||||||
if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then
|
if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then
|
||||||
fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!"
|
fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!"
|
||||||
fi
|
fi
|
||||||
USE_MYSQL_CREDENTIAL_ARGS=true
|
USE_MYSQL_CREDENTIAL_ARGS=true
|
||||||
else
|
else
|
||||||
USE_MYSQL_CREDENTIAL_ARGS=false
|
USE_MYSQL_CREDENTIAL_ARGS=false
|
||||||
|
|
||||||
_MYSQL_ROOT_PW=""
|
_MYSQL_ROOT_PW=""
|
||||||
@ -452,10 +507,10 @@ else
|
|||||||
fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again."
|
fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again."
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "\t\033[32mStart install script for Mattermost Server with the following parameters\033[m"
|
echo -e "\t\033[32mStart install script for Mattermost Server with the following parameters\033[m"
|
||||||
@ -469,12 +524,20 @@ echo -e "\tMattermost user..........: $MATTERMOST_USER"
|
|||||||
echo -e "\tMattermost group.........: $MATTERMOST_GROUP"
|
echo -e "\tMattermost group.........: $MATTERMOST_GROUP"
|
||||||
echo ""
|
echo ""
|
||||||
echo ""
|
echo ""
|
||||||
if $USE_MYSQL_CREDENTIAL_ARGS ; then
|
if [[ "${DB_TYPE}" = "pgsql" ]] ; then
|
||||||
echo -e "\tMYSQL_CREDENTIAL_ARGS....: $MYSQL_CREDENTIAL_ARGS"
|
echo -e "\tDatabase Type............: PostgreSQL"
|
||||||
else
|
else
|
||||||
echo -e "\tRoot password MySQL......: **"
|
echo -e "\tDatabase Type............: MySQL"
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
if [[ "${DB_TYPE}" = "mysql" ]]; then
|
||||||
|
if $USE_MYSQL_CREDENTIAL_ARGS ; then
|
||||||
|
echo -e "\tMYSQL_CREDENTIAL_ARGS....: $MYSQL_CREDENTIAL_ARGS"
|
||||||
|
else
|
||||||
|
echo -e "\tRoot password MySQL......: **"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
echo -e "\tDatabase Name............: $DB_NAME"
|
echo -e "\tDatabase Name............: $DB_NAME"
|
||||||
echo -e "\tDatabase User............: $DB_USER"
|
echo -e "\tDatabase User............: $DB_USER"
|
||||||
echo -e "\tDatabase Password........: $DB_PASS"
|
echo -e "\tDatabase Password........: $DB_PASS"
|
||||||
@ -519,19 +582,60 @@ if $nginx_installed ; then
|
|||||||
echo -e "\033[85G[ \033[32mYES\033[m ]"
|
echo -e "\033[85G[ \033[32mYES\033[m ]"
|
||||||
else
|
else
|
||||||
echo -e "\033[85G[ \033[1;31mNOT installed\033[m ]"
|
echo -e "\033[85G[ \033[1;31mNOT installed\033[m ]"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_failed=false
|
_failed=false
|
||||||
echononl "Check if MySQL Database Service is installed.."
|
if [[ "${DB_TYPE}" = "mysql" ]]; then
|
||||||
if $(dpkg -s mysql-server > "$log_file" 2>&1) ; then
|
echononl "Check if MySQL Database Service is installed.."
|
||||||
mysql_server_installed=true
|
if $(dpkg -s mysql-server > "$log_file" 2>&1) ; then
|
||||||
else
|
database_service_installed=true
|
||||||
mysql_server_installed=false
|
else
|
||||||
fi
|
database_service_installed=false
|
||||||
if $mysql_server_installed ; then
|
fi
|
||||||
|
if $database_service_installed ; then
|
||||||
echo -e "\033[85G[ \033[32mYES\033[m ]"
|
echo -e "\033[85G[ \033[32mYES\033[m ]"
|
||||||
else
|
else
|
||||||
echo -e "\033[85G[ \033[1;31mNOT installed\033[m ]"
|
echo -e "\033[85G[ \033[1;31mNOT installed\033[m ]"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echononl "Check if PostgreSQL Database Service is installed.."
|
||||||
|
if $(dpkg -s postgresql > "$log_file" 2>&1) ; then
|
||||||
|
database_service_installed=true
|
||||||
|
else
|
||||||
|
database_service_installed=false
|
||||||
|
fi
|
||||||
|
if $database_service_installed ; then
|
||||||
|
echo -e "\033[85G[ \033[32mYES\033[m ]"
|
||||||
|
else
|
||||||
|
echo -e "\033[85G[ \033[1;31mNOT installed\033[m ]"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -552,12 +656,12 @@ else
|
|||||||
echo -e "\033[85G[ \033[1;31mNOT present\033[m ]"
|
echo -e "\033[85G[ \033[1;31mNOT present\033[m ]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! $nginx_installed || ! $mysql_server_installed ; then
|
if ! $nginx_installed || ! $database_service_installed ; then
|
||||||
|
|
||||||
if ! $cert_present ; then
|
if ! $nginx_installed ; then
|
||||||
|
|
||||||
fatal "Prerequisites are a correct installation of the NGINX Web Service as well
|
fatal "Prerequisites are a correct installation of the NGINX Web Service as well
|
||||||
as a correct installation of the MySQL database service.
|
as a correct installation of the $DB_TYPE database service.
|
||||||
|
|
||||||
It's also highly recommended to have a valid certificate for your
|
It's also highly recommended to have a valid certificate for your
|
||||||
FQHN Hostname '${FQHN_HOSTNAME}'."
|
FQHN Hostname '${FQHN_HOSTNAME}'."
|
||||||
@ -565,7 +669,7 @@ if ! $nginx_installed || ! $mysql_server_installed ; then
|
|||||||
else
|
else
|
||||||
|
|
||||||
fatal "Prerequisites are a correct installation of the NGINX Web Service as well
|
fatal "Prerequisites are a correct installation of the NGINX Web Service as well
|
||||||
as a correct installation of the MySQL database service."
|
as a correct installation of the $DB_TYPE database service."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif ! $cert_present ; then
|
elif ! $cert_present ; then
|
||||||
@ -603,11 +707,13 @@ fi
|
|||||||
|
|
||||||
blank_line
|
blank_line
|
||||||
|
|
||||||
echononl "Create Database User '${DB_USER}' with Password '${DB_PASS}'.."
|
|
||||||
if [[ "$(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
if [[ "${DB_TYPE}" = "mysql" ]] ; then
|
||||||
|
echononl "Create MySQL Database User '${DB_USER}' with Password '${DB_PASS}'.."
|
||||||
|
if [[ "$(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
||||||
"SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '$DB_USER')" 2>/dev/null)" = 1 ]]; then
|
"SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '$DB_USER')" 2>/dev/null)" = 1 ]]; then
|
||||||
echo_skipped
|
echo_skipped
|
||||||
else
|
else
|
||||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
||||||
"CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '${DB_PASS}'" > "$log_file" 2>&1
|
"CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '${DB_PASS}'" > "$log_file" 2>&1
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
@ -616,14 +722,14 @@ else
|
|||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echononl "Create Database '${DB_NAME}'.."
|
echononl "Create MySQL Database '${DB_NAME}'.."
|
||||||
if [[ "$(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
if [[ "$(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
||||||
"SHOW DATABASES LIKE '${DB_NAME}'" 2>/dev/null)" = "${DB_NAME}" ]]; then
|
"SHOW DATABASES LIKE '${DB_NAME}'" 2>/dev/null)" = "${DB_NAME}" ]]; then
|
||||||
|
|
||||||
echo_skipped
|
echo_skipped
|
||||||
else
|
else
|
||||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e "CREATE DATABASE ${DB_NAME}" > "$log_file" 2>&1
|
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e "CREATE DATABASE ${DB_NAME}" > "$log_file" 2>&1
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
echo_failed
|
echo_failed
|
||||||
@ -631,26 +737,169 @@ else
|
|||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echononl "Grant access privileges to the user '${DB_USER}'’."
|
echononl "Grant access privileges to the user '${DB_USER}'’."
|
||||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
||||||
"GRANT ALL PRIVILEGES ON ${DB_NAME}.* to '${DB_USER}'@'localhost';" > "$log_file" 2>&1
|
"GRANT ALL PRIVILEGES ON ${DB_NAME}.* to '${DB_USER}'@'localhost';" > "$log_file" 2>&1
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "$log_file")"
|
error "$(cat "$log_file")"
|
||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echononl "FLUSH PRIVILEGES to dadabase engine .."
|
echononl "FLUSH PRIVILEGES to dadabase engine .."
|
||||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e \
|
||||||
"FLUSH PRIVILEGES" > "$log_file" 2>&1
|
"FLUSH PRIVILEGES" > "$log_file" 2>&1
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "$log_file")"
|
error "$(cat "$log_file")"
|
||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# Check if PostgreSQL database '$DB_NAME' exists ..
|
||||||
|
#
|
||||||
|
count=$(su - postgres -c "psql -q -A -t -l" | grep -c -e "^$DB_NAME")
|
||||||
|
if [[ $count -eq 0 ]];then
|
||||||
|
database_exists=false
|
||||||
|
else
|
||||||
|
database_exists=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sudo -u postgres psql -c "CREATE DATABASE ${DB_NAME};" > $log_file 2>&1
|
||||||
|
# sudo -u postgres psql -c "CREATE USER ${DB_USER} WITH PASSWORD '${DB_PASS}';" > $log_file 2>&1
|
||||||
|
# sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE ${DB_NAME} to ${DB_USER};" > $log_file 2>&1
|
||||||
|
# sudo -u postgres psql -c "ALTER DATABASE ${DB_NAME} OWNER TO ${DB_USER};" > $log_file 2>&1
|
||||||
|
# sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO ${DB_USER};" > $log_file 2>&1
|
||||||
|
|
||||||
|
echononl "Create PostgreSQL database '${DB_NAME}'.."
|
||||||
|
if $database_exists ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
sudo -u postgres psql -c "CREATE DATABASE ${DB_NAME};" > $log_file 2>&1
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Create PostgreSQL database user ${DB_USER}.."
|
||||||
|
if $database_exists ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
|
||||||
|
sudo -u postgres psql -c "CREATE USER ${DB_USER} WITH PASSWORD '${DB_PASS}';" > $log_file 2>&1
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Grant the user access to the Mattermost database.."
|
||||||
|
if $database_exists ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
|
||||||
|
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE ${DB_NAME} to ${DB_USER};" > $log_file 2>&1
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Change the owner of database '${DB_NAME}' to '${DB_USER}'.."
|
||||||
|
if $database_exists ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
|
||||||
|
sudo -u postgres psql -c "ALTER DATABASE ${DB_NAME} OWNER TO ${DB_USER};" > $log_file 2>&1
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Grant access to objects contained in the specified schema.."
|
||||||
|
if $database_exists ; then
|
||||||
|
echo_skipped
|
||||||
|
else
|
||||||
|
|
||||||
|
sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO ${DB_USER};" > $log_file 2>&1
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echononl "\033[1mcontinue anyway\033[m [yes/no]: "
|
||||||
|
read OK
|
||||||
|
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/nno]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -756,7 +1005,8 @@ echo -e "\033[37m\033[1mConfigure Mattermost - file '/opt/mattermost/config/conf
|
|||||||
echo
|
echo
|
||||||
|
|
||||||
echononl "Set up 'SqlSettings'.."
|
echononl "Set up 'SqlSettings'.."
|
||||||
if ! $(grep -q -E "^\s*\"DriverName\":\s+mysql" /opt/mattermost/config/config.json 2> "$log_file") ; then
|
if [[ "${DB_TYPE}" = "mysql" ]] ; then
|
||||||
|
if ! $(grep -q -E "^\s*\"DriverName\":\s+mysql" /opt/mattermost/config/config.json 2> "$log_file") ; then
|
||||||
|
|
||||||
_found=false
|
_found=false
|
||||||
:> ${LOCK_DIR}/config.json
|
:> ${LOCK_DIR}/config.json
|
||||||
@ -796,12 +1046,59 @@ EOF
|
|||||||
echo_ok
|
echo_ok
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
echo_skipped
|
echo_skipped
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ! $(grep -q -E "^\s*\"DriverName\":\s+postgres" /opt/mattermost/config/config.json 2> "$log_file") ; then
|
||||||
|
|
||||||
|
_found=false
|
||||||
|
:> ${LOCK_DIR}/config.json
|
||||||
|
:> $log_file
|
||||||
|
|
||||||
|
while IFS='' read -r _line || [[ -n $_line ]] ; do
|
||||||
|
|
||||||
|
|
||||||
|
if $_found && echo "$_line" | grep -iq -E "^\s*\"DriverName\":" 2> /dev/null ; then
|
||||||
|
cat <<EOF >> ${LOCK_DIR}/config.json 2> "$log_file"
|
||||||
|
"DriverName": "postgres",
|
||||||
|
EOF
|
||||||
|
elif $_found && echo "$_line" | grep -iq -E "^\s*\"DataSource\":" 2> /dev/null ; then
|
||||||
|
cat <<EOF >> ${LOCK_DIR}/config.json 2> "$log_file"
|
||||||
|
"DataSource": "postgres://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}?sslmode=disable\\u0026connect_timeout=10",
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
echo "$_line" >> ${LOCK_DIR}/config.json 2> "$log_file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $_found && echo "$_line" | grep -iq -E "^\s*\"SqlSettings\"" 2> /dev/null ; then
|
||||||
|
_found=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $_found && echo "$_line" | grep -iq -E "^\s*\}," 2> /dev/null ; then
|
||||||
|
_found=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
done < "/opt/mattermost/config/config.json"
|
||||||
|
|
||||||
|
cp -a "${LOCK_DIR}/config.json" /opt/mattermost/config/config.json >> "$log_file" 2>&1
|
||||||
|
|
||||||
|
if [[ -s "$log_file" ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echononl "Set up 'ServiceSettings'.."
|
echononl "Set up 'ServiceSettings'.."
|
||||||
if ! $(grep -q -E "^\s*\"DriverName\":\s+mysql" /opt/mattermost/config/config.json 2> "$log_file") ; then
|
if ! $(grep -q -E "^\s*\"SiteURL\":\s+\"https://${FQHN_HOSTNAME}\"" /opt/mattermost/config/config.json 2> "$log_file") ; then
|
||||||
|
|
||||||
_found=false
|
_found=false
|
||||||
:> ${LOCK_DIR}/config.json
|
:> ${LOCK_DIR}/config.json
|
||||||
@ -861,7 +1158,8 @@ echo -e "\033[37m\033[1mSetup Mattermost to use systemd for starting and stoppin
|
|||||||
echo
|
echo
|
||||||
|
|
||||||
echononl "Create a systemd unit file.."
|
echononl "Create a systemd unit file.."
|
||||||
cat <<EOF > /etc/systemd/system//mattermost.service 2>"$log_file"
|
if [[ "${DB_TYPE}" = "mysql" ]] ; then
|
||||||
|
cat <<EOF > /etc/systemd/system//mattermost.service 2>"$log_file"
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Mattermost
|
Description=Mattermost
|
||||||
After=network.target
|
After=network.target
|
||||||
@ -872,6 +1170,7 @@ Requires=mysql.service
|
|||||||
Type=notify
|
Type=notify
|
||||||
ExecStart=/opt/mattermost/bin/mattermost
|
ExecStart=/opt/mattermost/bin/mattermost
|
||||||
TimeoutStartSec=3600
|
TimeoutStartSec=3600
|
||||||
|
KillMode=mixed
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
WorkingDirectory=/opt/mattermost
|
WorkingDirectory=/opt/mattermost
|
||||||
@ -882,11 +1181,40 @@ LimitNOFILE=524288
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
if [[ -s "$log_file" ]] ; then
|
if [[ -s "$log_file" ]] ; then
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "$log_file")"
|
error "$(cat "$log_file")"
|
||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
cat <<EOF > /etc/systemd/system//mattermost.service 2>"$log_file"
|
||||||
|
[Unit]
|
||||||
|
Description=Mattermost
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
ExecStart=/opt/mattermost/bin/mattermost
|
||||||
|
TimeoutStartSec=3600
|
||||||
|
KillMode=mixed
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
WorkingDirectory=/opt/mattermost
|
||||||
|
User=mattermost
|
||||||
|
Group=mattermost
|
||||||
|
LimitNOFILE=49152
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [[ -s "$log_file" ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -964,6 +1292,8 @@ server {
|
|||||||
|
|
||||||
server_name ${FQHN_HOSTNAME};
|
server_name ${FQHN_HOSTNAME};
|
||||||
|
|
||||||
|
http2_push_preload on; # Enable HTTP/2 Server Push
|
||||||
|
|
||||||
# Include location directive for Let's Encrypt ACME Challenge
|
# Include location directive for Let's Encrypt ACME Challenge
|
||||||
#
|
#
|
||||||
# Needed for (automated) updating certificate
|
# Needed for (automated) updating certificate
|
||||||
@ -983,22 +1313,26 @@ server {
|
|||||||
#
|
#
|
||||||
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
|
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
|
||||||
|
|
||||||
# Eable session resumption to improve https performance
|
# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
|
||||||
ssl_session_cache shared:SSL:50m;
|
|
||||||
ssl_session_timeout 10m;
|
|
||||||
ssl_session_tickets off;
|
|
||||||
|
|
||||||
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # omit SSLv3 because of POODLE
|
|
||||||
# omit SSLv3 because of POODLE
|
|
||||||
# omit TLSv1 TLSv1.1
|
|
||||||
ssl_protocols TLSv1.2 TLSv1.3;
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||||||
|
|
||||||
|
# Enable TLSv1.3's 0-RTT. Use \$ssl_early_data when reverse proxying to
|
||||||
|
# prevent replay attacks.
|
||||||
|
#
|
||||||
|
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
|
||||||
|
ssl_early_data on;
|
||||||
|
|
||||||
# ECDHE better than DHE (faster) ECDHE & DHE GCM better than CBC (attacks on AES)
|
# ECDHE better than DHE (faster) ECDHE & DHE GCM better than CBC (attacks on AES)
|
||||||
# Everything better than SHA1 (deprecated)
|
# Everything better than SHA1 (deprecated)
|
||||||
#
|
#
|
||||||
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
|
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
|
||||||
ssl_prefer_server_ciphers on;
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
# Eable session resumption to improve https performance
|
||||||
|
ssl_session_cache shared:SSL:50m;
|
||||||
|
ssl_session_timeout 10m;
|
||||||
|
ssl_session_tickets off;
|
||||||
|
|
||||||
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
|
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
|
||||||
#
|
#
|
||||||
add_header Strict-Transport-Security max-age=15768000;
|
add_header Strict-Transport-Security max-age=15768000;
|
||||||
@ -1008,11 +1342,13 @@ server {
|
|||||||
ssl_stapling on;
|
ssl_stapling on;
|
||||||
ssl_stapling_verify on;
|
ssl_stapling_verify on;
|
||||||
|
|
||||||
location ~ /api/v[0-9]+/(users/)?websocket$ {
|
add_header X-Early-Data \$tls1_3_early_data;
|
||||||
|
|
||||||
|
location ~ /api/v[0-9]+/(users/)?websocket\$ {
|
||||||
proxy_set_header Upgrade \$http_upgrade;
|
proxy_set_header Upgrade \$http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "upgrade";
|
||||||
client_max_body_size 50M;
|
client_max_body_size 50M;
|
||||||
proxy_set_header Host \$http_host;
|
proxy_set_header Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto \$scheme;
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||||
@ -1020,18 +1356,19 @@ server {
|
|||||||
proxy_buffers 256 16k;
|
proxy_buffers 256 16k;
|
||||||
proxy_buffer_size 16k;
|
proxy_buffer_size 16k;
|
||||||
client_body_timeout 60;
|
client_body_timeout 60;
|
||||||
send_timeout 300;
|
send_timeout 300s;
|
||||||
lingering_timeout 5;
|
lingering_timeout 5;
|
||||||
proxy_connect_timeout 90;
|
proxy_connect_timeout 90s;
|
||||||
proxy_send_timeout 300;
|
proxy_send_timeout 300s;
|
||||||
proxy_read_timeout 90s;
|
proxy_read_timeout 90s;
|
||||||
|
proxy_http_version 1.1;
|
||||||
proxy_pass http://mm_backend;
|
proxy_pass http://mm_backend;
|
||||||
}
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
client_max_body_size 50M;
|
client_max_body_size 100M;
|
||||||
proxy_set_header Connection "";
|
proxy_set_header Connection "";
|
||||||
proxy_set_header Host \$http_host;
|
proxy_set_header Host \$host;
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto \$scheme;
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||||
@ -1049,6 +1386,14 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# This block is useful for debugging TLS v1.3. Please feel free to remove this
|
||||||
|
# and use the '\$ssl_early_data' variable exposed by NGINX directly should you
|
||||||
|
# wish to do so.
|
||||||
|
map \$ssl_early_data \$tls1_3_early_data {
|
||||||
|
"~." \$ssl_early_data;
|
||||||
|
default "";
|
||||||
|
}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
echo_failed
|
echo_failed
|
||||||
@ -1203,6 +1548,41 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
_key="DB_TYPE"
|
||||||
|
_val="$DB_TYPE"
|
||||||
|
echononl "Update Parameter '$_key'.."
|
||||||
|
if $(grep -q -E "^\s*$_key=\"?$_val\"?\s*$" "$conf_file" 2> /dev/null) ; then
|
||||||
|
echo_skipped
|
||||||
|
elif $(grep -q -E "^\s*$_key=" "$conf_file" 2> /dev/null) ; then
|
||||||
|
perl -i -n -p -e "s/^\s*$_key=.*/${_key}=\"${_val}\"/" "$conf_file" > "$log_file" 2>&1
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
elif $(grep -q -E "^\s*#\s*${_key}" "$conf_file" 2> /dev/null) ; then
|
||||||
|
perl -i -n -p -e "s/^(\s*\#\s*$_key=.*)/\1\n${_key}=\"${_val}\"/" "$conf_file" > "$log_file" 2>&1
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
cat <<EOF >> "$conf_file" 2> "$log_file"
|
||||||
|
|
||||||
|
${_key}=${_val}
|
||||||
|
EOF
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
_key="DB_NAME"
|
_key="DB_NAME"
|
||||||
_val="$DB_NAME"
|
_val="$DB_NAME"
|
||||||
echononl "Update Parameter '$_key'.."
|
echononl "Update Parameter '$_key'.."
|
||||||
|
265
mattermost-migration.sql
Normal file
265
mattermost-migration.sql
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_category; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.ir_category (
|
||||||
|
id character varying(26) NOT NULL,
|
||||||
|
name character varying(512) NOT NULL,
|
||||||
|
teamid character varying(26) NOT NULL,
|
||||||
|
userid character varying(26) NOT NULL,
|
||||||
|
collapsed boolean DEFAULT false,
|
||||||
|
createat bigint NOT NULL,
|
||||||
|
updateat bigint DEFAULT 0 NOT NULL,
|
||||||
|
deleteat bigint DEFAULT 0 NOT NULL
|
||||||
|
);
|
||||||
|
ALTER TABLE public.ir_category OWNER TO mattermost;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_category_item; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.ir_category_item (
|
||||||
|
type character varying(1) NOT NULL,
|
||||||
|
categoryid character varying(26) NOT NULL,
|
||||||
|
itemid character varying(26) NOT NULL
|
||||||
|
);
|
||||||
|
ALTER TABLE public.ir_category_item OWNER TO mattermost;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_channelaction; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.ir_channelaction (
|
||||||
|
id character varying(26) NOT NULL,
|
||||||
|
channelid character varying(26),
|
||||||
|
enabled boolean DEFAULT false,
|
||||||
|
deleteat bigint DEFAULT '0'::bigint NOT NULL,
|
||||||
|
actiontype character varying(65536) NOT NULL,
|
||||||
|
triggertype character varying(65536) NOT NULL,
|
||||||
|
payload json NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.ir_channelaction OWNER TO mattermost;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_incident; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE public.ir_incident (
|
||||||
|
id character varying(26) NOT NULL,
|
||||||
|
name character varying(1024) NOT NULL,
|
||||||
|
description character varying(4096) NOT NULL,
|
||||||
|
isactive boolean NOT NULL,
|
||||||
|
commanderuserid character varying(26) NOT NULL,
|
||||||
|
teamid character varying(26) NOT NULL,
|
||||||
|
channelid character varying(26) NOT NULL,
|
||||||
|
createat bigint NOT NULL,
|
||||||
|
endat bigint DEFAULT '0'::bigint NOT NULL,
|
||||||
|
deleteat bigint DEFAULT '0'::bigint NOT NULL,
|
||||||
|
activestage bigint NOT NULL,
|
||||||
|
postid character varying(26) DEFAULT ''::character varying NOT NULL,
|
||||||
|
playbookid character varying(26) DEFAULT ''::character varying NOT NULL,
|
||||||
|
checklistsjson json NOT NULL,
|
||||||
|
activestagetitle character varying(1024) DEFAULT ''::character varying,
|
||||||
|
reminderpostid character varying(26),
|
||||||
|
broadcastchannelid character varying(26) DEFAULT ''::character varying,
|
||||||
|
previousreminder bigint DEFAULT '0'::bigint NOT NULL,
|
||||||
|
remindermessagetemplate character varying(65536) DEFAULT ''::text,
|
||||||
|
currentstatus character varying(1024) DEFAULT 'Active'::character varying NOT NULL,
|
||||||
|
reporteruserid character varying(26) DEFAULT ''::character varying NOT NULL,
|
||||||
|
concatenatedinviteduserids character varying(65536) DEFAULT ''::text,
|
||||||
|
defaultcommanderid character varying(26) DEFAULT ''::character varying,
|
||||||
|
announcementchannelid character varying(26) DEFAULT ''::character varying,
|
||||||
|
concatenatedwebhookoncreationurls character varying(65536) DEFAULT ''::text,
|
||||||
|
concatenatedinvitedgroupids character varying(65536) DEFAULT ''::text,
|
||||||
|
retrospective character varying(65536) DEFAULT ''::text,
|
||||||
|
messageonjoin character varying(65536) DEFAULT ''::text,
|
||||||
|
retrospectivepublishedat bigint DEFAULT '0'::bigint NOT NULL,
|
||||||
|
retrospectivereminderintervalseconds bigint DEFAULT '0'::bigint NOT NULL,
|
||||||
|
retrospectivewascanceled boolean DEFAULT false,
|
||||||
|
concatenatedwebhookonstatusupdateurls character varying(65536) DEFAULT ''::text,
|
||||||
|
laststatusupdateat bigint DEFAULT '0'::bigint,
|
||||||
|
exportchannelonfinishedenabled boolean DEFAULT false NOT NULL,
|
||||||
|
categorizechannelenabled boolean DEFAULT false,
|
||||||
|
categoryname character varying(65536) DEFAULT ''::text,
|
||||||
|
concatenatedbroadcastchannelids character varying(65536) DEFAULT ''::text,
|
||||||
|
channelidtorootid character varying(65536) DEFAULT ''::text,
|
||||||
|
remindertimerdefaultseconds bigint DEFAULT '0'::bigint NOT NULL,
|
||||||
|
statusupdateenabled boolean DEFAULT true,
|
||||||
|
retrospectiveenabled boolean DEFAULT true
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.ir_incident OWNER TO mattermost;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_blocks; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.focalboard_blocks (
|
||||||
|
id character varying(36) NOT NULL,
|
||||||
|
insert_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
|
parent_id character varying(36),
|
||||||
|
schema bigint,
|
||||||
|
type text,
|
||||||
|
title text,
|
||||||
|
fields json,
|
||||||
|
create_at bigint,
|
||||||
|
update_at bigint,
|
||||||
|
delete_at bigint,
|
||||||
|
root_id character varying(36),
|
||||||
|
modified_by character varying(36) NOT NULL,
|
||||||
|
workspace_id character varying(36) NOT NULL,
|
||||||
|
created_by character varying(36) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE public.focalboard_blocks OWNER TO mattermost;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_blocks_history; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.focalboard_blocks_history (
|
||||||
|
id character varying(36) NOT NULL,
|
||||||
|
insert_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
|
parent_id character varying(36),
|
||||||
|
schema bigint,
|
||||||
|
type text,
|
||||||
|
title text,
|
||||||
|
fields json,
|
||||||
|
create_at bigint,
|
||||||
|
update_at bigint,
|
||||||
|
delete_at bigint,
|
||||||
|
root_id character varying(36),
|
||||||
|
modified_by character varying(36),
|
||||||
|
workspace_id character varying(36),
|
||||||
|
created_by character varying(36)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE public.focalboard_blocks_history OWNER TO mattermost;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_sessions; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.focalboard_sessions (
|
||||||
|
id character varying(100) NOT NULL,
|
||||||
|
token character varying(100),
|
||||||
|
user_id character varying(100),
|
||||||
|
props json,
|
||||||
|
create_at bigint,
|
||||||
|
update_at bigint,
|
||||||
|
auth_service character varying(20)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.focalboard_sessions OWNER TO mattermost;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_users; Type: TABLE; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS public.focalboard_users (
|
||||||
|
id character varying(100) NOT NULL,
|
||||||
|
username character varying(100),
|
||||||
|
email character varying(255),
|
||||||
|
password character varying(100),
|
||||||
|
mfa_secret character varying(100),
|
||||||
|
auth_service character varying(20),
|
||||||
|
auth_data character varying(255),
|
||||||
|
props json,
|
||||||
|
create_at bigint,
|
||||||
|
update_at bigint,
|
||||||
|
delete_at bigint
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE public.focalboard_users OWNER TO mattermost;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_blocks idx_25969_primary; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.focalboard_blocks
|
||||||
|
ADD CONSTRAINT idx_25969_primary PRIMARY KEY (workspace_id, id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_blocks_history idx_25975_primary; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.focalboard_blocks_history
|
||||||
|
ADD CONSTRAINT idx_25975_primary PRIMARY KEY (id, insert_at);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_sessions idx_25987_primary; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.focalboard_sessions
|
||||||
|
ADD CONSTRAINT idx_25987_primary PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: focalboard_users idx_26003_primary; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.focalboard_users
|
||||||
|
ADD CONSTRAINT idx_26003_primary PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_channelaction idx_26042_primary; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.ir_channelaction
|
||||||
|
ADD CONSTRAINT idx_26042_primary PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_incident idx_26049_primary; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.ir_incident
|
||||||
|
ADD CONSTRAINT idx_26049_primary PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_category_item ir_category_item_pkey; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.ir_category_item
|
||||||
|
ADD CONSTRAINT ir_category_item_pkey PRIMARY KEY (categoryid, itemid, type);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_category ir_category_pkey; Type: CONSTRAINT; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.ir_category
|
||||||
|
ADD CONSTRAINT ir_category_pkey PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_category_item_categoryid; Type: INDEX; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS ir_category_item_categoryid ON public.ir_category_item USING btree (categoryid);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: ir_category_teamid_userid; Type: INDEX; Schema: public; Owner: mattermost
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS ir_category_teamid_userid ON public.ir_category USING btree (teamid, userid);
|
||||||
|
|
73
reinstall_postgresql.sh
Executable file
73
reinstall_postgresql.sh
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
MATTERMOST_VERSION="9.11.6"
|
||||||
|
|
||||||
|
# Postgresql
|
||||||
|
psql_db_host="10.0.3.147"
|
||||||
|
psql_db_port="5432"
|
||||||
|
psql_db_name="mattermost"
|
||||||
|
psql_db_user="mattermost"
|
||||||
|
psql_db_password='C5jzznfvn.-WV6J7-4rgT'
|
||||||
|
|
||||||
|
POSTGRES_DSN="postgres://${psql_db_user}:${psql_db_password}@${psql_db_host}:${psql_db_port}/${psql_db_name}"
|
||||||
|
|
||||||
|
# Mysql
|
||||||
|
mysql_db_host="10.0.3.147"
|
||||||
|
mysql_db_port="3306"
|
||||||
|
mysql_db_name="mattermost"
|
||||||
|
mysql_db_user="mattermost"
|
||||||
|
mysql_db_password='C5jzznfvn%%WV6J7-4rgT'
|
||||||
|
|
||||||
|
pgloader_bin='/usr/local/src/pgloader/pgloader/build/bin/pgloader'
|
||||||
|
|
||||||
|
MYSQL_DSN="${mysql_db_user}:${mysql_db_password}@tcp(${mysql_db_host}:${mysql_db_port})/${mysql_db_name}"
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
scho -e "\n\tapt purge -y postgresql postgresql-*"
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt purge -y postgresql postgresql-*
|
||||||
|
|
||||||
|
echo -e "\n\trm -rf /var/lib/postgresql"
|
||||||
|
rm -rf /var/lib/postgresql
|
||||||
|
|
||||||
|
echo -e "\n\trm -rf /etc/postgresql"
|
||||||
|
rm -rf /etc/postgresql
|
||||||
|
|
||||||
|
echo -e "\n\trm -rf /var/log/postgresql"
|
||||||
|
rm -rf /var/log/postgresql
|
||||||
|
|
||||||
|
echo -e "\n\tDEBIAN_FRONTEND=noninteractive apt install -y --allow-unauthenticated postgresql"
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt install -y --allow-unauthenticated postgresql
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\n\t"cp -a /etc/postgresql/15/main/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf.ORIG
|
||||||
|
cp -a /etc/postgresql/15/main/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf.ORIG
|
||||||
|
echo -e "\n\t"cp /root/postgresql_15_main/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf
|
||||||
|
cp /root/postgresql_15_main/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf
|
||||||
|
|
||||||
|
echo -e "\n\t"etc/postgresql/15/main/postgresql.conf /etc/postgresql/15/main/postgresql.conf.ORIG
|
||||||
|
cp -a /etc/postgresql/15/main/postgresql.conf /etc/postgresql/15/main/postgresql.conf.ORIG
|
||||||
|
echo -e "\n\t"p /root/postgresql_15_main/postgresql.conf /etc/postgresql/15/main/postgresql.conf
|
||||||
|
cp /root/postgresql_15_main/postgresql.conf /etc/postgresql/15/main/postgresql.conf
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
sudo -u postgres psql -c "CREATE DATABASE ${psql_db_name};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "CREATE USER ${psql_db_user} WITH PASSWORD '${psql_db_password}';"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT ALL PRIVILEGES ON DATABASE ${psql_db_name} to ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "ALTER DATABASE ${psql_db_name} OWNER TO ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "ALTER SCHEMA public OWNER TO ${psql_db_user};"
|
||||||
|
sudo -u postgres psql ${psql_db_name} -c "GRANT ALL ON SCHEMA public to ${psql_db_user};"
|
||||||
|
|
||||||
|
echo -e "\n\tsystemctl stop postgresql"
|
||||||
|
systemctl stop postgresql
|
||||||
|
|
||||||
|
echo -e "\n\tsystemctl start postgresql"
|
||||||
|
systemctl start postgresql
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
exit 0
|
||||||
|
|
@ -218,6 +218,8 @@ DEFAULT_FQHN_HOSTNAME="$(hostname -f)"
|
|||||||
DEFAULT_MATTERMOST_USER="mattermost"
|
DEFAULT_MATTERMOST_USER="mattermost"
|
||||||
DEFAULT_MATTERMOST_GROUP="mattermost"
|
DEFAULT_MATTERMOST_GROUP="mattermost"
|
||||||
|
|
||||||
|
DEFAULT_DB_TYPE="pgsql"
|
||||||
|
|
||||||
DEFAULT_MATTERMOST_BASE_INSTALL_PATH="/opt"
|
DEFAULT_MATTERMOST_BASE_INSTALL_PATH="/opt"
|
||||||
DEFAULT_MATTERMOST_TMP_DIR="/tmp"
|
DEFAULT_MATTERMOST_TMP_DIR="/tmp"
|
||||||
|
|
||||||
@ -231,6 +233,9 @@ fi
|
|||||||
|
|
||||||
[[ -n "$FQHN_HOSTNAME" ]] && DEFAULT_FQHN_HOSTNAME="$FQHN_HOSTNAME"
|
[[ -n "$FQHN_HOSTNAME" ]] && DEFAULT_FQHN_HOSTNAME="$FQHN_HOSTNAME"
|
||||||
|
|
||||||
|
if [[ -z "$DB_TYPE" ]] ; then
|
||||||
|
fatal "Missing database type (DB_TYPE)!"
|
||||||
|
fi
|
||||||
if [[ -z "$DB_NAME" ]] ; then
|
if [[ -z "$DB_NAME" ]] ; then
|
||||||
fatal "Missing database name (DB_NAME)!"
|
fatal "Missing database name (DB_NAME)!"
|
||||||
fi
|
fi
|
||||||
@ -308,7 +313,8 @@ else
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MATTERMOST_CURRENT_VERSION="$(${MATTERMOST_BASE_INSTALL_PATH}/mattermost/bin/mattermost version 2> /dev/null | grep -E "^Build Number:" | cut -d' ' -f3)"
|
MATTERMOST_CURRENT_VERSION="$(${MATTERMOST_BASE_INSTALL_PATH}/mattermost/bin/mattermost version 2> /dev/null | grep -E "^Version:" | cut -d' ' -f2)"
|
||||||
|
MATTERMOST_CURRENT_BUILD_NUMBER="$(${MATTERMOST_BASE_INSTALL_PATH}/mattermost/bin/mattermost version 2> /dev/null | grep -E "^Build Number:" | cut -d' ' -f3)"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -404,12 +410,13 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then
|
if [[ "$DB_TYPE" = "mysql" ]] ; then
|
||||||
|
if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then
|
||||||
if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then
|
if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then
|
||||||
fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!"
|
fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!"
|
||||||
fi
|
fi
|
||||||
USE_MYSQL_CREDENTIAL_ARGS=true
|
USE_MYSQL_CREDENTIAL_ARGS=true
|
||||||
else
|
else
|
||||||
USE_MYSQL_CREDENTIAL_ARGS=false
|
USE_MYSQL_CREDENTIAL_ARGS=false
|
||||||
|
|
||||||
_MYSQL_ROOT_PW=""
|
_MYSQL_ROOT_PW=""
|
||||||
@ -437,6 +444,7 @@ else
|
|||||||
fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again."
|
fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again."
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -446,6 +454,7 @@ blank_line
|
|||||||
echo -e "\033[32mStart upgrade script for Mattermost Server with the following parameters\033[m"
|
echo -e "\033[32mStart upgrade script for Mattermost Server with the following parameters\033[m"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " Mattermost current Server Version.: $MATTERMOST_CURRENT_VERSION"
|
echo -e " Mattermost current Server Version.: $MATTERMOST_CURRENT_VERSION"
|
||||||
|
echo -e " Mattermost current Build Number...: $MATTERMOST_CURRENT_BUILD_NUMBER"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " Mattermost New Server Version.....: \033[33m\033[1m$MM_NEW_VERSION\033[m"
|
echo -e " Mattermost New Server Version.....: \033[33m\033[1m$MM_NEW_VERSION\033[m"
|
||||||
echo ""
|
echo ""
|
||||||
@ -460,10 +469,18 @@ echo -e " Mattermost user...................: $MATTERMOST_USER"
|
|||||||
echo -e " Mattermost group..................: $MATTERMOST_GROUP"
|
echo -e " Mattermost group..................: $MATTERMOST_GROUP"
|
||||||
echo ""
|
echo ""
|
||||||
echo ""
|
echo ""
|
||||||
if $USE_MYSQL_CREDENTIAL_ARGS ; then
|
if [[ "${DB_TYPE}" = "pgsql" ]] ; then
|
||||||
echo -e " MYSQL_CREDENTIAL_ARGS.............: $MYSQL_CREDENTIAL_ARGS"
|
echo -e " Database Type.....................: PostgreSQL"
|
||||||
else
|
else
|
||||||
|
echo -e " Database Type.....................: MySQL"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
if [[ "${DB_TYPE}" = "mysql" ]]; then
|
||||||
|
if $USE_MYSQL_CREDENTIAL_ARGS ; then
|
||||||
|
echo -e " MYSQL_CREDENTIAL_ARGS.............: $MYSQL_CREDENTIAL_ARGS"
|
||||||
|
else
|
||||||
echo -e " Root password MySQL...............: **"
|
echo -e " Root password MySQL...............: **"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " Database Name.....................: $DB_NAME"
|
echo -e " Database Name.....................: $DB_NAME"
|
||||||
@ -586,9 +603,10 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echononl "Backup mattermost database.."
|
echononl "Backup mattermost database.."
|
||||||
mysqldump --login-path=local --opt $DB_NAME \
|
if [[ "${DB_TYPE}" = "mysql" ]]; then
|
||||||
|
mysqldump --login-path=local --opt $DB_NAME \
|
||||||
> ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file
|
> ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "$log_file")"
|
error "$(cat "$log_file")"
|
||||||
|
|
||||||
@ -600,8 +618,26 @@ if [[ $? -ne 0 ]]; then
|
|||||||
read OK
|
read OK
|
||||||
done
|
done
|
||||||
[[ $OK = "yes" ]] || fatal "Stopped by user"
|
[[ $OK = "yes" ]] || fatal "Stopped by user"
|
||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
pg_dump -U ${DB_USER} -F p -c ${DB_NAME} -f ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "$log_file")"
|
||||||
|
|
||||||
|
echononl "continue anyway [yes/no]: "
|
||||||
|
read OK
|
||||||
|
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
|
||||||
|
echononl "Wrong entry! - repeat [yes/no]: "
|
||||||
|
read OK
|
||||||
|
done
|
||||||
|
[[ $OK = "yes" ]] || fatal "Stopped by user"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echononl "Backup mattermost installation directory.."
|
echononl "Backup mattermost installation directory.."
|
||||||
|
Reference in New Issue
Block a user