templates: - "templates/web.template.yml" - "templates/web.ipv6.template.yml" - "templates/web.ssl.template.yml" ## which TCP/IP ports should this container expose? ## If you want Discourse to share a port with another webserver like Apache or nginx, ## see https://meta.discourse.org/t/17247 for details expose: - "80:80" # http - "443:443" # https # Use 'links' key to link containers together, aka use Docker --link flag. links: - link: name: data alias: data # any extra arguments for Docker? # docker_args: # Latest Version v3.3.2 # Discourse only support tests-passed and stable branches params: version: stable env: LC_ALL: en_US.UTF-8 LANG: en_US.UTF-8 LANGUAGE: en_US.UTF-8 DISCOURSE_FORCE_HTTPS: true ## How many concurrent web requests are supported? Depends on memory and CPU cores. ## will be set automatically by bootstrap based on detected CPUs, or you can override UNICORN_WORKERS: <%= node.cpu_cores %> ## TODO: The domain name this Discourse instance will respond to DISCOURSE_HOSTNAME: community.openstreetmap.org DISCOURSE_CDN_URL: https://community-cdn.openstreetmap.org ## Uncomment if you want the container to be started with the same ## hostname (-h option) as specified above (default "$hostname-$config") #DOCKER_USE_HOSTNAME: true ## 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: 'operations@openstreetmap.org' DISCOURSE_SMTP_ADDRESS: <%= node[:exim][:smarthost_via].split(":", 2)[0] %> DISCOURSE_SMTP_PORT: <%= node[:exim][:smarthost_via].split(":", 2)[1] || "25" %> DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none DISCOURSE_SMTP_USER_NAME: DISCOURSE_SMTP_PASSWORD: DISCOURSE_SMTP_DOMAIN: community.openstreetmap.org DISCOURSE_SMTP_OPEN_TIMEOUT: 30 DISCOURSE_SMTP_READ_TIMEOUT: 30 DISCOURSE_NOTIFICATION_EMAIL: community@noreply.openstreetmap.org ## TODO: configure connectivity to the databases DISCOURSE_DB_SOCKET: '' #DISCOURSE_DB_USERNAME: discourse DISCOURSE_DB_PASSWORD: '<%= @passwords["database"] %>' DISCOURSE_DB_HOST: data DISCOURSE_REDIS_HOST: data ## The maxmind geolocation IP address key for IP address lookup ## see https://meta.discourse.org/t/-/137387/23 for details <% if @license_keys -%> DISCOURSE_MAXMIND_ACCOUNT_ID: '<%= node[:geoipupdate][:account] %>' DISCOURSE_MAXMIND_LICENSE_KEY: '<%= @license_keys[node[:geoipupdate][:account]] %>' <% end -%> # Allow list for prometheus metric collection DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWLIST_REGEX: '^<%= @prometheus_servers.map { |a| Regexp.escape(a) }.join("|") %>$' # Increase base SIDEKIQ memory limit to 1GB UNICORN_SIDEKIQ_MAX_RSS: 1000 volumes: - volume: host: /srv/community.openstreetmap.org/shared/web-only guest: /shared - volume: host: /srv/community.openstreetmap.org/shared/web-only/log/var-log guest: /var/log - volume: host: /etc/ssl/certs/community.openstreetmap.org.pem guest: /shared/ssl/ssl.crt - volume: host: /etc/ssl/private/community.openstreetmap.org.key guest: /shared/ssl/ssl.key - volume: host: /etc/ssl/certs/dhparam.pem guest: /shared/ssl/dhparam.pem - volume: host: /srv/community.openstreetmap.org/files/update-feeds.atom guest: /shared/feeds/update-feeds.atom ## Plugins go here ## see https://meta.discourse.org/t/19157 for details hooks: after_code: - exec: cd: $home/plugins cmd: - sudo -H -E -u discourse git clone --depth 1 --branch main https://github.com/discourse/discourse-oauth2-basic.git - sudo -H -E -u discourse git clone --depth 1 --branch main https://github.com/discourse/discourse-solved.git - sudo -H -E -u discourse git clone --depth 1 --branch main https://github.com/discourse/discourse-reactions.git - sudo -H -E -u discourse git clone --depth 1 --branch main https://github.com/discourse/discourse-prometheus.git - sudo -H -E -u discourse git clone --depth 1 --branch main https://github.com/discourse/discourse-translator.git - sudo -H -E -u discourse git clone --depth 1 --branch main https://github.com/discourse/discourse-saved-searches.git - sudo -H -E -u discourse git clone --depth 1 --branch main https://github.com/discourse/discourse-post-voting.git - exec: # Needs to be copied in else builtin git cleanup fails cd: $home cmd: - sudo -H -E -u discourse cp /shared/feeds/update-feeds.atom public/update-feeds.atom after_ssl: - replace: filename: "/etc/nginx/conf.d/discourse.conf" from: /listen 80;/ to: | listen 80; listen [::]:80; rewrite ^/\.well-known/acme-challenge/(.*)$ http://acme.openstreetmap.org/.well-known/acme-challenge/$1 permanent; - replace: filename: "/etc/nginx/conf.d/discourse.conf" from: /add_header.+/ to: | add_header Strict-Transport-Security 'max-age=63072000' always; ssl_stapling on; resolver <%= @resolvers.join(" ") %>; resolver_timeout 5s; ssl_dhparam /shared/ssl/dhparam.pem;