freedombox Debian release 20.21

-----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl/qmU0WHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICDu6D/oCABorNsl9pKDa4FaY4NXRAga7
 33bYrVraW8f7EB5EBRakV8P0L8rQDSGEPK5bZf3WrjkebyLHe5IEFW7w2m6eclTb
 P37N+VrLEWCsvKVauCAPQcRV/Rlk+giNBSwsh7yyn70e/Gp4DntkRI4nJQuxO/E3
 /HhdrkluzEofoXzir/p1rLHL37C/mWHXJqpCBLrVILX9QH0jw6h3w/uEL8bX7i8l
 k1fUGsLxgwuoTOwjovZo+bKZmz1BFa0Qh4aoDzAwImaZZBraYX2v1NLdVhwoc0eU
 RL259NnjJD/oQvfRWPMq9npk1iSrm/RPRm2shkQZHVPoGlN9FDhlZg0CPGNP5nQL
 YVaB1kZIaLe/kBcv3ljUtDOpWJl/Jy6pq0Ma6BzhN/LQ2aRZL+eF1wRUGxjXqEJB
 2Et3IB9xLVA8jk0YoNVpQP2y0/+HXZBoNAMYfcMogmQfL4W1OYOdtJKaUDpzFV7W
 nIQINH6UBng0ucCXhJNfrozSzWRWOPcyx+4nMBNGYE6dXLp4i9NlNyAf6Y82k4a/
 sy2HUwfgkCDlnkfECIOnneQ2a/9A7/cKwhwryJlJz9Ib2sC/o1QBPyL6BGLGvoJS
 jvP14QR6WnqbkXM8sdsHi6LGwYadqn0e8jbCtIajQUICZmjWMM6rbGm+2TtqEtvy
 5f2rv/nc9BqGzWLBoA==
 =Jv5A
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl/t5LEWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICPJaD/9jcXR3rBkyxJe9F+XCfG593Tkf
 ovSqnVKDPP1CGC0byN4QxdhYr99j9nJx5eY8MeCxKt4vhrS0Gjp+GRmtIyFCXSEE
 kxtY1sp86F3tI54zaWpDdnEc8edwpumU7BnOPiclgacl370CZ08mK5qmy+rYad4/
 dWro+5kXYcoy+2vWt1bNHRjQGfMyv/arbjgzclGI06segP6QVbHivhoMVbfDGmfz
 cX1YxT7yrW0Jz0JLEjSVoUzzeNVvmUilK8BKmQE7zDHg8hSm76SiTtUZkYmFlEh8
 2PqRsOpW/xA2al+OCjsrld0Rk3a4YFRPE3ex0bqbRP9TEgDOwPHR1rblNrKol+fJ
 7e7Z2cRjH9HVchedh4z+xeQYBLRPLdlCe6S+By8AD4xZYTFgUmllrj9EvXttptUV
 KwbGYogCoYVgH8AM2+fNwcgQCHNIMQizVyNOPcPYBzV5q6cOEgTq6Z23feaSxqVA
 9p0OQh0iR2TbnOHFXD6t2D2wtHILEptxIoG2n/Ec734XWt+BSf3rnFPRimA+Enn2
 WXIS0uOqX6HyTriNueFEdUCf+99+HmB+AqLmDy23RdMCWDh2vyOEAWwrCcUBIBJd
 b0C803B1DDcjEIo3/tmogZPS+L7j4eBES9nWKvfvdE/vI2Gw5hp9sujhOQOtNN3/
 RFvSXMvgElvcu40m8A==
 =WL06
 -----END PGP SIGNATURE-----

Merge tag 'v20.21' into debian/buster-backports

freedombox Debian release 20.21

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
James Valleroy 2020-12-31 09:48:13 -05:00
commit 0bb36844fc
57 changed files with 17112 additions and 16958 deletions

View File

