Alternative zu Discourse mit geringerem Footprint
-
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 einfachcomposer require <...>
aufrufen (im Docker-Container) - wie hier beschrieben: https://docs.flarum.org/extend/start#installing-your-extensionVielleicht 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:- Wann hat diese Angabe Effekt, also wann greift diese? ...
- 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 INTO
flarum_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 ...
-
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.
-
Ich muss das alles neu machen.
Mir ist aufgefallen, dass
ubuntu:jammy
zusammen mitmysql-server
eine(!) schwerwiegende Sicherheitslücke enthält, weil die Mysql-Version nicht aktuell ist, und wohl auch nicht aktualisiert wird in nächster Zeit.Ich hatte zwar keinen einzigen User, aber die Sicherheit kann ja nicht schaden.
Also muss ich auf Debian12 und Mariadb umstellen. Da die Mysql8-Datenbank nicht mit Mariadb kompatibel ist, müsste ich die Daten eigentlich auch migrieren, das bekomme ich so ohne Weiteres aber nicht hin. (anderes Encoding, anderes User-Schema ...)
Aber egal. Aktuell weiß ich nicht, wie ich Mariadb in einem Docker-Container im Hintergrund starten kann.
mysqld_safe --user=root &
funktioniert nicht - mit Mysql8 funktionierte das noch.Hat dazu jemand eine Idee?
-
Hab's hinbekommen.
Siehe Scan-Summary: https://i.postimg.cc/zXcwMdHb/grafik.png
Ich habe für MariaDB jetzt das offizielle Docker-Image und einen eigenen Container verwendet. (So, wie man das ja auch eigentlich tun sollte ...)
Hier kann dann zu, nach meiner Meinung