đŸ§Ș YunoHost 12.0 alpha (Bookworm)

Hey there!

We are happy to announce that we are officially starting the transition to Bookworm :tada: !

If you are familiar with server administration, you may understand that this is a delicate operation even though the Yunohost team will do its best to provide the smoothest possible transition with a one-click upgrade through the webadmin, just like we did in the past for Jessie → Stretch → Buster → Bullseye.

:construction: :red_circle: THIS IS ALPHA-STAGE DEVELOPMENT, WE ABSOLUTELY DISCOURAGE ANY USE OF YUNOHOST 12.x (or running the migration to be shipped in 11.x) ON A PRODUCTION SERVER - IT WILL BREAK ! :red_circle: :construction:

:space_invader: What to test ?

Mainly, YunoHost 12 will come with an important rework of the SSO layer and user portal. We are looking at both general feedback on the UI/UX, and usability in terms of “does it works and behave as expected”.

Installing a fresh YunoHost on top of a fresh Debian 12/Bookworm

  • Obtain a brand new server (such as a VPS online, a local virtual machine, or a development LXC)
  • Preinstall your server with Debian Bookworm
  • Then install Yunohost 12.x with :
$ curl https://install.yunohost.org/bookworm | bash -s -- -d unstable
# You will get a disclaimer intended to make sure what you're doing. 
# Read it and follow the instructions.

Apart from validating that the install does work, we encourage you to test every apps and features that you would typically use in a real-life server (so including the webadmin, the user portal, diagnosis, certificates, emails, 
). Note that some apps are still known to not support Bookworm yet and require fixes from our side.

Migrating an existing YunoHost 11/Bullseye server

:construction: This is still work in progress :construction:, cf Draft: Bullseye->Bookworm migration by alexAubin · Pull Request #1759 · YunoHost/yunohost · GitHub

:scroll: Preliminary changelog

:arrow_right: Major changes

  • The install script has been reworked with a simpler flow and UI (instead of the old ncurses/whiptail)
  • Do not install mariadb, php-fpm, metronome and rspamd by default
    • FIXME: rspamd is actually used not just for spam filtering but also DKIM signing and verifying, will need to look at opendkim as replacement
  • Completely rework SSOwat and the user portal, split into three distinct pieces:
    • SSOwat only handling only the SSO/ACL logic (nginx lua middleware)
    • A new “portal API” (yunohost-portal-api) service delivering authentication cookies and allowing users to retrieve/update infos
    • A new portal front end (yunohost-portal)

:arrow_right: Regarding the new portal

  • The portal and authentication mechanism are now separated in terms of “main domain trees”. For example, foo.tld and sub.foo.tld share the same portal, but bar.tld and app.bar.tld share a second, different portal
  • Users can only access a portal if they have access to at least one app of that “main domain tree”, or if they are admin
    • FIXME: we should probably also allow people if their main email is part of that domain tree?
  • The new portal include app logos, descriptions, and an optional ‘search engine’ bar.
    • FIXME: sooner or later, people will want to be able to change logos and descriptions
  • The new portal’s appearance can be customized from the webadmin in the corresponding “main domain”'s setting (such as changing the portal name, logo, default theme, custom message, 
). Each user can also pick the theme in their own settings page.
    • Note that if you themed the old portal, this theming won’t be magically migrated to the new portal
  • New option to have the list of public apps as “default app”
  • The old “yunohost tile overlay” doesn’t exist anymore
  • It is technically possible to write a completely different and independent user portal (as long as it properly interacts with the portal API) FIXME: generate proper documentation for the new portal API, maybe using swagger