@ -7,6 +7,7 @@ Configuration helper for Apache web server.
import argparse
import glob
import os
import re
import subprocess
@ -97,6 +98,11 @@ def subcommand_setup(arguments):
subprocess.run([
'make-ssl-cert', 'generate-default-snakeoil', '--force-overwrite'
], check=True)
# In case the certificate has been removed after ssl-cert is installed
# on a fresh Debian machine.
elif not os.path.exists('/etc/ssl/certs/ssl-cert-snakeoil.pem'):
subprocess.run(['make-ssl-cert', 'generate-default-snakeoil'],
check=True)
with action_utils.WebserverChange() as webserver:
# Disable mod_php as we have switched to mod_fcgi + php-fpm. Disable

View File

@ -11,7 +11,8 @@ import re
import subprocess
import sys
from plinth.action_utils import apt_hold, run_apt_command, service_restart
from plinth.action_utils import (apt_hold, debconf_set_selections,
run_apt_command, service_restart)
from plinth.modules.apache.components import check_url
from plinth.modules.upgrades import (BACKPORTS_SOURCES_LIST, SOURCES_LIST,
get_current_release, is_backports_current)
@ -383,43 +384,54 @@ def _check_and_dist_upgrade(develop=False, test_upgrade=False):
def _perform_dist_upgrade():
"""Perform upgrade to next release of Debian."""
# Hold freedombox package during entire dist upgrade.
print('Holding freedombox package...')
print('Holding freedombox package...', flush=True)
with apt_hold():
print('Updating Apt cache...')
print('Updating Apt cache...', flush=True)
run_apt_command(['update'])
print('Upgrading base-files and unattended-upgrades...')
print('Upgrading base-files and unattended-upgrades...', flush=True)
run_apt_command(['install', 'base-files'])
run_apt_command(['install', 'unattended-upgrades'])
print('Running unattended-upgrade...')
# Tell grub-pc to continue without installing grub again.
print('Set grub-pc to not require re-installing grub...', flush=True)
debconf_set_selections(
['grub-pc grub-pc/install_devices_empty boolean true'])
print('Running unattended-upgrade...', flush=True)
subprocess.run(['unattended-upgrade', '--verbose'])
# Remove obsolete packages that may prevent other packages from
# upgrading.
print('Removing libgcc1...')
print('Removing libgcc1...', flush=True)
run_apt_command(['remove', 'libgcc1'])
# Hold packages known to have conffile prompts. FreedomBox service
# will handle their upgrade later.
packages_with_prompts = ['firewalld', 'mumble-server', 'radicale']
print('Holding packages with conffile prompts: ' +
', '.join(packages_with_prompts) + '...')
print(
'Holding packages with conffile prompts: ' +
', '.join(packages_with_prompts) + '...', flush=True)
with apt_hold(packages_with_prompts):
print('Running apt full-upgrade...')
print('Running apt full-upgrade...', flush=True)
run_apt_command(['full-upgrade'])
print('Running apt autoremove...')
# If searx is installed, update search engines list.
if pathlib.Path('/etc/searx/settings.yml').exists():
print('Updating searx search engines list...', flush=True)
subprocess.run(['./searx', 'setup'], check=True)
print('Running apt autoremove...', flush=True)
run_apt_command(['autoremove'])
print('Dist upgrade complete. Removing flag.')
print('Dist upgrade complete. Removing flag.', flush=True)
if dist_upgrade_flag.exists():
dist_upgrade_flag.unlink()
# FreedomBox Service may have tried to restart several times
# during the upgrade, but failed. It will stop trying after 5
# retries. Restart it once more to ensure it is running.
print('Restarting FreedomBox service...')
print('Restarting FreedomBox service...', flush=True)
service_restart('plinth')

View File

