2014-02-25 17:19:12 +08:00
The [Discourse Docker Image][dd] makes it easy to set up Discourse on a cloud server. We will use [Digital Ocean][do], although these steps will work on other similar services.
2014-02-23 15:16:56 +08:00
2014-02-25 17:19:12 +08:00
This guide assumes that you have no knowledge of Ruby/Rails or Linux shell. Feel free to skip steps you are comfortable with.
2014-02-23 15:16:56 +08:00
2014-02-23 19:03:21 +08:00
# Create New Digital Ocean Droplet
2014-02-23 15:16:56 +08:00
2014-03-01 07:34:34 +08:00
Discourse requires a minimum of 1 GB RAM, however **2 GB RAM is strongly recommended** . We'll use "discourse" as the Hostname.
2014-02-23 15:16:56 +08:00
2014-03-01 07:34:34 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3506/a6b550bd2b05b76b.png" width = "638" height = "500" >
2014-02-23 15:16:56 +08:00
2014-02-24 01:38:06 +08:00
Install Discourse on Ubuntu 12.04.3 LTS x64. We always recommend using [the current LTS distribution][lts].
2014-02-23 15:16:56 +08:00
2014-02-23 16:36:09 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3399/f3fc67ee6aa90ea4.png" width = "690" height = "477" >
2014-02-23 15:16:56 +08:00
2014-02-24 01:38:06 +08:00
You will receive a mail from Digital Ocean with the root password to your Droplet. (However, if you use SSH keys, you may not need a password to log in.)
2014-02-23 15:16:56 +08:00
2014-02-23 19:03:21 +08:00
# Access Your Droplet
2014-02-23 15:16:56 +08:00
2014-02-24 01:38:06 +08:00
Connect to your Droplet via SSH:
2014-02-23 15:16:56 +08:00
ssh root@192.168.1.1
2014-02-24 01:38:06 +08:00
(Alternately, use [Putty][put] on Windows)
Replace `192.168.1.1` with the IP address of your Droplet.
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/2999/0934a0158459ec3f.png" width = "571" height = "130" >
2014-02-25 17:19:12 +08:00
You will be asked for permission to connect, type `yes` , then the root password, which is in the email Digital Ocean sent you when the Droplet was set up. Enter it.
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3000/8209c1e40c9d70a8.png" width = "570" height = "278" >
# Install Git
2014-02-27 22:36:14 +08:00
apt-get install git
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3002/eafbf14df8eee832.png" width = "572" height = "263" >
# Generate SSH Key
2014-02-25 17:19:12 +08:00
**We strongly recommend setting a SSH key because you may need to access the Rails console for debugging purposes. This < i > cannot< / i > be done after bootstrapping the app.**
2014-02-23 15:16:56 +08:00
ssh-keygen -t rsa -C "your_email@example.com"
2014-02-23 16:02:29 +08:00
(We want the default settings, so when asked to enter a file in which to save the key, just press < kbd > enter< / kbd > . Via [GitHub's SSH guide][ssh].)
2014-02-23 15:16:56 +08:00
# Install Docker
2014-02-27 22:36:14 +08:00
apt-get update
apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3001/e94722e882f28994.png" width = "566" height = "339" >
Reboot the server:
2014-02-27 22:36:14 +08:00
reboot
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3003/d3cc759ced335d25.png" width = "532" height = "155" >
2014-02-25 17:19:12 +08:00
This will log you out from your SSH session, so reconnect:
2014-02-23 15:16:56 +08:00
ssh root@192.168.1.1
2014-02-23 15:40:04 +08:00
Finish installing Docker:
2014-02-23 15:16:56 +08:00
2014-02-27 22:36:14 +08:00
wget -qO- https://get.docker.io/ | sh
2014-02-23 15:16:56 +08:00
# Install Discourse
2014-02-23 15:40:04 +08:00
Create a `/var/docker` folder where all the Docker related stuff will reside:
2014-02-23 15:16:56 +08:00
mkdir /var/docker
2014-02-23 16:02:29 +08:00
Clone the [Official Discourse Docker Image][dd] into this `/var/docker` folder:
2014-02-23 15:16:56 +08:00
2014-02-25 17:27:34 +08:00
git clone https://github.com/discourse/discourse_docker.git /var/docker
2014-02-23 15:16:56 +08:00
2014-02-25 17:19:12 +08:00
Switch to your Docker folder:
2014-02-23 15:16:56 +08:00
cd /var/docker
Copy the `samples/standalone.yml` file into the `containers` folder as `app.yml` , so the path becomes `containers/app.yml` :
cp samples/standalone.yml containers/app.yml
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3005/5c253f4657e2133f.png" width = "571" height = "56" >
2014-02-24 02:11:34 +08:00
Edit `app.yml` :
2014-02-23 15:16:56 +08:00
nano containers/app.yml
2014-02-24 01:38:06 +08:00
(We recommend Nano because it works like a typical GUI text editor, just use your arrow keys. Hit < kbd > Ctrl< / kbd > < kbd > O< / kbd > then < kbd > Enter< / kbd > to save and < kbd > Ctrl< / kbd > < kbd > X< / kbd > to exit. However, feel free to choose whatever text editor you like. In the below screenshot we use Vim.)
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3006/ed9f51b3a44f2b86.png" width = "572" height = "451" >
2014-02-24 02:11:34 +08:00
Edit as desired, but at minimum set `DISCOURSE_DEVELOPER_EMAILS` and `DISCOURSE_HOSTNAME` .
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/2979/e6fedbde9b471880.png" width = "565" height = "172" >
2014-02-26 04:26:03 +08:00
We renamed `DISCOURSE_HOSTNAME` to `discourse.techapj.com` , this means that we want to host our instance of Discourse on `http://discourse.techapj.com/` . You'll need to modify your DNS records to reflect the IP address and preferred URL address of your server.
2014-02-23 15:16:56 +08:00
2014-02-24 01:38:06 +08:00
# Mail Setup
2014-02-23 15:16:56 +08:00
2014-02-23 17:39:15 +08:00
**Email is critical to Discourse. We strongly recommend configuring mail settings before bootstrapping.**
2014-02-23 15:16:56 +08:00
2014-02-23 15:40:04 +08:00
- If you already have a mail server, put your existing mail server credentials in the `app.yml` file.
2014-02-23 15:16:56 +08:00
2014-02-24 01:41:04 +08:00
- Otherwise, create a free account on [**Mandrill**][man] (or [Mailgun][gun], or [Mailjet][jet]), and put your mail credentials (available via the Mandrill dashboard) in the `app.yml` file. The settings you want to change are `DISCOURSE_SMTP_ADDRESS` , `DISCOURSE_SMTP_PORT` , `DISCOURSE_SMTP_USER_NAME` , `DISCOURSE_SMTP_PASSWORD` .
2014-02-23 15:16:56 +08:00
2014-02-28 15:03:17 +08:00
- Be sure you remove the comment character `#` from the beginning of these mail configuration lines!
2014-02-24 01:38:06 +08:00
# Add Your SSH Key
2014-02-23 15:16:56 +08:00
2014-02-23 15:40:04 +08:00
If you successfully generated the SSH key as described earlier, get it:
2014-02-23 15:16:56 +08:00
cat ~/.ssh/id_rsa.pub
Copy the entire output and paste it into the `ssh_key` setting in the `app.yml` file.
# Bootstrap Discourse
2014-02-23 15:40:04 +08:00
Be sure to save the `app.yml` file, and begin bootstrapping Discourse:
2014-02-23 15:16:56 +08:00
2014-02-27 22:36:14 +08:00
./launcher bootstrap app
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3007/c0596ad3d330ae71.png" width = "567" height = "138" >
2014-02-23 15:40:04 +08:00
This command may take some time, so be prepared to wait. It is automagically configuring your Discourse environment.
2014-02-23 15:16:56 +08:00
After that completes, start Discourse:
2014-02-27 22:36:14 +08:00
./launcher start app
2014-02-23 15:16:56 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3008/ced00cf4782f020c.png" width = "568" height = "137" >
2014-02-24 01:38:06 +08:00
Congratulations! You now have your own instance of Discourse, accessible via the domain name you entered in `app.yml` earlier.
2014-02-23 15:16:56 +08:00
2014-03-01 08:16:01 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/3507/d01eee7415f860f2.png" width = "690" height = "291" >
2014-02-23 15:16:56 +08:00
2014-02-23 17:55:01 +08:00
You can also access it by visiting the server IP address directly, e.g. `http://192.168.1.1` .
2014-02-23 15:16:56 +08:00
2014-02-23 18:12:40 +08:00
# Log In and Become Admin
2014-02-23 15:16:56 +08:00
Sign into your Discourse instance. If you configured `DISCOURSE_DEVELOPER_EMAILS` and your email matches, your account will be made Admin by default.
2014-02-23 16:02:29 +08:00
If your account was not made admin, try SSH'ing into your container (assuming you entered your SSH key in the `app.yml` file):
2014-02-23 15:16:56 +08:00
./launcher ssh my_container
sudo -iu discourse
cd /var/www/discourse
RAILS_ENV=production bundle exec rails c
u = User.last
u.admin = true
u.save
2014-02-23 16:02:29 +08:00
This will manually make the first user an admin.
2014-02-23 15:16:56 +08:00
2014-02-23 16:02:29 +08:00
If anything needs to be improved in this guide, feel free to ask on [meta.discourse.org][meta], or even better, submit a pull request.
2014-02-23 15:16:56 +08:00
2014-02-23 16:02:29 +08:00
[dd]: https://github.com/discourse/discourse_docker
[man]: https://mandrillapp.com
[ssh]: https://help.github.com/articles/generating-ssh-keys
[meta]: https://meta.discourse.org
[do]: https://www.digitalocean.com/
[lts]: https://wiki.ubuntu.com/LTS
2014-02-24 01:38:06 +08:00
[jet]: http://www.mailjet.com/pricing
[gun]: http://www.mailgun.com/
[put]: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html