I am not opposed to it .
If a Discourse plan is used the obvious pricing plan to use would be the Standard plan. (ref)
As the self-hosting is typically done on Docker, the pros and cons of Docker also apply, but I have no experience with Docker in a production system so canât elaborate them. I have used Docker with Neo4j on my local machine to get started but during development with Neo4j moved to a local install of Neo4j because it made development much easier and faster.
I also have no hard facts on how many sites use Discourse without a Discourse plan or 3rd-party support and what is their up-time statistics.
There is no reason any of us can not pull down all of the needed software and do an install. As this is done with Docker I see no reason it can not be done on a laptop as a learning exercise. (ref) I plan to try this but donât have a time frame. Lastly a backup of this site can be installed on to the system.
Personal notes
Discourse - Forum
Faster rebuilds?
How to move from standalone container to separate web and data containers
HOWTO: Build yourself a sandbox
Update error, website unavailable, possibly plugin related?
How to use Docker multiple containers without exposing ports
Linking containers for a multiple container setup
Running Discourse with a separate PostgreSQL server
Two-factor login on staging site
Best Practices for Backups
Statement: (ref)
5 min of downtime every month is still like 99,5% uptime so unless the two container install is easy to do/manage it doesnât worth itâŠ
Response:
For a description see: How to move from standalone container to separate web and data containers .
For a normal rebuild/upgrade Itâs pretty much the same as a single container install. Rather than
./launcher rebuild app
you do
./launcher bootstrap web_only && ./launcher destroy web_only && ./launcher start w
Statement: itâs stuck on âcurrently upgradingâ its been like it for a while. (ref)
Response:
SSH in and issue a launcher rebuild app
Statement by Rafael dos Santos Silva Falcoteam (Dated: 09-09-2019) (ref)
We provide standard ways to connect to databases outside the application container, like Running Discourse with a separate PostgreSQL server . The details of networking on those advanced setups are up to you, since it will be wildly different depending on your implementation.
We already gives a dead simple install for everyone on discourse/INSTALL-cloud.md at master · discourse/discourse · GitHub that works and power thousands of instances in the internet. Iâm afraid that those who opt into following their own path will have to deal with the consequences as it is impossible for us to provide support for all the possible combinations.
Digital Ocean - Discourse Droplet (ref)
You really want at least 20gb and you really want ssd. (ref)
if Youâre using the Ubuntu 16.04 or Higher, Your system can automagically update docker when an update is available. (ref)
Improve my DO (Digital Ocean) droplet setup
There are several folders involved in a typical Discourse install (ref)
/var/discourse
and all the directories below it are the only place we store persistent data. (ref)
Discourse Forum administrator tutorials (ref)
Export User Information List - List does not contain method of login such as Google, Twitter, GitHub, etc. which would be nice to know.
Move your Discourse Instance to a Different Server
How do I manually update Discourse and Docker image to latest?
Configuring Google login for Discourse
Configuring Facebook login for Discourse
Configuring Twitter login (and rich embeds) for Discourse
How to use Auth0 with the OAuth2 Basic Plugin
Configuring GitHub login for Discourse
Configuring OneLoginâs SAML for Discourse
Configuring authentication checks on incoming email
Restore a backup from command line - This is handy when youâre moving servers.
Full site CDN acceleration for Discourse
What to do when you have locked yourself out by invalid SSO configuration or read-only mode
Enable a CDN for your Discourse
Change tracking branch for your Discourse instance
Discourse forum category for hosting (ref) - Topics about hosting Discourse, either on your own servers, in the cloud, or with specific hosting services.
List of managed hosting providers/options
Recommended Hosting Providers for Self Hosters
The recommendation is to keep your host OS updated with the latest security patches. (ref)
Statement: And why we should choose business hosting ? (ref)
Response:
Try setting up self hosting and you will quickly find out
Itâs not too difficult but it will never be âpush button and it is doneâ easy, far from it⊠email alone is a giant hairy complex bugbear due to the nature of email, nothing to do with us specifically.
Statement by Stephen/Senior Tester (ref) (03/20/2020)
We (Discourse.com) canât offer any support or assistance with any third-party âone clickâ installations. They use unsupported installation methods which have historically had a habit of breaking horribly somewhere down the line. Free community-based support is available for the standard install , which usually takes less than 30 minutes. It may appear pretty daunting, but as long as you step through it carefully and follow the recommendations itâs very straightforward.
Please note that some of the really cheap VPS services donât offer the correct type of virtualization or dedicated resources, which can cause issues especially when installing docker. Most companies pro-rate their billing though, so you can experiment with several over a period of days or weeks, and still only spend a few dollars for the whole thing.
The cheapest server from DigitalOcean is $5, maintenance for those is pretty minimal. DigitalOcean are recommended due to the ease with which Discourse can be installed into their environment. Other companies such as Amazon (AWS) and Google have more complex network setups, and will require you learn a number of other concepts before you can get up and running.
Most Discourse updates can be done from the browser, with only the occasional need to connect via SSH and update from there.
Server security isnât that challenging, you can use ufw
to secure any non-Discourse/SSH ports and reduce the attach surface of your machine.
Resources to do all of the above exist here on meta. Providing you install in a supported way, and in an environment where Discourse will run we can help you with any basic configuration problems.
How much is Discourse affected by a faster CPU? (03/05/2017 - Before Ruby 3)
Discourse scales more or less linearly with the CPU speed you throw at it . If you want a faster Discourse, have enough memory, sure, but you want the fastest possible single threaded performance .
if you see consistent swap activity, you definitely donât have enough memory (ref)
How are PostgreSQL upgrades handled in the container? (ref)
Ruby gets updated by providing a new base image for the container.
Postgres upgrades are more complicated, but when itâs needed, the database gets backed up, converted to the new format, and then migrated over. It mostly always works. They typically skip every other Postgres upgrade, so itâll be a while before it happens again. (If you really care, you can look at the postgres templates in the templates
directory of the discourse_docker
repo.
Discourse hosting: is there a centralized place (like a status page) I can visit for scheduled maintenance and incidents?
Statement: Sam Saffron sam co-founder
One very important thing to note is that we already monitor your site.
Every 2-5 minutes we will check every site we host from an external location to ensure it is up and running. Our check includes basic stuff (such is, am I getting a 200 response) and advanced stuff (such as, where is the JavaScript payload).
On top of that we use Pingdom to check select sites from multiple geos using ipv4 and ipv6 checks.
Adding to this we have an army of internal alerts that notify us before stuff goes wrong (when initial signs pop up). Machines may be running out of memory, high on CPU, replicas may have issues and so on.
If we notice something is impacting our hosting we will post on twitter. So, https://twitter.com/discourse is your official status page.
As an enterprise customer you have more flexibility, so contact team@discourse.org
with your requirements so we can discuss.
Purpose of the Discourse shared volume in a high availability setup - This post has me confused as to what is Redis doing and how it should be configured if we break out Postgres into a separate container. Does Redis get a separate container, what is Redis doing, and how is it connected. TODO
Why did Discourse start running their own Redis instead of using Elasticache?
Read only mode
Discourse can keep a connection open with read only nodes with both Discourse and Redis.
That allows people to keep reading on the site when masters go down.
Statement by Matt Palmer mpalmer team (Dated: 12/17/2017) (ref)
How to downgrade Docker
- Stop and delete all running containers . In addition to this bug, Docker also changed some other things in the way that containers are run, and a downgrade while containers are still running will end in tears. If youâre only running Discourse on your server, you can just stop and delete the container with
docker rm -f app
(your data is safe, and wonât be deleted by this command). If youâre running other containers on the machine as well, youâll have to figure out what to do.
- Downgrade Docker . Via the magic of the package manager,
apt-get install docker-ce=17.10.0~ce-0~ubuntu
will do the trick. Youâll have to say y
to the installation, because itâs a downgrade.
- (optional) Make sure Docker doesnât get automatically upgraded again . Thatâd really ruin your day, because not only would you have a buggy Docker behind the wheel again, but due to the aforementioned changes in how containers are run, an automated upgrade would likely leave your containers in a kind of limbo state. Not cool.To make sure you stay on a known-good version, create a file
/etc/apt/preferences.d/docker.pref
with the following contents:
Package: docker-ce
Pin: version 17.10*
Pin-Priority: 9001
Statement - Felix Freiberger fefrei Regular
(ref)
Redis is an in-memory database, used to store state on the server that is more or less volatile. Some examples are scheduled jobs, session data, rate limiting data, âŠ
MessageBus is a system that is used to push messages to the client. For example, if youâre on Discourse while someone replies here, youâll see a blue number appear an your avatar immediately â that piece of information was sent from the server to your browser through MessageBus.
Statement - Rafael dos Santos Silva Falco team (Dated: 04/16//2016)
The only officially supported installs of Discourse are the Docker based beginner and advanced installs. We regret that we cannot support any other methods of installation.
Discourse up-time (ref)
Beginners Guide to Install Discourse on <OS> for Development
HOWTO Set up a development environment using vagrant (Ubuntu guide)
GitHub Discourse (ref)
Why do you only officially support Docker? (ref)
The only officially supported installs of Discourse are Docker based.
Hosting Rails applications is complicated. Even if you already have Postgres, Redis and Ruby installed on your server, you still need to worry about running and monitoring your Sidekiq and Rails processes, as well as configuring Nginx. With Docker, our fully optimized Discourse configuration is available to you in a simple container, along with a web-based GUI that makes upgrading to new versions of Discourse as easy as clicking a button.
Discourse Hardware Requirements (ref)
- modern single core CPU, dual core recommended
- 1 GB RAM minimum (with swap file)
- 64 bit Linux compatible with Docker
- 10 GB disk space minimum
2GB swap file recommended (ref a) (ref 2)
Most cloud virtual machine providers do not set up swapfiles as part of their server provisioning.
In particular, upgrading Discourse produces a lot of memory pressure. With a swap file, rather than randomly terminating processes with an out of memory error, things will slow down instead. Having a swap file is a cheap insurance policy that protects you from many other load related failures.
Advanced Docker install guide (ref)
Single Container vs. Multiple Container (ref)
The multiple container configuration setup is far more flexible and robust, however it is also more complicated to set up. A multiple container setup allows you to:
- Minimize downtime when upgrading to new versions of Discourse. You can bootstrap new web processes while your site is running and only after it is built, switch the new image in.
- Scale your forum to multiple servers.
- Add servers for redundancy.
- Have some required services (e.g. the database) run on beefier hardware.
Two Container Configuration (ref)
The standard cloud install uses a single Docker container. This is the recommended configuration for most users because it is simple and the one that is officially supported at meta.discourse.org. The biggest disadvantage of this configuration is that if a rebuild from the command line is required (typically several times a year when a required component is upgraded) your server will be inaccessible during the rebuild (typically 5-10 minutes).
This two-container configuration using one container for the database and a second for the web server. This makes it possible to rebuild and reconfigure the web server (e.g., to change plugins or do an update) while the old container continues to run. You can then switch to the new server with a down-time of one minute or less. Using this configuration requires that you know when you do need to upgrade the data container (that includes Postgres and Redis) and use a different method to do command-line upgrades.
Docker Documentation (ref)
Docker - Orchestration (ref)
The portability and reproducibility of a containerized process mean we have an opportunity to move and scale our containerized applications across clouds and datacenters.
Tools to manage, scale, and maintain containerized applications are called orchestrators , and the most common examples of these are Kubernetes and Docker Swarm .
Install Docker Engine on Ubuntu (Install Docker Engine on Ubuntu | Docker Docs)
To install Docker Engine, you need the 64-bit version of one of these Ubuntu versions:
- Ubuntu Eoan 19.10
- Ubuntu Bionic 18.04 (LTS)
- Ubuntu Xenial 16.04 (LTS)
Docker Engine is supported on x86_64
(or amd64
), armhf
, arm64
, s390x
(IBM Z), and ppc64le
(IBM Power) architectures.
Use volumes (ref)
Volumes are the preferred mechanism for persisting data generated by and used by Docker containers. While bind mounts are dependent on the directory structure of the host machine, volumes are completely managed by Docker. Volumes have several advantages over bind mounts:
- Volumes are easier to back up or migrate than bind mounts.
- You can manage volumes using Docker CLI commands or the Docker API.
- Volumes work on both Linux and Windows containers.
- Volumes can be more safely shared among multiple containers.
- Volume drivers let you store volumes on remote hosts or cloud providers, to encrypt the contents of volumes, or to add other functionality.
- New volumes can have their content pre-populated by a container.
In addition, volumes are often a better choice than persisting data in a containerâs writable layer, because a volume does not increase the size of the containers using it, and the volumeâs contents exist outside the lifecycle of a given container.
Docker for Windows (ref)
Switch between Windows and Linux containers (ref)
From the Docker Desktop menu, you can toggle which daemon (Linux or Windows) the Docker CLI talks to. Select Switch to Windows containers to use Windows containers, or select Switch to Linux containers to use Linux containers (the default).
Docker Blog (ref)
Are Containers Replacing Virtual Machines? (ref)
Center for Applied Systems & Software » OSU Open Source Lab
CASS provides clients with services for every stage of a project: designing, developing, testing and hosting. This partnership allows each group to maintain its unique brand while combining their expertise and giving them the ability and resources to take on bigger and better projects.
Potential Hosted Projects (ref)
For development-based projects we also feel that it is important to have an active development community, which is usually characterized by both the number of developers and the frequency of code updates and/or releases. For community-based projects, an active, helpful user community is important.
GitHub OSU Open Source Lab (ref)
osuosl/osl-dockerfiles
Docker Hub (ref)
Discourse at Docker Hub (ref)
Discourse/base page - Basic Discourse container (ref)
OSU Open Source Lab at Docker Hub (ref)
Discourse Self-Hosting FAQ (ref) - A post by Jay Pfaffman/pfaffman A very knowledgeable 3rd-party service provider.