Discourse ISPconfig + Apache + Nginx Reverse Proxy Debian 10/11

Discourse je zobecněním pojmu konverzace na jakoukoli formu komunikace. Diskurz je jedním z hlavních témat sociální teorie, která zahrnuje práce z oborů, jako je sociologie, antropologie, kontinentální filozofie a analýza diskurzu. V návaznosti na průkopnickou práci Michela Foucaulta tyto obory vnímají diskurz jako systém myšlení, vědění nebo komunikace, který konstruuje naši zkušenost se světem.

Protože kontrola nad diskurzem se rovná kontrole nad tím, jak je svět vnímán, sociální teorie často studuje diskurz jako okno k moci. V rámci teoretické lingvistiky je diskurz chápán úžeji jako jazyková výměna informací a byl jednou z hlavních motivací pro vznik rámce dynamické sémantiky, v němž jsou denotáty výrazů ztotožňovány s jejich schopností aktualizovat diskurzní kontext. Discourse (Diskurzú je zároveň jménem pro úspěšnou komunikační platformu, takzvaný fórum softvér.

Instalace Discourse

bez použití ekosystému Docker. Debian 10 správce balíčku: Ruby (2.5) neinstalovat pomocí apt s upgrade na v3.0.0, ale ideálně přímo z git pomocí ruby manager (třeba rbenv). Chybová hláška u inicializace naklonovaného Discourse vyřeší přepnutí globalní verze Ruby na nižší a pak zpátky na aktualizovanou (nejnovější).

Your RubyGems version (2.7.6.2)) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3`

Yarn + Ruby manager

apt install yarn
rbenv nebo rvm ruby manager pro upgrade ruby třeba:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
rvm current
rvm --default use ruby-3.1.0

nebo

rbenv install 3.1.0
rbenv global 3.1.0
gem install bundler
gem update --system
Updating rubygems-update
Fetching rubygems-update-3.2.3.gem
Successfully installed rubygems-update-3.2.3
Parsing documentation for rubygems-update-3.2.3
Installing ri documentation for rubygems-update-3.2.3
Done installing documentation for rubygems-update after 83 seconds
Parsing documentation for rubygems-update-3.2.3
Done installing documentation for rubygems-update after 0 seconds
Installing RubyGems 3.2.3
system temporary path is world-writable: /tmp
/tmp is world-writable: /tmp
  Successfully built RubyGem
  Name: bundler
  Version: 2.2.3
  File: bundler-2.2.3.gem
Bundler 2.2.3 installed
RubyGems 3.2.3 installed
Regenerating binstubs
Regenerating plugins
Parsing documentation for rubygems-3.2.3
Installing ri documentation for rubygems-3.2.3

------------------------------------------------------------------------------

RubyGems installed the following executables:
        /root/.rbenv/versions/3.1.0/bin/gem
        /root/.rbenv/versions/3.1.0/bin/bundle

Ruby Interactive (ri) documentation was installed. ri is kind of like man
pages for Ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method
If you do not wish to install this documentation in the future, use the
--no-document flag, or set it as the default in your ~/.gemrc file. See
'gem help env' for details.

RubyGems system software updated
user@stage:/tmp#

Inicializace / Instalace Discourse

cd /var/www/web519/web/
RAILS_ENV=production bundle install

MaxMind.DB

Downloading MaxMindDB...
Compressing Javascript and Generating Source Maps
MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
Compressing: vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js

Spuštění Discourse

user@stage: /var/www/web519/web/# RAILS_ENV=production bundle exec puma -C /var/www/web519/web/config/puma.rb
[7465] Puma starting in cluster mode...
[7465] * Puma version: 5.5.2 (ruby 3.0.0-p0) ("Zawgyi")
[7465] *  Min threads: 8
[7465] *  Max threads: 32
[7465] *  Environment: production
[7465] *   Master PID: 7465
[7465] *      Workers: 4
[7465] *     Restarts: (✔) hot (✖) phased
[7465] * Preloading application
[7465] * Listening on unix:///var/www/web519/web/tmp/sockets/puma.sock
[7465] ! WARNING: Detected 2 Thread(s) started in app boot:
[7465] ! #<Thread:0x00005564fa115aa8 /var/www/web519/web/vendor/bundle/ruby/3.0.0/gems/message_bus-4.0.0/lib/message_bus.rb:720 sleep> - /var/www/web519/web//vendor/bundle/ruby/3.0.0/gems/redis-4.5.1/lib/redis/connection/ruby.rb:56:in `wait_readable'
[7465] ! #<Thread:0x00005564fa115800 /var/www/web519/web/vendor/bundle/ruby/3.0.0/gems/message_bus-4.0.0/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/web519/web//vendor/bundle/ruby/3.0.0/gems/message_bus-4.0.0/lib/message_bus/timer_thread.rb:130:in `sleep'

