What is the best way to install Discourse Forum on a Proxmox VM and expose it on the internet

Hi I’m new with all this serve stuff

Pls help me
get Discourse up and running in a Proxmox VM or CL
or is there any ready configured image somewhere to import?

Many thanks.

1 Like

@pfaffman may have a paid installation procedure for this he can run. It’s worth every cent.


Thanks, Alex!

The first thing would be to look at Discourse official Standard Installation, but looking at what Proxmox is, I think the answer is “ask them.” If you search, though, you can find Trying to install Discourse in an Ubuntu VM on Proxmox


I’m not sure what you think is special about it being on a Proxmox VM. Install Ubuntu 18 in a VM. Expose ports 80 and 443 to the Internet. Follow the Discourse docs linked above. What part of this do you need help with?


I’m totally new with this server stuff but learning.
Like now: -> There is no difference which hypervisor I use.THX

In the guide is
You must have SSH access ( i have with local IP & putty) to
a 64-bit Linux server with Docker support.
(Meaning Docker must not be installed before starting installation??

Should be a VM or is also CT possible?
What do you recommend?

Which Linux would you recommend?

I think the rest is clear in the guide but let’s see.

It can be installed or not. If it isn’t installed, the installation script will install it.

I’m not sure Docker will work properly in a CT–you’d be putting a container inside a container, which might cause problems. Go for a VM.

The guide says:

The default of the current supported LTS release of Ubuntu Server works fine

Unless you have something against Ubuntu, I’d use that (it’s what I’m using for my Discourse sites). The current LTS release is 20.04. My earlier post said “Ubuntu 18” because that’s what I’m using (and it’s still supported for another three years, so I’m in no hurry to change), but for a new installation, probably better to use the current version.

1 Like

The VM then will be in my network with IP
A nginx Reverse Manager is pointing the domain for Discourse from the router to IP of VM on Port 80?
What should be the setup?

I think I have to claim a Let’s Encrypt certificate before the installation to make this connection work.?

I think you’re probably right. You’d also need to disable the built-in Let’s Encrypt in the Discourse installation. I know that can be done, but it’s not something I’ve had much reason to do. But I’m sure a search around here would find instructions on that.

1 Like

I’m not sure If I can handle changing a script. (sounds dangerous for a newbie)

What if I forward the 80 & 443 directly to the VM for installation and when done
Change back 80 &443 to RevManager?

Or only Port 80 ?

I also Think it maybe a good idea especially for this situation if someone already has a Certificate to “Simply” (as a newbie I cannot say how complicated that is) have a Question" get a Certificate Y/N"
in the script
What do you think?
Will be perfect?

That’s what you’ll have to do. Discourse-setup won’t work for your setup. You’ve chosen a decidedly difficult path. There are howto guides for installing with other web servers.

I’d recommend trying a more simple installation first.


Can you pls tell me how to change the script?
I’ll try to
I have to learn these things.

What about This proposal?

Or This would be perfect!

This would work, and let the scripted installation complete without issues. The problem is that now your Discourse installation expects to manage its TLS certificate, which it won’t be able to do once you stop forwarding 80 and 443 to that VM. What you need to do is tell Discourse not to try to obtain a cert or handle TLS at all. And I think (though I haven’t tested this) you can do that by commenting out the web.ssl.template.yml and web.letsencrypt.ssl.template.yml lines in app.yml. Running other websites on the same machine as Discourse Would also have some relevant information, and seems to agree with this.

There’s no real reason to do that, as it’s trivial (if you’re not overly complicating things, as you are) to just get a new cert–the fact that you have an existing cert really doesn’t matter. The complicating factor in your intended setup isn’t that you already have a cert, it’s that this arrangement won’t let Discourse handle its own cert.

THX I’ll try
Point the Port 80 & 443 from router to VMs IP
Then I can install with normal script
When Installation is finished then edit the files ?

Other demands

Hostname for your Discourse? [discourse.example.com]:
–> NoIp.domain.com from No-IP

Email address for admin account(s)? [ me@example.com , you@example.com]:
–>Can I also have here an email address from 1und1 (IONOS)
different from the NoIp.domain.com?

SMTP server address? [smtp.example.com]: -> from IONOS
SMTP port? [587]: -> from IONOS
SMTP user name? [user@example.com]: -> is email
SMTP password? [pa$word]: -> OK
Let’s Encrypt account email? (ENTER to skip) [me@example.com]: Email from No-Ip account But without Password?

No, I mean edit the file before the installation runs. As stated above, you won’t be able to use the discourse-setup script.

You can use any email address(es) you want, regardless of domain.

Make sure that server permits bulk emails, if you ever intend for this to be a public forum.

Why would it need a password? The only purpose for that email is for Let’s Encrypt to notify you of upcoming certificate expiration (which really shouldn’t ever happen). But your container shouldn’t be obtaining a cert at all.

I think I can use the script after I collected all the information
I will do a summary of my configuration I will set up later

I look forward to seeing your progress.

This should work with the script
Instead of a rented VPS - I use a VM in the network

Domain.xx CNAME to Fritz!Domain
Fritz!Box forward Port 80 & 443 to IP Reverse Manager
Reverse Manager forward
Domain.xx to Port 80 & 443 to the IP of VM IP 2

No certificates on the Domain.xx

I have only fresh Ubuntu on VM IP 2
How to test?
What do you think?

1 Like