@ -365,13 +365,11 @@ def set_samba_user(username, password):
If a user already exists, update password.
"""
proc = subprocess.Popen(['smbpasswd', '-a', '-s', username],
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
_, stderr = proc.communicate(input='{0}\n{0}\n'.format(password).encode(),
timeout=10)
proc = subprocess.run(['smbpasswd', '-a', '-s', username],
input='{0}\n{0}\n'.format(password).encode(),
stderr=subprocess.PIPE)
if proc.returncode != 0:
raise RuntimeError('Unable to add Samba user: ', stderr)
raise RuntimeError('Unable to add Samba user: ', proc.stderr)
def subcommand_set_user_password(arguments):

46
debian/changelog vendored
View File

@ -1,3 +1,49 @@
freedombox (20.21) unstable; urgency=medium
[ Johannes Keyser ]
* Translated using Weblate (German)
[ Fioddor Superconcentrado ]
* Translated using Weblate (Spanish)
* Translated using Weblate (Spanish)
[ Joseph Nuthalapati ]
* deluge: Sync apache2 config with Transmission
* deluge: Functional tests for bit-torrent group
[ Michael Breidenbach ]
* Translated using Weblate (Swedish)
[ Veiko Aasa ]
* apache: Create snake oil certificate if not exists
* users: Remove timeout when creating Samba user
* security: Fix access denied for user daemon from cron
[ n0nie4HP ]
* Translated using Weblate (Polish)
* Translated using Weblate (Polish)
[ spectral ]
* calibre: Fix manual page name
[ James Valleroy ]
* upgrades: Allow grub-pc upgrade without reinstalling grub
* upgrades: Update searx search engines during dist upgrade
* locale: Update translation strings
* doc: Fetch latest manual
* debian: Bump standards version to 4.5.1
[ Nikita Epifanov ]
* Translated using Weblate (Russian)
[ ikmaak ]
* Translated using Weblate (Polish)
[ Doma Gergő ]
* Translated using Weblate (Hungarian)
-- James Valleroy <jvalleroy@mailbox.org> Mon, 28 Dec 2020 21:08:41 -0500
freedombox (20.20.1~bpo10+1) buster-backports; urgency=medium
* Rebuild for buster-backports.

2
debian/control vendored
View File

@ -48,7 +48,7 @@ Build-Depends:
sshpass,
xmlto,
xsltproc
Standards-Version: 4.5.0
Standards-Version: 4.5.1
Homepage: https://salsa.debian.org/freedombox-team/freedombox
Vcs-Git: https://salsa.debian.org/freedombox-team/freedombox.git
Vcs-Browser: https://salsa.debian.org/freedombox-team/freedombox

View File

@ -1,7 +1,7 @@
#language en
##TAG:TRANSLATION-HEADER-START
~-[[FreedomBox/Manual/GettingHelp|English]] - [[es/FreedomBox/Manual/GettingHelp|Español]] - [[fr/FreedomBox/Manuel/ObtenirAide|Français]] - [[DebianWiki/EditorGuide#translation|(+)]]-~
~-[[FreedomBox/Manual/GettingHelp|English]] - [[es/FreedomBox/Manual/GettingHelp|Español]] - [[fr/FreedomBox/Manual/GettingHelp|Français]] - [[DebianWiki/EditorGuide#translation|(+)]]-~
##TAG:TRANSLATION-HEADER-END
## BEGIN_INCLUDE

View File

@ -1,6 +1,9 @@
#language en
#pragma section-numbers 2
~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Handbuch/Schnelleinstieg|Deutsch]] - English - [[es/FreedomBox/Manual/QuickStart|Español]] -~
##TAG:TRANSLATION-HEADER-START
~-[[de/FreedomBox/Manual/QuickStart|Deutsch]] - [[FreedomBox/Manual/QuickStart|English]] - [[es/FreedomBox/Manual/QuickStart|Español]] - [[fr/FreedomBox/Manual/QuickStart|Français]] - [[ru/FreedomBox/Manual/QuickStart|Русский]] - [[DebianWiki/EditorGuide#translation|(+)]]-~
##TAG:TRANSLATION-HEADER-END
## BEGIN_INCLUDE
= Quick Start =

View File

@ -10,6 +10,23 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 20.21 (2020-12-28) ==
=== Highlights ===
* apache: Create snake oil certificate if not exists
* Fixes an issue when installing !FreedomBox on Hetzner Cloud's Debian image
* calibre: Fix link to manual page
=== Other Changes ===
* deluge: Require user to be in bit-torrent group to access
* locale: Update translations for German, Hungarian, Polish, Russian, Spanish, Swedish
* security: Fix access denied for user daemon from cron
* upgrades: Allow grub-pc upgrade without reinstalling grub
* upgrades: Update searx search engines during dist upgrade
* users: Remove timeout when creating Samba user
== FreedomBox 20.20.1 (2020-12-19) ==
=== Highlights ===

View File

@ -1,6 +1,8 @@
#language en
~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/bepasty|Español]] -~
##TAG:TRANSLATION-HEADER-START
~- [[de/FreedomBox/Manual/bepasty|Deutsch]] - [[FreedomBox/Manual/bepasty|English]] - [[es/FreedomBox/Manual/bepasty|Español]] - [[DebianWiki/EditorGuide#translation|(+)]] -~
##TAG:TRANSLATION-HEADER-END
<<TableOfContents()>>

View File

@ -1,6 +1,8 @@
#language en
~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual|Español]] -~
##TAG:TRANSLATION-HEADER-START
~-[[de/FreedomBox/Manual|Deutsch]] - [[FreedomBox/Manual|English]] - [[es/FreedomBox/Manual|Español]] - [[fr/FreedomBox/Manual|Français]] - [[DebianWiki/EditorGuide#translation|(+)]]-~
##TAG:TRANSLATION-HEADER-END
## BEGIN_INCLUDE

View File

@ -15,7 +15,7 @@ El 22 de Abril de 2019, la ''!FreedomBox Foundation'' anunció que los kits ''Pi
El kit incluye todo el hardware necesario para arrancar un servidor casero !FreedomBox sobre una placa ''Olimex A20-OLinuXino-LIME2''. Este producto proporciona la combinación perfecta de hardware de fuentes abiertas y software libre. Al comprar este producto, soportas también los esfuerzos de la ''!FreedomBox Foundation'' para crear y promover su software de servidor libre.
||<style="text-align: center;"> [[es/FreedomBox/Hardware/PioneerEdition|{{attachment:FreedomBox/Hardware/pioneer-edition_thumb.jpg|Kits de Servidor Casero FreedomBox Pioneer Edition|width=320,height=257}}]]<<BR>> [[es/FreedomBox/Hardware/PioneerEdition|Kits de Servidor Casero FreedomBox Pioneer Edition]] ||
||<style="text-align: center;"> [[es/FreedomBox/Hardware/PioneerEdition|{{attachment:FreedomBox/Hardware/pioneer-edition_thumb.jpg|Kits de servidor doméstico FreedomBox edición Pioneer|width=320,height=257}}]]<<BR>> [[es/FreedomBox/Hardware/PioneerEdition|Kits de servidor doméstico FreedomBox edición Pioneer]] ||
== Hardware Soportado ==

View File

@ -0,0 +1,135 @@
#language en
##TAG:TRANSLATION-HEADER-START
~-[[de/FreedomBox/Manual|Deutsch]] - [[FreedomBox/Manual|English]] - [[es/FreedomBox/Manual|Español]] - [[fr/FreedomBox/Manual|Français]] - [[DebianWiki/EditorGuide#translation|(+)]]-~
##TAG:TRANSLATION-HEADER-END
## BEGIN_INCLUDE
<<TableOfContents(2)>>
<<Include(FreedomBox/Introduction, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/QuickStart, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/GettingHelp, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Download, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
= Apps =
/* Add entries here sorted after the level 2 heading inside the page to keep the list alphabetically sorted */
<<Include(FreedomBox/Manual/bepasty, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Calibre, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Coturn, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Deluge, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/ejabberd, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/GitWeb, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/I2P, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Ikiwiki, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Infinoted, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/JSXC, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/MatrixSynapse, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/MediaWiki, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Minetest, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/MiniDLNA, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/MLDonkey, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Mumble, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/OpenVPN, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Privoxy, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Quassel, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Radicale, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Roundcube, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Samba, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Searx, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Shadowsocks, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Sharing, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Syncthing, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/TinyTinyRSS, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Tor, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Transmission, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Apache_userdir, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/WireGuard, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
= System =
<<Include(FreedomBox/Manual/Backups, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Bind, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Cockpit, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Configure, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/DateTime, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Diagnostics, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/DynamicDNS, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Firewall, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/LetsEncrypt, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Monkeysphere, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/NameServices, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Networks, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/PageKite, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Performance, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Power, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/SecureShell, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Security, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/ServiceDiscovery, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Storage, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Snapshots, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Upgrades, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Manual/Users, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
= Hardware =
<<Include(FreedomBox/Hardware, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/PioneerEdition, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/A20-OLinuXino-Lime2, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/A20-OLinuXino-MICRO, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/APU, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/Cubietruck, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/Cubieboard2, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/BeagleBone, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/pcDuino3, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/Debian, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/VirtualBox, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/PineA64+, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/BananaPro, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/OrangePiZero, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/RockPro64, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/Rock64, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/RaspberryPi2, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/RaspberryPi3B, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/RaspberryPi3B+, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/RaspberryPi4B, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Hardware/USBWiFi, , to="## END_INCLUDE")>>
<<Include(FreedomBox/ReleaseNotes, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
= Contributing =
<<Include(FreedomBox/Contribute, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
= Developer Guide =
<<Include(FreedomBox/Manual/Developer, , from="## BEGIN_INCLUDE", to="## END_INCLUDE")>>
= Hacking =
!FreedomBox consists of two main projects:
* !FreedomBox Service (Plinth), the web interface
* Freedom Maker, a script to build disk images for various hardware
<<Include(FreedomBox/Plinth, , to="## END_INCLUDE")>>
<<Include(FreedomBox/Maker, , to="## END_INCLUDE")>>
= Tell people around you =
* [[https://freedombox.org/|FreedomBox]]
* [[../Press|FreedomBox in the Press]]
* [[../Conferences|Conferences]]
* [[../TalksAndPresentations|Talks and presentations]]
* [[../TalksAndPresentations/AvailableMaterial|Available Material]] Slides and other raw material
* [[http://www.facebook.com/freedomboxfoundation|Facebook]]
* [[http://twitter.com/#!/FreedomBoxFndn|Twitter]]
* [[https://mastodon.social/@freedomboxfndn|Mastodon]]
* [[http://meetings-archive.debian.net/pub/debian-meetings/2011/debconf11/low/|Debconf11 Videos]]
## END_INCLUDE
<<Include(FreedomBox/Portal)>>
----
CategoryFreedomBox

View File

@ -1,6 +1,6 @@
#language es
#pragma section-numbers 2
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Handbuch/Schnelleinstieg|Deutsch]] - [[FreedomBox/Manual/QuickStart|English]] - Español -~
<<Include(FreedomBox/Manual/QuickStart, ,from="^##TAG:TRANSLATION-HEADER-START",to="^##TAG:TRANSLATION-HEADER-END")>>
## BEGIN_INCLUDE
= Guía de Inicio Rápido =
@ -64,7 +64,7 @@ Alternativamente podrías optar por montarlo tu mismo reuniendo todas las piezas
* Nota: El usuario que creas aquí tendrá privilegios de ``Admin`` y también podrá [[es/FreedomBox/Manual/SecureShell|entrar por SSH]]. Por mayor seguridad deberías emplear para tareas administrativas una cuenta diferente de la de uso habitual. Luego puedes añadir más usuarios, entre ellos el tuyo de uso habitual.
. {{attachment:ui_firstboot_account-es.png|Cuenta|width=500}}
1. Tras completar el formulario estarás en el interfaz web de !FreedomBox y podrás acceder a las apps y a la configuración mediante el interfaz web.
. {{attachment:ui_firstboot_complete-es.png|Completado|width=500}}mayor
. {{attachment:ui_firstboot_complete-es.png|Completado|width=500}}
Ahora puedes probar [[es/FreedomBox/Features|cualquier App]] disponible en !FreedomBox.
== Orientándote ==

View File

@ -10,6 +10,23 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 20.21 (2020-12-28) ==
=== Highlights ===
* apache: Create snake oil certificate if not exists
* Fixes an issue when installing !FreedomBox on Hetzner Cloud's Debian image
* calibre: Fix link to manual page
=== Other Changes ===
* deluge: Require user to be in bit-torrent group to access
* locale: Update translations for German, Hungarian, Polish, Russian, Spanish, Swedish
* security: Fix access denied for user daemon from cron
* upgrades: Allow grub-pc upgrade without reinstalling grub
* upgrades: Update searx search engines during dist upgrade
* users: Remove timeout when creating Samba user
== FreedomBox 20.20.1 (2020-12-19) ==
=== Highlights ===

View File

@ -1,6 +1,6 @@
#language es
~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/bepasty|English]] - Español -~
<<Include(FreedomBox/Manual/bepasty, ,from="^##TAG:TRANSLATION-HEADER-START",to="^##TAG:TRANSLATION-HEADER-END")>>
<<TableOfContents()>>

View File

@ -1,6 +1,6 @@
#language es
~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual|English]] - Español -~
<<Include(FreedomBox/Manual, ,from="^##TAG:TRANSLATION-HEADER-START",to="^##TAG:TRANSLATION-HEADER-END")>>
## BEGIN_INCLUDE

View File

@ -3,4 +3,4 @@
Package init file.
"""
__version__ = '20.20.1'
__version__ = '20.21'

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -59,7 +59,7 @@ class CalibreApp(app_module.App):
info = app_module.Info(app_id=self.app_id, version=version,
name=_('calibre'), icon_filename='calibre',
short_description=_('E-book Library'),
description=_description, manual_page='calibre',
description=_description, manual_page='Calibre',
clients=clients,
donation_url='https://calibre-ebook.com/donate')
self.add(info)

