Release v20.8 to unstable

-----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl6wwusWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICN8lD/9J3StIZ5Jnt77+ZehQv70vXwOo
 6fwUqvWjxGgtzL2AAID/u1Yr6EvafduWqMYDriQscyybgMJeiAVGDzMaGqYbHJZw
 TH4jHTpLW0QKDIuyq5EF4ER74wWzTiVvUHV1sv7DyrMBQrJsxcccsPifmXRWtzCS
 XqLcuQUlPm2ws2Jts7kr5uc59hBO61TcwYfje/r2gRj4rfsb1ArJb+b209/8P40I
 lAA7j0T7uULOrdZR0jvKo/lPpcxwvxejiMHqUwHp2RBmQGceoqXTV/FXIysaBm39
 5FaAm6lKZuWKPj2d0GWFu3xsTQ9c44uOJ8Kx1FU2LCsN8k78n5zmOEURZ4Rxm7pg
 /Cb+098obT90/fW1MpUsx07gxPTcWmQwU/2urHsAl1A8S6cSMjueAh2Eb7pmlFe5
 +U7u4TdZsqJHsY3MSK5e7RMNiUnchZN5Fe5APGBy0UXh0oCbnYz81kJ7plz6C56s
 iJp+h/zWKqLfhvbMFLurPrAsZTRoH7OYnBl8A4YYuZW22DYxnYFFbcN7vQ0tayqB
 onAWw8aNNWl3v9LVkU/bZWR5GZg1CDTaloC5c+encaOEXMpRuh2Ml57BFF123OqI
 o1A2wuqFo34szEzJO0jm2OTc3+H6dR5m1+e0uNZsRVSHNOWcEcCsAkfTH80ImO3F
 LPfa1yll1w3sUI78rw==
 =wG7C
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl60Ds4WHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICBVPD/9vgxtoC0JZ7/JWOm9u4PtyyISz
 r0yjTRai7deOxUgCMbKMLUoPL4XiKpsf4+OnAkKQX8WZUtdo4IDRT7I9S3hgzpip
 32vEyTP7YgT5AGXx+IQkE/GxmY/9IfHRKxTbfW/0kSyUM1cVszD8V2qI2ixbso3Z
 GdT51d5wi/gjeGF0Crz7li8n4cJEcSSKos5fY1jpOsGyAQukPlTo4pn0hr34qkIx
 BBHsNjVcvvkImOPPb7GxNqcRuxH0IOmqWvhnS3P31iWmNdY0XK7ZZnbdEJN7GwwN
 AZD7rIiv+t0dHtYFaTVMnV4Zs0RsfEVEUXK5mKXfBL/VpMsV4pgdsDVvgl8cnCrF
 y+ED//Q2QkNSnKmqU/WEYr8pOq9pdGpz2mceyAGpRnwDUBWePRwmH/FP2XNzhNt3
 rdNUe0Go8/DFaaIHR3NQ2G6GNFTGu10sw5b9ZojjQ7qcR30W8K06uTy02/BuajDS
 Q0l6OIAqZQeNIiD+iEY9YrHiBJdjHBB9yBOTmGtE5Wse6ctTP34UBCqdvm2m38X6
 2cMfwZmCazNR+ooOdgHy8i2uZPdPlhWI7rGuijJvnmYw/mMn/cIMulKsfGq6sYhN
 oBin9/Vya3G1xryInIC14eIIu95Yqgw9wIUoSyhjoEwwfavDAt9r35OTDkqSIkr7
 hXqtWWvTk6w0siLIMA==
 =WPG/
 -----END PGP SIGNATURE-----

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

Release v20.8 to unstable

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
James Valleroy 2020-05-07 09:36:10 -04:00
commit db3f921957
198 changed files with 3769 additions and 1459 deletions

View File

@ -3,7 +3,7 @@
# This is an IaC pattern called "reheating a server template".
# This is very fast but can accumulate cruft over time.
# Use debian:testing if you want to build a fresh image.
FROM registry.salsa.debian.org/freedombox-team/plinth:gitlabci
FROM registry.salsa.debian.org/freedombox-team/freedombox:gitlabci
USER root
COPY . /plinth

View File

@ -0,0 +1,9 @@
#! /bin/bash
# SPDX-License-Identifier: AGPL-3.0-or-later
# Provide your Salsa credentials here
docker login registry.salsa.debian.org
# This might need 20 minutes to run
docker build -t registry.salsa.debian.org/freedombox-team/freedombox:gitlabci -f .ci/Dockerfile.gitlabci .
docker push registry.salsa.debian.org/freedombox-team/freedombox:gitlabci

View File

@ -1,5 +1,5 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
image: registry.salsa.debian.org/freedombox-team/plinth:gitlabci
image: registry.salsa.debian.org/freedombox-team/freedombox:gitlabci
before_script:
- export DEBIAN_FRONTEND=noninteractive

View File