Misc/technical

  • webadmin: rework cookie/session expiration mechanism. Cookies are now still valid after restarting the API (preventing clumsy disconnect during self-upgrades) and the cookie validity is automatically extended every time an API request is performed.
  • various compatibility tweakings for Bookworm
  • regenconf: update nginx and dovecot ciphers according to Mozilla recommendation
  • regenconf: update fail2ban config
  • configpanels: refactor to use pydantic for more typing and consistency, add proper autogenerated doc
  • apps: Yarn third-party repo is now available by default in apt config just like Sury, no need for an extra apt resource thingy
  • apps: drop support for unused --dedicated_service in php helpers
  • apps: drop support for legacy LUA-style regexes in permission urls
  • apps: do not auto-patch old PHP versions anymore because Sury is enabled by default and allows the install of arbitrary PHP versions
  • apps: drop support of the legacy unprotected_uris, redirected_url and similar settings
  • cli: drop support for legacy firstname/lastname args in yunohost user create
  • cli: drop legacy yunohost domain dns-conf and yunohost domain cert-status, cert-install, cert-renew
  • perf: minimize regen-conf calls to yunohost settings get, and other misc lazy-loading optimizations
  • quality: simplify the logging mess
  • quality: rework ci tests workflow
28 Likes

Wohoo!

Thanks all involved for the hard work preparing, I’ll make sure to test an installation and a tentative migration this week :slight_smile:

Where do we go with success/horror stories?

3 Likes

:clap::clap::clap::clap::clap::clap::clap::clap: :crossed_fingers:

1 Like

Hello,

Petit test d’installation sur un VPS OVH, un message d’erreur durant la post-installation :

Error: Could not read the apps_catalog list ... : File does not exist: '/etc/yunohost/apps_catalog.yml'

Same here on a qemu-libvirt image

Copying the file from a working installation completed the process of post-installation

qemu-libvirt image freshly installed the home page gives error 500

nginx access log:

192.168.1.113 - - [27/Jan/2024:12:29:45 +0100] "GET /yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv HTTP/2.0" 200 5688 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /favicon.ico HTTP/2.0" 302 138 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/portalapi/public HTTP/2.0" 500 702 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/portalapi/public HTTP/2.0" 500 702 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/portalapi/public HTTP/2.0" 500 702 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/portalapi/public HTTP/2.0" 500 702 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/sso/assets/it.9170c7c7.js HTTP/2.0" 200 1649 "https://golem2.local/yunohost/sso/assets/entry.b4244b80.js" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/portalapi/public HTTP/2.0" 500 702 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/portalapi/public HTTP/2.0" 500 702 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:46 +0100] "GET /yunohost/sso/assets/Source_Sans_3-500-7.c9015686.woff2 HTTP/2.0" 200 28816 "https://golem2.local/yunohost/sso/assets/entry.5c273e51.css" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
192.168.1.113 - - [27/Jan/2024:12:29:47 +0100] "GET /yunohost/sso/assets/builds/meta/70247ae3-6c22-4d22-9bd4-51a25c50f948.json HTTP/2.0" 200 139 "https://golem2.local/yunohost/sso/?r=aHR0cHM6Ly9nb2xlbTIubG9jYWwv" "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"

Did you run the postinstall ? Can you share the logs of journalctl -u yunohost-portal-api --no-pager --no-hostname -n 100 ?

With some troubles, as you can read in the messages above but yes at the end.

Jan 27 12:26:28 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:26:28 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:26:28 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:26:28 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:26:28 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:26:28 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:26:28 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:26:28 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:26:28 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:26:28 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:26:28 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:26:28 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:26:29 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:26:29 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:26:29 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:26:29 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:26:29 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:26:29 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:26:29 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:26:29 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:26:29 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:26:29 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:26:29 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:26:29 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:26:29 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:26:29 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:26:29 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:26:29 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:26:29 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:26:29 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:26:29 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:26:29 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:26:29 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:26:29 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:29:46 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:29:46 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:29:46 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:29:46 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:29:46 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:29:46 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:29:46 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:29:46 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:29:46 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:29:46 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:29:46 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:29:46 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:29:46 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:29:46 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:29:46 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:29:46 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:29:46 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:29:46 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:29:46 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:29:46 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:29:46 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:29:46 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:29:46 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:29:46 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:29:46 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'
Jan 27 12:29:46 yunohost-portal-api[62113]: Traceback (most recent call last):
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/interfaces/api.py", line 464, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     ret = self.actionsmap.process(arguments, timeout=30, route=_route)
Jan 27 12:29:46 yunohost-portal-api[62113]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/moulinette/actionsmap.py", line 567, in process
Jan 27 12:29:46 yunohost-portal-api[62113]:     return func(**arguments)
Jan 27 12:29:46 yunohost-portal-api[62113]:            ^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]:   File "/usr/lib/python3/dist-packages/yunohost/portal.py", line 121, in portal_public
Jan 27 12:29:46 yunohost-portal-api[62113]:     del portal_settings["portal_user_intro"]
Jan 27 12:29:46 yunohost-portal-api[62113]:         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
Jan 27 12:29:46 yunohost-portal-api[62113]: KeyError: 'portal_user_intro'

