X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/2f23300adc2b6a6730c3d8eaa1bcc45d95b208e6..3dd9c1f272387bcb4da921f33e6d922db539e950:/cookbooks/community/templates/default/web_only.yml.erb diff --git a/cookbooks/community/templates/default/web_only.yml.erb b/cookbooks/community/templates/default/web_only.yml.erb index a3f47dbbe..551be5800 100644 --- a/cookbooks/community/templates/default/web_only.yml.erb +++ b/cookbooks/community/templates/default/web_only.yml.erb @@ -1,6 +1,6 @@ templates: - "templates/web.template.yml" - - "templates/web.ratelimited.template.yml" + - "templates/web.ipv6.template.yml" - "templates/web.ssl.template.yml" ## which TCP/IP ports should this container expose? @@ -19,22 +19,23 @@ links: # any extra arguments for Docker? # docker_args: +# Latest Version v3.2.2 params: - version: v2.8.1 + version: stable env: LC_ALL: en_US.UTF-8 LANG: en_US.UTF-8 LANGUAGE: en_US.UTF-8 - EMBER_CLI_PROD_ASSETS: 1 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: 8 + 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") @@ -44,16 +45,15 @@ env: ## on initial signup example 'user1@example.com,user2@example.com' DISCOURSE_DEVELOPER_EMAILS: 'operations@openstreetmap.org' - ## TODO: The SMTP mail server used to validate new accounts and send notifications - # SMTP ADDRESS, username, and password are required - # WARNING the char '#' in SMTP password can cause problems! - DISCOURSE_SMTP_ADDRESS: mail.openstreetmap.org - DISCOURSE_SMTP_PORT: 26 + 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_ENABLE_START_TLS: true # (optional, default true) DISCOURSE_SMTP_DOMAIN: community.openstreetmap.org - DISCOURSE_NOTIFICATION_EMAIL: noreply@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: '' @@ -64,7 +64,16 @@ env: ## 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: @@ -75,10 +84,16 @@ volumes: guest: /var/log - volume: host: /etc/ssl/certs/community.openstreetmap.org.pem - guest: /shared/ssl/ssl.crt; + guest: /shared/ssl/ssl.crt - volume: host: /etc/ssl/private/community.openstreetmap.org.key - guest: /shared/ssl/ssl.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 @@ -87,45 +102,38 @@ hooks: - exec: cd: $home/plugins cmd: - - git clone --depth 1 https://github.com/discourse/docker_manager.git - - git clone --depth 1 https://github.com/discourse/discourse-oauth2-basic.git - - git clone --depth 1 https://github.com/discourse/discourse-solved.git - - git clone --depth 1 https://github.com/discourse/discourse-canned-replies.git - - git clone --depth 1 https://github.com/discourse/discourse-reactions.git + - 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 + - exec: + # FIXME: Workaround until https://github.com/discourse/discourse/pull/27040 merged + cd: $home + cmd: + - "sudo -H -E -u discourse sed -i 's/follow_redirect: false,/follow_redirect: true,/' lib/discourse_ip_info.rb" after_ssl: - - file: - path: "/etc/nginx/letsencrypt.conf" - contents: | - user www-data; - worker_processes auto; - daemon on; - - events { - worker_connections 768; - # multi_accept on; - } - - http { - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - access_log /var/log/nginx/access.letsencrypt.log; - error_log /var/log/nginx/error.letsencrypt.log; - - server { - 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: /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'; + add_header Strict-Transport-Security 'max-age=63072000' always; + ssl_stapling on; + resolver <%= node[:networking][:nameservers].join(" ") %>; + resolver_timeout 5s; + ssl_dhparam /shared/ssl/dhparam.pem;