Mattermost, Inc.

[Solved] Debian 8 - Issue with Mattermost service

Hello,

I’m quite new to mattermost. I’ve been trying to install it on a Debian 8.

Everything is going well, my nginx is well configured as well as my mattermost installation.

I’ve been experiencing issue when I’m trying to run the mattermost daemon (/etc/init.d/mattermost). The service status says it’s active and working:
● mattermost.service - LSB: Mattermost Group Chat
Loaded: loaded (/etc/init.d/mattermost)
Active: active (exited) since Mon 2016-02-01 13:46:21 CET; 8min ago
Process: 3503 ExecStop=/etc/init.d/mattermost stop (code=exited, status=0/SUCCESS)
Process: 3508 ExecStart=/etc/init.d/mattermost start (code=exited, status=0/SUCCESS)

Feb 01 13:46:21 vps242230.ovh.net mattermost[3508]: Starting Mattermost: mattermost.

However, the website does not work. It only works when I run manually /opt/mattermost/bin/platform.
I see the request going trough nginx, but they do not seem to be forwarded to the mattermost daemon (I have a 502 error Bad gateway occuring).

Does anybody is experiencing the same issue ?

here is my service declaration from the documentation:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          mattermost
# Required-Start:    $network $syslog
# Required-Stop:     $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Mattermost Group Chat
# Description:       Mattermost: An open-source Slack
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Mattermost"
NAME=mattermost
MATTERMOST_ROOT=/opt/mattermost
MATTERMOST_GROUP=mattermost
MATTERMOST_USER=mattermost
DAEMON="$MATTERMOST_ROOT/bin/platform"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

. /lib/lsb/init-functions

do_start() {
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    start-stop-daemon --start --quiet \
        --chuid $MATTERMOST_USER:$MATTERMOST_GROUP --chdir $MATTERMOST_ROOT --background \
        --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
        || return 1
    start-stop-daemon --start --quiet \
        --chuid $MATTERMOST_USER:$MATTERMOST_GROUP --chdir $MATTERMOST_ROOT --background \
        --make-pidfile --pidfile $PIDFILE --exec $DAEMON \
        || return 2
}

#
# Function that stops the daemon/service
#
do_stop() {
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
        --pidfile $PIDFILE --exec $DAEMON
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently.  A last resort is to
    # sleep for some time.
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 \
        --exec $DAEMON
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
}

case "$1" in
start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
        0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
        *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
*)
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0

Keep up the good work :wink:
Regards,
Samir Boulil

Hi,
I´ve got exactly the same problem and it seems to be this:

Active: active (exited) since Mon 2016-02-01 13:46:21 CET; 8min ago

So, if you check the systemctl you will see that the mattermost service is not running (exited).

I followed some advices found online and checked the logfile:

[2016/02/05 08:59:28 CET] [INFO] Current version is 1.3.0 (4896/Mon Dec 14 23:57:09 UTC 2015/f51d45f6cba0e5a1249146afe4a1c78cf32b7598)
[2016/02/05 08:59:28 CET] [INFO] Current working directory is /opt/mattermost/bin
[2016/02/05 08:59:28 CET] [INFO] Loaded config file from /opt/mattermost/config/config.json
[2016/02/05 08:59:28 CET] [INFO] Server is initializing…
[2016/02/05 08:59:28 CET] [INFO] Pinging sql master database
[2016/02/05 08:59:28 CET] [INFO] Pinging sql replica-0 database
[2016/02/05 08:59:28 CET] [INFO] Starting Server…
[2016/02/05 08:59:28 CET] [INFO] Server is listening on :8065
[2016/02/05 08:59:28 CET] [INFO] RateLimiter is enabled
[2016/02/05 09:05:26 CET] [INFO] Stopping Server…
[2016/02/05 09:05:26 CET] [INFO] Closing SqlStore

It seems, there is a mistake within the /etc/init.d/mattermost … unfortunately I have no idea as I took it from the installation guide.

If somebody have any idea to fix that, I´ll appreciate it and if I find out, i will post it :wink:

Good Catch! I’ll also try to look it up.

Surely a permission issue…

Thanks :wink:

Did you fix it?
I have still the same problem :confused:

Nope :s…

What I do to make it work is /opt/mattermost/bin/platform &. So that I can still use it.

After

./platform -config=/opt/mattermost/config/config.json

you get the following error:

panic: Error decoding config file=/opt/mattermost/config/config.json, err=invalid character ‘"’ after object key:value pair

I checked the config.json but couldn´t find any mistake and I compared with the original from the packet, too. No clue.

Can you verify your config file is well formed json, using something like this https://jsonformatter.curiousconcept.com/?

The error message loooks like it’s saying your config file isn’t well formed.

I went further on:
I created a mattermost.service within the systemd. The following link was helpful

http://zwarag.com/2015/10/how-to-use-systemd-to-run-the-mattermost-chat-platform/

After a reboot I checked whether the service was started, but wasn´t.

I found on github a similar issue, where was a problem with the user rights

For a test I changed the User in the mattermost.service file to root … and it works.
So finally: use the systemd file and fix the user rights and the problem is solved :wink:

I had the same issue. The problem was, that on boot the system starts mattermost before mysql. Without mysql running, mattermost exited silently. As a simple fix I added mysql to Required-Start inside the init.d script. After a systemctl enable mattermost.service mattermost starts without problems on boot.