8710 Commits

Author SHA1 Message Date
James Valleroy
334f5f4af9
Release v24.10 to unstable
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
v24.10
2024-05-06 21:00:45 -04:00
James Valleroy
97bebf1a1e
doc: Fetch latest manual
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 20:59:27 -04:00
James Valleroy
23592667f6
locale: Update translation strings
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 20:59:13 -04:00
Sunil Mohan Adapa
f494760f2a
nextcloud: Add fallback for when quadlet is not available
- Let the .container file be created and modified even when quadlets are not
available. This is harmless.

- When upgrading from bookworm to trixie, the fallback service file is removed
if setup is re-run.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
[jvalleroy: Add daemon-reload after creating service file]
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 18:27:17 -04:00
Sunil Mohan Adapa
653b642dae
nextcloud: Warn that community provides the container not team
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:56 -04:00
Sunil Mohan Adapa
31785857b3
nextlcoud: Enable app with experimental warning
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:54 -04:00
Sunil Mohan Adapa
fb0dd323ff
nextcloud: Populated and maintain a list of trusted domains
- Rename 'domain' to 'override domain'. See below.

- If override domain is not set and trusted domains list is properly maintained,
then Nextcloud can be accessed using a domain from list of trusted domains. This
is ideal as accessing from .onion domain and a regular domain will
simultaneously without forcing a single domain. However, non-localhost IP
addresses will not work with this approach and 'override domain' will be needed.

- When override domain is set to an IP address or a domain, then that domain
will forced. Also hostname are accepted on a request but after the first page
load, access will be forcefully redirected to the configured override domain.
Multiple domains, even trusted domains, will thus not work. This option should
be used as a last resort.

- All un-setting the override domain to an empty value so that trusted domains
can be used again.

- Update diagnostic checks to ensure that above logic is used with checking
domains.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:52 -04:00
Sunil Mohan Adapa
1272be0ad6
nextcloud: Allow re-running setup when app is disabled
- Enable the redis drop-in configurations before redis-server is started so that
the configuration is effective.

- When app is disabled and re-running setup, disable it after running setup
because setup() enables it.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:49 -04:00
Sunil Mohan Adapa
685e636a93
notification: Handle more formatting errors
When there message strings containing substrings of the form
"{object.property}", an AttributeError is raised instead of KeyError during
string formatting. Catch these errors.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:47 -04:00
Sunil Mohan Adapa
5c101a1447
nextcloud: Enable pretty URLs without /index.php in them
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:45 -04:00
Sunil Mohan Adapa
f1276d736a
nextcloud: Implement enable/disable container
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:43 -04:00
Sunil Mohan Adapa
f8ddc774b0
nextcloud: Allow re-running setup
- Retrieve a database password from configuration if one is set instead of
generating new one.

- Create database after starting the container. This is okay as database
configuration is not set until maintenance:install operation is run.

- Minor change to setting administrator password during install.

Tests:

- Update profile in Nextcloud and re-run setup. The updated settings are still
available.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:40 -04:00
Sunil Mohan Adapa
614bea4511
nextcloud: Restart container when dependent services are restarted
This is required because when services are restarted, their Unix domain sockets
are removed and new ones are created. The container will still be using the old
sockets and will fail to connect to the service.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:38 -04:00
Sunil Mohan Adapa
6b046ec27d
nextcloud: Ship instead of create cron timer related units
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:35 -04:00
Sunil Mohan Adapa
035d3b49bf
nextcloud: Pull the image separately before starting systemd unit
This prevents timeout of the service if the image pull is slow.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:33 -04:00
Sunil Mohan Adapa
6e2db19a26
nextcloud: Wait on init sync lock
- First wait until the files are copied into /var/www/html from
/usr/src/nextcloud.

- Then wait until init-sync lock is released.

- This allows for re-running setup as CAN_INSTALL file is removed after install
process in completed.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:30 -04:00
Sunil Mohan Adapa
85cc9f08fa
nextcloud: Use php-fpm container instead of apache container
- Configuring just php-fpm is easier compared to configuring Apache + mod_php.
There is no need to configure trusted proxies as the requests are made using the
FastCGI protocol.

- There is no need for a full web server as we already run Apache.

- Place nextcloud data in /var/lib/container so that non-PHP files can be served
directly without php-fpm involved. This location is more suitable for switching
to nextcloud based on a .deb file (if ever). This is done by configuring the
volume to serve a bind mounted directory of our choice.

- Update Apache configuration to proxy to php-fpm instead of another web server.
Include the changes needed for Apache configuration to serve non-php files
directly.

