2014-04-18 07:57:02 +08:00
**Set up Discourse on a cloud server in under 30 minutes** with zero knowledge of Ruby, Rails or Linux shell using our [Discourse Docker image][dd]. We prefer [Digital Ocean][do], although these steps may work on other cloud providers that also support Docker. Let's begin!
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-25 07:51:16 +08:00
[Sign up for Digital Ocean][do], update billing info, then begin creating your new cloud server (Droplet).
2014-04-18 05:12:07 +08:00
Use the URL of your new site as the Droplet hostname, e.g. `discourse.example.com` . Discourse requires a minimum of **1 GB RAM** for small communities; we recommend 2 GB RAM for medium communities.
2014-02-23 15:16:56 +08:00
2014-04-18 05:12:07 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4425/0c25b42ee3d35636.png" width = "670" height = "489" >
2014-02-23 15:16:56 +08:00
2014-04-18 07:57:02 +08:00
Install Discourse on Ubuntu 14.04 LTS x64. Always select [the latest LTS distribution][lts].
2014-02-23 15:16:56 +08:00
2014-04-18 05:19:04 +08:00
< img src = "https://meta.discourse.org/uploads/default/4426/9f3bf74726a3384f.png" width = "540" height = "478" >
2014-02-23 15:16:56 +08:00
2014-04-14 13:49:39 +08:00
You will receive a mail from Digital Ocean with the root password to your Droplet. (However, if you know [how to use SSH keys ](https://www.google.com/search?q=digitalocean+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-04-18 06:24:20 +08:00
Connect to your Droplet via SSH, or use [Putty][put] on Windows:
2014-02-23 15:16:56 +08:00
ssh root@192.168.1.1
2014-02-24 01:38:06 +08:00
Replace `192.168.1.1` with the IP address of your Droplet.
2014-02-23 15:16:56 +08:00
2014-04-18 10:43:37 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4442/ab4202454828b167.png" width = "586" height = "128" >
2014-02-23 15:16:56 +08:00
2014-04-18 07:57:02 +08:00
You will be asked for permission to connect, type `yes` , then enter the root password from the email Digital Ocean sent you when the Droplet was set up.
2014-02-23 15:16:56 +08:00
2014-04-18 10:43:37 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4443/48cc7135c89768bd.png" width = "584" height = "300" >
2014-02-23 15:16:56 +08:00
2014-04-09 14:38:48 +08:00
# Set up Swap (if needed)
2014-04-18 07:57:02 +08:00
- If you're using the minimum 1 GB install, you *must* [set up a swap file ](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880 ).
2014-04-09 14:38:48 +08:00
- If you're using 2 GB+ memory, you can probably get by without a swap file.
2014-04-04 07:17:30 +08:00
# Install Git
apt-get install git
2014-04-18 10:43:37 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4444/fdddb36daf2e9b69.png" width = "586" height = "293" >
2014-04-04 07:17:30 +08:00
# Install 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
2014-04-18 10:43:37 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4445/35af9b94d045c691.png" width = "586" height = "452" >
2014-02-23 15:16:56 +08:00
# Install Discourse
2014-04-18 07:57:02 +08:00
Create a `/var/docker` folder:
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
2014-04-22 02:16:01 +08:00
Copy the `samples/standalone.yml` file into the `containers` folder as `app.yml` :
2014-02-23 15:16:56 +08:00
cp samples/standalone.yml containers/app.yml
2014-04-18 10:43:37 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4446/5f28af7f5b345823.png" width = "586" height = "246" >
2014-04-16 12:38:07 +08:00
# Edit Discourse Configuration
2014-04-14 13:49:39 +08:00
2014-04-18 06:12:46 +08:00
Edit the Discourse configuration at `app.yml` :
2014-02-23 15:16:56 +08:00
nano containers/app.yml
2014-04-18 06:12:46 +08:00
We recommend Nano because it works like a typical GUI text editor, just use your arrow keys.
2014-02-23 15:16:56 +08:00
2014-04-18 07:57:02 +08:00
- Set `DISCOURSE_DEVELOPER_EMAILS` to your email address.
2014-04-18 06:12:46 +08:00
- Set `DISCOURSE_HOSTNAME` to `discourse.example.com` , this means you want your Discourse available at `http://discourse.example.com/` . You'll need to update the DNS A record for this domain with the IP address of your server.
- Place your mail credentials in `DISCOURSE_SMTP_ADDRESS` , `DISCOURSE_SMTP_PORT` , `DISCOURSE_SMTP_USER_NAME` , `DISCOURSE_SMTP_PASSWORD` . Be sure you remove the comment `#` character and space from the front of these lines as necessary.
2014-02-23 15:16:56 +08:00
2014-04-09 14:38:48 +08:00
- If you are using a 1 GB instance, set `UNICORN_WORKERS` to 2 so you have more memory room.
2014-02-23 15:16:56 +08:00
2014-04-18 06:21:38 +08:00
< img src = "https://meta.discourse.org/uploads/default/4435/67807de39c6bbc61.png" width = "578" height = "407" >
2014-02-23 15:16:56 +08:00
2014-04-18 06:12:46 +08:00
After completing your edits, press < kbd > Ctrl< / kbd > < kbd > O< / kbd > then < kbd > Enter< / kbd > to save and < kbd > Ctrl< / kbd > < kbd > X< / kbd > to exit.
2014-02-23 15:16:56 +08:00
2014-04-18 06:12:46 +08:00
# Email
2014-02-23 15:16:56 +08:00
2014-04-19 03:28:10 +08:00
**Email is critical for account creation and notifications in Discourse. If you do not configure email before bootstrapping you will have a broken site!**
2014-02-23 15:16:56 +08:00
2014-04-18 06:12:46 +08:00
- Already have a mail server? Great. Use your existing mail server credentials.
2014-02-23 15:16:56 +08:00
2014-04-18 06:12:46 +08:00
- No existing mail server, or you don't know what it is? No problem, create a free account on [**Mandrill**][man] (or [Mailgun][gun], or [Mailjet][jet]), and use the credentials provided in the dashboard.
2014-03-16 06:29:26 +08:00
2014-04-18 06:12:46 +08:00
- For proper email deliverability, you must 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- ) in your DNS. In Mandrill, that's under Sending Domains, View DKIM/SPF setup instructions.
2014-02-23 15:16:56 +08:00
# 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
2014-04-06 03:07:09 +08:00
This command can take up to 8 minutes. It is automagically configuring your Discourse environment.
2014-02-23 15:16:56 +08:00
2014-04-22 03:07:46 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4448/55b88822f00fa505.png" width = "593" height = "229" >
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
2014-04-22 03:07:46 +08:00
Congratulations! You now have your own instance of Discourse!
2014-02-23 15:16:56 +08:00
2014-04-22 03:07:46 +08:00
It should be accessible via the domain name `discourse.example.com` you entered earlier, provided you configured DNS. If not, you can also visit the server IP directly, e.g. `http://192.168.1.1` .
2014-02-23 15:16:56 +08:00
2014-04-22 03:09:31 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4512/56d0c013a24981cd.png" width = "690" height = "342" >
2014-02-23 15:16:56 +08:00
2014-04-22 02:16:01 +08:00
# Register New Account and Become Admin
2014-02-23 15:16:56 +08:00
2014-04-22 03:07:46 +08:00
There is a reminder at the top about `DISCOURSE_DEVELOPER_EMAILS` ; be sure you register a new account via one of those email addresses, and your account will automatically be made an Admin.
2014-04-22 03:09:31 +08:00
< img src = "https://meta-discourse.r.worldssl.net/uploads/default/4513/459a7df42fb9ee83.png" width = "690" height = "350" >
2014-04-22 03:07:46 +08:00
You should see Staff topics and the Admin Quick Start Guide. Please read it!
2014-02-23 15:16:56 +08:00
2014-03-15 02:26:38 +08:00
# Post-Install Maintenance
2014-05-03 04:50:02 +08:00
To **upgrade Discourse to the latest version** , visit `/admin/docker` and follow the instructions.
2014-03-15 02:26:38 +08:00
2014-04-09 14:45:48 +08:00
The `launcher` command in the `/var/docker` folder can be used for various kinds of maintenance:
```
Usage: launcher COMMAND CONFIG
Commands:
start: Start/initialize a container
stop: Stop a running container
restart: Restart a container
destroy: Stop and remove a container
ssh: Start a bash shell in a running container
logs: Docker logs for container
bootstrap: Bootstrap a container for the config based on a template
rebuild: Rebuild a container (destroy old, bootstrap, start new)
```
2014-04-16 12:38:07 +08:00
# Other Awesome Stuff
2014-03-23 14:43:05 +08:00
Do you want...
- Users to log in via Facebook? [Configure Facebook logins ](https://meta.discourse.org/t/configuring-facebook-login-for-discourse/13394 ).
- Users to log in via Twitter? [Configure Twitter logins ](https://meta.discourse.org/t/configuring-twitter-login-for-discourse/13395/last ).
- Users to post reples via email? [Configure reply via email ](https://meta.discourse.org/t/set-up-reply-via-email-support/14003 ).
2014-04-18 15:02:01 +08:00
- Automatic daily backups? [Configure backups ](https://meta.discourse.org/t/configure-automatic-backups-for-discourse/14855 ).
2014-04-15 14:56:21 +08:00
2014-04-16 12:38:07 +08:00
- HTTPS / SSL support? [Configure SSL ](https://meta.discourse.org/t/allowing-ssl-for-your-discourse-docker-setup/13847 ).
2014-04-19 03:31:27 +08:00
- Multiple Discourse sites on the same server? [Configure multisite ](https://meta.discourse.org/t/multisite-configuration-with-docker/14084 ).
2014-04-18 15:55:44 +08:00
2014-04-19 03:31:27 +08:00
- A Content Delivery Network to speed up worldwide access? [Configure a CDN ](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857 ).
2014-03-25 07:51:16 +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
2014-04-15 03:09:13 +08:00
[meta]: https://meta.discourse.org/t/beginners-guide-to-deploy-discourse-on-digital-ocean-using-docker/12156
2014-03-25 07:51:16 +08:00
[do]: https://www.digitalocean.com/?refcode=5fa48ac82415
2014-02-23 16:02:29 +08:00
[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