What a great news!

Opendkim could replace rspamd for DKIM signing and verifying. What would replace rspamd for spam filtering?

Rspamd can still be installed by toggling the corresponding option in the “email” global settings. The idea is just that rspamd ain’t installed by default anymore, because it’s taking way too much resource doing nothing 99% of the time (and not everybody wants to receive email on yunohost i guess) and creates stupid dependency issue (due to libhyperscan) on some hardware. Also the spam filtering config has not really been properly maintained “ever”, I’m not sure it really does a decent job with the current config. And afaik the maintainers of the projet don’t even want to hear about whatever version is shipped in Debian.

2 Likes

@lnoferin : thanks for the early feedback btw, i pushed a bunch of fixes, it should work a bit better now :+1:

3 Likes

What will it mean for someone that uses xmpp? Will it be easier to use prosody intead of metronome? How’s about the conflict of peertube, invidious jitsi? IMO it would be great if possible to use prosody for xmpp, and also peertube invidous jitsi etc, while still using xmpp without the problems/conflits with metronome and prosody.

1 Like

Same as for rspamd, we just do not install metronome by default, though I realize there’s no obvious option to trigger the install from the webadmin. Doesn’t mean we’re stopping support for Metronome, though it always had a weird integration (at least in the past where metronome was enabled for every domain by default, even subdomain, and no way to disable it). Overall, it would make much more sense that metronome would be an app rather than something tight-coupled to the core.

As far as I know there’s no conflict of any sort with Peertube because they removed the dependency to prosody/metronome entirely. Don’t know about Jitsi which afaik is tight-coupled to prosody. By the way there’s a prosody app.

5 Likes

Small dark mode issue :

On the domain settings, by default, xmpp is on

Same for emails (in and out).
By the way, setting email out to off, does that mean that apps won’t be able to send email?

Yes, you already reported the issue, it’s unrelated to bookworm: UX/UI issue : Main domain helper can't be read with dark mode on · Issue #2295 · YunoHost/issues · GitHub

Sort of yes, this means that YunoHost won’t recommend the appropriate DNS records and configure the corresponding domain in whatever service is needed so yes, unlikely to work, i mean, that’s the point of the setting?

2 Likes

I could install nextcloud just fine and connect to it but sso doesn’t seem to work with nextcloud. I mean, I need to login and logout within Nextloud. Being logged in to Yunohost doesn’t make the user logged in to nextcloud. Same for logout.

I discovered the new user panel. I love it!

There is no more Yunohost tile to come back to the user panel when we are in apps?

Then I installed Gitea. Installation went just fine too. Same comment on SSO as for nextcloud. Same for Wallabag.

Collabora, syncserver-rs and Mastodon could not be installed.

I’ll reinstall my physical server since i will received a new ssd today :grin:.
I was on Debian 11 + Yunohost 11.x up-to-date and i havn’t an intense usage of it: 2 or 3 Redirect apps and the Transmission app.

I’ll install Debian 12 so I’ll also try to use the compatible Yunohost alpha version :crossed_fingers:.

3 Likes

Indeed, fixed a bunch of stuff in the SSO today, feel free to upgrade your server and try again

5 Likes