Po upgrade na Ruby on Rails 3.1.0 + instalaci Discourse otestovat funkční socket

curl -XGET --unix-socket /var/www/web519/web/tmp/sockets/puma.sock

Načte (nebo nenačte) úvodní stránku Discourse s registračním formulářem

<html>
  <head>
    <link href="/stylesheets/wizard_53ebe553df3411e3cb4a5815f3dc884b19d45c46.css?__ws=discourse.ictis.cz" media="all" rel="stylesheet" data-target="wizard"  />
    <link href="/stylesheets/color_definitions_base__1_989c1862fe30765db73d2459ca66e4b705ce9770.css?__ws=discourse.ictis.cz" media="all" rel="stylesheet" class="light-scheme"/><link href="/stylesheets/color_definitions_dark_1_1_8aeb645d07fdf2f07fbf9a39ef8f0d85bde76397.css?__ws=discourse.ictis.cz" media="(prefers-color-scheme: dark)" rel="stylesheet" class="dark-scheme"/>

    <meta name="generator" content="Discourse 2.8.0.beta11 - https://github.com/discourse/discourse version 70af45055ae24dc7eb1a20678a52ed3ec69421c3">
<link rel="icon" type="image/png" href="http://discourse.ictis.cz/uploads/default/optimized/1X/_129430568242d1b7f853bb13ebea28b3f6af4e7_2_32x32.png">
<link rel="apple-touch-icon" type="image/png" href="http://discourse.ictis.cz/uploads/default/optimized/1X/_129430568242d1b7f853bb13ebea28b3f6af4e7_2_180x180.png">
<meta name="theme-color" content="#ffffff">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes, viewport-fit=cover">
<link rel="canonical" href="http://discourse.ictis.cz/" />
<script type="application/ld+json">{"@context":"http://schema.org","@type":"WebSite","url":"http://discourse.ictis.cz","potentialAction":{"@type":"SearchAction","target":"http://discourse.ictis.cz/search?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
<link rel="search" type="application/opensearchdescription+xml" href="http://discourse.ictis.cz/opensearch.xml" title="Discourse Search">

    <title>Discourse Setup</title>
  </head>

  <body class='wizard'>
    <div id='wizard-main'>
      <div class='wizard-column'>
        <div class='wizard-column-contents finish-installation'>

          <h1>Congratulations, you installed Discourse!</h1>


<div class='row'>
  <img class="tada" src="/images/wizard/tada.svg" />
</div>

<div class='row help-text'>
  register a new account to get started
</div>

<div class='row'>
  <a class="wizard-btn primary" href="/finish-installation/register">
    <svg xmlns="http://www.w3.org/2000/svg" width="14px" height="14px" viewBox="0 0 448 512">
      <path fill="currentColor" d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>
    </svg>

    Register
</a></div>

        </div>
        <div class='wizard-footer'>
          <div class='discourse-logo'></div>
        </div>
      </div>
    </div>
  </body>
</html>

Instalace funguje, použít Nginx nebo Apache mod_proxy pro zobrazení webu v prohlížeči.

Vizualizace

Discourse Debian server
Discourse Debian server

Užitečné

Domovská stránka Discourse.
Text Easywall firewall GUI iptables.

ICTIS.CZ