View File

@ -1,6 +1,18 @@
##
## On all sites, provide Deluge on a default path: /deluge
##
## Requires the following Apache modules to be enabled:
## mod_headers
## mod_proxy
## mod_proxy_http
##
<Location /deluge>
ProxyPass http://localhost:8112
ProxyPass http://localhost:8112
Include includes/freedombox-single-sign-on.conf
<IfModule mod_auth_pubtkt.c>
TKTAuthToken "admin" "bit-torrent"
</IfModule>
## Send the scheme from user's request to enable Deluge to redirect URLs,
## set cookies, set absolute URLs (if any) properly.
RequestHeader set X-Forwarded-Proto 'https' env=HTTPS
</Location>

View File

@ -13,6 +13,18 @@ Scenario: Enable deluge application
When I enable the deluge application
Then the deluge site should be available
Scenario: User of 'bit-torrent' group
Given the deluge application is enabled
When I create a user named delugeuser with password deluge&456 in group bit-torrent
And I'm logged in as the user delugeuser with password deluge&456
Then the deluge site should be available
Scenario: User not of 'bit-torrent' group
Given the deluge application is enabled
When I create a user named nogroupuser with password somep@ssw6
And I'm logged in as the user nogroupuser with password somep@ssw6
Then the deluge site should not be available
Scenario: Upload a torrent to deluge
Given the deluge application is enabled
When all torrents are removed from deluge

View File

@ -0,0 +1,2 @@
# allow debsecan cron job
+:daemon:cron

View File

@ -170,7 +170,7 @@ def create_user(session_browser, name, password):
@when(
parsers.parse('I create a user named {name:w} with password {password:S} '
'in group {group:w}'))
'in group {group:S}'))
def create_user_in_group(session_browser, name, password, group):
if not functional.user_exists(session_browser, name):
functional.create_user(session_browser, name, password, groups=[group])