@ -15,20 +15,53 @@ can install latest versions of Git, Vagrant and VirtualBox.
$ sudo apt install git virtualbox vagrant
```
#### Installing VirtualBox manually
1. Add Oracle's key to apt's list of accepted keys.
```bash
$ sudo wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
```
2. Create a file under /etc/apt/sources.list.d/ for virtualbox package.
```bash
$ sudo touch /etc/apt/sources.list.d/virtualbox.list
```
3. Add the relevant source for your Debian/derivative distribution into the above file.
Example for Buster:
```
deb https://download.virtualbox.org/virtualbox/debian buster contrib
```
4. Search and install the latest virtualbox package.
```bash
$ apt search virtualbox
# virtualbox-6.1
# virtualbox-6.0
$ sudo apt install virtualbox-6.1
```
### For Other GNU/Linux Distributions or *BSDs
1. Install Git, Vagrant and VirtualBox using your favourite package manager.
### For macOS
1. Install [Brew](https://brew.sh/).
1. Install [Homebrew](https://brew.sh/).
2. Install Git, Vagrant and VirtualBox using Brew.
2. Install Git, VirtualBox and Vagrant using Homebrew.
```bash
$ brew install git
$ brew cask install vagrant
$ brew cask install virtualbox
$ brew cask install vagrant
```
### For Windows
@ -58,7 +91,7 @@ and requires about 4.5 GB of disk space.
1. Checkout FreedomBox Service (Plinth) source code using Git.
```bash
host$ git clone https://salsa.debian.org/freedombox-team/plinth.git
host$ git clone https://salsa.debian.org/freedombox-team/freedombox.git
host$ cd plinth
```
@ -257,12 +290,12 @@ vm$ make -C doc
## Repository
FreedomBox Service (Plinth) is available from
[salsa.debian.org](https://salsa.debian.org/freedombox-team/plinth).
[salsa.debian.org](https://salsa.debian.org/freedombox-team/freedombox).
## Bugs & TODO
You can report bugs on FreedomBox Service's (Plinth's) [issue
tracker](https://salsa.debian.org/freedombox-team/plinth/issues).
tracker](https://salsa.debian.org/freedombox-team/freedombox/issues).
See CONTRIBUTING.md for information how to best contribute code.

View File

@ -1,4 +1,4 @@
[![pipeline status](https://salsa.debian.org/freedombox-team/plinth/badges/master/pipeline.svg)](https://salsa.debian.org/freedombox-team/plinth/commits/master)
[![pipeline status](https://salsa.debian.org/freedombox-team/freedombox/badges/master/pipeline.svg)](https://salsa.debian.org/freedombox-team/freedombox/commits/master)
[![Translation status](https://hosted.weblate.org/widgets/freedombox/-/svg-badge.svg)](https://hosted.weblate.org/engage/freedombox/?utm_source=widget)
[![Debian Unstable](https://badges.debian.net/badges/debian/unstable/freedombox/version.svg)](https://packages.debian.org/unstable/freedombox)
[![Debian Testing](https://badges.debian.net/badges/debian/testing/freedombox/version.svg)](https://packages.debian.org/testing/freedombox)
@ -58,7 +58,7 @@ HACKING.md.
# Contributing
See the [HACKING.md](https://salsa.debian.org/freedombox-team/plinth/blob/master/HACKING.md) file for contributing to FreedomBox Service (Plinth).
See the [HACKING.md](https://salsa.debian.org/freedombox-team/freedombox/blob/master/HACKING.md) file for contributing to FreedomBox Service (Plinth).
# Localization

116
actions/coturn Executable file
View File

@ -0,0 +1,116 @@
#!/usr/bin/python3
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Configuration helper for Coturn daemon.
"""
import argparse
import json
import pathlib
import random
import shutil
import string
import augeas
from plinth import action_utils
CONFIG_FILE = pathlib.Path('/etc/coturn/freedombox.conf')
def parse_arguments():
"""Return parsed command line arguments as dictionary."""
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='subcommand', help='Sub command')
subparsers.add_parser('setup', help='Setup Coturn server')
subparsers.add_parser('get-config',
help='Return the current configuration')
subparser = subparsers.add_parser('set-domain', help='Set the TLS domain')
subparser.add_argument('domain_name', help='TLS domain name to set')
subparsers.required = True
return parser.parse_args()
def _key_path(key):
"""Return the augeas path for a key."""
return '/files' + str(CONFIG_FILE) + '/' + key
def subcommand_setup(_):
"""Setup Coturn server."""
CONFIG_FILE.parent.mkdir(exist_ok=True)
if not CONFIG_FILE.exists():
CONFIG_FILE.touch(0o640)
shutil.chown(CONFIG_FILE, group='turnserver')
action_utils.service_daemon_reload()
action_utils.service_try_restart('coturn')
aug = augeas_load()
# XXX: Should we set listen, relay IP address to :: or dynamically
# XXX: Should we set external-ip
aug.set(_key_path('min-port'), '49152')
aug.set(_key_path('max-port'), '50175')
aug.set(_key_path('use-auth-secret'), 'true')
if not aug.get(_key_path('static-auth-secret')):
secret = ''.join(
random.choice(string.ascii_letters + string.digits)
for _ in range(64))
aug.set(_key_path('static-auth-secret'), secret)
aug.set(_key_path('cert'), '/etc/coturn/certs/cert.pem')
aug.set(_key_path('pkey'), '/etc/coturn/certs/pkey.pem')
aug.set(_key_path('no-tlsv1'), 'true')
aug.set(_key_path('no-tlsv1_1'), 'true')
aug.set(_key_path('no-cli'), 'true')
aug.save()
def subcommand_get_config(_):
"""Return the current configuration in JSON format."""
aug = augeas_load()
config = {
'static_auth_secret': aug.get(_key_path('static-auth-secret')),
'realm': aug.get(_key_path('realm')),
}
print(json.dumps(config))
def subcommand_set_domain(arguments):
"""Set the TLS domain.
This value is usually not stored. So, set realm value even though it is not
needed to set realm for REST API based authentication.
"""
aug = augeas_load()
aug.set(_key_path('realm'), arguments.domain_name)
aug.save()
def augeas_load():
"""Initialize Augeas."""
aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD +
augeas.Augeas.NO_MODL_AUTOLOAD)
aug.set('/augeas/load/Simplevars/lens', 'Simplevars.lns')
aug.set('/augeas/load/Simplevars/incl[last() + 1]', str(CONFIG_FILE))
aug.load()
return aug
def main():
"""Parse arguments and perform all duties."""
arguments = parse_arguments()
subcommand = arguments.subcommand.replace('-', '_')
subcommand_method = globals()['subcommand_' + subcommand]
subcommand_method(arguments)
if __name__ == '__main__':
main()

View File

@ -52,6 +52,28 @@ def parse_arguments():
return parser.parse_args()
def _get_php_command():
"""Return the PHP command that should be used on CLI.
This is workaround for /usr/bin/php pointing to a different version than
what php-defaults (and php-mbstring, php-xml) point to. See:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=959742
"""
version = ''
try:
process = subprocess.run(['dpkg', '-s', 'php'], stdout=subprocess.PIPE,
check=True)
for line in process.stdout.decode().splitlines():
if line.startswith('Version:'):
version = line.split(':')[-1].split('+')[0].strip()
except subprocess.CalledProcessError:
pass
return f'php{version}'
def subcommand_setup(_):
"""Run the installer script to create database and configuration file."""
data_dir = '/var/lib/mediawiki-db/'
@ -65,10 +87,10 @@ def subcommand_setup(_):
with tempfile.NamedTemporaryFile() as password_file_handle:
password_file_handle.write(password.encode())
subprocess.check_call([
'php', install_script, '--confpath=/etc/mediawiki',
'--dbtype=sqlite', '--dbpath=' + data_dir,
'--scriptpath=/mediawiki', '--passfile',
password_file_handle.name, 'Wiki', 'admin'
_get_php_command(), install_script,
'--confpath=/etc/mediawiki', '--dbtype=sqlite',
'--dbpath=' + data_dir, '--scriptpath=/mediawiki',
'--passfile', password_file_handle.name, 'Wiki', 'admin'
])
subprocess.run(['chmod', '-R', 'o-rwx', data_dir], check=True)
subprocess.run(['chown', '-R', 'www-data:www-data', data_dir], check=True)
@ -125,15 +147,15 @@ def subcommand_change_password(arguments):
'changePassword.php')
subprocess.check_call([
'php', change_password_script, '--user', arguments.username,
'--password', new_password
_get_php_command(), change_password_script, '--user',
arguments.username, '--password', new_password
])
def subcommand_update(_):
"""Run update.php maintenance script when version upgrades happen."""
update_script = os.path.join(MAINTENANCE_SCRIPTS_DIR, 'update.php')
subprocess.check_call(['php', update_script, '--quick'])
subprocess.check_call([_get_php_command(), update_script, '--quick'])
def subcommand_public_registrations(arguments):

View File

@ -47,7 +47,7 @@ def subcommand_setup(arguments):
aug.set('/files/etc/sysctl.conf/fs.inotify.max_user_watches', '100000')
aug.save()
subprocess.run(['sysctl', '--system'], check=True)
subprocess.run(['systemctl', 'restart', 'systemd-sysctl'], check=True)
def subcommand_get_media_dir(arguments):

View File

@ -0,0 +1,11 @@
FreedomBox
To start using FreedomBox and to create an account, access using a web browser
one of the following URLs.
http://\n.local/
http://\4/
http://[\6]/
Only administrators can login unless otherwise configured in Security section.
FreedomBox also provides a web console for system administration using Cockpit.

72
debian/changelog vendored
View File

@ -1,3 +1,75 @@
plinth (20.8) unstable; urgency=medium
[ Luis A. Arizmendi ]
* Translated using Weblate (Spanish)
* Translated using Weblate (Spanish)
[ Joseph Nuthalapati ]
* Translated using Weblate (Telugu)
* Translated using Weblate (Telugu)
* HACKING: More detailed instructions for VirtualBox
* HACKING: Correction to macOS package manager name
[ Nektarios Katakis ]
* syncthing: add to freedombox-share group
[ Veiko Aasa ]
* users: Try-restart service after service is added to the sharing group
* datetime: Handle timesyncd service runs conditionally
* minidlna: Add functional tests that enable and disable application
* minidlna: Make app installable inside unprivileged container
[ Sunil Mohan Adapa ]
* web_server: Suppress warnings that static directories don't exist
* debian: Remove timer to setup repositories properly
* static: Use SVG logo during first wizard welcome step
* static: Reduce the size of the background noise image
* mediawiki: Reuse existing images in functional tests
* setup.py: Don't install/ship .po files
* static: Don't ship visual design file and unused images
* storage: Fix tests by wrestling with auto-mounting of disks
* HACKING: Minor indentation fix
* *: Update links to repository and project page
* ci: Update link to container in Docker registry
* coturn: New app to manage Coturn TURN/STUN server
* datetime: Refactor handling systemd-timesyncd not running in VMs
* datetime: Don't expect synced time in diagnostics inside VMs
* mediawiki: Partial fix for installing on testing
* datetime: Disable diagnostics when no tests are available
[ James Valleroy ]
* d/copyright: Fix path to visual_design
* data: Print hostname and IP addresses before console login
* snapshot: Fix message when not available
* snapshot: Fix title
* locale: Update translation strings
* debian: Use debhelper compat level 13
* doc: Fetch latest manual
[ Artem ]
* Translated using Weblate (Russian)
[ nautilusx ]
* Translated using Weblate (German)
[ Fioddor Superconcentrado ]
* Directions to install VirtualBox when it's not part of the Debian-based
distro, like Buster.
[ Anonymous ]
* Translated using Weblate (Spanish)
[ Nathan ]
* Translated using Weblate (French)
[ Michael Breidenbach ]
* Translated using Weblate (Swedish)
[ fred1m ]
* mumble: Add Mumla to the list of clients
-- James Valleroy <jvalleroy@mailbox.org> Mon, 04 May 2020 20:33:35 -0400
plinth (20.7~bpo10+1) buster-backports; urgency=medium
* Rebuild for buster-backports.

8
debian/control vendored
View File

@ -11,7 +11,7 @@ Uploaders:
Federico Ceratto <federico@debian.org>,
James Valleroy <jvalleroy@mailbox.org>,
Build-Depends:
debhelper-compat (= 12),
debhelper-compat (= 13),
dblatex,
dh-python,
docbook-xsl,
@ -46,9 +46,9 @@ Build-Depends:
xmlto,
xsltproc
Standards-Version: 4.5.0
Homepage: https://salsa.debian.org/freedombox-team/plinth
Vcs-Git: https://salsa.debian.org/freedombox-team/plinth.git
Vcs-Browser: https://salsa.debian.org/freedombox-team/plinth
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
Rules-Requires-Root: no
Package: freedombox

22
debian/copyright vendored
View File

@ -1,5 +1,5 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://salsa.debian.org/freedombox-team/plinth
Source: https://salsa.debian.org/freedombox-team/freedombox
Files: *
static/themes/default/icons/coquelicot.svg
@ -16,12 +16,16 @@ Files: doc/*.xml
Copyright: 2011-2019 FreedomBox Authors
License: CC-BY-SA-4.0
Files: static/themes/default/FreedomBox-Logo.7z
static/themes/default/img/network-freedombox.svg
static/themes/default/img/FreedomBox-logo-*
static/themes/default/img/freedombox-logo-*
Files: doc/visual_design/apple-touch-icon*
doc/visual_design/FreedomBox-Identity-Manual.pdf
doc/visual_design/freedombox-logotype.png
doc/visual_design/freedombox-logo-*
doc/visual_design/FreedomBox-logo-*
doc/visual_design/FreedomBox-Logo.7z
static/themes/default/img/apple-touch-icon*
static/themes/default/FreedomBox-Identity-Manual.pdf
static/themes/default/img/favicon.ico
static/themes/default/img/freedombox-logo-*
static/themes/default/img/network-freedombox.svg
Copyright: 2012 FreedomBox Foundation
Comment: Original Author: Robert Martinez
License: GPL-3+
@ -37,6 +41,12 @@ Copyright: Cockpit Authors (https://github.com/cockpit-project/cockpit/blob/mast
Comment: https://github.com/cockpit-project/cockpit/blob/master/src/branding/default/logo.svg
License: LGPL-2.1+
Files: static/themes/default/icons/coturn.png
static/themes/default/icons/coturn.svg
Copyright: Kmg Design (https://thenounproject.com/kmgdesignid/)
Comment: Video Call by Kmg Design from the Noun Project https://thenounproject.com/term/video-call/3256092/
License: CC-BY-3.0-US
Files: static/themes/default/icons/deluge.png
Copyright: 2007 Andrew Wedderburn
Comment: https://upload.wikimedia.org/wikipedia/commons/thumb/8/85//Deluge-Logo.svg/2000px-Deluge-Logo.svg.png

27
debian/freedombox.preinst vendored Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
set -e
case "$1" in
upgrade)
# Handle removing freedombox-setup-repositories.timer from 20.5.
if dpkg --compare-versions "$2" le 20.7; then
if [ -x "/usr/bin/deb-systemd-invoke" ]; then
deb-systemd-invoke stop freedombox-setup-repositories.timer >/dev/null 2>/dev/null || true
fi
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper purge freedombox-setup-repositories.timer >/dev/null || true
deb-systemd-helper unmask freedombox-setup-repositories.timer >/dev/null || true
fi
if [ -d /run/systemd/system ]; then
systemctl daemon-reload
fi
fi
;;
esac
#DEBHELPER#
exit 0

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,18 @@
<articleinfo>
<title>FreedomBox/Manual</title>
<revhistory>
<revision>
<revnumber>83</revnumber>
<date>2020-05-04 07:46:54</date>
<authorinitials>FredLeMeur</authorinitials>
<revremark>manual page entry for Performance (cockpit-pcp)</revremark>
</revision>
<revision>
<revnumber>82</revnumber>
<date>2020-05-03 16:44:06</date>
<authorinitials>JamesValleroy</authorinitials>
<revremark>Fix from markers for Contribute and Developer included pages</revremark>
</revision>
<revision>
<revnumber>81</revnumber>
<date>2020-02-21 15:51:40</date>
@ -1070,7 +1082,7 @@ Primary key fingerprint: BCBE BD57 A11F 70B2 3782 BC57 36C3 6144 0C9B C971]]></
</listitem>
<listitem>
<para>You can build and install a package from its Debian's version control repository. For example, </para>
<screen><![CDATA[ git clone https://salsa.debian.org/freedombox-team/plinth
<screen><![CDATA[ git clone https://salsa.debian.org/freedombox-team/freedombox.git
cd plinth
apt build-dep .
dpkg-buildpackage -rfakeroot -uc
@ -1397,7 +1409,7 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime
</section>
<section>
<title>Block Sandbox (Minetest)</title>
<para>Minetest is a multiplayer infinite-world block sandbox. This module enables the Minetest server to be run on this FreedomBox, on the default port (30000). To connect to the server, a <ulink url="http://www.minetest.net/downloads/">Minetest client</ulink> is needed. </para>
<para>Minetest is a multiplayer infinite-world block sandbox. This module enables the Minetest server to be run on this FreedomBox, on the default port (30000). To connect to the server, a <ulink url="https://www.minetest.net/downloads/">Minetest client</ulink> is needed. </para>
<section>
<title>Port Forwarding</title>
<para>If your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Minetest: </para>
@ -1460,7 +1472,7 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime
</inlinemediaobject>
</para>
<para>If you want to share a calendar with only some users, the simplest approach is to create an additional user-name for these users and to share that user-name and password with them. </para>
<para>Radicale provides a basic web interface, which only supports creating new calendars and addressbooks. To add events or contacts, an external <ulink url="http://radicale.org/clients/">supported client application</ulink> is needed. </para>
<para>Radicale provides a basic web interface, which only supports creating new calendars and addressbooks. To add events or contacts, an external <ulink url="https://radicale.org/master.html#documentation/supported-clients">supported client application</ulink> is needed. </para>
<para>
<inlinemediaobject>
<imageobject>
@ -1499,7 +1511,7 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime
</itemizedlist>
</listitem>
</itemizedlist>
<para>Now open your client application to create new calendar and address books that will use your FreedomBox and Radicale server. The Radicale website provides <ulink url="http://radicale.org/clients/">an overview of supported clients</ulink>, but do <emphasis>not</emphasis> use the URLs described there; FreedomBox uses another setup, follow this manual. Below are the steps for two examples: </para>
<para>Now open your client application to create new calendar and address books that will use your FreedomBox and Radicale server. The Radicale website provides <ulink url="https://radicale.org/master.html#documentation/supported-clients">an overview of supported clients</ulink>, but do <emphasis>not</emphasis> use the URLs described there; FreedomBox uses another setup, follow this manual. Below are the steps for two examples: </para>
<itemizedlist>
<listitem>
<para>Example of setup with Evolution client: </para>
@ -2044,6 +2056,7 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
<section>
<title>Integration with other apps</title>
<para>Transmission app on FreedomBox provides a setting to allow downloads to be saved directly to a Samba share. </para>
<para>If you want to make available files synchronized with Syncthing through Samba you need to make sure you synchronize in a Samba share folder. Additionally in order to make Syncthing shares available in Samba Open share or Group share you will need to ensure you click "Permissions &gt; Ignore" button under the "Advanced" tab in folder you wish in the Syncthing web UI. This will ensure that the files will be writable through Samba. </para>
</section>
<section>
<title>Comparison with other apps</title>
@ -2136,7 +2149,7 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
</section>
<section>
<title>Clients</title>
<para>Clients to connect to Quassel from your <ulink url="http://quassel-irc.org/downloads">desktop</ulink> and <ulink url="http://quasseldroid.iskrembilen.com/">mobile</ulink> devices are available. </para>
<para>Clients to connect to Quassel from your <ulink url="http://quassel-irc.org/downloads">desktop</ulink> and <ulink url="https://quasseldroid.info/">mobile</ulink> devices are available. </para>
<section>
<title>Desktop</title>
<para>In a Debian system, you can e.g. use <ulink url="https://packages.debian.org/search?keywords=quassel-client">quassel-client</ulink>. The following steps describe how to connect Quassel Client with Quassel Core running on a FreedomBox. The first time you do this connection, Quassel Core will be initialized too. </para>
@ -2400,7 +2413,7 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
</section>
<section>
<title>Android</title>
<para>For Android devices you may use e.g. <emphasis>Quasseldroid</emphasis> from <ulink url="https://f-droid.org/repository/browse/?fdfilter=quassel&amp;fdid=com.iskrembilen.quasseldroid">F-Droid</ulink> </para>
<para>For Android devices you may use e.g. <emphasis>Quasseldroid</emphasis> from <ulink url="https://f-droid.org/en/packages/com.iskrembilen.quasseldroid/">F-Droid</ulink> </para>
<itemizedlist>
<listitem>
<para>enter core, username etc. as above </para>
@ -2926,7 +2939,7 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
<section>
<title>Web Proxy (Privoxy)</title>
<para>A web proxy acts as a filter for incoming and outgoing web traffic. Thus, you can instruct any computer in your network to pass internet traffic through the proxy to remove unwanted ads and tracking mechanisms. </para>
<para>Privoxy is a software for security, privacy, and accurate control over the web. It provides a much more powerful web proxy (and anonymity on the web) than what your browser can offer. Privoxy "is a proxy that is primarily focused on privacy enhancement, ad and junk elimination and freeing the user from restrictions placed on his activities" (source: <ulink url="http://www.privoxy.org/faq/index.html">Privoxy FAQ</ulink>). </para>
<para>Privoxy is a software for security, privacy, and accurate control over the web. It provides a much more powerful web proxy (and anonymity on the web) than what your browser can offer. Privoxy "is a proxy that is primarily focused on privacy enhancement, ad and junk elimination and freeing the user from restrictions placed on his activities" (source: <ulink url="https://www.privoxy.org/faq/index.html">Privoxy FAQ</ulink>). </para>
<section>
<title>Screencast</title>
<para>Watch the <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Manual/Privoxy?action=AttachFile&amp;do=get&amp;target=Privoxy_Installation.webm">screencast</ulink> on how to setup and use Privoxy in FreedomBox. </para>
@ -2991,7 +3004,7 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
<para>Now you find an <code>EDIT</code> button on the configuration screen in <code>http://config.privoxy.org/</code>. </para>
</listitem>
<listitem>
<para>The <ulink url="http://www.privoxy.org/user-manual/quickstart.html">Quickstart</ulink> is a good starting point to read on how to define own blocking and filtering rules. </para>
<para>The <ulink url="https://www.privoxy.org/user-manual/quickstart.html">Quickstart</ulink> is a good starting point to read on how to define own blocking and filtering rules. </para>
</listitem>
</orderedlist>
</section>
@ -4302,7 +4315,7 @@ https://exampletorhs.onion/_cockpit/]]></screen>
<section>
<title>Firewall</title>
<para>Firewall is a network security system that controls the incoming and outgoing network traffic. Keeping a firewall enabled and properly configured reduces risk of security threat from the Internet. </para>
<para>The operation of the firewall in Plinth web interface of FreedomBox is automatic. When you enable a service it is automatically permitted in the firewall and when you disable a service it is automatically disabled in the firewall. For services which are enabled by default on FreedomBox, firewall ports are also enabled by default during the first run process. </para>
<para>The operation of the firewall in FreedomBox web interface is automatic. When you enable a service it is automatically permitted in the firewall and when you disable a service it is automatically disabled in the firewall. For services which are enabled by default on FreedomBox, firewall ports are also enabled by default during the first run process. </para>
<para>
<inlinemediaobject>
<imageobject>
@ -4322,7 +4335,7 @@ https://exampletorhs.onion/_cockpit/]]></screen>
</section>
<section>
<title>Ports/Services</title>
<para>The following table attempts to document the ports, services and their default statuses in FreedomBox. If you find this page outdated, see the Plinth source for <ulink url="http://sources.debian.net/src/plinth/latest/data/usr/lib/freedombox/first-run.d/90_firewall">lib/freedombox/first-run.d/90_firewall</ulink> and Firewall status page in Plinth UI. </para>
<para>The following table attempts to document the ports, services and their default statuses in FreedomBox. If you find this page outdated, see the Firewall status page in FreedomBox interface. </para>
<informaltable>
<tgroup cols="6">
<colspec colname="col_0"/>
@ -4355,12 +4368,12 @@ https://exampletorhs.onion/_cockpit/]]></screen>
</entry>
<entry colsep="1" rowsep="1">
<para>
<emphasis role="strong">Status shown in Plinth</emphasis>
<emphasis role="strong">Status shown in FreedomBox</emphasis>
</para>
</entry>
<entry colsep="1" rowsep="1">
<para>
<emphasis role="strong">Managed by Plinth</emphasis>
<emphasis role="strong">Managed by FreedomBox</emphasis>
</para>
</entry>
</row>
@ -4646,7 +4659,7 @@ https://exampletorhs.onion/_cockpit/]]></screen>
</row>
<row rowsep="1">
<entry colsep="1" rowsep="1">
<para> Plinth </para>
<para> FreedomBox Web Interface (Plinth) </para>
</entry>
<entry colsep="1" rowsep="1">
<para> 443/tcp </para>
@ -6675,6 +6688,28 @@ nmcli con modify "<connection_name>" connection.zone internal]]></screen>
<para>To see the current status of the firewall and manually operate it, see the <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Manual/Firewall#">Firewall</ulink> section. </para>
</section>
</section>
<section>
<title>Performance (cockpit-pcp)</title>
<itemizedlist>
<listitem>
<para>Cockpit support for reading PCP metrics and loading PCP archives. </para>
</listitem>
<listitem>
<para>Performance Co-Pilot (PCP) is a framework and services to support system-level performance monitoring and performance management. </para>
</listitem>
</itemizedlist>
<para>When this system app is installed and enabled, cockpit's graphs show the past (up to one week). </para>
<para>
<inlinemediaobject>
<imageobject>
<imagedata fileref="https://wiki.debian.org/FreedomBox/Manual/Performance?action=AttachFile&amp;do=get&amp;target=one-week.png"/>
</imageobject>
<textobject>
<phrase>one-week.png</phrase>
</textobject>
</inlinemediaobject>
</para>
</section>
<section>
<title>Power</title>
<para>Power provides an easy way to restart or shut down FreedomBox. After you select "Restart" or "Shut Down", you will be asked to confirm. </para>
@ -8181,7 +8216,7 @@ Password: <enter user password here>
</listitem>
<listitem>
<para>You can build and install a package from its Debian's version control repository. For example, </para>
<screen><![CDATA[ git clone https://salsa.debian.org/freedombox-team/plinth
<screen><![CDATA[ git clone https://salsa.debian.org/freedombox-team/freedombox.git
cd plinth
apt build-dep .
dpkg-buildpackage -rfakeroot -uc
@ -8243,12 +8278,6 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime
</section>
<section>
<title>Availability</title>
<para>FreedomBox Danube Edition </para>
<itemizedlist>
<listitem>
<para>A limited number of units are planned to be shipped along with the release of FreedomBox. If you wish to get one, <ulink url="http://projectdanube.org">express your interest</ulink>. </para>
</listitem>
</itemizedlist>
<para>Cubietruck / Cubieboard3 </para>
<itemizedlist>
<listitem>
@ -8325,7 +8354,7 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime
</textobject>
</inlinemediaobject>
</para>
<para><ulink url="http://beagleboard.org/black">Beagle Bone Black</ulink> (Revision C.1) is an Open Source Hardware (OSHW) single board computer. This means that the designer is actively helping people using the platform for their own designs, and supports them in adding hardware functionality and production advice. This is a part of freedom that is often overlooked, but very much aligned with the FreedomBox goals. FreedomBox images are built and tested for this device. To use this device as a FreedomBox, a separate <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Hardware/USBWiFi#">USB WiFi device</ulink> that does not require non-free firmware is recommended. </para>
<para><ulink url="https://beagleboard.org/black">Beagle Bone Black</ulink> (Revision C.1) is an Open Source Hardware (OSHW) single board computer. This means that the designer is actively helping people using the platform for their own designs, and supports them in adding hardware functionality and production advice. This is a part of freedom that is often overlooked, but very much aligned with the FreedomBox goals. FreedomBox images are built and tested for this device. To use this device as a FreedomBox, a separate <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Hardware/USBWiFi#">USB WiFi device</ulink> that does not require non-free firmware is recommended. </para>
<para><emphasis role="strong">Recommendation:</emphasis> If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space. </para>
<section>
<title>Download</title>
@ -8350,7 +8379,7 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime
</listitem>
<listitem>
<para>
<ulink url="http://beagleboard.org/black">Full list of suppliers</ulink>
<ulink url="https://beagleboard.org/black">Full list of suppliers</ulink>
</para>
</listitem>
</itemizedlist>
@ -8859,7 +8888,7 @@ esac]]></screen>
</textobject>
</inlinemediaobject>
</para>
<para><ulink url="http://www.linksprite.com/linksprite-pcduino3s/">LinkSprite pcDuino3S</ulink> is a single board computer running on Allwinner A20 and sold with a good case. FreedomBox images are built and tested for this device for images built after June 2017. For using this board as FreedomBox, a <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Hardware/USBWiFi#">USB WiFi device</ulink> that does not require non-free firmware is recommended. </para>
<para><ulink url="https://www.linksprite.com/linksprite-pcduino3s/">LinkSprite pcDuino3S</ulink> is a single board computer running on Allwinner A20 and sold with a good case. FreedomBox images are built and tested for this device for images built after June 2017. For using this board as FreedomBox, a <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Hardware/USBWiFi#">USB WiFi device</ulink> that does not require non-free firmware is recommended. </para>
<para>Note: The FreedomBox logo is simply a sticker on top of device brought from store. </para>
<para><emphasis role="strong">Recommendation:</emphasis> If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space. </para>
<section>
@ -8867,14 +8896,7 @@ esac]]></screen>
<para>Although untested, the following similar hardware is also likely to work well with FreedomBox. </para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.linksprite.com/linksprite-pcduino3/pcDuino3"/>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.linksprite.com/linksprite-pcduino3/pcDuino3B"/>
</para>
<para><ulink url="https://www.linksprite.com/linksprite-pcduino3/"/> also covers pcDuino3B </para>
</listitem>
</itemizedlist>
</section>
@ -10162,6 +10184,68 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
<section>
<title>Release Notes</title>
<para>The following are the release notes for each FreedomBox version. </para>
<section>
<title>FreedomBox 20.8 (2020-05-04)</title>
<itemizedlist>
<listitem>
<para>syncthing: Add service to freedombox-share group </para>
</listitem>
<listitem>
<para>users: When adding service to sharing group, only restart if already running </para>
</listitem>
<listitem>
<para>datetime: Ignore time synchronization service in containers and virtual machines </para>
</listitem>
<listitem>
<para>minidlna: Make app installable inside unprivileged container </para>
</listitem>
<listitem>
<para>web_server: Suppress warnings that static directories don't exist </para>
</listitem>
<listitem>
<para>debian: Remove unused timer </para>
</listitem>
<listitem>
<para>static: Use SVG logo during first wizard welcome step </para>
</listitem>
<listitem>
<para>static: Reduce the size of the background noise image </para>
</listitem>
<listitem>
<para>setup.py: Don't install/ship .po files </para>
</listitem>
<listitem>
<para>static: Don't ship visual design file and unused images </para>
</listitem>
<listitem>
<para>all: Update links to repository and project page </para>
</listitem>
<listitem>
<para>coturn: Add app to manage Coturn TURN/STUN server </para>
</listitem>
<listitem>
<para>mediawiki: Partial fix for installing on testing </para>
</listitem>
<listitem>
<para>datetime: Disable diagnostics when no tests are available </para>
</listitem>
<listitem>
<para>data: Print hostname and IP addresses before console login </para>
</listitem>
<listitem>
<para>snapshot: Fix message when not available </para>
</listitem>
<listitem>
<para>snapshot: Fix title </para>
</listitem>
<listitem>
<para>mumble: Add Mumla to the list of clients </para>
</listitem>
<listitem>
<para>locale: Update translations for Spanish, Telugu, Russian, German, French, and Swedish </para>
</listitem>
</itemizedlist>
</section>
<section>
<title>FreedomBox 20.7 (2020-04-20)</title>
<itemizedlist>
@ -13213,7 +13297,7 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
</section>
<section>
<title>Bugs</title>
<para>List of bugs, feature requests and improvements are tracked on the FreedomBox <ulink url="https://salsa.debian.org/freedombox-team/plinth/issues/">issue tracker</ulink>. In addition to that, see <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Contribute/Bugs#">list of bugs</ulink> to help out the Debian package we depend on. Also see the FreedomBox <ulink url="https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&amp;comaint=yes">packaging team's dashboard</ulink> for status of various packages that we use. </para>
<para>List of bugs, feature requests and improvements are tracked on the FreedomBox <ulink url="https://salsa.debian.org/freedombox-team/freedombox/issues/">issue tracker</ulink>. In addition to that, see <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Contribute/Bugs#">list of bugs</ulink> to help out the Debian package we depend on. Also see the FreedomBox <ulink url="https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&amp;comaint=yes">packaging team's dashboard</ulink> for status of various packages that we use. </para>
</section>
<section>
<title>Code</title>
@ -13241,7 +13325,7 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
<para>Web design for <ulink url="https://freedombox.org">freedombox.org</ulink>, <ulink url="https://freedomboxfoundation.org">freedomboxfoundation.org</ulink> and the <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox#">wiki</ulink> pages </para>
</listitem>
<listitem>
<para>Logo and branding (we currently have <ulink url="https://salsa.debian.org/freedombox-team/plinth/tree/master/static/themes/default">an identity manual and logos</ulink>) </para>
<para>Logo and branding (we currently have <ulink url="https://salsa.debian.org/freedombox-team/freedombox/tree/master/static/themes/default">an identity manual and logos</ulink>) </para>
</listitem>
<listitem>
<para>Possible designs for custom FreedomBox cases on single board computers </para>
@ -13300,7 +13384,7 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
<para>Individual applications that FreedomBox exposes to users. </para>
</listitem>
</itemizedlist>
<para>You can contribute to the localization effort using the web-based tool at <ulink url="https://hosted.weblate.org/projects/freedombox/">Weblate</ulink> or directly to the source tree via <ulink url="https://salsa.debian.org/freedombox-team/plinth/tree/master/plinth/locale">Salsa</ulink>. </para>
<para>You can contribute to the localization effort using the web-based tool at <ulink url="https://hosted.weblate.org/projects/freedombox/">Weblate</ulink> or directly to the source tree via <ulink url="https://salsa.debian.org/freedombox-team/freedombox/tree/master/plinth/locale">Salsa</ulink>. </para>
<para>If you wish to see FreedomBox available for one of your languages, please start a discussion on the FreedomBox discussion forum's <ulink url="https://discuss.freedombox.org/c/development">development category</ulink> to work with others translating for that language. </para>
<para>For more information, please visit the FreedomBox <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Translate#">translators</ulink> page. </para>
</section>
@ -13336,13 +13420,13 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
<para>FreedomBox Service (Plinth) comes installed with all FreedomBox images. You can <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Download#">download</ulink> FreedomBox images and run on any of the supported hardware. Then, you can access FreedomBox Service (Plinth) by visiting the URL <ulink url="http://freedombox/plinth"/> or <ulink url="https://freedombox.local/plinth"/>. </para>
</listitem>
<listitem>
<para>If you are on a Debian box, you may install FreedomBox Service (Plinth) from Debian package archive. Currently, only Stretch (stable), Buster (testing), and Sid (unstable) are supported. To install FreedomBox Service (Plinth) run: </para>
<para>If you are on a Debian box, you may install FreedomBox Service (Plinth) from Debian package archive. Currently, only Buster (stable), Bullseye (testing), and Sid (unstable) are supported. To install FreedomBox Service (Plinth) run: </para>
</listitem>
</itemizedlist>
<screen><![CDATA[$ sudo apt-get install plinth]]></screen>
<screen><![CDATA[$ sudo apt-get install freedombox]]></screen>
<itemizedlist>
<listitem>
<para>You can also get FreedomBox Service (Plinth) from its <ulink url="https://salsa.debian.org/freedombox-team/plinth/">Git repository</ulink> and <ulink url="https://salsa.debian.org/freedombox-team/plinth/blob/master/INSTALL.md">install from source</ulink>. </para>
<para>You can also get FreedomBox Service (Plinth) from its <ulink url="https://salsa.debian.org/freedombox-team/freedombox/">Git repository</ulink> and <ulink url="https://salsa.debian.org/freedombox-team/freedombox/blob/master/INSTALL.md">install from source</ulink>. </para>
</listitem>
</itemizedlist>
</section>
@ -13469,13 +13553,13 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
<para>Instructions on how to <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox/Contribute/Code#">contribute code</ulink> are available. </para>
</listitem>
<listitem>
<para>The primary Git repository is hosted at <ulink url="https://salsa.debian.org/freedombox-team/plinth/">FreedomBox Salsa Page</ulink>. </para>
<para>The primary Git repository is hosted at <ulink url="https://salsa.debian.org/freedombox-team/freedombox/">FreedomBox Salsa Page</ulink>. </para>
</listitem>
<listitem>
<para>Instructions for <ulink url="https://salsa.debian.org/freedombox-team/plinth/blob/master/INSTALL.md">installing from source</ulink> and <ulink url="https://salsa.debian.org/freedombox-team/plinth/blob/master/HACKING.md">hacking the source</ulink> are available. </para>
<para>Instructions for <ulink url="https://salsa.debian.org/freedombox-team/freedombox/blob/master/INSTALL.md">installing from source</ulink> and <ulink url="https://salsa.debian.org/freedombox-team/freedombox/blob/master/HACKING.md">hacking the source</ulink> are available. </para>
</listitem>
<listitem>
<para>List of bugs, TODO items and feature requests are available on the <ulink url="https://salsa.debian.org/freedombox-team/plinth/issues">issue tracker</ulink>. </para>
<para>List of bugs, TODO items and feature requests are available on the <ulink url="https://salsa.debian.org/freedombox-team/freedombox/issues">issue tracker</ulink>. </para>
</listitem>
<listitem>
<para>Before contributing to FreedomBox Service (Plinth) code, you need understand <ulink url="https://www.python.org/">Python</ulink> and <ulink url="https://www.djangoproject.com/">Django</ulink> on top which it is built. </para>
@ -13488,10 +13572,10 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
<title>Debian Package</title>
<itemizedlist>
<listitem>
<para>FreedomBox Service (Plinth) is <ulink url="https://packages.debian.org/plinth#">packaged</ulink> for Debian. FreedomBox Service (Plinth) is a native package and packaging source code is part of the main package source code. </para>
<para>FreedomBox Service (Plinth) is <ulink url="https://packages.debian.org/freedombox#">packaged</ulink> for Debian. FreedomBox Service (Plinth) is a native package and packaging source code is part of the main package source code. </para>
</listitem>
<listitem>
<para>Issues related to packaging are listed on <ulink url="https://bugs.debian.org/plinth#">Debian BTS</ulink>. </para>
<para>Issues related to packaging are listed on <ulink url="https://bugs.debian.org/freedombox#">Debian BTS</ulink>. </para>
</listitem>
</itemizedlist>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More