discourse/docs/INSTALL-digital-ocean.md

188 lines
8.0 KiB
Markdown
Raw Normal View History

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
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
<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
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
Connect to your Droplet via SSH:
2014-02-23 15:16:56 +08:00
ssh root@192.168.1.1
(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-03-16 10:56:23 +08:00
Update to a newer kernel:
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
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
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
(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
# 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
- 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-03-16 06:29:26 +08:00
- Be sure you remove the comment character and space `# ` from the beginning of these mail configuration lines!
- Don't forget to set the [SPF and DKIM records](http://help.mandrill.com/entries/21751322-What-are-SPF-and-DKIM-and-do-I-need-to-set-them-up-) up for your domain name. In Mandrill, that's under Sending Domains, View DKIM/SPF setup instructions.
2014-03-16 10:56:23 +08:00
- The name of your droplet is your reverse PTR record, so rename your droplet to `forum.example.com` so the PTR record correctly reflects your domain name.
# Add Your SSH Key
2014-02-23 15:16:56 +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
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">
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">
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-03-15 02:26:38 +08:00
# Post-Install Maintenance
We believe most small and medium size Discourse installs will be fine with the recommended 2 GB of RAM. However, if you are using the absolute minimum 1 GB of RAM, or your forum is growing you may want to [set up a swap file](https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04) just in case.
To **upgrade Discourse to the latest version**, visit `/admin/docker`, refresh the page a few times (yes, seriously) and then press the Upgrade button at the top. View the live output at the bottom of your browser to see when things are complete. You should see:
Killed sidekiq
Restarting unicorn pid: 37
Then you know it's complete. (Yes, we will be improving this process soon!)
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
[jet]: http://www.mailjet.com/pricing
[gun]: http://www.mailgun.com/
[put]: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html