| Server IP : 104.129.129.72 / Your IP : 216.73.216.229 Web Server : LiteSpeed System : Linux 123answers 5.15.0-143-generic #153-Ubuntu SMP Fri Jun 13 19:10:45 UTC 2025 x86_64 User : answe8064 ( 1002) PHP Version : 8.2.28 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /opt/installer/apps/ |
Upload File : |
#!/bin/bash
# Add this at the begining of all scripts.
if [ -f "include/startup.sh" ]; then
. include/startup.sh
elif [ -f "../include/startup.sh" ]; then
. ../include/startup.sh
fi
checkTagExist mysqld.success
checkTagExist ssl-ready.success
appVersion=5.18.2
appPath=/opt/mattermost
rootDir=$(rootDir)
certsPath=/etc/letsencrypt/live/${CWM_DISPLAYED_ADDRESS}
mmuser_name="mmuser"
mmuser_password=`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo ''`
echo "Preparing database for application" | log
mysql --defaults-file=/root/.my.cnf -h localhost <<EOF
CREATE USER '${mmuser_name}'@'127.0.0.1' IDENTIFIED BY '${mmuser_password}';
CREATE DATABASE mattermost;
GRANT ALL PRIVILEGES ON mattermost.* TO '${mmuser_name}'@'127.0.0.1';
EOF
echo "Downloading and extracting application" | log
mkdir -p $appPath
cd $rootDir/temp
curlDownload https://releases.mattermost.com/$appVersion/mattermost-$appVersion-linux-amd64.tar.gz
waitOrStop 0 "File not downloaded from official source"
tar -xvzf mattermost*.gz
waitOrStop 0 "Failed to extract archive"
cd mattermost
mv * $appPath/
mkdir -p $appPath/data
echo "Preparing system users for application" | log
useradd --system --user-group mattermost
chown -R mattermost:mattermost $appPath
chmod -R g+w $appPath
$appPath/bin/mattermost config set SqlSettings.DriverName mysql
dataSource="${mmuser_name}:${mmuser_password}@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
$appPath/bin/mattermost config set SqlSettings.DataSource $dataSource
chown mattermost:mattermost $appPath/config/config.json
echo "Setting up application as a system service" | log
cat << EOF > /lib/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service
[Service]
Type=notify
ExecStart=${appPath}/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=${appPath}
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=mysql.service
EOF
systemctl daemon-reload
waitOrStop 0 "Reload systemctl failed"
systemctl enable mattermost.service
systemctl start mattermost.service
waitOrStop 0 "Starting mattermost service failed"
echo "Setting HTTPS support" | log
$appPath/bin/mattermost config set ServiceSettings.TLSKeyFile $certsPath/privkey.pem
$appPath/bin/mattermost config set ServiceSettings.TLSCertFile $certsPath/cert.pem
$appPath/bin/mattermost config set ServiceSettings.ListenAddress :443
$appPath/bin/mattermost config set ServiceSettings.Forward80To443 true
$appPath/bin/mattermost config set ServiceSettings.ConnectionSecurity TLS
$appPath/bin/mattermost config set ServiceSettings.UseLetsEncrypt true
setcap cap_net_bind_service=+ep $appPath/bin/mattermost
systemctl restart mattermost.service
waitOrStop 0 "Restart mattermost service failed"
echo "Adding descriptions" | log
descriptionAppend "Mattermost Database Username: ${mmuser_name}"
descriptionAppend "Mattermost Database Password: ${mmuser_password}"
descriptionAppend " "
descriptionAppend "Mattermost Web UI: https://${CWM_DISPLAYED_ADDRESS}"
descriptionAppend "# Open Web UI to set Admin Username and Password"
descriptionAppend " "
tagScript success
exit 0