- Managed the volume using quadlet podman systemd generator.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:27 -04:00
Sunil Mohan Adapa
e7e1a6b41d
nextcloud: Drop network namespacing in container, use host network
- This is not ideal and reduces security. However it simplifies quite a bit of
setup.

- Services on the host network are already exposed to the container (however,
they could easily be protected with firewall rules).

- Container has full access to external networks already. So this part does not
change.

- This setup would be at par with how other services run on FreedomBox right
now. We can think of generalized solution for all the apps later.

- FirewallLocalProtection for the single service the runs in the container works
as usual without change.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:23 -04:00
Sunil Mohan Adapa
3f8874f461
nextcloud: Create network using systemd generator
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:14:20 -04:00
Sunil Mohan Adapa
df16f74b74
nextcloud: Use systemd generator for creating container service
- See quadlet(5).

- Using 'podman generate systemd' is deprecated. Quadlets are recommended.

- When using the systemd generator, enable/disable is not possible. The
container is automatically started when system is booted or systemd is reloaded
after .container file changes.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-05-06 17:12:32 -04:00
Veiko Aasa
8670a56610
minidlna: Restart app when upgrading to reconfigure firewall
Tested when minidlna app is running - after upgrade the ssdp
port is open.

Signed-off-by: Veiko Aasa <veiko17@disroot.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-03 16:05:52 -07:00
Veiko Aasa
681f2ef994
minidlna: Do not proxy minidlna web interface over Apache
Minidlna interface is still available to everybody in internal networks
at http://<ip-address>:8200. (Note that using mDNS name like
freedombox.local doesn't work here).

Remove 'minidlna' group and apache minidlna site configuration as
those are not useful any more.

Reconfigure minidlna front page shortcut to link to the app
description page.

Tests performed with stable and testing containers:
Create a user that belongs to minidlna group. Apply changes, after
minidlna app upgrade:
- the user is not in minidlna group any more.
- the users configuration page doesn't show minidlna group.
- Apache site /_minidlna is disabled.

Closes #2012, #2013, #2416.

Signed-off-by: Veiko Aasa <veiko17@disroot.org>
[sunil: Minor formatting, use single quotes for strings for consistency]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-03 16:05:22 -07:00
Veiko Aasa
0d0eb4472d
minidlna: Explicitly include ssdp service to firewall configuration
It helps showing ssdp protocol ports in minidlna diagnostics.

Also avoid overwrite imported name 'firewall'.

Tested that ssdp port 1900 is shown in the minidlna diagnostics page.

Signed-off-by: Veiko Aasa <veiko17@disroot.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-03 16:05:17 -07:00
Sunil Mohan Adapa
75e99f28cd
letsencrypt: Remove unused imports
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-03 08:20:38 -07:00
James Valleroy
8ff1a14e84
letsencrypt: Re-obtain certificates during repair
- Set check_id and domain for domain diagnostic check

- If there is an error, store it in thread local storage.

- Drop checking for case when no domain is configured. This is better done after
initial setup via notification rather than in diagnostics. Proposed change also
will not show the warning if a .local domain is configured (almost always). Keep
checking for Check id to deal with older stored diagnostic results.

- Call obtain when certificate is not available. Call re-obtain otherwise. This
is important for properly calling the post-obtain operations.

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
[sunil: Drop check for case when no domain is configured]
[sunil: Call either obtain or re-obtain based on current state of certificate]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-02 21:53:08 -07:00
James Valleroy
f5f687c8fd
diagnostics: Change "Re-run setup" to "Try to repair"
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
[sunil: Fix issue with formatting i18n message]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-02 21:48:57 -07:00
James Valleroy
35c2326261
setup: Add method to run app repair
- Repair is run within an operation.

- Diagnostics are run for the app first.

- Call app.repair, then re-run setup if needed.

- Add helper functions for apps or components to store error messages in thread
  local storage. These error messages are shown at the end.

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
[sunil: Undo minor reformatting, due to automatic tool]
[sunil: Fix passing incorrect Exception argument to operation.on_update]
[sunil: Add full stop at the end of the success message to match install message]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-02 21:46:11 -07:00
James Valleroy
f487565b2c
app, component: Add repair method
- Allows apps and component to implement custom repair methods.

- Default implementation asks relevant components to repair, and then if
  needed, requests re-run setup for the app.

