summaryrefslogtreecommitdiffstats
path: root/doc/install/prod-ubuntu.md
blob: fb0466cd8bacf4354818dc91031cfa84df99820c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# Production Installation on Ubuntu 14.04 LTS

## Install Ubuntu Server 14.04 LTS
1. Set up 3 machines with Ubuntu 14.04 with 2GB of RAM or more.  The servers will be used for the Load Balancer, Mattermost, and Database.
1. Make sure the system is up to date with the most recent security patches.
  * ```~$ sudo apt-get update```
  * ```~$ sudo apt-get upgrade```

## Setup Database Server
1. For the purposes of this guide we will assume this server has an IP address of 10.10.10.1
1. Install PostgreSQL 9.3+ (or MySQL 5.2+)
  * ```~$ sudo apt-get install postgresql postgresql-contrib```
1. PostgreSQL created a user account called `postgres`.  You will need to log into that account with:
  * ```~$ sudo -i -u postgres```
1. You can get a PostgreSQL prompt by typing:
  * ```~$ psql```
1. Create the Mattermost database by typing:
  * ```postgres=# CREATE DATABASE mattermost;```
1. Create the Mattermost user by typing:
  * ```postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser_password';```
1. Grant the user access to the Mattermost database by typing:
  * ```postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;```
1. You can exit out of PostgreSQL by typing:
  * ```postgre=# \q```
1. You can exit the postgres account by typing:
  * ```~$ exit```

## Setup Mattermost Server
1. For the purposes of this guide we will assume this server has an IP address of 10.10.10.2
1. Download the lastest Mattermost Server by typing:
  * ```~$ wget https://github.com/mattermost/platform/releases/download/v1.0.0/mattermost.tar.gz```
1. Unzip the Mattermost Server by typing:
  * ```~$ tar -xvzf mattermost.tar.gz```
1. For the sake of making this guide simple we located the files at `/home/ubuntu/mattermost`, in the future we will give guidance for storing under `/opt`.
1. We have also elected to run the Mattermost Server as the `ubuntu` account for simplicity.  We recommend settings up and running the service under a `mattermost` user account with limited permissions.
1. Create the stoarge directory for files.  We assume you will have attached a large drive for storage of images and files.  For this setup we will assume the directory is located at `/mattermost/data`.
  * Create the direcotry by typing:
  * ```~$ sudo mkdir -p /mattermost/data```
  * Set the ubuntu account as the directory owner by typing:
  * ```~$ sudo chown -R ubuntu /mattermost```
1. Configure Mattermost Server by editing the config.json file at /home/ubuntu/mattermost/config`
  * ```~$ cd ~/mattermost/config```
  * Edit the file by typing:
  * ```~$ vi config.json```
  * replace `DriverName": "mysql"` with `DriverName": "postgres"`
  * replace `"DataSource": "mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8"` with `"DataSource": "postgres://mmuser:mmuser_password@10.10.10.1:5432/mattermost?sslmode=disable&connect_timeout=10"`
  * Optionally you may continue to edit configuration settings in `config.json` or use the System Console described in a later section to finish the configuration.
1. Test the Mattermost Server
  * ```~$ cd ~/mattermost/bin```
  * Run the Mattermost Server by typing:
  * ```~$ ./platform```
  * You should see a console log like `Server is listening on :8065` letting you know the service is running.
  * Stop the server for now by typing `ctrl-c`
1. Setup Mattermost to use the Ubuntu Upstart daemon which handles supervision of the Mattermost process.
  * ```~$ sudo touch /etc/init/mattermost.conf```
  * ```~$ sudo vi /etc/init/mattermost.conf```
  * Copy the following lines into `/etc/init/mattermost.conf`
  * ```start on runlevel [2345]
	stop on runlevel [016]
	respawn
	chdir /home/ubuntu/mattermost
	setuid ubuntu
	exec bin/platform
	``` 
  * You can manage the process by typing:
  * ```~$ sudo start mattermost```
  * Verify the service is running by typing:
  * ```~$ curl http://10.10.10.2:8065```
  * You should see a page titles *Mattermost - Signup*
  * You can also stop the process by running the command `~$ sudo stop mattermost`, but we will skip this step for now.

## Setup Nginx Server
1. For the purposes of this guide we will assume this server has an IP address of 10.10.10.3
1. We use Nginx for proxying request to the Mattermost Server.  The main benefits are:
  * SSL terminiation
  * http to https redirect
  * Port mapping :80 to :8065
  * Standard request logs
1. Install Nginx on Ubuntu with
  * ```~$ sudo apt-get install nginx```
1. Verify Nginx is running
  * ```~$ curl http://10.10.10.3```
  * You should see a *Welcome to nginx!* page
1. You can manage Nginx with the following commands
  * ```~$ sudo service nginx stop```
  * ```~$ sudo service nginx start```
  * ```~$ sudo service nginx restart```
1. Map a FQDN (fully qualified domain name) like **mattermost.example.com** to point to the Nginx server.
1. Configure Nginx to proxy connections from the internet to the Mattermost Server
  * Create a configuration for Mattermost
  * ```~$ sudo touch /etc/nginx/sites-available/mattermost```
  * Below is a sample configuration with the minimum settings required to configure Mattermost.
  * ```
    server {
      location / {
		  client_max_body_size 50M;
		  proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
		  proxy_set_header Host $http_host;
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		  proxy_set_header X-Forwarded-Proto $scheme;
		  proxy_set_header   X-Frame-Options   SAMEORIGIN;
          proxy_pass http://localhost:8065;
      }
    }```
  * Remove the existing file with
  * ```~$ sudo rm /etc/nginx/sites-enabled/default```
  * Link the mattermost config by typing:
  * ```sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost```
  * Restart Nginx by typing:
  * ```~$ sudo service nginx restart```
  * Verify you can see Mattermost thru the proxy by typing:
  * ```~$ curl http://localhost```
  * You should see a page titles *Mattermost - Signup*
  














1. Download [latest stable compiled verison of Mattermost](https://github.com/mattermost/platform/releases) from GitHub 
2. Set up machine with Ubuntu 14.04 with 2GB of RAM or similar 
3. Install and configure Ngnix as a proxy to Mattermost 
4. Install SSL certificate 
5. Configure proxy pass thru
6. Install Postgres 9.3+ or MySQL 5.2+ (optionally, this install could be made on another machine)
7. Create a database using following SQL commands:  

   ```
   DROP DATABASE mattermost;
   CREATE DATABASE mattermost;
   CREATE USER mmuser WITH PASSWORD 'mostest';
   GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
   ```
8. Replace and configure SQL settings section of config.json file with:  

   ```
"DriverName": "mysql",
"DataSource": "mmuser:mostest@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8",
"DataSourceReplicas": ["mmuser:mostest@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8"],
   ```
or 
   ```
"DriverName": "postgres",
"DataSource": "postgres://mmuser:password@localhost:5432/mattermost?sslmode=disable&connect_timeout=10",
"DataSourceReplicas": ["postgres://mmuser:password@localhost:5432/mattermost?sslmode=disable&connect_timeout=10"],
```
9. [Set up email notifications](https://github.com/mattermost/platform/blob/master/doc/config/smtp-email-setup.md)
10. On Ubuntu configure upstart to manage the mattermost process (or configure something similar using systemd) then copy following lines to /etc/init/mattermost.conf

  ```
  start on runlevel [2345]
  stop on runlevel [016]
  respawn
  chdir /home/ubuntu/mattermost
  setuid ubuntu
  exec bin/platform
  ``` 
11. Run `sudo start mattermost`
12. Then `curl localhost:8065`