Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: jvalle...@mailbox.org

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Please unblock package freedombox.

I would like to request an "unblock" in order to shorten the migration
time to testing for freedombox 21.4.2. This is because it includes a
fix for a security issue. The other changes in this version are bug
fixes, documentation updates, and translations updates. Here is a list
of the fixes and links to more information about each:

1. Session hijack in first run wizard
Fix: Use session to verify first boot welcome step.
Security tracker: 
https://security-tracker.debian.org/tracker/TEMP-0000000-3E4AC3
Issue: https://salsa.debian.org/freedombox-team/freedombox/-/issues/2074
Files modified: plinth/modules/first_boot/*

2. Deluge daemon user not in freedombox-share group
Fix: Add to freedombox-share group before running app setup.
Merge request: 
https://salsa.debian.org/freedombox-team/freedombox/-/merge_requests/2042
File modified: plinth/modules/deluge/__init__.py

3. Permission denied writing to Samba share
Fix: Make file-sharing services depend on nslcd.service.
Issue: https://salsa.debian.org/freedombox-team/freedombox/-/issues/2061
Merge request: 
https://salsa.debian.org/freedombox-team/freedombox/-/merge_requests/2041
Files modified: 
plinth/modules/{deluge,mldonkey,syncthing,transmission}/data/lib/systemd/system/*.service.d/freedombox.conf

4. Flaky tests related to user home directory
Fix: Don't depend on particular user to be running tests.
Issue: https://salsa.debian.org/freedombox-team/freedombox/-/issues/2014
Merge request: 
https://salsa.debian.org/freedombox-team/freedombox/-/merge_requests/2043
Files modified: plinth/modules/config/tests/*

5. Documentation and translation updates
Files modified: doc/*, locale/*


unblock freedombox/21.4.2

-----BEGIN PGP SIGNATURE-----

iQJKBAEBCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmBjnK8WHGp2YWxsZXJv
eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICHbND/4gdjbRuBLfumrsnT3PHZNhZNjH
39jjVI0FmFhJNnhuuNqPutFrHpu4dnXH4n6NoxoAyyJ0UkrOVlQNIQTmxZgjlUSo
u6khiPe2ziHaaxbKVzBrHABWt3sB2T194Fix52+QZESZNtgUpPnC9lPtHibBwZM2
f/tsOV+xROlmb8tDDVdDyLyQCInvdN4vL+pbvVXqf+WseMbtOIyMPAdJxuy2b4xf
JOzjP/pTyHAC8M6M2KD5R5JwaNie416j+x0ES8Ghkaabucp977bXoQqgZBcAZNyT
YWbPxXAksgX53CXOrsaElBnX9SBU8pqsEO40Nw/V+Oow4sAKWRDU/xtV+YRKbGA5
ij0PXb5pbzQdkKTE6EG+vr19kEDjDSd1+tAKtjH9hh76/SuP4T5K+YNyo+hClaxd
ee/TPXqbA5Nu6oSlIXlWgn4ipff/Tq9L2iTtqQ1alC2R4UV7abt5yFOtgQdJyOgF
eowYEYTZjDhZ4DG8oPX2a8Tr0BMQgVI2mRs8b4lrhZ0LF93E23qrOFBzsxPg/Vn9
jZYgfd0Iw36gPROFzQEt3F9Ox5FVOH0Id1X4Qe0+WmNBhe04ZEQqLZfclaVha6dG
/MAUYBNS3/ZFnrjHVccw3/8kasCVuYMjxrE+BVgTHD+LgH63OrUi0Q88q0zV8aqF
B7q8fB+d8z97cfhUjw==
=qdTO
-----END PGP SIGNATURE-----
diff -Nru freedombox-21.4/debian/changelog freedombox-21.4.2/debian/changelog
--- freedombox-21.4/debian/changelog    2021-02-28 20:57:00.000000000 -0500
+++ freedombox-21.4.2/debian/changelog  2021-03-28 09:23:46.000000000 -0400
@@ -1,3 +1,61 @@
+freedombox (21.4.2) unstable; urgency=high
+
+  [ Burak Yavuz ]
+  * Translated using Weblate (Turkish)
+  * Translated using Weblate (Turkish)
+
+  [ nautilusx ]
+  * Translated using Weblate (German)
+
+  [ Michalis ]
+  * Translated using Weblate (Greek)
+
+  [ Reza Almanda ]
+  * Translated using Weblate (Indonesian)
+
+  [ Kirill Schmidt ]
+  * first_boot: Use session to verify first boot welcome step
+
+  [ James Valleroy ]
+  * doc: Fetch latest manual
+
+ -- James Valleroy <jvalle...@mailbox.org>  Sun, 28 Mar 2021 09:23:46 -0400
+
+freedombox (21.4.1) unstable; urgency=medium
+
+  [ Dietmar ]
+  * Translated using Weblate (German)
+
+  [ Karol Werner ]
+  * Translated using Weblate (Polish)
+
+  [ Michalis ]
+  * Translated using Weblate (Greek)
+  * Translated using Weblate (Greek)
+
+  [ Fioddor Superconcentrado ]
+  * Generating developer documentation.
+  * config: Fix tests related to user home directory
+  * Translated using Weblate (Spanish)
+
+  [ ikmaak ]
+  * Translated using Weblate (Dutch)
+
+  [ Burak Yavuz ]
+  * Translated using Weblate (Turkish)
+
+  [ Veiko Aasa ]
+  * deluge, mldonkey, syncthing, transmission: Depend on nslcd.service
+  * deluge: Fix daemon user not in freedombox-share group after installation
+
+  [ Michael Breidenbach ]
+  * Translated using Weblate (Swedish)
+
+  [ James Valleroy ]
+  * doc: Fetch latest manual
+
+ -- James Valleroy <jvalle...@mailbox.org>  Sat, 13 Mar 2021 11:55:40 -0500
+
 freedombox (21.4) unstable; urgency=medium
 
   [ Petter Reinholdtsen ]
diff -Nru freedombox-21.4/doc/manual/en/Contribute.raw.wiki 
freedombox-21.4.2/doc/manual/en/Contribute.raw.wiki
--- freedombox-21.4/doc/manual/en/Contribute.raw.wiki   2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/en/Contribute.raw.wiki 2021-03-28 
09:23:46.000000000 -0400
@@ -24,88 +24,125 @@
 
 As a new contributor, you are more than welcome to introduce yourself to 
others on the !FreedomBox 
[[https://discuss.freedombox.org/c/development|discussion forum]], 
[[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|mailing 
list]] or on the [[irc://irc.debian.org/freedombox|#freedombox IRC]] channel. 
In addition to make useful contacts, you can start reporting bugs and translate 
(see below) the wiki website and the !FreedomBox web interface. 
 
-== Development priorities ==
 
-Upcoming priorities are discussed on an regular basis. You find the progress 
of the !FreedomBox Service with its priorities here: 
[[https://salsa.debian.org/groups/freedombox-team/-/boards|issues board]] and 
[[https://salsa.debian.org/groups/freedombox-team/-/milestones|milestones]].
+= Contributions needed =
 
-Please check next [[FreedomBox/ProgressCalls|progress calls]] to keep yourself 
on track and meet members of the release team. A [[FreedomBox/TODO|TODO page]] 
aggregates the complete list of the items to work on for !FreedomBox. 
+Sorted by ascending difficulty
 
-== Contributions needed ==
+== Donate ==
 
-=== Add an Application ===
+Obviously, donating is the easiest way to contribute.
 
-If you are a developer and wish to see an application available in 
!FreedomBox, you can contribute by adding the application to !FreedomBox.  See 
the [[https://docs.freedombox.org/|FreedomBox Developer Manual]]. Many 
applications that can be added to !FreedomBox have been identified on the 
[[FreedomBox/LeavingTheCloud|leaving the cloud]] page.
+You can help the project financially by donating via !PayPal, Bitcoin or by 
mailing a check. Please see the 
[[https://www.freedomboxfoundation.org/donate/|donation page]] for details on 
how to donate.
 
-=== Bugs ===
+!FreedomBox project is run by volunteers. The 
[[https://freedomboxfoundation.org|FreedomBox Foundation]] is a 501(c)(3) 
federal nonprofit corporation with recognition from the IRS.
 
-List of bugs, feature requests and improvements are tracked on the !FreedomBox 
[[https://salsa.debian.org/freedombox-team/freedombox/issues/|issue tracker]].  
In addition to that, see [[FreedomBox/Contribute/Bugs|list of bugs]] to help 
out the Debian package we depend on. Also see the !FreedomBox 
[[https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&comaint=yes|packaging
 team's dashboard]] for status of various packages that we use.
 
-=== Code ===
+== Spread the Word ==
 
-If you are a developer, you can contribute code to one of the sub-projects of 
!FreedomBox.  Step-by-step process of [[/Code|contributing code]] to 
!FreedomBox is available.
+Spreading the word about !FreedomBox only requires to know about the basic 
goals of the project and an overall description of the product.
 
- * [[FreedomBox/Plinth|FreedomBox Service]]: a web interface to administer the 
functions of !FreedomBox.
- * [[FreedomBox/Maker|Freedom Maker]]: a script to build !FreedomBox disk 
images for use on various hardware devices or virtual machines.
+Speak to your family, friends, local community or at global conferences about 
the importance of !FreedomBox. To be a successful project we need much more 
awareness and many more participants, be it users or contributors. Write about 
your efforts on the [[FreedomBox/TalksAndPresentations|wiki]].
 
-You can pickup a task from one of the [[FreedomBox/TODO|TODO]] lists. The 
individual page project pages contain information availabily of the code, how 
to build and TODO lists.
+If you are into marketing, you can get in touch with the marketing team 
through the [[https://discuss.freedombox.org/c/community/marketing/14|marketing 
section of our forum]].
 
-=== Design ===
 
-==== User Experience Design ====
+== Feed Us Back (Comment) ==
 
-If you are a user experience designer, you can help !FreedomBox with the 
following items:
+After some time, we lose the fresh view of newcomers. Just providing your 
feedback helps us a lot.
+
+Browse our websites and documentation and play with !FreedomBox and comment 
your impressions on the [[https://discuss.freedombox.org/c/feedback/2|feedback 
section of our forum]]. 
 
- * UI experience for the !FreedomBox Service web interface
- * Web design for [[https://freedombox.org|freedombox.org]], 
[[https://freedomboxfoundation.org|freedomboxfoundation.org]] and the 
[[FreedomBox|wiki]] pages
- * Logo and branding (we currently have 
[[https://salsa.debian.org/freedombox-team/freedombox/tree/master/static/themes/default|an
 identity manual and logos]])
- * Possible designs for custom !FreedomBox cases on single board computers
- * [[../Design|User experience design]]
 
-==== Technical Design ====
+== Request applications ==
 
-!FreedomBox needs your technical expertise to devise implementation plans for 
upcoming features.  You can contribute to the discussion on various technical 
design and implementation aspects of !FreedomBox.  See !FreedomBox discussion 
forum's [[https://discuss.freedombox.org/c/development|development category]].
+Check our [[https://wiki.debian.org/FreedomBox/LeavingTheCloud|applications 
wishlist]] and help us extend it by searching the web for other interesting 
free software to include in !FreedomBox.
 
-=== Donate ===
 
-The [[https://freedomboxfoundation.org|FreedomBox Foundation]] is a 501(c)(3) 
federal nonprofit corporation with recognition from the IRS. !FreedomBox 
project is run by volunteers.  You can help the project financially by donating 
via !PayPal, Bitcoin or by mailing a check.  Please see the 
[[https://www.freedomboxfoundation.org/donate/|donation page]] for details on 
how to donate.
+== Translate ==
 
-=== Document: User Manual, Website and Wiki ===
+All text visible to users of !FreedomBox needs to be localized to various 
languages. If you know english and speak another language you can contribute 
translating. Translating is a nice way to get familiar with the project while 
contributing.
 
-!FreedomBox needs better documentation for users and contributors.  
!FreedomBox manual is prepared by aggregating various pages on the wiki and 
exporting to various formats.  The manual is then used in !FreedomBox Service 
and elsewhere.
+This translation work includes:
+
+ * [[FreedomBox/Plinth|Web Interface]] of !FreedomBox
+ * !FreedomBox documentation, including the !FreedomBox [[FreedomBox|wiki]]
+ * !FreedomBox [[https://freedombox.org|website]] and 
[[https://freedomboxfoundation.org|foundation website]].
+ * 
[[https://docs.djangoproject.com/en/dev/internals/contributing/localizing/|Django
 web framework]] that !FreedomBox uses.
+ * Individual [[https://wiki.debian.org/FreedomBox/Manual/#Apps|applications]] 
that !FreedomBox exposes to users.
+
+The localization of !FreedomBox web interface happens mainly on the web-based 
tool at [[https://hosted.weblate.org/projects/freedombox/|Weblate]].
+
+If you wish to see !FreedomBox available for one of your languages, please 
start a discussion on the !FreedomBox discussion forum's 
[[https://discuss.freedombox.org/c/development|development category]] to work 
with others translating for that language.
+
+For more information, please visit the !FreedomBox 
[[FreedomBox/Translate|translators]] page.
+
+
+== Document: User Manual, Website and Wiki ==
+
+!FreedomBox needs better documentation for users and contributors. Sometimes, 
just rewording or presenting the information another way, already helps. 
Others, a certain knowledge is needed.
+
+!FreedomBox manual is prepared by aggregating various pages on the wiki and 
exporting to various formats. The manual is then used in !FreedomBox Service 
and elsewhere.
 
 If you wish to contribute to the !FreedomBox [[FreedomBox|wiki]] (and 
consequently the !FreedomBox manual), you can create a wiki account and start 
editing.
 
 For contributing to the website please start a discussion on the !FreedomBox 
discussion forum's [[https://discuss.freedombox.org/c/development|development 
category]].
 
-=== Quality Assurance ===
+
+== Assure Quality (Test and Check) ==
 
  * !FreedomBox already runs on many platforms and it is not possible for 
developers to test all possible platforms.  If you have one of the supported 
hardware you can help with testing !FreedomBox on the platform.
 
- * When an application is made available on !FreedomBox, not all of its 
functionality is tested in the real world by developer doing the work.  
Deploying the application and testing it will help ensure high quality 
applications in !FreedomBox.
+ * When an application is made available on !FreedomBox, not all of its 
functionality is tested in the real world by developer doing the work. 
Deploying the application and testing it will help ensure high quality 
applications in !FreedomBox.
 
 See the [[FreedomBox/QualityAssurance|quality assurance]] page for a basic 
list of test cases to check for and information on reporting bugs.
 
-=== Localization ===
 
-All text visible to users of !FreedomBox needs to be localized to various 
languages.  This translation work includes:
+== Code ==
 
- * [[FreedomBox/Plinth|Web Interface]] for !FreedomBox
- * !FreedomBox documentation
- * !FreedomBox [[FreedomBox|wiki]], [[https://freedombox.org|website]] and 
[[https://freedomboxfoundation.org|foundation website]].
- * 
[[https://docs.djangoproject.com/en/dev/internals/contributing/localizing/|Django
 web framework]] that !FreedomBox uses.
- * Individual applications that !FreedomBox exposes to users.
+If you are a developer, you can contribute code to one of the sub-projects of 
!FreedomBox.  Step-by-step process of [[/Code|contributing code]] to 
!FreedomBox is available.
 
-You can contribute to the localization effort using the web-based tool at 
[[https://hosted.weblate.org/projects/freedombox/|Weblate]] or directly to the 
source tree via 
[[https://salsa.debian.org/freedombox-team/freedombox/tree/master/plinth/locale|Salsa]].
+ * [[FreedomBox/Plinth|FreedomBox Service]]: a web interface to administer the 
functions of !FreedomBox.
+ * [[FreedomBox/Maker|Freedom Maker]]: a script to build !FreedomBox disk 
images for use on various hardware devices or virtual machines.
 
-If you wish to see !FreedomBox available for one of your languages, please 
start a discussion on the !FreedomBox discussion forum's 
[[https://discuss.freedombox.org/c/development|development category]] to work 
with others translating for that language.
+You can pick up a task from one of the [[FreedomBox/TODO|TODO]] lists. The 
individual page project pages contain information availabily of the code, how 
to build and TODO lists.
 
-For more information, please visit the !FreedomBox 
[[FreedomBox/Translate|translators]] page.
+=== Fix Bugs ===
+
+List of bugs, feature requests and improvements are tracked on the !FreedomBox 
[[https://salsa.debian.org/freedombox-team/freedombox/issues/|issue tracker]].  
In addition to that, see [[FreedomBox/Contribute/Bugs|list of bugs]] to help 
out the Debian package we depend on. Also see the !FreedomBox 
[[https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&comaint=yes|packaging
 team's dashboard]] for status of various packages that we use.
+
+=== Add an Application ===
+
+If you are a developer and wish to see an application available in 
!FreedomBox, you can contribute by adding the application to !FreedomBox.  See 
the [[https://docs.freedombox.org/|FreedomBox Developer Manual]]. Many 
applications that can be added to !FreedomBox have been identified on the 
[[FreedomBox/LeavingTheCloud|leaving the cloud]] page.
+
+=== Development priorities ===
+
+Upcoming priorities are discussed on an regular basis. You find the progress 
of the !FreedomBox Service with its priorities here: 
[[https://salsa.debian.org/groups/freedombox-team/-/boards|issues board]] and 
[[https://salsa.debian.org/groups/freedombox-team/-/milestones|milestones]].
+
+Please check next [[FreedomBox/ProgressCalls|progress calls]] to keep yourself 
on track and meet members of the release team. A [[FreedomBox/TODO|TODO page]] 
aggregates the complete list of the items to work on for !FreedomBox. 
+
+== Design ==
+
+=== User Experience Design ===
+
+If you are a user experience designer, you can help !FreedomBox with the 
following items:
+
+ * UI experience for the !FreedomBox Service web interface
+ * Web design for [[https://freedombox.org|freedombox.org]], 
[[https://freedomboxfoundation.org|freedomboxfoundation.org]] and the 
[[FreedomBox|wiki]] pages
+ * Logo and branding (we currently have 
[[https://salsa.debian.org/freedombox-team/freedombox/tree/master/static/themes/default|an
 identity manual and logos]])
+ * Possible designs for custom !FreedomBox cases on single board computers
+ * [[../Design|User experience design]]
+
+=== Technical Design ===
+
+!FreedomBox needs your technical expertise to devise implementation plans for 
upcoming features. You can contribute to the discussion on various technical 
design and implementation aspects of !FreedomBox. See !FreedomBox discussion 
forum's [[https://discuss.freedombox.org/c/development|development category]].
+
+
+== Package Applications ==
+
+!FreedomBox is a Debian Pure Blend. In order to add applications to 
!FreedomBox we need applications first to be Debian-packaged. Check our 
[[https://wiki.debian.org/FreedomBox/LeavingTheCloud|applications wishlist]].
 
-=== Spread the Word ===
 
-Speak to your family, friends, local community or at global conferences about
-the importance of !FreedomBox.  To be a successful project we need many more
-participants, be it users or contributors.  Write about your efforts at the 
[[https://www.freedomboxfoundation.org/appearances/index.en.html|talks page]] 
and on the [[FreedomBox/TalksAndPresentations|wiki]].
 
 ## END_INCLUDE
 
diff -Nru freedombox-21.4/doc/manual/en/MatrixSynapse.raw.wiki 
freedombox-21.4.2/doc/manual/en/MatrixSynapse.raw.wiki
--- freedombox-21.4/doc/manual/en/MatrixSynapse.raw.wiki        2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/en/MatrixSynapse.raw.wiki      2021-03-28 
09:23:46.000000000 -0400
@@ -14,8 +14,8 @@
 '''Available since''': version 0.14.0
 
 === What is Matrix? ===
-[[https://matrix.org/|Matrix]] is an open standard for interoperable, 
decentralized, real-time communication over IP. Synapse is the reference 
implementation of a Matrix server. It can be used to setup instant messaging on 
!FreedomBox to host large chat rooms, end-to-end encrypted communication and 
audio/video calls.  
-Matrix Synapse is a federated application where chat rooms can exist on any 
server and users from any server in the federated network can join them.  
[[https://matrix.org/docs/guides/faq.html|Learn more]] about Matrix.
+[[https://matrix.org/|Matrix]] is an open protocol for interoperable, 
decentralized, real-time communication over IP. Synapse is the reference 
implementation of a Matrix server. It can be used to setup instant messaging on 
!FreedomBox to host chat rooms with end-to-end encrypted communication and 
audio/video calls.  
+Matrix Synapse is a federated application where chat rooms can exist on any 
server and users from any server in the federated network can join them. 
[[https://matrix.org/docs/guides/faq.html|Learn more]] about Matrix.
 
 === How to access your Matrix Synapse server? ===
 
@@ -28,13 +28,19 @@
 
 === Setting up Matrix Synapse on your FreedomBox ===
 
-To enable Matrix, first navigate to the Chat Server (Matrix Synapse) page and 
install it. Matrix needs a valid domain name to be configured.  After 
installation, you will be asked to configure it.  You will be able to select a 
domain from a drop down menu of available domains.  Domains are configured 
using [[FreedomBox/Manual/Configure|System -> Configure page]].  After 
configuring a domain, you will see that the service is running. The service 
will be accessible on the configured !FreedomBox domain. Currently, you will 
not be able to change the domain once is it configured.
+To enable Matrix Synapse, first navigate to the Chat Server (Matrix Synapse) 
page and install it. Matrix needs a valid domain name to be configured. After 
installation, you will be asked to configure it.  You will be able to select a 
domain from a drop down menu of available domains.  Domains are configured 
using [[FreedomBox/Manual/Configure|System -> Configure]] page. After 
configuring a domain, you will see that the service is running. The service 
will be accessible on the configured !FreedomBox domain. Currently, you will 
not be able to change the domain once is it configured.
 
 Your router has to be configured to forward port 8448.
 
 All the registered users of your !FreedomBox will have their Matrix IDs as 
`@username:domain`. If public registration is enabled, also your chosen client 
can be used to register a user account.
 
-If your !FreedomBox is behind a router (NAT) you might need 
[[FreedomBox/Manual/Coturn|Coturn]] for Voice over IP calls.
+=== Setting up Audio/Video calls ===
+
+The Matrix Synapse server is only responsible for establishing calls between 
participants in rooms. Matrix clients such as Element are actually responsible 
for the transfer of the audio/video traffic. Element supports calling in both 
one-to-one conversations and in groups.
+
+For one-to-one conversations, Element tries to make a peer-to-peer connection 
between the two participants. This works when both the participants are using 
Element on computers with a public IP address or if they're on the same 
network. If both the participants are behind different NAT devices, 
establishing a direct peer-to-peer connection between them will not be 
possible. This problem can be solved by configuring Matrix Synapse with a 
STUN/TURN server. !FreedomBox provides an app called 
[[FreedomBox/Manual/Coturn|Coturn]] for this purpose. !FreedomBox doesn't 
automatically install Coturn on installing Matrix Synapse. However, as soon as 
Coturn app is installed, !FreedomBox automatically configures Matrix Synapse to 
use it for audio/video calls. It is possible to override this configuration 
with a different STUN/TURN server in the web interface.
+
+For calling groups with more than two participants (i.e. not one-on-one 
conversations), Element uses an external Jitsi Meet instance. Element uses 
jitsi.riot.im as its default Jitsi Meet instance. If the Matrix Synapse server 
is configured to use a different Jitsi Meet instance as the default, Element 
will use it instead for all users on that server. 
 
 === Federating with other Matrix instances ===
 
diff -Nru freedombox-21.4/doc/manual/en/ReleaseNotes.raw.wiki 
freedombox-21.4.2/doc/manual/en/ReleaseNotes.raw.wiki
--- freedombox-21.4/doc/manual/en/ReleaseNotes.raw.wiki 2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/en/ReleaseNotes.raw.wiki       2021-03-28 
09:23:46.000000000 -0400
@@ -10,6 +10,29 @@
 
 The following are the release notes for each !FreedomBox version.
 
+== FreedomBox 21.4.2 (2021-03-28) ==
+
+=== Highlights ===
+
+ * firstboot: Use session to verify first boot welcome step
+
+=== Other Changes ===
+
+ * locale: Update translations for German, Greek, Indonesian, Turkish
+ * manual: Update Contributing and Matrix Synapse pages
+
+== FreedomBox 21.4.1 (2021-03-13) ==
+
+=== Highlights ===
+
+ * deluge, mldonkey, syncthing, transmission: Ensure nslcd is running before 
the service is started
+ * deluge: Fix daemon user not in freedombox-share group after installation
+
+=== Other Changes ===
+
+ * config: Fix tests related to user home directory
+ * locale: Update translations for Dutch, German, Greek, Polish, Spanish, 
Swedish, Turkish
+
 == FreedomBox 21.4 (2021-02-28) ==
 
 === Highlights ===
diff -Nru freedombox-21.4/doc/manual/en/Rock64.raw.wiki 
freedombox-21.4.2/doc/manual/en/Rock64.raw.wiki
--- freedombox-21.4/doc/manual/en/Rock64.raw.wiki       2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/en/Rock64.raw.wiki     2021-03-28 
09:23:46.000000000 -0400
@@ -24,7 +24,7 @@
 === Hardware ===
 
  * Open Source Hardware (OSHW): No
- * CPU: Rockchip RK3328 Quad-Core SOC (4x Cortex A53@1.5Ghz)
+ * CPU: Rockchip RK3328 Quad-Core SOC (4x Cortex A53 @ 1.5Ghz)
  * GPU: Mali 450MP2
  * RAM: 1 GiB or 2 GiB or 4 GiB LPDDR3
  * Storage: eMMC module slot, microSD slot, 16 MiB SPI Flash
diff -Nru freedombox-21.4/doc/manual/es/Contribute.raw.wiki 
freedombox-21.4.2/doc/manual/es/Contribute.raw.wiki
--- freedombox-21.4/doc/manual/es/Contribute.raw.wiki   2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/es/Contribute.raw.wiki 2021-03-28 
09:23:46.000000000 -0400
@@ -23,60 +23,74 @@
 
 Como nuevo contribuyente, eres más que bienvenido a presentarte a otros en el 
[[https://discuss.freedombox.org/c/development|foro de debate]], la 
[[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|lista de 
correo]] o el [[irc://irc.debian.org/freedombox|canal de IRC]] de !FreedomBox. 
Además de hacer contactos útiles, puedes empezar a informar fallos y traducir 
(ver abajo) el wiki y el interfaz de !FreedomBox. 
 
-== Prioridades de Desarrollo ==
 
-Las prioridades se discuten regularmente. Encontrarás el avance del Servicio 
!FreedomBox con sus prioridades aquí: 
[[https://salsa.debian.org/groups/freedombox-team/-/boards|panel de tareas]] e 
[[https://salsa.debian.org/groups/freedombox-team/-/milestones|hitos]].
 
-Por favor, asiste a las próximas [[FreedomBox/ProgressCalls|reuniones de 
avance]] para mantenerte al día y tratar con los miembros del equipo de 
publicación (release). La [[FreedomBox/TODO|Página de trabajos pendientes]] 
recopila la lista completa de los elementos en los que trabajar para 
!FreedomBox. 
+= Se necesitan contribuciones =
 
-== Se necesitan Contribuciones ==
+Ordenadas por dificultad ascencente.
 
-=== Añadir una Aplicación ===
+== Donar ==
 
-Si eres desarrollador y quieres ver disponible en !FreedomBox alguna 
aplicación, puedes contribuir añadiéndola a !FreedomBox.  Mira el 
[[https://docs.freedombox.org/|Manual del Desarrollador de FreedomBox]].
+Obviamente donar es la manera más fácil de contribuir.
 
-=== Defectos ===
+Puedes ayudar a su financiación donando mediante !PayPal, Bitcoin o enviando 
un cheque.  Mira por favor la 
[[https://www.freedomboxfoundation.org/donate/|página de donación]] para más 
detalles acerca de cómo donar.
 
-Las listas de defectos, peticiones de funcionalidad y mejoras se controlan en 
el [[https://salsa.debian.org/freedombox-team/freedombox/issues/|gestor de 
tiquets]] de !FreedomBox.  Mira también la [[FreedomBox/Contribute/Bugs|lista 
de defectos]] para ayudar al paquete Debian del que dependemos y el 
[[https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&comaint=yes|cuadro
 de mando del equipo de paquetizado]] de !FreedomBox para ver el estado los 
paquetes que usamos.
+El proyecto !FreedomBox lo llevan voluntarios. La 
''[[https://freedomboxfoundation.org|FreedomBox Foundation]]'' es una 
corporación federal 501(c)(3) reconocida por el IRS. 
 
-=== Codificar ===
 
-Si eres desarrollador puedes contribuir código a algún sub-proyecto de 
!FreedomBox.  Éste es el procedimiento paso a paso para 
[[FreedomBox/Contribute/Code|contribuir código]].
+== Correr la voz ==
 
- * [[FreedomBox/Plinth|Servicio FreedomBox]]: un interfaz web para administrar 
las funciones de !FreedomBox.
- * [[FreedomBox/Maker|Freedom Maker]]: un script para construir imágenes de 
disco de !FreedomBox para usarlas en dispositivos de hardware variados o en 
máquinas virtuales.
+Correr la voz acerca de !FreedomBox solo requiere saber acerca de los 
objetivos básicos del proyecto y una descripción general del producto.
 
-Puedes tomar una tarea de la [[FreedomBox/TODO|Página de trabajos 
pendientes]].  Las páginas de cada proyecto contienen información acerca de 
acceso al código, cómo construir y listas de trabajos pendientes.
+Cuenta a tu familia, amistades, comunidad local o en conferencias globales la 
importancia de !FreedomBox.  Para ser un proyecto exitoso necesitamos muchos más
+participantes, ya sean usuarios o contribuyentes.  Comenta tus esfuerzos de 
divulgación en la 
[[https://www.freedomboxfoundation.org/appearances/index.en.html|página de 
charlas]] y en el [[FreedomBox/TalksAndPresentations|wiki]].
 
-=== Diseño ===
+Si sabes algo de márketing, puedes ponerte en contacto con el equipo de 
marketing mediante la 
[[https://discuss.freedombox.org/c/community/marketing/14|sección de 
''Marketing'' de nuestro foro]]. 
 
-==== Diseño de Experiencia de Usuario (UX) ====
 
-Si eres diseñador de UX, puedes ayudar a !FreedomBox con esto:
+== Darnos tus impresiones (Comentar) ==
 
- * Experiencia de interacción para el interfaz web del Servicio !FreedomBox.
- * Diseño web para los sitios [[https://freedombox.org|freedombox.org]], 
[[https://freedomboxfoundation.org|freedomboxfoundation.org]] y el 
[[FreedomBox|wiki]].
- * Logo y marca (actualmente tenemos 
[[https://salsa.debian.org/freedombox-team/freedombox/tree/master/static/themes/default|un
 manual de identidad y logos]]).
- * Propuestas de diseño para casos de uso de !FreedomBox sobre SBCs 
personalizados.
- * [[FreedomBox/Design|Diseño de UX]]
+Tras cierto tiempo perdemos la visión fresca de quienes acaban de llegar. Solo 
con hacernos llegar tus impresiones ya nos ayudas un montón.
+
+Navega por nuestros sitios web y por la documentación, y juega con !FreedomBox 
y comenta tus impresiones en la 
[[https://discuss.freedombox.org/c/feedback/2|sección de ''Feedback'' de 
nuestro foro]]. 
 
-==== Diseño Técnico ====
 
-!FreedomBox necesita tu conocimiento técnico para elaborar planes de 
implementación de nuevas funcionalidades.  Puedes contribuir a los debates 
acerca de varios aspectos de diseño técnico e implementación de !FreedomBox.  
Mira la [[https://discuss.freedombox.org/c/development|sección de desarrollo]] 
de los foros de discusión.
+== Pedir aplicaciones ==
 
-=== Donar ===
+Mira nuestra [[https://wiki.debian.org/FreedomBox/LeavingTheCloud|lista de 
aplicaciones deseadas]] y ayúdanos a extenderla buscando en la web otras 
aplicaciones de software libre para incluír en !FreedomBox. 
 
-La ''[[https://freedomboxfoundation.org|FreedomBox Foundation]]'' es una 
corporación federal 501(c)(3) reconocida por el IRS. El proyecto !FreedomBox lo 
llevan voluntarios.  Puedes ayudar a su financiación donando mediante !PayPal, 
Bitcoin o enviando un cheque.  Mira por favor la 
[[https://www.freedomboxfoundation.org/donate/|página de donación]] para más 
detalles acerca de cómo donar.
 
-=== Documentar: Manual de Usuario, Sitio Web y Wiki ===
+== Traducir ==
 
-!FreedomBox necesita mejor documentación para usuarios y contribuyentes.  El 
manual de !FreedomBox se prepara agregando diferentes páginas del wiki y 
exportando a various formatos.  El manual se usa en el Servicio !FreedomBox y 
en otros sitios.
+Todo texto visible por los usuarios de !FreedomBox necesita ser localizado a 
varios idiomas. Si entiendes inglés y escribes otro idioma puedes contribuír 
traduciendo. Traducir es una forma estupenda de familiarizarse con el proyecto 
mientras contribuyes.
 
-Si quieres contribuir al [[FreedomBox|wiki]] (y por extensión al manual) de 
!FreedomBox, puedes crear una cuenta en el wiki y empezar a editar.
+Este trabajo de traducción incluye:
+
+ * El [[FreedomBox/Plinth|Interfaz web]] de !FreedomBox.
+ * La documentación de !FreedomBox, incluyendo el [[es/FreedomBox|wiki]].
+ * Los sitios web de [[https://freedombox.org|FreedomBox]] y la 
''[[https://freedomboxfoundation.org|Freedombox Foundation]]''.
+ * El 
[[https://docs.djangoproject.com/en/dev/internals/contributing/localizing/|framework
 Django]] que emplea !FreedomBox.
+ * Cada [[es/FreedomBox/Manual#Apps|aplicación]] que !FreedomBox expone a sus 
usuarios.
+
+La localización del interfaz web de !FreedomBox ocurre principalmente en la 
herramienta web [[https://hosted.weblate.org/projects/freedombox/|Weblate]].
+
+Si quieres ver a !FreedomBox disponible en alguno de tus idiomas, por favor 
abre un debate en la [[https://discuss.freedombox.org/c/development|sección de 
desarrollo]] del foro de !FreedomBox para trabajar con otros traduciendo para 
ese idioma.
+
+Para más información, por favor visita la página de 
[[FreedomBox/Translate|traductores]].
+
+
+== Documentar: Manual de Usuario, Sitio Web y Wiki ==
+
+!FreedomBox necesita mejor documentación para usuarios y contribuyentes. A 
veces re-redactar o presentar la información de otra manera ya ayuda. Otras se 
necesita cierto conocimiento.
+
+El manual de !FreedomBox se prepara agregando diferentes páginas del wiki y 
exportando a various formatos.  El manual se usa en el Servicio !FreedomBox y 
en otros sitios.
+
+Si quieres contribuir al [[es/FreedomBox|wiki]] (y por extensión al manual) de 
!FreedomBox, puedes crear una cuenta en el wiki y empezar a editar.
 
 Para contribuir al sitio web por favor inicia un debate en la 
[[https://discuss.freedombox.org/c/development|sección de desarrollo]] del foro 
de !FreedomBox.
 
-=== Asegurar la Calidad ===
+
+== Asegurar la calidad (probar y comprobar) ==
 
  * !FreedomBox ya funciona sobre muchas plataformas y a los desarrolladores 
les resulta imposible probar en todas.  Si tienes algún hardware soportado 
puedes ayudar probando !FreedomBox en tu platforma.
 
@@ -84,27 +98,53 @@
 
 Mira en la página de [[FreedomBox/QualityAssurance|aseguramiento de la 
calidad]] la lista de casos de prueba que hay que verificar y la información 
acerca de cómo informar defectos.
 
-=== Localizar (l10n) ===
 
-Todo texto visible por los usuarios de !FreedomBox necesita ser localizado a 
varios idiomas.  Este trabajo de traducción incluye:
+== Codificar ==
 
- * El [[FreedomBox/Plinth|Interfaz web]] de !FreedomBox
- * La documentación de !FreedomBox
- * El [[FreedomBox|wiki]] y los sitios web de 
[[https://freedombox.org|FreedomBox]] y la 
''[[https://freedomboxfoundation.org|Freedombox Foundation]]''.
- * El 
[[https://docs.djangoproject.com/en/dev/internals/contributing/localizing/|framework
 Django]] que emplea !FreedomBox.
- * Cada aplicación que !FreedomBox expone a sus usuarios.
+Si eres desarrollador puedes contribuir código a algún sub-proyecto de 
!FreedomBox.  Éste es el procedimiento paso a paso para 
[[FreedomBox/Contribute/Code|contribuir código]].
 
-Puedes contribuir al esfuerzo de localización usando la herramienta web 
[[https://hosted.weblate.org/projects/freedombox/|Weblate]] o directamente en 
el repositorio de código mediante  
[[https://salsa.debian.org/freedombox-team/freedombox/tree/master/plinth/locale|Salsa]].
+ * [[FreedomBox/Plinth|Servicio FreedomBox]]: un interfaz web para administrar 
las funciones de !FreedomBox.
+ * [[FreedomBox/Maker|Freedom Maker]]: un script para construir imágenes de 
disco de !FreedomBox para usarlas en dispositivos de hardware variados o en 
máquinas virtuales.
 
-Si quieres ver a !FreedomBox disponible en alguno de tus idiomas, por favor 
abre un debate en la [[https://discuss.freedombox.org/c/development|sección de 
desarrollo]] del foro de !FreedomBox para trabajar con otros traduciendo para 
ese idioma.
+Puedes tomar una tarea de la [[FreedomBox/TODO|Página de trabajos 
pendientes]].  Las páginas de cada proyecto contienen información acerca de 
acceso al código, cómo construir y listas de trabajos pendientes.
 
-Para más información, por favor visita la página de 
[[FreedomBox/Translate|traductores]].
+=== Arreglar defectos ===
 
-=== Correr la Voz ===
+Las listas de defectos, peticiones de funcionalidad y mejoras se controlan en 
el [[https://salsa.debian.org/freedombox-team/freedombox/issues/|gestor de 
tiquets]] de !FreedomBox.  Mira también la [[FreedomBox/Contribute/Bugs|lista 
de defectos]] para ayudar al paquete Debian del que dependemos y el 
[[https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&comaint=yes|cuadro
 de mando del equipo de paquetizado]] de !FreedomBox para ver el estado los 
paquetes que usamos.
 
-Cuenta a tu familia, amistades, comunidad local o en conferencias globales la 
importancia de !FreedomBox.  Para ser un proyecto exitoso necesitamos muchos más
-participantes, ya sean usuarios o contribuyentes.  Comenta tus esfuerzos de 
divulgación en la 
[[https://www.freedomboxfoundation.org/appearances/index.en.html|página de 
charlas]] y en el [[FreedomBox/TalksAndPresentations|wiki]].
+=== Añadir una aplicación ===
+
+Si eres desarrollador y quieres ver disponible en !FreedomBox alguna 
aplicación, puedes contribuir añadiéndola a !FreedomBox.  Mira el 
[[https://docs.freedombox.org/|Manual del Desarrollador de FreedomBox]].
+
+=== Prioridades de desarrollo ===
+
+Las prioridades se discuten regularmente. Encontrarás el avance del Servicio 
!FreedomBox con sus prioridades aquí: 
[[https://salsa.debian.org/groups/freedombox-team/-/boards|panel de tareas]] e 
[[https://salsa.debian.org/groups/freedombox-team/-/milestones|hitos]].
+
+Por favor, asiste a las próximas [[FreedomBox/ProgressCalls|reuniones de 
avance]] para mantenerte al día y tratar con los miembros del equipo de 
publicación (release). La [[FreedomBox/TODO|Página de trabajos pendientes]] 
recopila la lista completa de los elementos en los que trabajar para 
!FreedomBox.
+
+
+== Diseño ==
+
+=== Diseño de Experiencia de Usuario (UX) ===
+
+Si eres diseñador de UX, puedes ayudar a !FreedomBox con esto:
+
+ * Experiencia de interacción para el interfaz web del Servicio !FreedomBox.
+ * Diseño web para los sitios [[https://freedombox.org|freedombox.org]], 
[[https://freedomboxfoundation.org|freedomboxfoundation.org]] y el 
[[FreedomBox|wiki]].
+ * Logo y marca (actualmente tenemos 
[[https://salsa.debian.org/freedombox-team/freedombox/tree/master/static/themes/default|un
 manual de identidad y logos]]).
+ * Propuestas de diseño para casos de uso de !FreedomBox sobre SBCs 
personalizados.
+ * [[FreedomBox/Design|Diseño de UX]]
+
+=== Diseño Técnico ===
+
+!FreedomBox necesita tu conocimiento técnico para elaborar planes de 
implementación de nuevas funcionalidades.  Puedes contribuir a los debates 
acerca de varios aspectos de diseño técnico e implementación de !FreedomBox.  
Mira la [[https://discuss.freedombox.org/c/development|sección de Desarrollo]] 
de los foros de debate.
+
+
+== Empaquetar aplicaciones ==
+
+!FreedomBox es una ''variante pura'' de Debian. Para añadir aplicaciones a 
!FreedomBox necesitames primero que estén empaquetadas para Debian. Mira 
nuestra [[https://wiki.debian.org/FreedomBox/LeavingTheCloud|lista de 
aplicaciones deseadas]].
 
+ 
 ## END_INCLUDE
 
 <<Include(es/FreedomBox/Portal)>>
diff -Nru freedombox-21.4/doc/manual/es/MatrixSynapse.raw.wiki 
freedombox-21.4.2/doc/manual/es/MatrixSynapse.raw.wiki
--- freedombox-21.4/doc/manual/es/MatrixSynapse.raw.wiki        2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/es/MatrixSynapse.raw.wiki      2021-03-28 
09:23:46.000000000 -0400
@@ -12,8 +12,8 @@
 '''Disponible desde:''' versión 0.14.0
 
 === ¿Qué es Matrix? ===
-[[https://matrix.org/|Matrix]] es un estándar abierto para comunicaciones 
sobre IP en tiempo real interoperables y descentralizadas. ''Synapse'' es la 
implementación de referencia de un servidor Matrix. Se puede usar para montar 
mensajería instantánea sobre !FreedomBox para albergar grandes salones de chat, 
 comunicaciones cifradas punto a punto y llamadas de audio/vídeo.  
-Matrix Synapse es una aplicación federada en la que puede haber salas de chat 
en un servidor y los usuarios de cualquier otro servidor de la red federada 
pueden unirse a ellas.  [[https://matrix.org/docs/guides/faq.html|Más 
información]] acerca de Matrix.
+[[https://matrix.org/|Matrix]] es un protocolo abierto para comunicaciones 
sobre IP en tiempo real interoperables y descentralizadas. ''Synapse'' es la 
implementación de referencia de un servidor Matrix. Se puede usar para montar 
mensajería instantánea sobre !FreedomBox para albergar  salas de chat con 
comunicaciones cifradas punto a punto y llamadas de audio/vídeo.  
+Matrix Synapse es una aplicación federada en la que puede haber salas de chat 
en un servidor y los usuarios de cualquier otro servidor de la red federada 
pueden unirse a ellas. [[https://matrix.org/docs/guides/faq.html|Más 
información]] acerca de Matrix.
 
 === ¿Cómo acceder a tu servidor Matrix Synapse? ===
 
@@ -21,13 +21,19 @@
 
 === Configurar Matrix Synapse en tu FreedomBox ===
 
-Para habilitar Matrix, primero navega a la página de tu servidor de chat 
(Matrix Synapse) e instálalo. Matrix necesita un nombre de dominio válido 
configurado.  Tras la instalación, se te pedirá que lo configures 
seleccionandolo de entre un menú desplegable con dominios disponibles.  Los 
dominios se configuran en la página [[es/FreedomBox/Manual/Configure|Sistema -> 
Configuración]] y '''actualmente no podrás cambiar el dominio''' una vez esté 
configurado.  Tras configurar un dominio verás que el servicio se está 
ejecutando. El servicio estará accesible en el dominio de !FreedomBox 
configurado.
+Para habilitar Matrix Synapse, primero navega a la página de tu servidor de 
chat (Matrix Synapse) e instálalo. Matrix necesita un nombre de dominio válido 
configurado.  Tras la instalación, se te pedirá que lo configures 
seleccionandolo de entre un menú desplegable con dominios disponibles.  Los 
dominios se configuran en la página [[es/FreedomBox/Manual/Configure| Sistema 
-> Configuración]] y '''actualmente no podrás cambiar el dominio''' una vez 
esté configurado.  Tras configurar un dominio verás que el servicio se está 
ejecutando. El servicio estará accesible en el dominio de !FreedomBox 
configurado.
 
 Tendrás que configurar tu router para que reenvíe el puerto 8448 a tu 
!FreedomBox.
 
 Todos los usuarios registrados en tu !FreedomBox tendrán sus IDs Matrix  
`@usuario:dominio`. Si está habilitado el registro público tu cliente se puede 
usar también para registrar una cuenta de usuario nueva.
        
-Si tu !FreedomBox está detrás de un router (NAT), quizá necesites 
[[es/FreedomBox/Manual/Coturn|Coturn]] para hacer llamadas de voz sobre IP.
+=== Configurar llamadas de audio/vídeo ===
+
+El servidor Matrix Synapse solo es responsable de establecer las conexiones 
entre los participantes de la sala. Los clientes Matrix como Element son los 
responsables de transmitir el audio/vídeo. Element soporta tanto llamadas 
individuales como de grupo.
+
+Para conversaciones individuales, Element intenta establecer una conexión 
directa entre ambos participantes. Esto funciona cuando ambos participantes 
están empleando Element en máquinas con una IP pública o si están en la misma 
red (local). Si ambos participantes están detrás de diferentes NATs no será 
posible establecer una conexión directa entre ellos. Esta dificultad se 
resuelve configurando Matrix Synapse contra un servidor STUN/TURN. !FreedomBox 
proporciona una app llamada [[es/FreedomBox/Manual/Coturn|Coturn]] para este 
propósito. !FreedomBox no instala  Coturn automaticamente al instalar Matrix 
Synapse. No obstante, en cuanto se instala la app Coturn !FreedomBox 
automáticamente reconfigura Matrix Synapse para usarla en llamadas de 
audio/vídeo. Se puede ajustar esta configuración en la interfaz web para 
emplear otro servidor STUN/TURN.
+
+Para llamadas de grupo Element emplea una instancia de Jitsi Meet externa; por 
omisión, `jitsi.riot.im`. Si se configura el servidor Matrix Synapse para usar 
una instancia Jitsi Meet diferente Element la usará para todos los usuarios del 
servidor.
 
 === Federarse con otras instancias Matrix ===
 
diff -Nru freedombox-21.4/doc/manual/es/ReleaseNotes.raw.wiki 
freedombox-21.4.2/doc/manual/es/ReleaseNotes.raw.wiki
--- freedombox-21.4/doc/manual/es/ReleaseNotes.raw.wiki 2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/es/ReleaseNotes.raw.wiki       2021-03-28 
09:23:46.000000000 -0400
@@ -10,6 +10,29 @@
 
 The following are the release notes for each !FreedomBox version.
 
+== FreedomBox 21.4.2 (2021-03-28) ==
+
+=== Highlights ===
+
+ * firstboot: Use session to verify first boot welcome step
+
+=== Other Changes ===
+
+ * locale: Update translations for German, Greek, Indonesian, Turkish
+ * manual: Update Contributing and Matrix Synapse pages
+
+== FreedomBox 21.4.1 (2021-03-13) ==
+
+=== Highlights ===
+
+ * deluge, mldonkey, syncthing, transmission: Ensure nslcd is running before 
the service is started
+ * deluge: Fix daemon user not in freedombox-share group after installation
+
+=== Other Changes ===
+
+ * config: Fix tests related to user home directory
+ * locale: Update translations for Dutch, German, Greek, Polish, Spanish, 
Swedish, Turkish
+
 == FreedomBox 21.4 (2021-02-28) ==
 
 === Highlights ===
diff -Nru freedombox-21.4/doc/manual/es/Rock64.raw.wiki 
freedombox-21.4.2/doc/manual/es/Rock64.raw.wiki
--- freedombox-21.4/doc/manual/es/Rock64.raw.wiki       2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/doc/manual/es/Rock64.raw.wiki     2021-03-28 
09:23:46.000000000 -0400
@@ -24,7 +24,7 @@
 === Hardware ===
 
  * Open Source Hardware (OSHW): No
- * CPU: Rockchip RK3328 Quad-Core SOC (4x Cortex A53@1.5Ghz)
+ * CPU: Rockchip RK3328 Quad-Core SOC (4x Cortex A53 @ 1.5Ghz)
  * GPU: Mali 450MP2
  * RAM: 1 GiB or 2 GiB or 4 GiB LPDDR3
  * Storage: eMMC module slot, microSD slot, 16 MiB SPI Flash
diff -Nru freedombox-21.4/doc/manual/es/Zoph.raw.wiki 
freedombox-21.4.2/doc/manual/es/Zoph.raw.wiki
--- freedombox-21.4/doc/manual/es/Zoph.raw.wiki 2021-02-28 20:57:00.000000000 
-0500
+++ freedombox-21.4.2/doc/manual/es/Zoph.raw.wiki       2021-03-28 
09:23:46.000000000 -0400
@@ -29,7 +29,7 @@
 
 El menú de solapas se mostrará en la parte superior de cada página. Desde ahí 
puedes cargar fotos desde cualquier ordenador, administrar Zoph para añadir 
usuarios, etc.
  
-Actualmente deberás ir primero a la pestaña "preferencias" para establecerlas 
porque el primer usuario creado automáticamente no las tiene.
+Ahora puedes ir a la pestaña "preferencias" para establecerlas, p. ej. las 
cantidades de filas y columnas en los resultados, cuanta información mostrar 
acerca de la cámara con la que se tomó la foto, etc.
 
 {{attachment:FreedomBox/Manual/Zoph/zoph-prefs.png|Zoph User Preferences 
Screen|width=606}}
 
diff -Nru freedombox-21.4/HACKING.md freedombox-21.4.2/HACKING.md
--- freedombox-21.4/HACKING.md  2021-02-28 20:57:00.000000000 -0500
+++ freedombox-21.4.2/HACKING.md        2021-03-28 09:23:46.000000000 -0400
@@ -5,7 +5,7 @@
 1. [Setting up and using development 
environments](#development-environments-setting-up-and-their-usage)
 1. [Contributing translations + how to make/keep FreedomBox 
international](#makingkeeping-freedombox-international)
 1. [Testing](#testing)
-1. [Building user documentation](#building-the-user-documentation-separately)
+1. [Documentation](#documentation)
 1. [Submitting your changes](#submitting-your-changes)
 1. [Other related stuff](#miscelanea)
 
@@ -465,7 +465,9 @@
 [back to index](#hacking)
 
 
-## Building the User Documentation Separately
+## Documentation
+
+### Building the User Documentation Separately
 
 FreedomBox Service (Plinth) man page is built from DocBook source in the `doc/`
 directory. FreedomBox manual is downloaded from the wiki is also available
@@ -477,6 +479,10 @@
 guest$ make -C doc
 ```
 
+### Building Developer documentation
+
+See [README.rst](doc/dev/README.rst) in `doc/dev` directory.
+
 
 [back to index](#hacking)
 
diff -Nru freedombox-21.4/plinth/__init__.py 
freedombox-21.4.2/plinth/__init__.py
--- freedombox-21.4/plinth/__init__.py  2021-02-28 20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/__init__.py        2021-03-28 09:23:46.000000000 
-0400
@@ -3,4 +3,4 @@
 Package init file.
 """
 
-__version__ = '21.4'
+__version__ = '21.4.2'
diff -Nru freedombox-21.4/plinth/locale/de/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/de/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/de/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/de/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -9,9 +9,9 @@
 msgstr ""
 "Project-Id-Version: FreedomBox UI\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2021-02-19 15:50+0000\n"
-"Last-Translator: Dietmar <sa...@permondes.de>\n"
+"POT-Creation-Date: 2021-02-11 17:23-0500\n"
+"PO-Revision-Date: 2021-03-22 18:29+0000\n"
+"Last-Translator: nautilusx <transl...@disroot.org>\n"
 "Language-Team: German <https://hosted.weblate.org/projects/freedombox/";
 "freedombox/de/>\n"
 "Language: de\n"
@@ -19,7 +19,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.5\n"
+"X-Generator: Weblate 4.5.2-dev\n"
 
 #: doc/dev/_templates/layout.html:11
 msgid "Page source"
@@ -3103,6 +3103,9 @@
 "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
 "<a href={coturn_url}>Coturn</a> app or configure an external server."
 msgstr ""
+"Matrix Synapse benötigt einen STUN/TURN-Server für Audio-/Videoanrufe. "
+"Installiere die <a href=\"{coturn_url}\">Coturn</a>-App oder konfiguriere "
+"einen externen Server."
 
 #: plinth/modules/matrixsynapse/__init__.py:76
 msgid "Matrix Synapse"
@@ -3125,7 +3128,7 @@
 
 #: plinth/modules/matrixsynapse/forms.py:21
 msgid "Automatically manage audio/video call setup"
-msgstr ""
+msgstr "Automatischer Aufbau von Audio-/Videoanrufen"
 
 #: plinth/modules/matrixsynapse/forms.py:23
 #, python-brace-format
@@ -3134,24 +3137,27 @@
 "server for Matrix Synapse. Disable this if you want to use a different STUN/"
 "TURN server."
 msgstr ""
+"Konfiguriert die lokale <a href=\"{coturn_url}\">coturn</a>-App als STUN/"
+"TURN-Server für Matrix Synapse. Deaktiviere dies, wenn du einen anderen STUN/"
+"TURN-Server verwenden möchtest."
 
 #: plinth/modules/matrixsynapse/forms.py:30
 msgid "STUN/TURN Server URIs"
-msgstr ""
+msgstr "STUN/TURN Server URIs"
 
 #: plinth/modules/matrixsynapse/forms.py:32
 msgid "List of public URIs of the STUN/TURN server, one on each line."
-msgstr ""
+msgstr "Liste der öffentlichen URIs des STUN/TURN-Servers, eine in jeder 
Zeile."
 
 #: plinth/modules/matrixsynapse/forms.py:36
-#, fuzzy
-#| msgid "Authentication Mode"
 msgid "Shared Authentication Secret"
-msgstr "Authentifizierungsmodus"
+msgstr "Gemeinsames Authentifizierungsgeheimnis"
 
 #: plinth/modules/matrixsynapse/forms.py:37
 msgid "Shared secret used to compute passwords for the TURN server."
 msgstr ""
+"Gemeinsames Geheimnis, das zur Berechnung von Passwörtern für den TURN-"
+"Server verwendet wird."
 
 #: plinth/modules/matrixsynapse/manifest.py:12
 msgid "Element"
@@ -5584,7 +5590,7 @@
 
 #: plinth/modules/radicale/manifest.py:28
 msgid "GNOME Calendar"
-msgstr "GNOME Calendar"
+msgstr "GNOME Kalender"
 
 #: plinth/modules/radicale/manifest.py:36
 msgid "Mozilla Thunderbird"
diff -Nru freedombox-21.4/plinth/locale/el/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/el/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/el/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/el/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -7,8 +7,8 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2021-02-09 23:50+0000\n"
+"POT-Creation-Date: 2021-02-11 17:23-0500\n"
+"PO-Revision-Date: 2021-03-22 18:29+0000\n"
 "Last-Translator: Michalis <michalisnto...@yahoo.gr>\n"
 "Language-Team: Greek <https://hosted.weblate.org/projects/freedombox/";
 "freedombox/el/>\n"
@@ -17,7 +17,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.5-dev\n"
+"X-Generator: Weblate 4.5.2-dev\n"
 
 #: doc/dev/_templates/layout.html:11
 msgid "Page source"
@@ -278,7 +278,7 @@
 
 #: plinth/modules/backups/forms.py:137
 msgid "Upload File"
-msgstr "Ανέβασμα αρχείου"
+msgstr "Αποστολή αρχείου"
 
 #: plinth/modules/backups/forms.py:139
 msgid "Backup files have to be in .tar.gz format"
@@ -625,7 +625,7 @@
 
 #: plinth/modules/backups/templates/backups_upload.html:41
 msgid "Upload file"
-msgstr "Ανέβασμα αρχείου"
+msgstr "Αποστολή αρχείου"
 
 #: plinth/modules/backups/templates/verify_ssh_hostkey.html:18
 #, python-format
@@ -1401,7 +1401,7 @@
 
 #: plinth/modules/coturn/__init__.py:57
 msgid "Coturn"
-msgstr ""
+msgstr "Coturn"
 
 #: plinth/modules/coturn/__init__.py:58
 msgid "VoIP Helper"
@@ -2181,7 +2181,7 @@
 #: plinth/modules/networks/templates/networks_configuration.html:22
 #: plinth/modules/storage/templates/storage.html:93
 msgid "Advanced"
-msgstr ""
+msgstr "Για προχωρημένους"
 
 #: plinth/modules/firewall/templates/firewall.html:104
 msgid ""
@@ -3846,7 +3846,7 @@
 
 #: plinth/modules/mumble/manifest.py:43
 msgid "Mumla"
-msgstr ""
+msgstr "Mumla"
 
 #: plinth/modules/mumble/views.py:39
 msgid "SuperUser password successfully updated."
@@ -4574,7 +4574,7 @@
 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:38
 #: plinth/modules/upgrades/templates/update-firstboot.html:33
 msgid "Next"
-msgstr ""
+msgstr "Επόμενο"
 
 #: plinth/modules/networks/templates/internet_connectivity_main.html:9
 #, fuzzy
@@ -4917,7 +4917,7 @@
 #: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49
 #: plinth/modules/wireguard/manifest.py:14
 msgid "WireGuard"
-msgstr ""
+msgstr "WireGuard"
 
 #: plinth/modules/networks/views.py:110
 #, fuzzy
@@ -6208,7 +6208,7 @@
 
 #: plinth/modules/sharing/__init__.py:39
 msgid "Sharing"
-msgstr "Sharing"
+msgstr "Κοινή χρήση"
 
 #: plinth/modules/sharing/forms.py:18
 msgid "Name of the share"
@@ -6610,7 +6610,7 @@
 
 #: plinth/modules/ssh/templates/ssh.html:25
 msgid "Fingerprint"
-msgstr "Αποτύπωμα"
+msgstr "Ψηφιακό αποτύπωμα"
 
 #: plinth/modules/ssh/views.py:48
 msgid "SSH authentication with password disabled."
@@ -7406,7 +7406,7 @@
 #: plinth/modules/upgrades/templates/upgrades-new-release.html:22
 #: plinth/templates/notifications.html:44
 msgid "Dismiss"
-msgstr ""
+msgstr "Κλείσιμο"
 
 #: plinth/modules/upgrades/templates/upgrades_configure.html:30
 #: plinth/modules/upgrades/templates/upgrades_configure.html:100
diff -Nru freedombox-21.4/plinth/locale/es/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/es/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/es/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/es/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -8,7 +8,7 @@
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2021-02-11 18:50+0000\n"
+"PO-Revision-Date: 2021-03-12 13:03+0000\n"
 "Last-Translator: Fioddor Superconcentrado <fiod...@gmail.com>\n"
 "Language-Team: Spanish <https://hosted.weblate.org/projects/freedombox/";
 "freedombox/es/>\n"
@@ -17,7 +17,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.5-dev\n"
+"X-Generator: Weblate 4.5.2-dev\n"
 
 #: doc/dev/_templates/layout.html:11
 msgid "Page source"
@@ -3067,6 +3067,9 @@
 "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
 "<a href={coturn_url}>Coturn</a> app or configure an external server."
 msgstr ""
+"Matrix Synapse necesita un servidor STUN/TURN para llamadas de audio/video. "
+"Instalar la app <a href=\"{coturn_url}\">Coturn</a> o configurar un servidor "
+"externo."
 
 #: plinth/modules/matrixsynapse/__init__.py:76
 msgid "Matrix Synapse"
@@ -3088,7 +3091,7 @@
 
 #: plinth/modules/matrixsynapse/forms.py:21
 msgid "Automatically manage audio/video call setup"
-msgstr ""
+msgstr "Administrar la configuración de llamada de audio/video automáticamente"
 
 #: plinth/modules/matrixsynapse/forms.py:23
 #, python-brace-format
@@ -3097,24 +3100,25 @@
 "server for Matrix Synapse. Disable this if you want to use a different STUN/"
 "TURN server."
 msgstr ""
+"Configura la app local <a href=\"{coturn_url}\">coturn</a> como servidor "
+"STUN/TURN para Matrix Synapse. Deshabilita esto si quieres usar un servidor "
+"STUN/TURN diferente."
 
 #: plinth/modules/matrixsynapse/forms.py:30
 msgid "STUN/TURN Server URIs"
-msgstr ""
+msgstr "URIs de servidor STUN/TURN"
 
 #: plinth/modules/matrixsynapse/forms.py:32
 msgid "List of public URIs of the STUN/TURN server, one on each line."
-msgstr ""
+msgstr "Lista de URIs públicas de servidor STUN/TURN, una en cada línea."
 
 #: plinth/modules/matrixsynapse/forms.py:36
-#, fuzzy
-#| msgid "Authentication Mode"
 msgid "Shared Authentication Secret"
-msgstr "Modo de autenticación"
+msgstr "Secreto compartido de autenticación"
 
 #: plinth/modules/matrixsynapse/forms.py:37
 msgid "Shared secret used to compute passwords for the TURN server."
-msgstr ""
+msgstr "Secreto compartido para resolver contraseñas para el servidor TURN."
 
 #: plinth/modules/matrixsynapse/manifest.py:12
 msgid "Element"
@@ -6087,10 +6091,8 @@
 msgstr "Dar acceso a los archivos de esta carpeta a quien tenga el enlace."
 
 #: plinth/modules/sharing/forms.py:34
-#, fuzzy
-#| msgid "User groups that can read the files in the share"
 msgid "User groups that can read the files in the share:"
-msgstr "Grupos de usuarias/os que pueden leer los archivos compartidos"
+msgstr "Grupos de usuarias/os que pueden leer los archivos compartidos:"
 
 #: plinth/modules/sharing/forms.py:36
 msgid ""
@@ -6230,7 +6232,7 @@
 
 #: plinth/modules/snapshot/forms.py:32
 msgid "Hourly Snapshots Limit"
-msgstr "Límite de instantáneas por hora"
+msgstr "Límite de instantáneas horarias"
 
 #: plinth/modules/snapshot/forms.py:33
 msgid "Keep a maximum of this many hourly snapshots."
@@ -6238,7 +6240,7 @@
 
 #: plinth/modules/snapshot/forms.py:36
 msgid "Daily Snapshots Limit"
-msgstr "Límite diario de instantáneas"
+msgstr "Límite de instantáneas diarias"
 
 #: plinth/modules/snapshot/forms.py:37
 msgid "Keep a maximum of this many daily snapshots."
@@ -6246,7 +6248,7 @@
 
 #: plinth/modules/snapshot/forms.py:40
 msgid "Weekly Snapshots Limit"
-msgstr "Límite semanal de instantáneas"
+msgstr "Límite de instantáneas semanales"
 
 #: plinth/modules/snapshot/forms.py:41
 msgid "Keep a maximum of this many weekly snapshots."
@@ -6254,7 +6256,7 @@
 
 #: plinth/modules/snapshot/forms.py:44
 msgid "Monthly Snapshots Limit"
-msgstr "Límite mensual de instantáneas"
+msgstr "Límite de instantáneas mensuales"
 
 #: plinth/modules/snapshot/forms.py:45
 msgid "Keep a maximum of this many monthly snapshots."
@@ -6262,7 +6264,7 @@
 
 #: plinth/modules/snapshot/forms.py:48
 msgid "Yearly Snapshots Limit"
-msgstr "Límite anual de instantáneas"
+msgstr "Límite de instantáneas anuales"
 
 #: plinth/modules/snapshot/forms.py:49
 msgid ""
@@ -7113,21 +7115,15 @@
 msgstr "No se pudo iniciar la actualización de la distribución"
 
 #: plinth/modules/upgrades/__init__.py:212
-#, fuzzy
-#| msgid ""
-#| "There is not enough free space in the root partition to start the "
-#| "distribution update. Please ensure at least 5 GB, and at least 10% of the "
-#| "total space, is free. Distribution update will be retried after 24 hours, "
-#| "if enabled."
 msgid ""
 "There is not enough free space in the root partition to start the "
 "distribution update. Please ensure at least 5 GB is free. Distribution "
 "update will be retried after 24 hours, if enabled."
 msgstr ""
 "No hay suficiente espacio libre en la partición raíz para iniciar la "
-"actualización de la distrbución. Por favor, asegure que al menos 5 GB y un "
-"10% del espacio libre total están libres. Si está habilitada, la "
-"actualización de la distribución se reintentará tras 24h ."
+"actualización de la distribución. Por favor, asegure que hay al menos 5 GB "
+"libres. Si está habilitada, la actualización de la distribución se "
+"reintentará tras 24h ."
 
 #: plinth/modules/upgrades/__init__.py:223
 msgid "Distribution update started"
@@ -7954,6 +7950,15 @@
 "location using search, map and calendar views. Individual photos can be "
 "shared with others by sending a direct link."
 msgstr ""
+"Zoph administra tu colección de fotografías. Las fotos se almacenan en tu "
+"{box_name}, bajo tu control. En vez de centrarse en galerías para exposición "
+"pública Zoph se centra en administrarlas para tu propio uso, organizándolas "
+"por quién las tomó, dónde se tomaron y quién aparece en ellas. Las fotos se "
+"pueden enlazar a múltiples álbumes y categorías jerárquicos. Es fácil "
+"encontrar fotos en las que aparezca determinada persona , o tomadas un día "
+"determinado, o en determinada ubicación empleando la búsqueda y las vistas "
+"de mapa y calendario. Se pueden compartir fotos sueltas con otras personas "
+"enviándoles un enlace directo."
 
 #: plinth/modules/zoph/__init__.py:44
 #, python-brace-format
@@ -7962,38 +7967,41 @@
 "Zoph. For additional users, accounts must be created both in {box_name} and "
 "in Zoph with the same user name."
 msgstr ""
+"El usuario de {box_name} que instaló Zoph será el administrador en Zoph. "
+"Para añadir más usuarios hay que crear cuentas con el mismo nombre tanto en "
+"Zoph como en {box_name} ."
 
 #: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6
 msgid "Zoph"
-msgstr ""
+msgstr "Zoph"
 
 #: plinth/modules/zoph/__init__.py:63
 msgid "Photo Organizer"
-msgstr ""
+msgstr "Organizador de fotografías"
 
 #: plinth/modules/zoph/forms.py:14
 msgid "Enable OpenStreetMap for maps"
-msgstr ""
+msgstr "Habilitar mapas OpenStreetMap"
 
 #: plinth/modules/zoph/forms.py:15
 msgid ""
 "When enabled, requests will be made to OpenStreetMap servers from user's "
 "browser. This impacts privacy."
 msgstr ""
+"Si se habilita se harán peticiones a los servidores OpenStreetMap desde el "
+"navegador del usuario. Esto impacta en la privacidad."
 
 #: plinth/modules/zoph/templates/zoph-pre-setup.html:15
 #: plinth/modules/zoph/templates/zoph-pre-setup.html:28
-#, fuzzy
-#| msgid "Start Setup"
 msgid "Setup"
-msgstr "Iniciar configuración"
+msgstr "Configurar"
 
 #: plinth/modules/zoph/templates/zoph-pre-setup.html:18
 #, python-format
 msgid ""
 "User account <strong>%(username)s</strong> will become the administrator "
 "account for Zoph."
-msgstr ""
+msgstr "El usuario <strong>%(username)s</strong> será el administrador de 
Zoph."
 
 #: plinth/network.py:29
 msgid "PPPoE"
diff -Nru freedombox-21.4/plinth/locale/id/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/id/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/id/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/id/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -3,20 +3,20 @@
 "Project-Id-Version: Indonesian (FreedomBox)\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2018-11-02 00:44+0000\n"
-"Last-Translator: ButterflyOfFire <butterflyoff...@protonmail.com>\n"
+"PO-Revision-Date: 2021-03-24 23:29+0000\n"
+"Last-Translator: Reza Almanda <rezaalmand...@gmail.com>\n"
 "Language-Team: Indonesian <https://hosted.weblate.org/projects/freedombox/";
-"plinth/id/>\n"
+"freedombox/id/>\n"
 "Language: id\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Weblate 4.5.2-dev\n"
 
 #: doc/dev/_templates/layout.html:11
 msgid "Page source"
-msgstr ""
+msgstr "Sumber halaman"
 
 #: plinth/context_processors.py:23 plinth/views.py:78
 msgid "FreedomBox"
@@ -25,7 +25,7 @@
 #: plinth/daemon.py:103
 #, python-brace-format
 msgid "Service {service_name} is running"
-msgstr ""
+msgstr "Layanan {service_name} sedang berjalan"
 
 #: plinth/daemon.py:130
 #, python-brace-format
@@ -532,10 +532,8 @@
 msgstr ""
 
 #: plinth/modules/backups/templates/backups_repository.html:83
-#, fuzzy
-#| msgid "{box_name} Manual"
 msgid "Download"
-msgstr "Panduan {box_name}"
+msgstr "Unduh"
 
 #: plinth/modules/backups/templates/backups_repository.html:87
 #: plinth/modules/backups/templates/backups_restore.html:27
diff -Nru freedombox-21.4/plinth/locale/nl/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/nl/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/nl/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/nl/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -8,7 +8,7 @@
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2021-02-14 10:50+0000\n"
+"PO-Revision-Date: 2021-03-05 18:50+0000\n"
 "Last-Translator: ikmaak <i...@ikmaak.nl>\n"
 "Language-Team: Dutch <https://hosted.weblate.org/projects/freedombox/";
 "freedombox/nl/>\n"
@@ -17,7 +17,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.5-dev\n"
+"X-Generator: Weblate 4.5.1-dev\n"
 "X-Language: nl_NL\n"
 "X-Source-Language: C\n"
 
@@ -3078,6 +3078,9 @@
 "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
 "<a href={coturn_url}>Coturn</a> app or configure an external server."
 msgstr ""
+"Matrix Synapse heeft een STUN/TURN-server nodig voor audio- en "
+"videogesprekken. Installeer de <a href=\"{coturn_url}\">Coturn</a> "
+"toepassing of configureer een externe server."
 
 #: plinth/modules/matrixsynapse/__init__.py:76
 msgid "Matrix Synapse"
@@ -3099,7 +3102,7 @@
 
 #: plinth/modules/matrixsynapse/forms.py:21
 msgid "Automatically manage audio/video call setup"
-msgstr ""
+msgstr "Automatisch beheer van audio/video-oproepinstellingen"
 
 #: plinth/modules/matrixsynapse/forms.py:23
 #, python-brace-format
@@ -3108,24 +3111,27 @@
 "server for Matrix Synapse. Disable this if you want to use a different STUN/"
 "TURN server."
 msgstr ""
+"Hiermee wordt de lokale <a href=\"{coturn_url}\">coturn</a> toepassing "
+"geconfigureerd als de STUN/TURN-server voor Matrix Synapse. Schakel dit uit "
+"als een andere STUN/TURN-server gebruikt moet worden."
 
 #: plinth/modules/matrixsynapse/forms.py:30
 msgid "STUN/TURN Server URIs"
-msgstr ""
+msgstr "STUN/TURN-server URI's"
 
 #: plinth/modules/matrixsynapse/forms.py:32
 msgid "List of public URIs of the STUN/TURN server, one on each line."
-msgstr ""
+msgstr "Lijst van publieke URI's van de STUN/TURN-server, één per regel."
 
 #: plinth/modules/matrixsynapse/forms.py:36
-#, fuzzy
-#| msgid "Authentication Mode"
 msgid "Shared Authentication Secret"
-msgstr "Authentificatiemodus"
+msgstr "Gedeeld Authenticatiegeheim"
 
 #: plinth/modules/matrixsynapse/forms.py:37
 msgid "Shared secret used to compute passwords for the TURN server."
 msgstr ""
+"Gedeeld geheim dat wordt gebruikt om wachtwoorden voor de TURN-server te "
+"berekenen."
 
 #: plinth/modules/matrixsynapse/manifest.py:12
 msgid "Element"
diff -Nru freedombox-21.4/plinth/locale/pl/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/pl/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/pl/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/pl/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -7,9 +7,9 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2021-02-01 18:42+0000\n"
-"Last-Translator: Stanisław Stefan Krukowski <pet20...@riseup.net>\n"
+"POT-Creation-Date: 2021-02-11 17:23-0500\n"
+"PO-Revision-Date: 2021-03-03 16:50+0000\n"
+"Last-Translator: Karol Werner <ka...@ppkt.eu>\n"
 "Language-Team: Polish <https://hosted.weblate.org/projects/freedombox/";
 "freedombox/pl/>\n"
 "Language: pl\n"
@@ -18,7 +18,7 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.5-dev\n"
+"X-Generator: Weblate 4.5.1-dev\n"
 
 #: doc/dev/_templates/layout.html:11
 msgid "Page source"
@@ -2637,7 +2637,7 @@
 #: plinth/modules/i2p/templates/i2p.html:21
 #: plinth/modules/i2p/templates/i2p.html:34 plinth/templates/clients.html:28
 msgid "Launch"
-msgstr ""
+msgstr "Uruchom"
 
 #: plinth/modules/i2p/templates/i2p.html:25
 msgid "Anonymous Torrents"
@@ -7720,7 +7720,7 @@
 
 #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19
 msgid "Donate"
-msgstr ""
+msgstr "Przekaż darowiznę"
 
 #: plinth/templates/index.html:147
 msgid "FreedomBox Foundation"
diff -Nru freedombox-21.4/plinth/locale/sv/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/sv/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/sv/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/sv/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -8,7 +8,7 @@
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2021-02-16 04:50+0000\n"
+"PO-Revision-Date: 2021-03-08 13:16+0000\n"
 "Last-Translator: Michael Breidenbach <le...@tutanota.com>\n"
 "Language-Team: Swedish <https://hosted.weblate.org/projects/freedombox/";
 "freedombox/sv/>\n"
@@ -17,7 +17,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.5-dev\n"
+"X-Generator: Weblate 4.5.1\n"
 
 #: doc/dev/_templates/layout.html:11
 msgid "Page source"
@@ -3054,6 +3054,8 @@
 "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
 "<a href={coturn_url}>Coturn</a> app or configure an external server."
 msgstr ""
+"Matrix Synapse behöver en STUN/TURN-server för ljud-/videosamtal. Installera "
+"<a href=\"{coturn_url}\">Coturn</a>-appen eller konfigurera en extern server."
 
 #: plinth/modules/matrixsynapse/__init__.py:76
 msgid "Matrix Synapse"
@@ -3075,7 +3077,7 @@
 
 #: plinth/modules/matrixsynapse/forms.py:21
 msgid "Automatically manage audio/video call setup"
-msgstr ""
+msgstr "Hantera konfiguration av ljud-/videosamtal automatiskt"
 
 #: plinth/modules/matrixsynapse/forms.py:23
 #, python-brace-format
@@ -3084,20 +3086,21 @@
 "server for Matrix Synapse. Disable this if you want to use a different STUN/"
 "TURN server."
 msgstr ""
+"Konfigurerar den lokala <a href=\"{coturn_url}\">coturn</a>-appen som STUN/"
+"TURN-servern för Matrix Synapse. Inaktivera detta om du vill använda en "
+"annan STUN/TURN-server."
 
 #: plinth/modules/matrixsynapse/forms.py:30
 msgid "STUN/TURN Server URIs"
-msgstr ""
+msgstr "URL:er för STUN/TURN-servrar"
 
 #: plinth/modules/matrixsynapse/forms.py:32
 msgid "List of public URIs of the STUN/TURN server, one on each line."
-msgstr ""
+msgstr "Lista över offentliga URI: er för STUN / TURN-servrar, en på varje 
rad."
 
 #: plinth/modules/matrixsynapse/forms.py:36
-#, fuzzy
-#| msgid "Authentication Mode"
 msgid "Shared Authentication Secret"
-msgstr "Autentiseringsläge"
+msgstr "Delad autentiseringshemlighet"
 
 #: plinth/modules/matrixsynapse/forms.py:37
 msgid "Shared secret used to compute passwords for the TURN server."
diff -Nru freedombox-21.4/plinth/locale/tr/LC_MESSAGES/django.po 
freedombox-21.4.2/plinth/locale/tr/LC_MESSAGES/django.po
--- freedombox-21.4/plinth/locale/tr/LC_MESSAGES/django.po      2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/locale/tr/LC_MESSAGES/django.po    2021-03-28 
09:23:46.000000000 -0400
@@ -7,7 +7,7 @@
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-02-28 20:13-0500\n"
-"PO-Revision-Date: 2021-02-14 10:50+0000\n"
+"PO-Revision-Date: 2021-03-28 13:10+0000\n"
 "Last-Translator: Burak Yavuz <hitowerdi...@hotmail.com>\n"
 "Language-Team: Turkish <https://hosted.weblate.org/projects/freedombox/";
 "freedombox/tr/>\n"
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.5-dev\n"
+"X-Generator: Weblate 4.6-dev\n"
 
 #: doc/dev/_templates/layout.html:11
 msgid "Page source"
@@ -2561,9 +2561,9 @@
 "channel using the IRC web interface."
 msgstr ""
 "Birçok %(box_name)s katılımcısı ve kullanıcısı da irc.oftc.net IRC ağında "
-"olabilir.  IRC web arayüzünü kullanarak <a href=\"https://webchat.oftc.net/?";
-"randomnick=1&channels=freedombox&prompt=1\">#freedombox</a> kanalına katılın "
-"ve yardım isteyin."
+"olabilir. IRC web arayüzünü kullanarak <a href=\"https://webchat.oftc.net/";
+"?randomnick=1&amp;channels=freedombox&amp;prompt=1\">#freedombox</a> "
+"kanalına katılın ve yardım isteyin."
 
 #: plinth/modules/help/templates/help_manual.html:18
 msgid "Download as PDF"
@@ -3058,6 +3058,9 @@
 "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
 "<a href={coturn_url}>Coturn</a> app or configure an external server."
 msgstr ""
+"Matrix Synapse, sesli/görüntülü aramalar için bir STUN/TURN sunucusuna "
+"ihtiyaç duyar. <a href={coturn_url}>Coturn</a> uygulamasını yükleyin veya "
+"harici bir sunucu yapılandırın."
 
 #: plinth/modules/matrixsynapse/__init__.py:76
 msgid "Matrix Synapse"
@@ -3079,7 +3082,7 @@
 
 #: plinth/modules/matrixsynapse/forms.py:21
 msgid "Automatically manage audio/video call setup"
-msgstr ""
+msgstr "Sesli/görüntülü arama kurulumunu otomatik olarak yönetin"
 
 #: plinth/modules/matrixsynapse/forms.py:23
 #, python-brace-format
@@ -3088,24 +3091,29 @@
 "server for Matrix Synapse. Disable this if you want to use a different STUN/"
 "TURN server."
 msgstr ""
+"Yerel <a href={coturn_url}>coturn</a> uygulamasını, Matrix Synapse için STUN/"
+"TURN sunucusu olarak yapılandırır. Farklı bir STUN/TURN sunucusu kullanmak "
+"istiyorsanız bunu etkisizleştirin."
 
 #: plinth/modules/matrixsynapse/forms.py:30
 msgid "STUN/TURN Server URIs"
-msgstr ""
+msgstr "STUN/TURN Sunucu URI'leri"
 
 #: plinth/modules/matrixsynapse/forms.py:32
 msgid "List of public URIs of the STUN/TURN server, one on each line."
 msgstr ""
+"Her satırda bir tane olmak üzere STUN/TURN sunucusunun ortak URI'lerinin "
+"listesi."
 
 #: plinth/modules/matrixsynapse/forms.py:36
-#, fuzzy
-#| msgid "Authentication Mode"
 msgid "Shared Authentication Secret"
-msgstr "Kimlik Doğrulama Kipi"
+msgstr "Paylaşılan Kimlik Doğrulama Gizli Anahtarı"
 
 #: plinth/modules/matrixsynapse/forms.py:37
 msgid "Shared secret used to compute passwords for the TURN server."
 msgstr ""
+"TURN sunucusu için parolaları hesaplamak amacıyla kullanılan paylaşılan "
+"gizli anahtar."
 
 #: plinth/modules/matrixsynapse/manifest.py:12
 msgid "Element"
@@ -5763,8 +5771,8 @@
 "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and "
 "displays results from multiple search engines."
 msgstr ""
-"Searx, gizliliğe saygılı bir İnternet üst arama motorudur. Birden çok arama "
-"motorundan gelen sonuçları toplar ve görüntüler."
+"Searx, gizliliğe saygılı bir İnternet üstbilgi arama motorudur. Birden çok "
+"arama motorundan gelen sonuçları toplar ve görüntüler."
 
 #: plinth/modules/searx/__init__.py:27
 msgid ""
@@ -6021,7 +6029,7 @@
 
 #: plinth/modules/shadowsocks/__init__.py:53
 msgid "Socks5 Proxy"
-msgstr "Socks5 Vekil Sunucu"
+msgstr "Socks5 Vekil Sunucusu"
 
 #: plinth/modules/shadowsocks/forms.py:12
 #: plinth/modules/shadowsocks/forms.py:13
@@ -6834,7 +6842,7 @@
 
 #: plinth/modules/tor/__init__.py:71
 msgid "Tor Socks Proxy"
-msgstr "Tor Socks Vekil Sunucu"
+msgstr "Tor Socks Vekil Sunucusu"
 
 #: plinth/modules/tor/__init__.py:75
 msgid "Tor Bridge Relay"
@@ -7122,14 +7130,14 @@
 
 #: plinth/modules/upgrades/__init__.py:223
 msgid "Distribution update started"
-msgstr "Dağıtım güncellemesi başladı"
+msgstr "Dağıtım güncellemesi başlatıldı"
 
 #: plinth/modules/upgrades/__init__.py:225
 msgid ""
 "Started update to next stable release. This may take a long time to complete."
 msgstr ""
-"Bir sonraki kararlı sürüme güncelleme başladı. Bunun tamamlanması uzun zaman "
-"alabilir."
+"Bir sonraki kararlı yayıma güncelleme başlatıldı. Bunun tamamlanması uzun "
+"zaman alabilir."
 
 #: plinth/modules/upgrades/forms.py:15
 msgid "Enable auto-update"
diff -Nru freedombox-21.4/plinth/modules/config/tests/test_config.py 
freedombox-21.4.2/plinth/modules/config/tests/test_config.py
--- freedombox-21.4/plinth/modules/config/tests/test_config.py  2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/modules/config/tests/test_config.py        
2021-03-28 09:23:46.000000000 -0400
@@ -3,15 +3,15 @@
 Tests for config module.
 """
 
-import pytest
 import os
+from unittest.mock import MagicMock, patch
 
-from unittest.mock import (patch, MagicMock)
+import pytest
 
 from plinth import __main__ as plinth_main
-from plinth.modules.apache import uws_directory_of_user
-from plinth.modules.config import (home_page_url2scid, get_home_page,
-                                   _home_page_scid2url, change_home_page)
+from plinth.modules.apache import uws_directory_of_user, uws_url_of_user
+from plinth.modules.config import (_home_page_scid2url, change_home_page,
+                                   get_home_page, home_page_url2scid)
 from plinth.modules.config.forms import ConfigurationForm
 
 
@@ -71,46 +71,53 @@
 
 def test_homepage_mapping():
     """Basic tests for homepage functions."""
-    f = home_page_url2scid
-    assert f(None) is None
-    assert f('/unknown/url') is None
-    assert 'plinth' == f('/plinth/')
-    assert 'plinth' == f('/plinth')
-    assert 'plinth' == f('plinth')
-    assert 'apache-default' == f('/index.html')
-    assert 'uws-user' == f('/~user')
-    assert 'uws-user' == f('/~user/whatever/else')
-    # assert 'config' == f('/plinth/apps/sharing/')
-
-    f = _home_page_scid2url
-    assert f(None) is None
-    assert '/plinth/' == f('plinth')
-    assert '/index.html' == f('apache-default')
+    func = home_page_url2scid
+    assert func(None) is None
+    assert func('/unknown/url') is None
+    assert func('/plinth/') == 'plinth'
+    assert func('/plinth') == 'plinth'
+    assert func('plinth') == 'plinth'
+    assert func('/index.html') == 'apache-default'
+    assert func('/~user') == 'uws-user'
+    assert func('/~user/whatever/else') == 'uws-user'
+
+    func = _home_page_scid2url
+    assert func(None) is None
+    assert func('plinth') == '/plinth/'
+    assert func('apache-default') == '/index.html'
 
 
 def test_homepage_mapping_skip_ci():
     """Special tests for homepage functions."""
-
     try:
-        UWS_DIRECTORY = uws_directory_of_user(os.getlogin())
+        user = os.getlogin()
     except OSError:
+        # See msg383161 in https://bugs.python.org/issue40821
         reason = "Needs access to ~/ directory. " \
                + "CI sandboxed workspace doesn't provide it."
         pytest.skip(reason)
-
-    if os.path.exists(UWS_DIRECTORY):
-        reason = "UWS dir {} exists already.".format(UWS_DIRECTORY)
+    uws_directory = uws_directory_of_user(user)
+    uws_url = uws_url_of_user(user)
+    uws_scid = home_page_url2scid(uws_url)
+
+    # Check test's precondition:
+    if os.path.exists(uws_directory):
+        # Don't blindly remove a pre-existing directory. Just skip the test.
+        reason = "UWS directory {} exists already.".format(uws_directory)
         pytest.skip(reason)
 
-    f = _home_page_scid2url
+    # AC: Return scid if UWS directory exists:
     try:
-        os.mkdir(UWS_DIRECTORY)
-    except FileNotFoundError:
-        pytest.skip('Home folder cannot be accessed on buildd.')
-
-    assert '/~fbx/' == f('uws-fbx')
-    os.rmdir(UWS_DIRECTORY)
-    assert f('uws-fbx') is None
+        os.mkdir(uws_directory)
+    except Exception:
+        reason = "Needs access to ~/ directory. " \
+               + "CI sandboxed workspace doesn't provide it."
+        pytest.skip(reason)
+    assert _home_page_scid2url(uws_scid) == uws_url
+
+    # AC: Return None if it doesn't:
+    os.rmdir(uws_directory)
+    assert _home_page_scid2url(uws_scid) is None
 
 
 class Dict2Obj(object):
@@ -147,39 +154,50 @@
     Note: If run on a pristine unconfigured FreedomBox, this test will leave
           the homepage default-configured. (Imperfect cleanup in such case).
 
-    Pending: Specific test cases to distiguish 4.1,2,3.
-             Currently they share the same test case.
+    Note: We take fbx as website user because of our testing container.
+
+    Pending: - Specific test cases to distinguish 4.1,2,3.
+               Currently they share the same test case.
+             - Search for another valid user apart from fbx.
     """
-    try:
-        UWS_DIRECTORY = uws_directory_of_user(os.getlogin())
-    except OSError:
-        reason = "Needs access to ~/ directory, etc. " \
-               + "CI sandboxed workspace doesn't provide it."
+    user = 'fbx'
+    uws_directory = uws_directory_of_user(user)
+    uws_url = uws_url_of_user(user)
+    uws_scid = home_page_url2scid(uws_url)
+
+    default_home_page = 'plinth'
+    original_home_page = get_home_page() or default_home_page
+
+    # Check test's preconditions:
+    if original_home_page not in (default_home_page, None):
+        reason = "Unexpected home page {}.".format(original_home_page)
         pytest.skip(reason)
 
-    DEFAULT_HOME_PAGE = 'plinth'
-    ORIGINAL_HOME_PAGE = get_home_page() or DEFAULT_HOME_PAGE
-
-    if ORIGINAL_HOME_PAGE not in (DEFAULT_HOME_PAGE, None):
-        reason = "Unexpected home page {}.".format(ORIGINAL_HOME_PAGE)
+    if os.path.exists(uws_directory):
+        # Don't blindly remove a pre-existing directory. Just skip the test.
+        reason = "UWS directory {} exists already.".format(uws_directory)
         pytest.skip(reason)
 
-    # invalid changes fall back to default:
-    for scid in ('uws-unexisting', 'uws-fbx', 'missing_app'):
+    # AC: invalid changes fall back to default:
+    for scid in ('uws-unexisting', uws_scid, 'missing_app'):
         change_home_page(scid)
-        assert get_home_page() == DEFAULT_HOME_PAGE
-
-    os.mkdir(UWS_DIRECTORY)
+        assert get_home_page() == default_home_page
 
-    # valid changes actually happen:
-    for scid in ('b', 'a', 'uws-fbx', 'apache-default', 'plinth'):
+    # AC: valid changes actually happen:
+    try:
+        os.mkdir(uws_directory)
+    except Exception:
+        reason = "Needs access to ~/ directory. " \
+               + "CI sandboxed workspace doesn't provide it."
+        pytest.skip(reason)
+    for scid in ('b', 'a', uws_scid, 'apache-default', 'plinth'):
         change_home_page(scid)
         assert get_home_page() == scid
 
     # cleanup:
-    change_home_page(ORIGINAL_HOME_PAGE)
-    os.rmdir(UWS_DIRECTORY)
-    assert get_home_page() == ORIGINAL_HOME_PAGE
+    change_home_page(original_home_page)
+    os.rmdir(uws_directory)
+    assert get_home_page() == original_home_page
 
 
 def test_locale_path():
diff -Nru 
freedombox-21.4/plinth/modules/deluge/data/lib/systemd/system/deluged.service.d/freedombox.conf
 
freedombox-21.4.2/plinth/modules/deluge/data/lib/systemd/system/deluged.service.d/freedombox.conf
--- 
freedombox-21.4/plinth/modules/deluge/data/lib/systemd/system/deluged.service.d/freedombox.conf
     1969-12-31 19:00:00.000000000 -0500
+++ 
freedombox-21.4.2/plinth/modules/deluge/data/lib/systemd/system/deluged.service.d/freedombox.conf
   2021-03-28 09:23:46.000000000 -0400
@@ -0,0 +1,3 @@
+# The service depends on users and groups defined in LDAP
+[Unit]
+After=nslcd.service
diff -Nru freedombox-21.4/plinth/modules/deluge/__init__.py 
freedombox-21.4.2/plinth/modules/deluge/__init__.py
--- freedombox-21.4/plinth/modules/deluge/__init__.py   2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/modules/deluge/__init__.py 2021-03-28 
09:23:46.000000000 -0400
@@ -98,6 +98,6 @@
 def setup(helper, old_version=None):
     """Install and configure the module."""
     helper.install(managed_packages)
-    helper.call('post', actions.superuser_run, 'deluge', ['setup'])
     add_user_to_share_group(SYSTEM_USER)
+    helper.call('post', actions.superuser_run, 'deluge', ['setup'])
     helper.call('post', app.enable)
diff -Nru freedombox-21.4/plinth/modules/first_boot/middleware.py 
freedombox-21.4.2/plinth/modules/first_boot/middleware.py
--- freedombox-21.4/plinth/modules/first_boot/middleware.py     2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/modules/first_boot/middleware.py   2021-03-28 
09:23:46.000000000 -0400
@@ -12,6 +12,7 @@
 from django.utils.deprecation import MiddlewareMixin
 
 from plinth.modules import first_boot
+from plinth.utils import is_user_admin
 
 LOGGER = logging.getLogger(__name__)
 
@@ -35,6 +36,15 @@
         firstboot_completed = first_boot.is_completed()
         user_requests_firstboot = first_boot.is_firstboot_url(request.path)
 
+        # If user requests a step other than the welcome step, verify that they
+        # indeed completed the secret verification by looking at the session.
+        if (user_requests_firstboot and
+                not request.path.startswith(reverse('first_boot:welcome')) and
+                first_boot.firstboot_wizard_secret_exists() and
+                not request.session.get('firstboot_secret_provided', False) and
+                not is_user_admin(request)):
+            return HttpResponseRedirect(reverse('first_boot:welcome'))
+
         # Redirect to first boot if requesting normal page and first
         # boot is not complete.
         if not firstboot_completed and not user_requests_firstboot:
diff -Nru freedombox-21.4/plinth/modules/first_boot/views.py 
freedombox-21.4.2/plinth/modules/first_boot/views.py
--- freedombox-21.4/plinth/modules/first_boot/views.py  2021-02-28 
20:57:00.000000000 -0500
+++ freedombox-21.4.2/plinth/modules/first_boot/views.py        2021-03-28 
09:23:46.000000000 -0400
@@ -18,6 +18,7 @@
 
     def form_valid(self, form):
         """If form is valid, mark this step as done and move to next step."""
+        self.request.session['firstboot_secret_provided'] = True
         first_boot.mark_step_done('firstboot_welcome')
         return http.HttpResponseRedirect(reverse(first_boot.next_step()))
 
diff -Nru 
freedombox-21.4/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf
 
freedombox-21.4.2/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf
--- 
freedombox-21.4/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf
   2021-02-28 20:57:00.000000000 -0500
+++ 
freedombox-21.4.2/plinth/modules/mldonkey/data/lib/systemd/system/mldonkey-server.service.d/freedombox.conf
 2021-03-28 09:23:46.000000000 -0400
@@ -1,6 +1,6 @@
 [Unit]
 Description=MLDonkey: Multi-protocol, peer-to-peer file sharing server
-After=syslog.target network.target
+After=syslog.target network.target nslcd.service
 ConditionPathExists=/var/lib/mldonkey/downloads.ini
 Documentation=man:mlnet(1) http://mldonkey.sourceforge.net/Main_Page
 
diff -Nru 
freedombox-21.4/plinth/modules/syncthing/data/lib/systemd/system/syncthing@syncthing.service.d/freedombox.conf
 
freedombox-21.4.2/plinth/modules/syncthing/data/lib/systemd/system/syncthing@syncthing.service.d/freedombox.conf
--- 
freedombox-21.4/plinth/modules/syncthing/data/lib/systemd/system/syncthing@syncthing.service.d/freedombox.conf
      1969-12-31 19:00:00.000000000 -0500
+++ 
freedombox-21.4.2/plinth/modules/syncthing/data/lib/systemd/system/syncthing@syncthing.service.d/freedombox.conf
    2021-03-28 09:23:46.000000000 -0400
@@ -0,0 +1,3 @@
+# The service depends on users and groups defined in LDAP
+[Unit]
+After=nslcd.service
diff -Nru 
freedombox-21.4/plinth/modules/transmission/data/lib/systemd/system/transmission-daemon.service.d/freedombox.conf
 
freedombox-21.4.2/plinth/modules/transmission/data/lib/systemd/system/transmission-daemon.service.d/freedombox.conf
--- 
freedombox-21.4/plinth/modules/transmission/data/lib/systemd/system/transmission-daemon.service.d/freedombox.conf
   1969-12-31 19:00:00.000000000 -0500
+++ 
freedombox-21.4.2/plinth/modules/transmission/data/lib/systemd/system/transmission-daemon.service.d/freedombox.conf
 2021-03-28 09:23:46.000000000 -0400
@@ -0,0 +1,3 @@
+# The service depends on users and groups defined in LDAP
+[Unit]
+After=nslcd.service

Reply via email to