Install Discourse on CloudPanel

I made it a wiki. You are welcome to update the OP to better detail everything. Since you have expertise here, I do hope that you’ll watch this topic so that you can help others who want to follow in your path.

The fact remains that no one who is a regular contributor here uses Cloud Panel, and the person who created the guide isn’t participating in supporting it. Supporting just the standard install, where there is very little that can go wrong, is fairly time consuming.

:+1: Assuming no one objects, I’ll incorporate my suggestions when I have time to make sure they flow properly (and work). I know at least running discourse-setup with --skip-connection-test will be required.

I think this is probably unfair, they have been updating the guide based on feedback and probably other people have just been getting to questions first.

5 Likes

That’s probably true. It’s been just a day or so this this piece started up. This might be a case where it’d be better for me to just say nothing and let others work it out.

5 Likes

Hello!! I’m here and happy to help! It’s why I created the tutorial and invited feedback!

I have added the unsupported-install tag and a disclaimer at the top with a nudge back towards the standard install for the faint of heart. :slight_smile:

I did suggest a #here-be-dragons tag, but it’s still being vetted… :slight_smile:

5 Likes

However, in the end, following more carefully what is reported here and doing some searches on other forums, I managed to install everything. Thanks everyone for the help.

2 Likes

Would what you found be useful information for the current tutorial?

2 Likes

At the time I didn’t understand that it was also necessary to change other points of the app.yml file such as mail server and other things, since the guide here was made for experts, only the most obvious things were indicated for experts and not also things for inexperienced people like me. Then I found difficulty with the mail configuration as my provider has port 587 in TLS.

3 Likes

Hey @denvergeeks :blob_wave:

I’m reviewing this guide. :slight_smile:

Is the

Prepare the Domain and Set up SSL

part where you use Cloudflare mandatory? Should I use a similar service, or would SSL work without requiring using such a third-party service?


In this kind of part:

It would be nice to explain quickly why we need to do this (footnotes would be alright) :slight_smile:

@Canapin you can find instructions for using the built-in CloudPanel SSL here…

Using Cloudflare is just my preference both for nameservers and SSL.

A lot of people use Cloudflare. Since I use Cloudflare in my process, that is what I provided in my tutorial for others who use (or would like to use) Cloudflare for these purposes.

You don’t need to use Cloudflare. You can use any nameservers that you would normally use to point your domain to your CloudPanel IP address. I just normally use Cloudflare.

Also you can use any SSL vendor instead of, or in addition to Cloudflare.

If you want you can add instructions for other Nameservers and SSL providers.

I hope this clarifies!

3 Likes

I thoroughly followed your guide to use Cloudflare as a reverse proxy using my test domain canapin.ovh, but it currently hits a Cloudflare error:

https://canapin.ovh

Besides following your guide, I let all other Cloudflare settings by default and only modified those you mention in the guide.

I don’t know anything about advanced installs and the error might not be related to your guide, unless there’s a missing bit somewhere – but another user had it working, so I guess it’s more likely on my end. :slight_smile:

3 Likes

@Canapin did you remember (at the end) to:

./launcher start app

(That is one of many possible causes.)

:grey_question: I could help more if you could provide more information.:grey_question:

1 Like

Yes, my container is running and the issue could be many things… But I don’t want to add noise to your topic, especially as someone unfamiliar with unsupported installs :stuck_out_tongue:

1 Like

I use fastpanel, where one setting is enough to work with discourse. Fastpanel has more features (posgres, automatic backups to the cloud, apache/ngnix, etc.) for installing more complex applications than wordpress. Discourse works great in fastpanel!

1 Like

Hi, thank you for posting such great tutorial that can potentially save a lot of cost for my project once I learned how to set it up correctly, once and for all. Right now the economy is looking not so good and costs are being cut everywhere.

Looking at the tutorial there were not so many steps, I figured I would give it a try so I believe I’m close

I failed at the bootstrap step

Status: Downloaded newer image for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
2.0.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-05T01:45:55.552861 #1]  INFO -- : Reading from stdin
I, [2025-02-05T01:45:55.600413 #1]  INFO -- : File > /etc/runit/1.d/remove-old-socket  chmod: +x  chown:
I, [2025-02-05T01:45:55.612817 #1]  INFO -- : File > /etc/runit/3.d/remove-old-socket  chmod: +x  chown:


FAILED
--------------------
Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/nginx/conf.d/discourse.conf
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/replace_command.rb:11:in `read'
replace failed with the params {"filename"=>"/etc/nginx/conf.d/discourse.conf", "from"=>"/listen 80;/", "to"=>"listen unix:/shared/nginx.http.sock;\nset_real_ip_from unix:;\n"}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
70d853c5066a283a84838676ef16a243cc6f418cee8802eb34b1edfc598a7bd9
root@Vultr2409:/var/discourse# 

I tried to do ask Deepseek to solve this problem, and it suggests me to
Manually create /etc/nginx/conf.d/discourse.conf with the following content:

server {
    listen 80;
    server_name <mydomain.com (replaced by my domain)>;
    location / {
        proxy_pass http://unix:/shared/nginx.http.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
root@Vultr2409:/var/discourse# ./launcher rebuild app
x86_64 arch detected.
Ensuring launcher is up to date
Launcher is up-to-date
2.0.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-05T02:21:24.487508 #1]  INFO -- : Reading from stdin
I, [2025-02-05T02:21:24.505619 #1]  INFO -- : File > /etc/runit/1.d/remove-old-socket  chmod: +x  chown:
I, [2025-02-05T02:21:24.510777 #1]  INFO -- : File > /etc/runit/3.d/remove-old-socket  chmod: +x  chown:


FAILED
--------------------
Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/nginx/conf.d/discourse.conf
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/replace_command.rb:11:in `read'
replace failed with the params {"filename"=>"/etc/nginx/conf.d/discourse.conf", "from"=>"/listen 80;/", "to"=>"listen unix:/shared/nginx.http.sock;\nset_real_ip_from unix:;\n"}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
1c7c2a9d055439d23b9300f77e4bc6e912d4db5cf372ea1261e7b8bccb1be3ee

I tried some gpt suggested solutions including commenting out #- “templates/web.template.yml” but it does not work. Any help would be greatly appreciated!

There have been some significant changes in the nginx config. Is this tests-passed or something else?

But you might just try again now.

Can you tell me where the latest nginx configs are? Right now, my discourse is connected to the fastpanel with the default configuration. Everything is working, but I would like a more precise setting for optimal operation of the discourse.