Hello
I want I install discourse in a subdomain (discuss.eaxmple.com) with the following address:
/home/admin/web/discuss.eaxmple.com/public_html/
First, I installed Docker / Git by wget -qO- https://get.docker.com/ | sh command
After this, what do I do?
AI-generated summary
The discussion is about installing Discourse in a home path on a subdomain. The user, Mani, wants to install Discourse on discuss.example.com at the path /home/admin/web/discuss.example.com/public_html/.
Mani followed the steps to install Docker and Git but needs further guidance. codinghorror suggests following the how-to topic on subdomains, while featheredtoast recommends the official guide and provides instructions on modifying the app.yml file to point to the desired path.
However, featheredtoast notes that Discourse is a full web application that needs to be proxied to from the web host, suggesting the use of Apache reverse proxying.
Mani attempts to install Discourse by modifying the app.yml file and running the required commands but encounters an error due to port 80 being in use.
Eventually, Mani is able to install Discourse on port 8000.
Follow the howto topic here on subdomain.
follow the official guide:
change any reference to /var/discourse to your path that you’re installing to. Including when you create your container template… for instance in
you’d change the volumes section to read something like:
volumes:
- volume:
host: /home/admin/discourse/shared/standalone
guest: /shared
- volume:
host: /home/admin/discourse/standalone/log/var-log
guest: /var/log
From the looks of your desired install directory under /home/admin/web/discuss.example.com/public_html/ it appears you are under the impression that Discourse is a collection of stuff that you can just drop into a web directory. Rather, bear in mind Discourse is a full web application that would need to be proxied to from your web host.
You’d need to look into apache reverse proxying for example.
I modify app.yml
## this is the all-in-one, standalone Discourse Docker container template
# You may add rate limiting by uncommenting the web.ratelimited template.
# Out of the box it allows 12 reqs a second per ip, and 100 per minute per ip
# This is configurable by amending the params in this file
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/sshd.template.yml"
- "templates/web.ratelimited.template.yml"
## which TCP/IP ports should this container expose?
expose:
- "80:80" # fwd host port 80 to container port 80 (http)
- "2222:22" # fwd host port 2222 to container port 22 (ssh)
# any extra arguments for Docker?
# docker_args:
params:
db_default_text_search_config: "pg_catalog.english"
## Set db_shared_buffers to a max of 25% of the total memory.
##
## On 1GB installs set to 128MB (to leave room for other processes)
## on a 4GB instance you may raise to 1GB
db_shared_buffers: "128MB"
#
## Set higher on large instances it defaults to 10MB, for a 3GB install 40MB is a good default
## this improves sorting performance, but adds memory usage per-connection
#db_work_mem: "40MB"
#
## Which Git revision should this container use? (default: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## TODO: How many concurrent web requests are supported?
## With 2GB we recommend 3-4 workers, with 1GB only 2
## If you have lots of memory, use one or two workers per logical CPU core
UNICORN_WORKERS: 2
## TODO: List of comma delimited emails that will be made admin and developer
## on initial signup example 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'info@example.com'
## TODO: The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: 'discourse.example.com'
## TODO: The mailserver this Discourse instance will use
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (mandatory)
#DISCOURSE_SMTP_PORT: 587 # (optional)
#DISCOURSE_SMTP_USER_NAME: user@example.com # (optional)
#DISCOURSE_SMTP_PASSWORD: pa$$word # (optional, WARNING the char '#' in pw can cause problems!)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
## The CDN address for this Discourse instance (configured to pull)
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## These containers are stateless, all data is stored in /shared
volumes:
- volume:
host: /home/admin/web/discourse.example.com/public_html/shared/standalone
guest: /shared
- volume:
host: /home/admin/web/discourse.example.com/public_html/shared/standalone/log/var-log
guest: /var/log
## The docker manager plugin allows you to one-click upgrade Discourse
## http://discourse.example.com/admin/docker
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Remember, this is YAML syntax - you can only have one block with a name
run:
- exec: echo "Beginning of custom commands"
## If you want to set the 'From' email address for your first registration, uncomment and change:
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## After getting the first signup email, re-comment the line. It only needs to run once.
## If you want to configure password login for root, uncomment and change:
## Use only one of the following lines:
#- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root
#- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'RAW_PASSWORD')" root
## If you want to authorized additional users, uncomment and change:
#- exec: ssh-import-id username
#- exec: ssh-import-id anotherusername
- exec: echo "End of custom commands"
- exec: awk -F\# '{print $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Authorized SSH keys for this container:"; } NF>=2 {print $NF;}'
then run ./launcher bootstrap app (after 8 min) in end ./launcher start app but receive error:
Error response from daemon: Cannot start container e0a9864b92d1ee65eabaa6301ee00d5248535c130c0bff585219f27f25812950: failed to create endpoint app on network bridge: Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
I can install discourse on port 8000