- Component.repair will return True by default, indicating that setup should be
  re-run.

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
[sunil: Minor docstring styling fixes]
[sunil: Improve tests for repair]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-02 21:45:25 -07:00
James Valleroy
ddc9b434a7
diagnostics: Add optional component_id to DiagnosticCheck
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-02 21:45:12 -07:00
Ray Kuo
9fa45b4239
Translated using Weblate (Chinese (Traditional))
Currently translated at 17.6% (276 of 1567 strings)
2024-05-02 20:15:16 +02:00
Jiří Podhorecký
22a3797e77
Translated using Weblate (Czech)
Currently translated at 100.0% (1567 of 1567 strings)
2024-05-02 20:15:16 +02:00
大王叫我来巡山
15168f4371
Translated using Weblate (Chinese (Simplified))
Currently translated at 66.5% (1043 of 1567 strings)
2024-05-02 20:15:16 +02:00
Burak Yavuz
2f84b8f6b3
Translated using Weblate (Turkish)
Currently translated at 100.0% (1567 of 1567 strings)
2024-05-02 20:15:16 +02:00
gallegonovato
bc468401d3
Translated using Weblate (Spanish)
Currently translated at 100.0% (1567 of 1567 strings)
2024-05-02 20:15:16 +02:00
Veiko Aasa
552fabed15
minidlna: Add media directory selection form
The form provides an option to select default directory, user specified
directory or samba shares if enabled.

The form also checks that the directory exists and is readable by the
minidlna user.

Tested that changing media directory to a samba share location works.

Closes #2084.

Signed-off-by: Veiko Aasa <veiko17@disroot.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-02 10:59:21 -07:00
Veiko Aasa
430f9c6737
storage: Add an option to include help text to directory selection form
Signed-off-by: Veiko Aasa <veiko17@disroot.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2024-05-02 10:59:16 -07:00
James Valleroy
c66435bf74
Release v24.9 to unstable
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
v24.9
2024-04-22 21:03:15 -04:00
James Valleroy
92a022260b
doc: Fetch latest manual
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-22 20:32:24 -04:00
James Valleroy
f60a162a09
locale: Update translation strings
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-22 20:03:54 -04:00
Yurt Page
ff975e427f
Translated using Weblate (Russian)
Currently translated at 92.2% (1445 of 1567 strings)
2024-04-22 19:07:46 +02:00
Sunil Mohan Adapa
b5783aec9e
config: Handle dropin config files with limited permissions
- During enable/disable of the component, status of the dropin configuration
files was being checked from non-privileged process. If the dropin configuration
file or its parent is readable only by root, then the operation fails. Fix this
by performing the status check in privileged mode.

Tests:

- Unit tests pass.

- Dropin configuration file for redis server works.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:42:11 -04:00
Sunil Mohan Adapa
ff434b65f4
nextcloud: Allow backup/restore when app is disabled
- Also restart the container after restoring the database and its password. This
seems to be required (perhaps to flush caches) for a successful database
connection.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:42:08 -04:00
Sunil Mohan Adapa
b336c2f9ea
nextcloud: Minor update to description regarding users' usage
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:42:06 -04:00
Sunil Mohan Adapa
819b3480a9
nextcloud: Add warning that the app is experimental
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:42:04 -04:00
Sunil Mohan Adapa
ca5b088730
nextcloud: Expand on the warning about container usage
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:42:02 -04:00
Sunil Mohan Adapa
c371f77e3b
nextcloud: Remove fail2ban jail, brute force protection present
Nextcloud has a built-in brute force protection[1]. Combined with good password
policies, fail2ban is not required. Built-in protection is better than fail2ban
because, fail2ban makes the service unavailable which causes some confusion to a
genuine user.

Links:

1) https://docs.nextcloud.com/server/19/admin_manual/configuration_server/bruteforce_configuration.html

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:41:59 -04:00
Sunil Mohan Adapa
7ab7d949af
nextcloud: When backup fails, unset the maintenance mode
- Put dump operation in a try/finally block.

- Create context manager to simplify.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:41:57 -04:00
Sunil Mohan Adapa
0f663f8381
nextcloud: Minor changes to cron timer units
- Add documentation URL for Nextcloud cron.php.

- Use '-f' flag to php to match what documentation recommends.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:41:55 -04:00
Sunil Mohan Adapa
d7b05385c6
nextcloud: Use secrets module generate passwords
- It choose highest security random number automatically.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:41:52 -04:00
Sunil Mohan Adapa
547db1608b
nextcloud: Use a separate DB for redis
- While nextcloud has a good prefix for all the keys it stores, flushing the
database (for nextcloud or other apps) is easier if it stores it's keys in a
separate database. Assign DB index at 8 (database number 9). Index 7 is taken by
rspamd on FreedomBox.

- Flush only Nextcloud's DB after restore instead of the entire server.

- Ignore errors during flush if redis server is not running.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-04-19 06:41:50 -04:00