Alternative zu Discourse mit geringerem Footprint



  • Moin & frohe Ostern, kennt ihr eine Alternative zu Discourse? Ich habe einen kleinen Webserver mit 4 GB RAM. Auf dem Server laufen schon zwei andere Webanwendungen, die ca. 1 bis 1,5 GB brauchen. Dazu kommt noch das nicht unerhebliche Docker-Ökosystem und ein virtueller Desktop (kde). Wenn ich Discourse starte und sich die Datenbanken und Assets aufbauen, kommt das System an 100 % ran und es geht fast nix mehr. Discourse schreibt selber, es benötige nur 1 bis 2 GB.

    Deshalb suche ich also nach einer Alternative mit geringem Footprint, und mit der ich Code-Snippets sammeln kann ... eine Art Tagebuch oder content management system ... aber nicht Wordpress, das ist mir viel zu unübersichtlich, und damit komme ich nicht klar. Videos, Bilder oder Zeichnungen brauche ich eigentlich nicht, Markdown wäre schon genug. Und es wäre gut, wenn sich auch andere Benutzer anmelden könnten.

    Wenns geht, open source und freeware.



  • Das klingt danach dass irgendwas in Richtung Wiki was für dich wäre.
    AFAIK gibt es einige Wiki Systeme die minimalistisch sind und auch Markdown können.

    4GB Ram sind schon arg wenig wenn du schon Webanwendungen hast, die 1-1.5GB brauchen + Docker + ein Desktop, dann sind die 1-2 GB die Discourse braucht natürlich zu viel für 4GB Ram.
    Allein wenn du nur deine Webanwendungen und Discourse laufen lassen würdest sind die 4GB Ram schon fast zu wendig.
    Da sind es nach deinen Angaben 2-3.5GB + Das was Docker noch so braucht. (Laufen etwa die Webanwendungen in Docker container?)

    Wobei bei deinem Nutzungsverhalten mit dem Webserver es sich grundsätzlich lohnen würde dem Server 2-4 GB mehr RAM zu verpassen.

    Denn je nachdem welche Programme du auf dem virtuellen Desktop nutzt sind dann die 4GB recht schnell voll.
    Wobei ich es persönlich fraglich finde, einen virtuellen Desktop auf einem Webserver laufen zu lassen.



  • Hallo, Danke für die Antwort ... ich habe schon etwas gefunden: Flarum.

    Für Flarum brauche ich nur ein Docker-Image. mariadb lief bereits schon als docker-compose Container ... es war nur etwas kompliziert, Flarum so zu konfigurieren, dass es statt einer eigenen DB eine bereits vorhandene verwendet (mit eigenem Benutzer, Datenbank und prefix_).

    Der zusätzliche "Overhead" von Flarum ist minimal, sodass ich mit den 4 GB auskomme - auch, wenn der kde Desktop läuft.

    Klar, es greifen jetzt nicht 1000 Leute gleichzeitig auf die Seite zu, aber dafür war es eigentlich auch nicht gedacht ...

    Hat jemand Lust, sich die Seite mal anzuschauen? Aber ich hab halt noch kein Impressum, deshalb weiß ich nicht, ob ich das darf. Bei Interesse schreibt mir eine PN.



  • Ach was solls, schaut mal bei meiner privaten Homepage vorbei: https://bit.ly/43qXjwf

    Diesen Beitrag kann ich ja immer noch später ändern.



  • erstmal brauchst du kein impressum fuer nicht-kommerzielle websites, zweitens wolltest du vermutlich eher eine KB oder wiki haben, anstelle eines full-blown forums nur um deine snippets zu posten. bspw wiki.js oder eines der dutzend anderen open source alternativen, die meisten haben SSO auth built-in oder via plugin, so dass du ein login feature fuer andere user hast.



  • @Cardiac Vielen Dank für deine Antwort. Ja, beim Impressum war ich mir unsicher, aber ich nutze das Forum rein privat.

    Inzwischen gefällt mir das Board aber ganz gut... vielleicht wechsle ich aber auch nochmal auf eine der genannten Alternativen

    Es ist jnoch nicht "in Stein gemeißelt"... 😅



  • Die composer.json sieht so aus:

        "require": {
            "flarum-lang/german": "^1.4",
            "flarum/approval": "*",
            "flarum/bbcode": "*",
            "flarum/core": "^1.3",
            "flarum/emoji": "*",
            "flarum/flags": "*",
            "flarum/lang-english": "*",
            "flarum/likes": "*",
            "flarum/lock": "*",
            "flarum/markdown": "*",
            "flarum/mentions": "*",
            "flarum/nicknames": "*",
            "flarum/pusher": "*",
            "flarum/statistics": "*",
            "flarum/sticky": "*",
            "flarum/subscriptions": "*",
            "flarum/suspend": "*",
            "flarum/tags": "*",
            "fof/upload": "^1.2",
            "fof/user-directory": "^1.2"
        },
    

    flarum-lang/german, fof/upload und fof/user-directory sind third-party extensions ( https://docs.flarum.org/extend/ ) und nicht enabled by default. Sie sind nach einem Neustart zwar nicht "weg", aber nicht aktiviert.

    Ihr wüsstet nicht zufällig, wie ich diese Erweiterungen standardmäßig aktivieren kann, oder?

    extension enable <...> funktioniert leider nicht, nur install oder list geht

    Und hier https://discuss.flarum.org/d/21402-enable-a-extension-from-cli hat jemand etwas geschrieben, was ich nicht verstehe (also sinngemäß)



  • Habe es nun hinbekommen, es war denkbar einfach:

    $ docker exec -it flarum sh
    
    / # cd flarum/app/
    /flarum/app # ls -la
    total 436
    drwxr-xr-x    1 991      991           4096 Apr 13 17:14 .
    drwxr-xr-x    1 991      991           4096 Jun  6  2022 ..
    -rw-r--r--    1 991      991            361 Jun  6  2022 .editorconfig
    -rw-r--r--    1 991      991           1784 Jun  6  2022 .nginx.conf
    -rw-r--r--    1 991      991           2006 Jun  6  2022 CHANGELOG.md
    -rw-r--r--    1 991      991           1168 Jun  6  2022 LICENSE
    -rw-r--r--    1 991      991           2299 Jun  6  2022 README.md
    -rw-r--r--    1 991      991           1331 Apr 13 17:14 composer.json
    -rw-r--r--    1 991      991         349087 Apr 13 17:14 composer.lock
    -rw-r--r--    1 991      991            494 Apr 13 17:14 config.php
    -rw-r--r--    1 991      991            494 Apr 13 17:14 config.php.sample
    -rw-r--r--    1 991      991            341 Jun  6  2022 config.yml
    -rw-r--r--    1 991      991            265 Jun  6  2022 extend.php
    drwxr-xr-x    3 991      991           4096 Apr 11 07:15 extensions
    -rw-r--r--    1 991      991            634 Jun  6  2022 flarum
    drwxrwxrwx    1 991      991           4096 Jun  6  2022 public
    -rw-r--r--    1 991      991           1800 Jun  6  2022 site.php
    drwxrwxrwx    1 991      991           4096 Jun  6  2022 storage
    drwxr-xr-x    1 991      991           4096 Apr 13 17:14 vendor
    /flarum/app # extension list
    flarum-lang/german
    fof/upload
    fof/user-directory
    Clearing the cache...
    /flarum/app # composer require flarum-lang/german
    Info from https://repo.packagist.org: #StandWithUkraine
    Using version ^1.4 for flarum-lang/german
    ./composer.json has been updated
    Running composer update flarum-lang/german
    Loading composer repositories with package information
    Updating dependencies
    Nothing to modify in lock file
    Installing dependencies from lock file (including require-dev)
    Nothing to install, update or remove
    Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
    Generating autoload files
    76 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
    /flarum/app #
    
    

    Anstatt extension install <...> sollte man einfach composer require <...> aufrufen (im Docker-Container) - wie hier beschrieben: https://docs.flarum.org/extend/start#installing-your-extension

    Vielleicht hat irgendjemand irgendwann mal das ähnliche Problem und freut sich dann über das Thema.



  • Es geht leider doch nicht. Wenn ich docker compose komplett beende und neu starte, dann sind die Erweiterungen wieder deaktiviert ... ich bin schon richtig angepisst ...



  • installier die extensions halt ein mal manuell, dann kopierst du dir composer.lock ausm container, und mountest das als volume. dann ist das bei jedem start wieder da.

    edit: das ist natuerlich auch scheisse, denn sollte mal ne dependency updated werden, musst du den spass wiederholen.
    hat das image keine env vars um extensions zu installieren? das scheint mir in den meisten faellen eine natuerliche anforderung zu sein.



  • Mein flarum.env-File sieht folgendermaßen aus:

    DEBUG=false
    FORUM_URL=<...>
    
    # Database configuration
    DB_HOST=<...>
    DB_NAME=<...>
    DB_USER=<...>
    DB_PASS=<...>
    DB_PREF=<...>
    DB_PORT=<...>
    
    # User admin flarum (environment variable for first installation)
    # /!\ admin password must contain at least 8 characters /!\
    FLARUM_ADMIN_USER=admin
    FLARUM_ADMIN_PASS=<...>
    FLARUM_ADMIN_MAIL=<...>
    FLARUM_TITLE=<...>
    
    PHP_EXTENSIONS=flarum-lang/german,fof/upload,fof/user-directory
    
    

    https://github.com/mondediefr/docker-flarum#environment-variables

    In Zeile 19 bei PHP_EXTENSIONS bin ich mir unsicher. Ich weiß zwei Dinge nicht:

    1. Wann hat diese Angabe Effekt, also wann greift diese? ...
    2. Ist die Syntax korrekt? Wahrscheinlich nicht, aber wie sollte ich "sie" (Arrays) angeben?

    Vielleicht hast du noch eine Idee @Cardiac . Ich hab das nämlich noch nicht vollständig durchdrungen.



  • php extension != flarum extensions

    ich hatte den thread falsch verstanden und angenommen die extensions waeren weg-weg und nicht nur disabled-weg.

    Wenn der scheiss mit in die db geschrieben wird, dann sollte das aber definitiv wieder da sein, wenn du compose neustartest? Oder hast du dein mysql ephemeral und schreibst das nicht in ein volume?



  • @Cardiac sagte in Alternative zu Discourse mit geringerem Footprint:

    php extension != flarum extensions

    wahr. Das ist mir inzwischen auch aufgefallen. Zeile 19 kann komplett weg.

    @Cardiac sagte in Alternative zu Discourse mit geringerem Footprint:

    ich hatte den thread falsch verstanden und angenommen die extensions waeren weg-weg und nicht nur disabled-weg.

    die sind da. Aber nicht standardmäßig eingeschaltet.

    @Cardiac sagte in Alternative zu Discourse mit geringerem Footprint:

    Wenn der scheiss mit in die db geschrieben wird, dann sollte das aber definitiv wieder da sein, wenn du compose neustartest? Oder hast du dein mysql ephemeral und schreibst das nicht in ein volume?

    das ist der Knackpunkt. Anscheinend wir das nicht in die db geschrieben. Zumindest nicht die automatische Aktivierung bei Neustart.

    docker restart flarum geht im Übrigen. Nur docker compose down und danach wieder up -d nicht.



  • Was mich wundert:

    Ein docker compose stop und ein anschließend start ist erweiterungs-erhaltend.

    Ein docker compose down und ein anschließendes up -d nicht.

    Ich rieche einen Bug ...



  • compose stop, stoppt die container. compose down schmeisst sie weg.
    musst dich halt durch den flarum kack wuehlen um herauszufinden wie die dinger initialisiert und persisted werden.



  • Ich hab jede Dokumentation dazu gelesen, die ich finden konnte ... Heißt das, ich müsste jetzt die Datenbank untersuchen? 😩



  • Super, ich habe gerade folgendes gesehen:

    INSERT INTOflarum_settingsVALUES ('allow_post_editing','reply'),('allow_renaming','10'),('allow_sign_up','1'),('custom_less',''),('default_locale','de'),('default_route','/all'),('display_name_driver','username'),('extensions_enabled','[\"flarum-suspend\",\"flarum-flags\",\"fof-user-directory\",\"fof-upload\",\"fof-recaptcha\",\"flarum-tags\",\"flarum-subscriptions\",\"flarum-sticky\",\"flarum-statistics\",\"flarum-mentions\",\"flarum-markdown\",\"flarum-lock\",\"flarum-likes\",\"flarum-lang-german\",\"flarum-lang-english\",\"flarum-emoji\",\"flarum-bbcode\",\"flarum-approval\"]'),...

    Wenn das also schon als extensions_enabled in der DB drin ist ... was mache ich dann falsch? Es geht um:

    fof-user-directory, fof-upload, fof-recaptcha und flarum-lang-german

    Stimmt die Reihenfolge vielleicht nicht?



  • @Cardiac Ideen?

    Ich kann hier auch ein minimales Setup posten, falls das weiterhelfen sollte, um es selber zu starten...



  • *püschel*

    Ich hab bei schönem Wetter den Nachmittag damit verbracht, auf Fehlersuche zu gehen, und bin zu der Erkenntnis gelangt, dass dieses Dockerimage einfach veraltet ist (https://github.com/mondediefr/docker-flarum).

    Ich hab mir dann (kurzerhand) ein eigenes Dockerimage erstellt ... ich weiß allerdings nicht, wie man das "richtig" machen würde.

    Dockerfile:

    FROM ubuntu:jammy
    
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && apt update && apt upgrade -y && apt install mysql-server mysql-client apache2 php php-curl php-xml php-mime-type php-gd php-json php-mbstring php-db php-tokenizer php-zip php-mysql composer git net-tools nano -y
    
    ENV TZ=Europe/Berlin
    
    #COPY ./mysql /var/lib/mysql
    #COPY ./mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
    #COPY ./apache2 /etc/apache2
    #COPY ./flarum /var/www/html/flarum
    
    CMD cd /var/www/html/flarum && composer update && usermod -d /var/lib/mysql/ mysql && chown -R mysql:mysql /var/lib/mysql && service mysql start && chown -R www-data:www-data /var/www/html/flarum && chmod -R 755 /var/www/html/flarum && a2enmod rewrite && apachectl -D FOREGROUND
    
    #EXPOSE 80:80
    

    docker-compose.yml:

    #...
      flarum:
        build: ./flarum-dockerfile
        restart: no
        links:
          - proxy
        volumes:
          - ./flarum-dockerfile/mysql:/var/lib/mysql
          - ./flarum-dockerfile/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
          - ./flarum-dockerfile/apache2:/etc/apache2
          - ./flarum-dockerfile/flarum:/var/www/html/flarum
    #...
    

    In Zeile 12 des Dockerfile bräuchte ich doch eigentlich noch eine "Weiche", um zu testen, ob Flarum bereits installiert ist oder nicht - oder?

    Ich weiß nicht ... Erstellt man so eigene Container, oder nicht?


    Ach ja, noch das Wichtigste ... die composer.json mit den Erweiterungen, die aktiviert werden sollen (das war ja das Ziel):

    {
        "name": "flarum/flarum",
        "description": "Delightfully simple forum software.",
        "type": "project",
        "keywords": [
            "forum",
            "discussion"
        ],
        "homepage": "https://flarum.org/",
        "license": "MIT",
        "authors": [
            {
                "name": "Flarum",
                "email": "info@flarum.org",
                "homepage": "https://flarum.org/team"
            }
        ],
        "support": {
            "issues": "https://github.com/flarum/core/issues",
            "source": "https://github.com/flarum/flarum",
            "docs": "https://docs.flarum.org/"
        },
        "require": {
            "flarum/core": "^1.7",
            "flarum/approval": "*",
            "flarum/bbcode": "*",
            "flarum/emoji": "*",
            "flarum/lang-english": "*",
            "flarum/flags": "*",
            "flarum/likes": "*",
            "flarum/lock": "*",
            "flarum/markdown": "*",
            "flarum/mentions": "*",
            "flarum/nicknames": "*",
            "flarum/pusher": "*",
            "flarum/statistics": "*",
            "flarum/sticky": "*",
            "flarum/subscriptions": "*",
            "flarum/suspend": "*",
            "flarum/tags": "*",
            "flarum-lang/german": "*",
            "fof/recaptcha": "*",
            "fof/user-directory": "*",
            "fof/upload": "*"
        },
        "config": {
            "preferred-install": "dist",
            "sort-packages": true
        }
    }
    


  • Hab das ganze Docker-Geraffel jetzt noch einmal etwas schöner gemacht:

    docker-compose.yml:

      flarum:
        build: ./flarum-dockerfile
        restart: no
        links:
          - proxy
        volumes:
          - ./flarum-dockerfile/mysql:/var/lib/mysql
          - ./flarum-dockerfile/flarum:/var/www/html/flarum
    

    ./flarum-dockerfile/Dockerfile:

    FROM ubuntu:jammy
    
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && apt update && apt install mysql-server mysql-client apache2 php php-curl php-xml php-mime-type php-gd php-json php-mbstring php-db php-tokenizer php-zip php-mysql composer git net-tools nano -y
    
    ENV TZ=Europe/Berlin
    
    COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf
    COPY ./script_start_flarum.sh /root/
    
    ENTRYPOINT ["sh", "/root/script_start_flarum.sh"]
    
    #EXPOSE 80:80
    

    ./flarum-dockerfile/script_start_flarum.sh:

    #!/bin/sh
    cd /root/ || exit
    usermod -d /var/lib/mysql/ mysql
    chown -R mysql:mysql /var/lib/mysql
    chown -R www-data:www-data /var/www/html/flarum
    chmod -R 755 /var/www/html/flarum
    cd /var/www/html/flarum/ && composer update && cd /root/ || exit
    service mysql start
    a2enmod rewrite
    apachectl -D FOREGROUND
    
    

    Zwischen Zeile 6 und 7 müsste eben noch eingefügt werden, dass Flarum via composer create-project flarum/flarum . installiert wird, falls /var/www/html/flarum leer ist ...

    Edit: Ach so, und die DB (nicht Deutsche Bahn 😃 ) müsste dann natürlich auch initialisiert werden ... 😬


  • Gesperrt

    Mir ist etwas Doofes passiert. 😬

    Ich wollte das OS des Docker-Hosts wechseln, von Ubuntu nach Debian ... (wieso weshalb warum ist jetzt erst einmal zweitrangig)

    Also habe ich mit zip -r (ohne root) ein Backup des docker folders angelegt. Darin waren auch die Flarum-Datenbankdatein. Leider hab ich erst zu spät bemerkt, dass diese root:root als Benutzer:Gruppe hatten, und sie folglich nicht im Backup enthalten sind. 😬

    Das war die schlechte Nachricht ... Aber die gute ist wenigstens: Das Flarum hatte eh keiner verwendet. 😅

    tl;dr: Beim nächsten Mal bin ich schlauer.


Anmelden zum Antworten